눈송이의 개발생활

[Network]HTTP/1.1 HTTP/2.0 HTTP/3.0 본문

Computer Science/Network

[Network]HTTP/1.1 HTTP/2.0 HTTP/3.0

꾸지새미언니

HTTP 종류

  • HTTP/0.9 ~ HTTP/2.0 : TCP 사용
  • HTTP/3.0 : UDP 사용

 

1️⃣ HTTP/0.9

  • 단일 라인으로 구성된 요청
  • GET이 유일한 method
  • HTML 파일만 전송 가능

 

2️⃣ HTTP/1.0

  • Header, Status code, Content-type 포함
  • 1 request + 1 response / connection
  • 매번 새로운 연결로 성능 저하
  • 서버 부하 비용 증가

3️⃣ HTTP/1.1

  • persistent connection : 지정한 timeout 동안 connection을 닫지 않는 방식
  • pipelining 기법 도입
    • 하나의 connection에서 응답을 기다리지 않고 순차적인 여러 요청을 연속으로 보내 그 순서에 맞춰 응답을 받는 방식
    • 지연 시간 감소

단점

  1. Head of line blocking : 1번째 요청이 서버에서 시간이 너무 오래 걸리는 경우 뒤의 작업들도 늦어지는 것
  2. Header 구조의 중복 : 연속된 요청의 경우 같은 값이 많아도 중복되게 보내서 데이터의 크기가 커짐

 

4️⃣ HTTP/2.0

  • 기존 HTTP/1.X 버젼의 성능 향상에 초점을 둔 프로토콜
  • 표준의 대체가 아닌 확장
  • 여러 개의 HTTP stream을 하나의 TCP connection으로 처리해 HOLB 문제를 해결되지 
  • HTTP 메시지 전송 방식의 변화
    • 바이너리 프레이밍 계층 사용
    • 파싱 & 전송 속도 ⬆️
    • 오류 발생 가능성 ⬇️

특징

  1. request and reponse multiplexing (다중화 가능)
    • Head of line blocking(HTTP/1.1) 해결
    • multiplexing : 한 개의 TCP 연결에서 여러 개의 데이터를 섞이지 않게 보내는 방법
      • stream : 각각의 데이터 흐름
  2. stream prioritization
    • 리소스 간 전송 우선 순위 설정할 수 있음
    • 먼저 전송하고자 하는 stream에 가중치
  3. server push
    • 클라이언트에서 요청하지 않은 데이터를 서버가 알아서 전송
  4. header compression
    • 헤더의 크기를 줄여 페이지 로드 시간 감소
    • 중복되는 부분 보내지 

 

5️⃣ QUIC

  • Quick UDP Internet Connection
  • 전송 계층 프로토콜 (TCP나 UDP 같은 프로토콜)
  • TCP handshake 과정을 최적화하는데 초점을 맞춰 설계됨
    • TCP가 handshake할 때 오버헤드와 HOLB의 문제를 피할 수 없기 때문에
  • UDP 기반
    • 각각의 패킷 간 순서가 존재하지 않는 독립적인 패킷 (데이터그램 방식)
    • 데이터 전송에 집중한 설계
    • 별도의 기능 
      • 원하는 기능 구현(Header) 
      • 커스터마이징으로 신뢰성 확보
      • TCP의 지연은 줄이면서 TCP만큼 신뢰성 확보 가능

특징

  1. 전송 속도 향상
    • 첫 연결 설정에서 필요한 정보와 데이터 함께 전송
    • 연결 성공 시 설정 캐싱해서 다음 연결 때 바로 성립 가능 (handshake 필요 ❌)
  2. connection UUID라는 고유 식별자로 서버와 연결
    • connection 재수립 할 필요 
    • 클라이언트의 IP 바뀌어도 연결 유지
  3. TLS 기본 적용
  4. IP Spoofing, Replay Attack 방지
  5. 독립 스트림 ⇒ 향상된 멀티플렉싱 기능

 

6️⃣ HTTP/3.0

  • UDP 사용
  • QUIC 프로토콜 위에서 돌아가는 HTTP

 

 

참고
https://velog.io/@kcwthing1210/HTTP-1.1-vs-HTTP-2.0-vs-HTTP-3.0
https://woojinger.tistory.com/85

 

Comments