- HTTP/1.0
- 수명이 짧은 연결.
- 각 HTTP 요청당 TCP 핸드셰이크가 발생된다.
- 기본적으로 한 연결 당 하나의 요청만 처리하도록 설계되었다.
- 한 번 연결할 때마다 TCP 연결을 해야 해서 RTT가 늘어나는 단점이 있다.
- HTTP/1.1
- keep-alive default
- 매번 데이터를 요청할 때마다 TCP 연결을 하는 것이 아니라 한 번 해놓고 계속해서 데이터를 받을 수 있게 변경됨.
- keep-alive header
- TCP 연결을 유지하는 것을 알려주는 헤더로 연결유지시간인 timeout과 최대 요청수를 정할 수 있다.
- 호스트 헤더
- 1.0은 서버가 하나의 호스트만 가진다고 가정하기 때문에 헤더에 호스트를 포함하지 않는다. 이 때문에 1.0은 하나의 IP에 하나의 호스트만 가질 수 있다.
- 하지만 서버는 여러 개의 호스트를 가질 수 있기 대문에 1.1에서는 헤더에 특정 호스트를 포함할 수 있게 변경되었고 항상 호스트를 포함해서 요청하도록 변경되었음.
- 대역폭 최적화
- 1.0의 경우 어떤 파일을 다운로드 받다 연결이 끊기면 재개가 불가능했다.
- 1.1에서는 Range : bytes = xxxx- 라는 헤더를 추가해서 다운로드 재개가 가능해졌다.
- keep-alive default
- 요청을 줄이기 위한 기술
- 1.1로 버전업이 되었음에도 서버에 요청할 때마다 RTT는 계속해서 증가하기 때문에 요청 자체를 줄이기 위한 기술들이 탄생했다.
- 이미지 스프라이트
- 수많은 이미지를 하나의 이미지로 만들어 하나의 이미지만 다운받아놓고 이를 통해 여러 이미지를 다운받는 듯한 효과를 내는 것이다.
- 코드압축
- 코드를 크대로 배포하는 것이 아니라 압축하여 배포한다.
- 이미지 base64 인코딩
- 이미지 파일을 이미지 요청을 통해 받는 것이 아니라 base64로 인코딩된 문자열을 가지고 이미지를 로드해서 이미지 요청을 없앤다. 다만 원본 이미지 크기보다 약 37% 크기가 커지는 단점이 있다.
- HTTP/1.1의 고질적인 문제 : HOL
- HOL(Head Of Line Blocking)
- 네트워크에서 같은 큐에 있는 패킷이 그 첫번째 패킷에 의해 지연될 때 발생하는 성능저하 현상
- HOL(Head Of Line Blocking)
출처
CS 지식의 정석 | 디자인패턴 네트워크 운영체제 데이터베이스 자료구조 - 큰돌
'CS 지식 > 네트워크' 카테고리의 다른 글
HTTPS와 TLS - 암호화, 핸드셰이크 (0) | 2024.08.21 |
---|---|
HTTP/2, HTTP/3의 차이 (0) | 2024.08.21 |
HTTP 헤더 (0) | 2024.08.19 |
공인 IP, 사설 IP, NAT (0) | 2024.08.19 |
클래스리스 (0) | 2024.08.19 |