HTTP/1.0
- HTTP/1.0은 기본적으로 한 연결당 하나의 요청을 처리하도록 설계되었다. 이는 RTT 증가를 불러오게 되었다.
- 즉, 요청 2개에 대해 TCP 연결에 대해 RTT가 추가적으로 들기 때문에 RTT가 증가한다는 말이다.
RTT: 패킷이 목적지에 도달하고 나서 다시 출발지로 돌아오기까지 걸리는 시간이며 패킷 왕복 시간
HTTP/1.1
- HTTP/1.0에서 발전한 것이 바로 HTTP/1.1이다.
- 한 번 TCP를 연결한 이후에 keep-alive라는 옵션으로 여러 개의 파일을 송수신할 수 있게 바뀌었다.
- 참고로 HTTP/1.0에서도 keep-alive가 있었지만 표준화가 되어 있지 않았고 HTTP/1.1부터 표준화가 되어 기본 옵션으로 설정되었다.
- 즉, HTTP/1.0과 달리 요청이 여러 개가 있을 때 TCP 연결을 한 번만 해준 후, 모든 요청을 처리한다. 스프링 부트에서도 처음 요청의 경우 응답 시간이 오래 걸리지만, 다음 부터 응답 속도가 빨라지는 이유이다. 톰캣의 기본 설정으로는 20초 동안 연결을 유지한다.
- HTTP/1.1의 헤더에는 쿠키 등 많은 메타데이터가 들어 있고 압축이 되지 않아 무겁다.
HTTP/2
HTTP/2는 HTTP/1.x보다 지연 시간을 줄이고 응답 시간을 더 빠르게 할 수 있으며 멀티플렉싱, 헤더 압축, 서버 푸시(클라이언트가 요청하지 않은 리소스 미리 전송)를 지원하는 프로토콜이다.
멀티플렉싱
- 멀티플렉싱이란 여러 개의 스트림을 사용하여 송수신한다는 것이다. 즉, 여러 요청과 응답을 병렬로 처리할 수 있다.
- 이를 통해 특정 스트림의 패킷이 손실되었다고 하더라도 해당 스트림에만 영향을 미치고 나머지 스트림은 멀쩡하게 동작할 수 있다
헤더 압축
- HTTP/1.x에는 크기가 큰 헤더가 문제였다.
- 이를 HTTP/2에서는 헤더 압축을 써서 해결하는데, 허프만 코딩 압축 알고리즘을 사용하는 HPACK 압축 형식을 가진다.
허프만 코딩
- 허프만 코딩은 문자열을 문자 단위로 쪼개 빈도수를 세어 빈도가 높은 정보는 적은 비트 수를 사용하여 표현하고, 빈도가 낮은 정보는 비트 수를 많이 사용하여 표현해서 전체 데이터의 표현에 필요한 비트양을 줄이는 원리이다.
'CS > 네트워크' 카테고리의 다른 글
HTTPS - SSL/TLS (0) | 2025.06.23 |
---|---|
IP 주소 (0) | 2025.03.19 |
네트워크 기기 (0) | 2025.03.17 |
TCP/IP 4계층 모델 (0) | 2025.03.16 |
네트워크의 기초 (0) | 2025.03.11 |