mdn web docs_Evolution of HTTP 문서에 대한 번역과 주관적인 해석, 부연설명

What is HTTP?

HTTP(HyperText Transfer Protocol)는 World Wide Web에서 사용하는 프로토콜이다. Tim Berners-Lee와 그의 팀에 의해 1989년에서 1991년 사이에 개발되었다. HTTP는 간결함은 유지하면서 유연함(flexibility)을 추가하기 위해 많은 변화를 겪었다.초창기에는 연구실 환경에서 파일을 주고받기 위해 디자인되었지만 지금은 인터넷을 통해 전 세계 사람들이 텍스트 뿐만 아니라 이미지와 고화질, 심지어는 3D 영상까지도 교환할 수 있다.

Internet vs WEB

인터넷과 웹은 다르다.

  • 인터넷 : 전 세계에 걸쳐 연결된 거대한 네트워크
  • 웹 : 인터넷 위에서 동작하는 hypertext 문서를 주고받는 서비스
  • hypertext : hyperlink를 통해 서로 연결된 문서(문자로 이루어진 파일)

Invention of the World Wide Web

1989년 Tim Berners-Lee는 CERN에서 근무하며 인터넷을 사용하는 hypertext 시스템에 대한 제안서를 작성했다. 처음에는 이 서비스를 Mesh라고 불렀지만 1990년 이 서비스를 개발하면서 World Wide Web으로 이름을 바꾸었다. TCP와 IP 프로토콜 위에서 동작하며 네 개의 building block들로 구성된다.

  • HTML : hypertext 문서를 표현하는 양식
  • HTTP : hypertext 문서를 교환하는 프로토콜
  • Web browser : hypertext 문서를 편집하고 보여주는 클아이언트 (WorldWideWeb)
  • server : hypertext 문서에 접근할 수 있게 해주는 프로그램 (httpd) 위의 네 가지 building block들은 1990년 말에 완성되었고 최초의 web server는 1991년 CERN 외부에서 실행되었다.
    초기의 HTTP는 굉장히 단순했다. 나중에 HTTP/0.9라는 이름이 붙여졌다. One-line protocol이라고도 한다.

HTTP/0.9

1990년에 완성된 HTTP의 첫 번째 버전은 version number가 없었다. 나중에 다른 버전과 구별하기 위해 HTTP/0.9라는 이름이 붙여졌다. HTTP/0.9는 극도로 단순했다. Request는 GET 메소드로만 시작되는 한 줄로 구성되었다. GET 뒤에는 resource의 경로가 따라왔다. 전체 URL이 프로토콜에 포함되어있지 않았기 때문에 일단 server와 연결되면 server 주소, port 번호는 필요하지 않았다.

매 요청마다 connection을 생성하고 통신이 완료되면 connection을 종료한다. (TCP 위에 구현되었기 때문이다.)

GET /mypage.html

Response 또한 극도로 단순했다. 오직 hypertext 파일만을 포함했다.

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

이후의 버전과 달리 HTTP header가 없었다. 다시 말해 오직 HTML 파일만이 전송될 수 있었다. Status code, error code는 존재하지 않았다. 만약 문제가 발생했다면, 특정 HTML 파일에 문제의 설명이 포함되어 전송되었다.

HTTP/1.0

HTTP/0.9는 기능이 매우 제한적이였지만, 여러 브라우저들과 server들이 HTTP를 다재다능(versatile)하게 만들었다.

HTTP 프로토콜 자체의 기능이 수정된 것이 아니라, 브라우저와 server에 기능이 추가되었다.
server와 브라우저들이 HTTP/1.0 spec을 작성하고 각자 구현한 것이다.

  • Request를 보낼 때 버전 정보를 보낼수 있게 되었다. (GET line에 HTTP/1.0이 추가되었다.)
  • Response의 첫 번째 줄에 status code line이 추가되었다. 이를 통해 브라우저는 request의 성공 여부를 스스로 판단할 수 있게 되어 적절한 조치를 취할 수 있었다.
  • Response와 request에 HTTP header라는 개념이 도입되었다.
  • Content-Type header 덕분에 순수 HTML 파일이 아닌 다른 문서들도 전송 가능해졌다.

HTTP/1.0을 따르는 일반적인 request와 response는 다음과 같았다.

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>

아래는 두 번째 connection에서 image 요청과 그에 대한 response이다.

GET /myimage.gif HTTP/1.0
User-Agent: NCSA_Mosaic/2.0 (Windows 3.1)

200 OK
Date: Tue, 15 Nov 1994 08:12:32 GMT
Server: CERN/3.0 libwww/2.17
Content-Type: text/gif
(image content)

1991년에서 1995년 사이에 versioning information, status code, HTTP header, Content-Type은 try-and-see 접근법으로 도입되었다. 서버와 브라우저가 해당 기능을 추가하고 효과가 있는지 확인하는 방식이다.

references

Tags:

Categories:

Updated:

Comments