본문 바로가기

컴퓨터 과학(CS)

[컴퓨터 과학] HTTP의 진화 #1 - [HTTP/0.9와 HTTP/1.0]

728x90

HTTP란?

HTTP는 초기버전(0.9), 1.0, 1.1, 2.0, 3.0 버전으로 진화가 되어왔습니다.

HTTP 내용은 총 세 가지 버전으로 진행될 예정입니다. 

 

첫 번째 버전은 0.9에서 1 버전으로 발전되는 내용을 담을 것이며, 

두 번째 버전은 1.0에서 1.1로 발전되는 내용을 담을 것이며,

세 번째 버전은 1.1에서 2.0으로 2.0에서 3.0으로 발전되는 내용을 담을 것입니다.

 

HTTP 통신은 월드 와이드 웹의 기반이 되는 프로토콜이며, Request를 하면 반드시 Response로 돌아오는 비연결지향적인 단방향 통신입니다.

 

하지만, HTTP는 연결은 되지 않고 전송만 하기 때문에 TCP에서 연결과 연결해제를 맡아서 하게 됩니다.

즉, TCP 통신은 연결 → 전송 → 해제와 같은 과정을 거치게 되지만 HTTP 통신에서는 연결과 해제는 TCP에서 진행하고 전송은 HTTP가 하게 되는 것입니다.

 

(참고로 HTTP 1.x, HTTP 2.0은 TCP를 사용하고 HTTP 3.0은 UDP를 사용하는 것으로 알고 있습니다.)

HTTP의 진화 (HTTP/0.9에서 HTTP/1.0까지)

주로 MDN 사이트에서 참고하고 부족한 부분과 이해가 안 되는 부분은 검색을 통해 보충했습니다.

 

HTTP의 진화 - HTTP | MDN

HTTP (HyperText Transfer Protocol)은 월드 와이드 웹의 기반이 되는 프로토콜입니다. 1989년부터 1991년까지 Tim Berners-Lee와 그의 팀이 개발한 HTTP는 유연함을 형성하는 동시에 단순함을 지키는 데 도움이

developer.mozilla.org

HTTP/0.9

HTTP의 초기버전이며, 사실상 버전 정보가 없지만 초기버전과 이후 버전을 구별하기 위해 추후 0.9라는 번호가 붙어 불리게 되었습니다.

HTTP/. 09의 특징은 아래와 같습니다.

  • 메서드로 GET만 존재합니다.
  • HTTP 헤더가 없었는데 이는 HTML 파일만 전송될 수 있고 다른 유형의 문서는 전송될 수 없습니다.
  • 문제가 발생 시, 특정 HTML 파일이 만들어지고 사람이 처리할 수 있도록, 해당 파일 내부에 문제에 대한 설명이 HTML 파일에 추가됩니다.

일반적인 요청과 응답 예시입니다.

GET /mypage.html

<html>
  A very simple HTML page
</html>

HTTP 1.0

HTTP 초기버전과 다르게 메서드가 증가하고 헤더가 추가되어 HTML 파일 이외에 다른 문서도 전송이 가능해졌습니다.

특징은 아래와 같습니다.

  • 메서드로 GET, POST, HEAD 가 존재합니다.
  • 요청 속에 버전 정보가 포함되어 전송됩니다.
  • HTTP 헤더가 도입되어, 메타데이터 전송이 가능해졌고 프로토콜이 극도로 유연하고 확장성이 높아졌습니다.
    • 프로토콜이 극도로 유연하고 확장성이 높아졌다는 말은 Content-Type 덕분에, 일반 HTML 파일들 외에 다른 문서들을 전송할 수 있는 것을 뜻하는 것 같습니다.
  • 상태 코드 라인 또한 응답의 시작 부분에 붙어 전송되었습니다. 브라우저가 요청에 대한 성공과 실패를 알 수 있고 그 결과에 대한 동작(예, 특정 방법으로 로컬 캐시를 갱신하거나 사용)을 할 수 있게 되었습니다.

일반적인 요청과 응답 예시입니다.

GET /mypage.html HTTP/1.0
User-Agent: NCSA_Mosaic/2.0 (Windows 3.1)

200 OK
Date: Tue, 15 Nov 1994 08:12:31 GMT
Server: CERN/3.0 libwww/2.17
Content-Type: text/html

<HTML>
A page with an image
  <IMG SRC="/myimage.gif">
</HTML>

 

HTTP 1.0 통신의 단점 중에 하나는 하나의 연결당 하나의 요청을 처리되도록 설계가 되어있다는 점입니다. 이렇게 되면 서버로 푸터 파일을 가져올 때마다 TCP의 3-Way Handshake를 계속해서 열어야 하기 때문에 RTT가 증가하는 단점이 있었습니다.

RTT란? 패킷이 목적지에 도달하고 나서 다시 출발지로 돌아오기까지 걸리는 시간이며 패킷 왕복 시간을 뜻합니다.

이 부분을 보완해서 나온 것이 바로 HTTP/1.1 버전입니다.

 

HTTP 1.0 통신 프로세스

 

HTTP 1.1 버전은 다음 포스팅에서 진행하도록 하겠습니다.

728x90