http/0.9
http/0.9는 매우 단순한 프로토콜이다.
웹사이트의 페이지를 서버에 요청하고 그 응답으로 웹사이트의 내용을 받아오는 역할을 한다.
http/1.0
http/0.9에서 문서를 요청하면 서버는 데이터를 반환한다는 기본적인 뼈대는 완성했다. 하지만 매우 제한적이였다.
- 헤더
헤더는 전자메일에 먼저 존재하였다. 전자메일에서의 헤더는 보내는 곳, 메일 형식의 버전, 보낸 일시, 보낸 사람, 제목, 문자 코드, 포맷 등 본문 이외의 정보를 담았다.
http에도 전자메일과 동일한 형식의 헤더가 도입되었다.
클라이언트에서는 User-Agent, Referer, Authorization 등의 헤더를 사용한다.
서버에서 클라이언트에 보내는 헤더는 Content-Type, Content-Length 등이 있다.
등록된 헤더
2012년까지는 사용자가 임의로 헤더를 추가할 경우 임의로 X-를 헤더 앞에 붙였었다.
- MIME 타입
MIME타입은 파일의 종류를 구별하는 문자열이다.
브라우저 세계에서는 파일 종류를 특정할 때 Content-Type
헤더에 지정된 MIME타입을 이용한다.
- 메서드
HTTP/1.0으로 통신할 때 GET 부분은 메서드로 불린다.
- GET
서버에 헤더와 콘텐츠 요청
- HEAD
서버에 헤더만 요청
- POST
새로운 문서 투고
- PUT
이미 존재하는 문서를 갱신
- DELETE
지정된 문서 삭제
- 스테이터스 코드
스테이터스 코드는 서버의 응답 상태를 알 수 있다.
- 100번대
처리가 계속됨을 나타낸다.
- 200번대
성공했을 때의 응답
- 300번대
서버에서 클라이언트로의 명령. 오류가 아니라 정상 처리다. 리디렉트나 캐시 이용을 지시한다.
- 400번대
클라이언트의 요청에 오류가 있다.
- 500번대
서버 내부의 오류
- 리디렉트
300번대 스테이터스 코드의 일부는 리디렉트 하도록 지시하는 코드이다.
- URL
웹 시스템을 다루는 한 URN이 등장할 일은 거의 없으므로 URI와 URL은 거의 같다.
URL은 관용 표현으로 공식 표기는 URI가 되었지만 URL이 일반적으로 널리 사용된다.
URL은 다음과 같은 요소로 구성된다.
스키마://호스트명/경로
URL 사양에 포함되는 모든 요스는 다음과 같이 구성된다.
스키마://사용자:패스워드@호스트명:포트/경로#프래그먼트?쿼리
자주 보는 스키마에는 http, https, mailto, file, ftp 등이 있다.
URL을 구성하는 문자로는 ASCII문자열로 영문자와 숫자, 그리고 몇개의 기호만 사용할 수 있었지만 RFC 2718에서 UTF-8로 인코딩하여 다국어 문자도 다룰 수 있게 되었다.
6. 바디
HTTP/1.0에서는 요청과 응답 모두 헤더가 포함되어 바디와 헤더를 분리할 필요가 생겼다.