HTTP 0.9

처음 만들어진 HTTP 0.9는 정말로 단순한 기능으로 출발했다. 웹사이트의 페이지를 서버에 요청하고, 그 응답으로 웹 사이트의 내용을 받아온다. HTTP 즉 Hyper Text Transfer Protocol이라는 이름 그대로 수신한 후에는 서버와 연결이 끊어진다. 여기서 주목할 만한 0.9의 기능이 있는데 바로 폼과 검색 기능이다. HTML 문장 내에서 <isindex>캐그를 사용하면 텍스트 입력란이 생겼고, 그것을 통해 검색을 했었다. 검색을 하면 ? 기호와 단어와 + 구분을 붙여 검색을 붙였는데 이것은 오늘 날의 쿼리 스트링의 전신이다. 서버는 그 요청을 받고 그 요청에 따른 HTML 문서를 생성해서 응답해주었다. 현재 <isindex> 태그는 HTML 문서에는 없는 태그이다. 하지만 오늘 날에도 URL에 원하는 검색 기능을 전달하는 쿼리스트링이 존재하고 있다. 이 시점에 이미 단순 했지만 브라우저가 URL과 포트를 통한 접근 및 문서 요청을 하면, 서버가 데이터로 응답한다는 웹의 기본 뼈대는 이미 완성되어 있었다. 하지만 이것의 문제가 있었으니 다음과 같다.

0.9 버전이 문서화 된것은 90년대인데 그 후 전자 메일이나 뉴스 그룹 같은 프로토콜의 기능을 도입해 대대적으로 업데이트를 했고, 그 과정 속에서 1.0용으로 추가된 기능도 많았다. 그 후 6년 뒤인 96년 1.0이 발표되었는데 다음과 같은 것들이 추가 되었다.

HTTP 1.0

HTTP의 헤더는 요청과 응답 양쪽에서 사용된다. 헤더는 '파일명 : 값' 형태로 본문 앞에 추가 되는데, 각 헤더는 한줄에 하나씩 기술되어 있다. 또한 이름의 대문자, 소문자를 구별하지 않다. 헤더는 본문 이외에 모든 정보가 담기는 곳이다. 브라우저에서 파일 종류를 특정할 때 헤더의 Content-Type 헤더에서 지정된 MINE 타입을 사용한다. 여기서 MINE타입이란 파일의 종류를 구별하는 문자열로 사실 전자 메일을 위해 만들어졌고 1992년 RequestForComments 라는 문서들에서 정의되었다. ( 이것은 오늘날에도 지속적으로 버전이 업데이트하고 있다) 우리가 사용하는 image/jpeg 또는 text/plain 같은 형식도 여기에서 정의되어 있다. 이로써 오늘날 XML을 기반으로 한 SVG이미지를 application/xml이 아니라 더욱 구체적인 imgae/svg+xml로 표기할 수 있게 되었다. 그런데 이 Conetent-Type이 브라우저가 이것을 읽고 해석하는게 아니라 전송된 파일들을 읽고 멋대로 해석하는 것들이 생겼는데, 요즘에는 서버에서 헤더를 전송하여 브라우저가 멋대로 추측하지 않도록 하는 방법을 쓴다. HTTP 1.0에 새롭게 추가된 메서드들은 지정된 주소에 있는 리소스에 대한 조작을 서버에 지시하는데 이때에 대표적인 메서드들은 다음과 같다.