Study/HTTP

04. HTTP 1.1

ABCD 2024. 4. 16.

HTTP 1.1

  • 용어사전
    • TCP의 다양한 기능을 수행하기 위해서는 TCP헤더에 다양한 정보가 필요한데, 데이터를 전송할 때에 꼭 필요하지 않은 처리나 정보 등을 일컫는 말
      image 2
  • 오버헤드(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를 증가 시킨다.
  • 현재는 산발적으로 존재하는 우려점 때문에 요즈음의 브라우저들은 해당 기능을 막고 있다.

image 3

 

image 4

도메인 샤딩 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 초안의 참고규격이 되었다.

image 5

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

댓글

💲 추천 글