HTTP 1.1
- 용어사전
- TCP의 다양한 기능을 수행하기 위해서는 TCP헤더에 다양한 정보가 필요한데, 데이터를 전송할 때에 꼭 필요하지 않은 처리나 정보 등을 일컫는 말
- TCP의 다양한 기능을 수행하기 위해서는 TCP헤더에 다양한 정보가 필요한데, 데이터를 전송할 때에 꼭 필요하지 않은 처리나 정보 등을 일컫는 말
- 오버헤드(Overhead)
- 컨텐츠의 수가 증가하면서 TCP의 연결에 부담이 걸려 그 문제를 해결해야 하는 필요성이 생겨 발달했다.
- 위 그림에서 초창기에는 요청마다 왼쪽과 같이 TCP를 새로 연결시켜 줘야 했다.
- 때문에 1.1버전에서는 지속연결(presistent Connection)을 통해 여러개의 컨텐츠를 요청할 수 있게 되었다.
- 1.0에서는
Connection: keep-alive
을 통해 연결을 유지 했지만, 1.1부터는 모든 요청/응답이 Connection을 재사용하도록 설계 되었고Connection: close
를 통해 명시적으로 끊어주여야 했다.
파이프라이닝
- 하나의 연결에서 한번에 순차적인 여러 요청을 연속적으로 하고 서버는 그 순서에 맞게 응답하는 것
- 다수의 Request와 Response를 처리할 수 있게 끔 Network Latency를 줄일 수 있다.
- But!! 응답 처리를 미루는 방식이기에 응답에대한 처리는 순차적으로 진행되야하고 후순위는 지연된다.
- 이러한 현상을 HOL(Head Of Line) Blocking 이라고 한다.
- 클라이언트에서 요청을 여러 개 동시에 보내면 서버의 응답 Queue에 쌓인다.
- 서버는 받은 요청을 처리한다.
- 응답 Queue에서 데이터 전송의 한계 발생
- 선 요청 받은 건을 다 전송하지 못하면 후전송 건도 늦어진다.
- 서버의 버퍼에는 후전송 건이 쌓여 리소스가 소모된다.
- RTT(Round Trip Time) 증가와 네트워크 지연을 초래하여 성능이 저하되는 문제점이 발생한다.
- 패킷망(인터넷) 위에서 패킷을 보내고자 하는 측에서 패킷을 목적지에 보낼 때, 패킷이 목적지에 도달하고 나서 해당 패킷에 대한 응답이 출발지로 다시 돌아오기가지의 시간
- 네트워크 성능 측정 시, 네트워크 연결의 속도와 안정성을 진단할 때 사용된다.
- 파이프라이닝은 매 요청별로 connection을 만들고 3-way-handshake가 반복적으로 일어나 RTT를 증가 시킨다.
- 이러한 현상을 HOL(Head Of Line) Blocking 이라고 한다.
- 현재는 산발적으로 존재하는 우려점 때문에 요즈음의 브라우저들은 해당 기능을 막고 있다.
도메인 샤딩 Domain Sharding(deprecated)
- 파이프라이닝을 개선하기 위해 브라우저들이 connection을 생성하여 병렬로 요청을 보내는 것
- 브라우저별로 Domain당 Connection 개수의 제한이 존재한다.
- 현재는 사용하지 않는다.
호스트헤더 (Host Header)
- 호스트 헤더의 등장으로 동일한 IP주소에 다른 도메인을 호스트하는 기능이 가능해졌다.
GET /en-US/docs/Glossary/Simple_header HTTP/1.1
ACCEPT: */*
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.9; rv:50.0) Gecko/20100101
- 호스트 헤더가 없던 HTTP/1.0 버전에는 위의 요청이 서버로 바로 요청이 된다.
- 웹서버는 위의 정보로는 어떤 홈페이지에 접속했는지 알 수 없기 때문에 IP주소로만 구분이 가능하다.
- 즉, 이전에는 도메인마다 IP를 준비해야 했고, 그만큼 서버의 개수도 늘어났다.
GET /en-US/docs/Glossary/Simple_header HTTP/1.1
ACCEPT: */*
Host: developer.mozilla.org
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.9; rv:50.0) Gecko/20100101
- HTTP/1.1의 등장으로 IP주소 대신 Host의 헤더값으로 구별이 가능해 졌다.
- 또한, 그로인해 하나의 웹서버에 여러개의 애플리케이션을 구동할 수 있게 되었다.
시험용 프로토콜 스피디(SPDY)
- google에서 개발한 시험용 프로토콜
- HTTP/1.1에 비해 상당한 성능 향상과 효율성을 보여줌
- 차 후 HTTP/2.0 초안의 참고규격이 되었다.
728x90
반응형
'Study > HTTP' 카테고리의 다른 글
0.6 URL escape String (0) | 2024.04.16 |
---|---|
05. HTTP2.0 (1) | 2024.04.16 |
03. HTTP의 역사 (0) | 2024.03.12 |
02.비연결성과 StateLess 프로토콜 (0) | 2024.03.05 |
01.클라이언트 - 서버구조 (0) | 2024.03.05 |
댓글