본문 바로가기

공부 기록/영상 후기

[10분 테코톡] 쿨라임의 HTTP/1.1, HTTP/2, 그리고 QUIC

https://youtu.be/xcrjamphIp4

HTTP : 웹 상에서 클라이언트와 서버 간 통신을 위한 프로토콜

TCP(Transmission Control Protocol) => 3 Way Handshake. 신뢰성은 높지만 전송 속도가 느리다.(지연 불가피)

UDP(User Datagram Protocol) => 신뢰성은 낮지만 전송 속도가 빠르다.

  

HTTP/0.9 ~ /2 : TCP 사용

HTTP/1.0까지 => 커넥션 당 요청 1 & 응답 1. 매번 새로운 연결로 성능 저하, 서버 부하 비용 증가

 

HTTP/1.1

- Persistent Connection => 지정한 timeout 동안 커넥션을 닫지 않는다.

- Pipelining => 하나의 커넥션에서 응답을 기다리지 않고 순차적인 여러 요청을 연속적으로 보내 그 순서에 맞춰 응답을 받는 방식. 지연 시간을 줄인다.

문제점

- Head of Line Blocking => 순차적인 방식이기 때문에 이전 요청이 끝나기 전까지는 다음 요청에 대한 응답을 받을 수 없음

- Header 구조의 중복

  

HTTP/2

- 기존 HTTP/1.X 버전의 성능 향상에 초점을 맞춘 프로토콜

- 표준의 대체가 아닌 확장

- HTTP 메시지 전송 방식의 변화 => 바이너리 프레이밍 계층 사용. 파싱과 전송 속도 ↑, 오류 발생 가능성 ↓

- Request and Response Multiplexing => Head of Line Blocking 해결

- Stream Prioritization => 리소스 간 우선 순위를 설정 가능

- Server Push

- Header Compression => 헤더의 크기를 줄여 페이지 로드 시간 감소

  

QUIC

- UDP 기반의 전송 계층 프로토콜 => 데이터 전송에 집중한 설계, 별도의 기능이 없기 때문에 원하는 기능을 구현할 여지가 많고 TCP의 지연을 줄이면서 TCP만큼 신뢰성 확보 가능

- 현재 구글 관련 제품 대부분의 기본 프로토콜

  

- 첫 연결 설정에서 필요한 정보와 함께 데이터를 전송, 연결 성공 시 설정을 캐싱하여 다음 연결 때 바로 성립 가능(Connection UUID라는 고유한 식별자로 서버와 연결하여 커넥션 재수립이 필요하지 않음) => 전송 속도 향상

- TLS 기본 적용

- IP Spoofing / Replay Attack 방지 => 보안성 향상

- 독립 스트림 => 향상된 멀티플렉싱 기능