[Network] Web and HTTP - (4) HTTP/2

seb·2023년 4월 8일
0

네트워크

목록 보기
7/9
post-thumbnail

📚 Network

ㄴ 📒 Chap.2 Application Layer

ㄴ 📄 Web and HTTP(4) - HTTP/2


📌 HTTP 1.1

- HTTP1.1 : 하나의 TCP 연결을 통해 여러 개의 객체들이 pipeline 형식으로 빠르게 전송되었다.

하지만, HTTP 1.1의 문제점이 두 가지 있다.

1. 응답 순서의 동기화
server의 응답이 client의 요청 순서대로 이루어졌으며 (FCFS: first-come-first-served scheduling) 작은 object들이 큰 object 뒤에서 장시간 대기하는 head-of-line (HOL) blocking 현상이 발생하였다.

2. 손실 복구(손실된 TCP 세그먼트 재전송)로 인해 객체 전송이 중단되는 문제

이러한 HTTP 1.1의 문제를 해결하기 위해, HTTP/2가 나오게 되었다.


📌 HTTP/2

HTTP/2의 목표 : multi-object HTTP requests에 대한 delay의 감소

  • server에서 client object 전송의 유용성을 키워보자!
  • methods, status codes, 대부분의 header fields는 HTTP 1.1과 변하지 않았다.
  • client가 각각의 object에 대한 우선 순위를 지정하였다. (client-specified object priority)
  • client 요청 이전에 필요로 되어지는 objects를 전송
  • HOL blocking 문제를 완화시키기 위해 objects를 frames로 나누어 전송하였다.
  • 허프만 코딩을 이용하여 헤더 압축 및 중복 헤더 필드 전송 제외

📌 mitigating HOL blocking

HTTP1.1과 HTTP/2 에서의 HOL blocking을 예시를 통해 알아보자! 🤹🏻‍♂️

client가 하나의 커다란 object와 3개의 작은 object를 요구했다고 가정하자.
HTTP 1.1의 경우 작은 크기의 object O2,O3,O4가 커다란 크기의 object O1의 전송이 끝나기를 기다리게 된다.

HTTP/2는 objects를 frames 단위로 쪼개고, O1~O4를 번걸아가며 보내어 O2,O3,O4가 빠르게 전송되고 O1은 약간 delay가 생기게 되었다.


📌 HTTP/3

HTTP/2에도 여전히 문제가 남아있었다.

  1. 패킷 손실 복구를 위해서 여전히 모든 개체 전송이 지연된다

  2. HTTP 1.1처럼 브라우저는 지연을 줄이고 전체 처리량을 늘리기 위해서 여러 병렬 TCP 연결을 하도록 동기가
    부여되었다.

  3. TCP connection은 보안성을 제공하지 않는다.

이러한 문제점들을 해결하기 위해, HTTP/3에서는 보안성을 제공하고, 각 object 별로 congestion-control을 지원하도록 제안되었는데 가장 큰 특징은 UDP 기반이라는 점이다.


🔎 [참고 문헌]
Computer Networking A Top-Down Approach 7-th Edition / Kurose, Ross / Pearson


0개의 댓글