HTTP/1.1, HTTP/2, QUIC

HTTP/1.1, HTTP/2, QUIC

http
웹상에서 클라이언트와 서버 간 통신을 위한 프로토콜
서버와 클라이언트가 통신하는 과정에서 어프리케이션계층에 속하는 프로토콜
통신을 하기 위해서는 전송계층을 통과해야 하는데
신뢰성 있는 연결만 해줄 수 있다면 전송 프로토콜은 어떤 것을 사용해도 된다.

전송 프로토콜

tcp(Transmission Control Protocol)
3way Handshake - 신뢰성 있는 Connection 수립 - 데이터 전송 - 응답
이 과정에서 데이터가 망가지면 다시 데이터 요청

연결 방식 : 연결형 서비스
패킷 교환 : 가상 회선 방식
전송 순서 보장 : 보장함
신뢰성 : 높음
전송 속도 : 느림

udp(User Datagram Protocol)
신뢰성을 보장하지 않고 제어나 기능이 없다.

연결 방식 : 비연결형 서비스
패킷 교환 : 데이터그램 방식
전송 순서 보장 : 보장하지 않음
신뢰성 : 낮음
전송 속도 : 빠름

http 0.9 - 2 버전
tcp 전송프로토콜 사용

http 0.9 의 문서화된 최초 버전
요청

GET /mypage.html

응답

<HTML>
A very simple HTML page
</HTML>

http 1.0
요청

GET /mypage.html HTTP/1.0 //header, version
User-Agent: NCSA_Mosaic/2.0 (Windows 3.1)

응답

200 OK // 상태코드 
Date: Tue, 15 Nov 1994 08:12:31 GMT
Server: CERN/3.0 libwww/2.17
Content-Type: text/html // header 
<HTML>
A page with an imav=ge
	<IMG SRC="/myimage.git">
</HTML>

1 Request & 1 Response Per Connection
매번 새로운 연결로 성능 저하
서버 부하 비용

http 1.1

Persistent Connection
지정한 timeout 동안 커넥션을 닫지 않는 방식
네트워크 사용시간이 줄어든다.

Pipelining
하나의 커넥션에서 응답을 기다리지 않고
순차적인 여러 요청을 연속적으로 보내
그 순서에 맞춰 응답을 받는 방식으로 지연시간을 줄이는 방법
문제점
1. Head of Line Blocking
2. Header 구조의 중복

http 2
기존 http/1.x 버전의 성능 향상에 초점을 맞춘 프로토콜
표준의 대체가 아닌 확장
특징
1. http 메시지 전송 방식의 변화

  • 바이너리 프레이밍 계층 사용
  • 파싱, 전송 속도 up 오류 발생 가능성 down
    TCP Connection
    Request and response multiplexing
  • Head Of Line Blocking 해결
  1. Stream Prioritization
  • 리소스간 우선 순위를 설정 가능
  1. Server Push
  2. Header Compression
  • 헤더의 크기를 줄여 페이지 로드 시간 감소

Quic
전송 계층 프로토콜
2013년에 공개
현재 구글 관련 제품 대부분의 기본 프로토콜
udp 기반

  • TCP Header 는 신뢰성을 확보하지만 지연을 줄이기 힘든 구조
  • 데이터 전송에 집중한 설계
  • 별도의 기능 없음
    • 원하는 기능 구현 가능
    • TCP의 지연을 줄이면서 TCP만큼 신뢰성 확보 가능
      전송 속도 향상
      첫 연결 설정에서 필요한 정보와 함께 데이터를 전송
  • 연결 성공 시 설정을 캐싱하여 다음 연결 때 바로 성립 가능
    Connection UUID 라는 고유한 식별자로 서버와 연결
  • 커넥션 재수립 필요 없음 (와이파이에서 셀룰러 데이터로 바꿔도 기존의 연결이 계속 유지)
    TLS 기본 적용
    IP Spoofing/Replay Attack 방지
  • 보안성 향상
    독립 스트림
  • 향상된 멀티플렉싱 가능
    TCP Head Of Line Blocking 해결

이를 기반으로 구글 지연 시간 3% 단축 유튜브 버퍼링 30% 해결

quic 을 기반으로 http 3 가 나온 상태. 구글도 quic과 http3을 같이 사용중.

좋은 웹페이지 즐겨찾기