728x90
HTTP/1.0
- 기본적으로 한 연결당 하나의 요청을 처리한다.
- 서버로부터 파일을 가져올 때마다 3-way handshaking이 계속 일어나 RTT가 증가한다.
RTT: 패킷이 목적지에 도달하고 다시 돌아오기까지 걸리는 왕복 시간
- RTT의 증가를 해결하기 위한 방법으로 "이미지 스플리팅, 코드 압축, 이미지 Base64 인코딩"이 있다.
HTTP/1.1
- keep-alive라는 옵션이 적용되어 한 번의 3-way handshaking으로 여러 파일을 송수신할 수 있다.
- HOL(Head Of Line) Blocking: 같은 큐에 있는 패킷 중 첫 번째 패킷에 의해 지연될 때 발생하는 성능 저하 현상
- 헤더에 많은 메타데이터가 포함되어 무겁다
HTTP/2
- 여러 개의 스트림을 사용하여 송수신할 수 있는 멀티플렉싱이 지원되어 병렬로 여러 요청을 처리함으로써 HTTP/1.x의 문제인 HOL Blocking을 해결
- 허프만 코딩 압축 알고리즘을 사용하여 크기가 큰 헤더를 압축
허프만 코딩: 빈도가 높은 정보는 적은 비트 수를 사용하고 빈도가 낮은 정보는 비트 수를 많이 사용하여 표현
- 클라이언트 요청 없이 서버가 바로 리소스를 푸시할 수 있다. 예를 들어 서버에 html 파일을 요청했다면 그 안에 들어 있던 css 파일을 서버에서 푸시할 수 있다. 이를 서버 푸시라 한다.
HTTP/3
- QUIC라는 계층 위에서 돌아가며 UDP 기반으로 돌아간다.
- TCP를 사용하지 않기 때문에 통신을 시작할 때 3-way handshaking 과정을 거치치 않아도 된다. 따라서 첫 연결에 1-RTT만 소요된다.
728x90
'Network' 카테고리의 다른 글
예시로 이해하는 CSRF Attack (1) | 2024.01.10 |
---|---|
[웹 브라우저의 동작] 4. 프로토콜 스택 (0) | 2021.05.16 |
[웹 브라우저의 동작] 3. DNS (0) | 2021.05.15 |
[웹 브라우저의 동작] 2. IP (0) | 2021.05.14 |
[웹 브라우저의 동작] 1. HTTP (0) | 2021.05.12 |