HTTP 1.0 / 1.1 / 2.0

허정·2022년 7월 3일
0

1. www의 발명

논문의 마지막에 참고문헌을 위한 발명이었다고 생각하면 됩니다.

  • 팀 버너스 리가 인터넷 상의 하이퍼텍스트 시스템을 만들기 위한 제안을 작성
  • 하이퍼텍스트 문서를 표현하기 위한 텍스트 형식의 HTML
  • 문서 같은 것을 교환하기 위한 간단한 프로토콜인 하이퍼텍스트 전송 프로토콜 HTTP
  • 문서를 디스플레이하기 위한 클라이언트인 월드 와이드 웹이라고 불리는 첫번째 브라우저
  • 문서에 접근하도록 해주는 httpd의 초기 버전

2. HTTP/0.9

  • 원 라인 프로토콜
  • 요청은 단일 라인으로 구성되며 리소스에 대한 경로롤 가능한 메서드는 GET이 유일
  • 여기서 말하는 경로는 프로토콜, 서버, 포트는 서버가 연결되고 나면 불필요하므로 URL은 아님
  • 응답 또한 오로지 파일 내용 자체로 구성

3. HTTP/1.1

  • 표준 프로토콜
  • 1.0과 가장 크게 다른 것은 1회만 연결한다는 점
  • 1.1에서는 1회의 연결로 HTML+CSS, JS ... 를 가져옴
  • 커넥션(TCP 연결)이 재사용될 수 있게 하여, 탐색된 단일 원본 문서 내로 임베드된 리소스들을 디스플레이하기 위해 사용된 커넥션을 다시 열어 시간을 절양하게 하였습니다.
  • Host 헤더 덕분에, 동일 IP 주소에 다른 도메인을 호스트하는 기능이 서버 코로케이션을 가능케 합니다.
  • request를 보내고 response를 받아야지, 다음 request를 보낼 수 있습니다.

4. HTTP/2.0

[출처] 본 블로그

  • 1.1과의 속도 차이가 나는 이유는 IO를 multi plexing하기 때문입니다.
  • request를 한 번에 보내고, 빠른 순서대로 response를 받습니다.
  • client 쪽에서 수신한 것을 조립합니다. 마치 TCP/IP에서 packet 조립하듯이 조립합니다. 이것이 되게 하려다보니까 기존의 HTTP 방식으로는 안 됐고, HTTP가 원래는 문서 전송이지만 요즘은 바이너리 형식의 img나 video가 많이 포합됩니다.
  • 그래서 binary framing layer를 추가합니다.

[출처] https://velog.io/@taesunny/HTTP2HTTP-2.0-정리

  • 옛날에 Client/Server 간의 User mode Application Protocol Design의 전형적인 형태는 Headers frame + Data frame과 매우 유사합니다.

  • Header 안에 스트리밍 등의 여러 정보가 있는데, request 별로 조립 가능하게 되어있습니다. 그래서 한 번에 IO multiplexing이 이뤄지고 성능이 좋아졌습니다.
  • HTTP 2.0까지는 여전히 TCP를 쓴다는 것이 큰 특징입니다.
  • 어쨌든 HTTP Header의 덩치가 점점 커집니다.
  • HTTP 2.0에서는 이것(HTTP 헤더 데이터)을 압축해버립니다. 그러면 크기가 줄 것입니다.
  • 주로 HPACK이라는 헤더 압축 방식을 이용해서 데이터 전송 효율을 높입니다.
  • request를 보내고, 다음 번에 같은 부분을 제외하고 바뀐 부분만 전송하는 방식입니다.

[출처] https://velog.io/@taesunny/HTTP2HTTP-2.0-정리

4. HTTP/3.0

  • 3.0으로 오면서 핵심은 UDP로 바뀐다는 것입니다. 여기서 등장하는 개념이 QUIC 입니다.
  • TCP는 속도의 한계가 있습니다. 연결 지향형이 아니기 때문에 놓치는 것을 제어하지 않습니다. 안정성이 떨어지는 것입니다.
  • UDP가 좋은 이유를 생각해보면, 유튜브를 보는 상황을 예시로 들어봅시다.
  • mp4로 된 동영상을 보게 됩니다. 이것을 스트림으로 동영상을 보는 것입니다.
  • mp4의 특성상 다음의 이미지와 같습니다.

  • 1, 2, 3, 4 ... 화면을 보낸다고 할 때, 네트워크 문제로 2번이 유실됐다고 가정해봅시다.
  • 그러면 2번이 올 때까지 기다리는 것은 맞지 않습니다. 동영상이 툭 끊기더라도 계속 진행이 되는 것이 맞습니다. 그래서 TCP에서 UDP로 갈아탑니다.
  • TCP가 갖고 있는 연결 지향에서 제일 중요한 특징 중에 하나가 혼잡 제어 능력입니다. 혼잡 제어는 운영 체제 수준에서 합니다.
  • 그런데 버림이라는 행위가 전혀 고려되어 있지 않아서 문제입니다. 위 예시에서 말했듯이, 2번을 버리는 행위를 고려하지 않는다는 뜻입니다.

  • 브라우저 수준에서는 일부 버림을 인정하고, 혼잡 제어라는 로직을 어플리케이션 수준에서 혼잡 제어를 재정의 할 수 있을 것입니다.
  • 그렇게 등장하는 것이 QUIC 입니다.
  • 그리고 3.0의 큰 특징은 TLS(암호화)가 필수라는 점입니다. HTTP/3.0에서는 무조건 https을 사용한다는 것입니다.

[출처] https://ably.com/topic/http-2-vs-http-3

0개의 댓글

관련 채용 정보