[HTTP] HTTP 1.1 / 2.0
- 지현 배
- 2022년 3월 26일
- 1분 분량

HTTP 1.1
클라이언트의 리퀘스트의 순서와 서버의 응답순서는 동기화해야 되야함.
아래는 이것으로 발생하는 문제점이다.
하나의 응답이 올 때까지 같은 큐(같은 Output)에 들어간 나머지 패킷들은 무한대기.
단순히 연결을 여러개 두면 될 것 같지만, 브라우저는 동시에 6개정도 접속을 유지할 수 있기 때문에 리소스가 6개 이상인 경우 HOL(Head of Line)Blocking이 발생.
HOL(Head of Line)
일반적으로 패킷은 입력포트에서 스위치패브릭을 거쳐 출력 포트로 전송됨. 입력포트에서 패킷이 출력포트로 전달되지 못하고 스위치 패브릭에서 대기하고 있는 현상.HOL 증가

RTT(Round Trip TIme)증가
RTT
패킷이 목적지에 도달하고 나서 해당 패킷에 대한 응답이 출발지로 다시 돌아오기까지의 시간. ⇒ 패킷 왕복시간
무거운 Header구조
헤더에는 많은 쿠키와 다양한 정보를 갖고 있고 매 요청시 마다 이것들이 포함된 중복된 헤더 값을 전송
즉, 연결당 하나의 요청과 응답을 처리하기 때문에 동시 전송문제와 다중 리소스를 처리하기에 속도, 성능이 느림.
HTTP 2.0
Multiplexed streams
하나의 연결에 여러개의 메세지를 동시에 주고 받을 수 있음.
Stream Prioritization : 요청 리소스간 의존관계(우선순위) 설정
예) 클라이언트가 요청한 HTML 문서 안에 CSS 파일 1개와 Image 파일 2개가 존재할 때, 만약 Image 보다 CSS 수신이 늦어지면 브라우저 렌더링이 늦어질 수 있음.
⇒ 리소스간의 우선순위를 정함으로써 해결이 가능.
Server Push : html문서상에 필요한 리소스를 클라이언트 요청없이 보내줄 수 있음.
클라이언트가 여러개의 리소스(CSS, Image 등)가 포함된 HTML을 요청할 경우 HTTP 1.1는 HTML문서를 해석하기 위해 필요한 리소스를 재 요청할 수 있는데, HTTP 2.0에서는 재 요청없이 Server Push 기법을 활용하여 해석이 가능.
Header Compression : 헤더 정보를 HPACK압축방식을 이용하여 압축 전송
예를들어, 클라이언트가 두번의 요청을 보낼 경우, HTTP 1.1은 두개의 요청 Header를 중복값이 존재해도 그냥 중복 전송을 진행한다. 하지만, HTTP 2.0에서는 Header에 중복값이 존재하는 경우 static/Dynamic Header Table 개념을 사용하여 중복 Header를 검출하고 중복된 Header는 index값만 전송하고 중복되지 않은 정보 값은 Huffman Encoding 기법으로 인코딩하여 전송한다.
[참고]
Comments