HTTP 는 1.0 부터 시작되었다.
HTTP/1.0 은 기본적으로 한 연결당 하나의 요청을 처리한다.
서버로부터 파일을 가져올 때마다 TCP 의 3-way-handshake 가 진행되어 RTT(Round Trip Time 패킷왕복시간) 이 증가되는 단점이 있다.
이를 보완하기 위해 스플리팅 , 코드 압축 , 이미지 Base64 인코딩 등을 사용했다.
- 스플리팅 : 하나로 합쳐져 있는 파일(이미지 등)을 다운로드 받아 사용
- 코드 압축 : 빈칸, 개행문자를 없애서 크기를 최소화
- 이미지 Base64 인코딩 : 64진법으로 이루어진 문자열로 인코딩 하는 방법, 서버에 HTTP 요청을 할필요는 없지만 크기가 더 커지는 단점이 있다.
HTTP/1.1 은 1.0 과 달리 TCP 초기화를 한번 한 후 keep - alive 라는 옵션으로 여러 개의 파일을 송수신 할 수 있다.
하지만 , 리소스가 많으 파일을 처리하려면 대기 시간이 길어지는 단점이 있다.
( HOL Blocking : Head of Line Blocking ) - 현재 패킷에 의해 다음 패킷이 지연되는 것을 의미
HTTP/1.1 헤더에는 많은 데이터가 들어있어 압축이 되지 않고 무겁다.
HTTP/2 는 HTTP/1.x 보다 지연시간을 줄이고 응답시간이 더 빠르다.
멀티 플렉싱 ,헤더 압축 ,서버 푸시 , 요청의 우선순위를 처리를 지원한다.
- 멀티 플렉싱 : 여러 개의 스트림을 사용하여 송수신 ( HOL blocking 을 해결할 수 있다 )
- 헤더 압축 : HTTP/1.1 의 헤더 압축문제를 해결 ( 허프만 코딩 압축 알고리즘 사용 )
- 서버 푸시 : 클라이언트 요청없이 서버가 바로 리소스를 푸시 ex) html 을 읽으면서 css 파일을 서버에 푸시
'Knowledge > CS' 카테고리의 다른 글
[CS] 시스템 콜 (0) | 2023.01.23 |
---|---|
[CS] 스프링 프레임워크란? (0) | 2023.01.13 |
[CS] 네트워크 토폴로지 (0) | 2022.12.30 |
[CS] 처리량과 지연시간 (0) | 2022.12.30 |
[CS] 로드 밸런싱(Load Balancing) (0) | 2022.12.27 |
댓글