본문 바로가기
IT

HTTP 개요

by PLEINELUNE 2020. 3. 16.

HTTP 개요

 

HTTP Hyper Text Terminal Protocol로서 웹에서 사용하는 응용 계층 통신 규약이다.


HTTP/0.9 현재 널리 사용중인 HTTP/1.1에 이르기까지 1990년 이후 Internet에서 가장 널리 쓰이는 프로토콜로 자리 잡도록 한 HTTP 첫 버전이며, HTTP의 가공되지 않은 데이터(Raw data)의 전송을 위한 프로토콜이다.

 

HTTP/1.0

RFC 1945로 규정된 HTTP/1.0 버전은 메시지가 전송되는 문서 데이터에 대한 메타 정보 및 요구/응답 용어의 변경자를 포함하는 MIME과 유사한 메시지 형식으로 사용할 수 있도록 되어 있는 HTTP/0.9에서 개선된 버전으로 발전되었으나 계층적 프락시, 캐시, 지속적인 연결의 필요성 및 가상 호스트 등의 영향을 충분치 고려하지 못한 문제가 발생되어 다음 버전이 등장하게 된다.

 

HTTP/1.1

RFC 2026로 규정된 HTTP/1.1버전은 기존 HTTP/1.0버전이 갖고 있던 문제점을 해결하고, 보다 신뢰성 있는 통신을 위하여 HTTP/1.0보다 여러 가지 필요 조건에 의해 통신하도록 개선된 버전이다.

상황에 따라 보다 유연한 통신이 가능하도록 설계되었으며, 주된 개선점은 상태(state)이다.

HTTP/1.0은 매번 요청이 일어날 때마다 새로운 연결을 맺도록 설계되어 불필요한 통신이 많았으나, HTTP/1.1에서는 브라우저에서 단일 연결을 통하여 다수의 요청을 보낼 수 있을 뿐만 아니라, 한 번의 연결로 다수의 요청에 대한 응답을 받게 됨으로써 보다 빠른 통신환경을 제공해준다.

 

구분

속성

기능

HTTP 0.9

읽기전용

GET 요청

HTTP 1.0

클라이언트에서 서버로 전달 가능

POST, HEAD 추가

open/operation/close

HTTP 1.1

1.0기능을 포함한 변경, 삭제 가능

PUT, DELETE, TRACE 추가

MIME 형태로 이루어짐

request/response

<1> HTTP 버전 별 비교표

 

HTTP 1.1 METHOD

 

GET

GET 메소드는 요구 URI(Request-URI)에서 지정한 어떤 정보는 가리지 않고 엔터티 바디(entity body)로 전달해 달라고 요청할 수 있다. 요구 URI에서 어떤 실행 프로그램을 명시할 경우 실행 프로그램 자체가 전달되는 것이 아니라 실행 결과가 응답 메시지의 엔터티 바디로 전달된다. 요구 메시지에 If-Modified-Since 헤더 필드가 포함돼 있다면 GET은 조건부 GET으로도 동작할 수 있다. 이 경우 GET이 가지는 의미는 If-Modified-Since에 의해서 지정된 일자 이후에 수정되었을 때만 전송한다. 이 조건을 이용하면 불필요한 데이터 전송을 막을 수 있을 뿐만 아니라 이미 캐시 되어 있는 데이터를 사용자에게 전달해줌으로써 보다 빠른 통신 환경을 제공해준다.

 

HEAD

HEAD 메소드는 응답 메시지의 메시지 바디 부분에 내용을 실어 보낼 수 없다는 점을 빼고는 GET 메소드와 같다. 말 그대로 헤더 정보만 서버에 요구하는 명령이다. 즉 클라이언트에서는 서버 자원의 여러 정보(존재여부, 권한, 최근 수정 정보)를 미리 받아 검사할 수 있다.

 

POST

POST 메소드는 요구 메시지 중 메시지 바디에 포함돼 있는 자원을 요구 라인에 있는 요구 URI로 넘겨주게 된다. 이 메소드를 사용하면 대부분 CGI 프로그램에서 도맡아 처리하므로 Content-Length만 빠뜨리지 않으면 된다. 서버가 이에 대한 정보를 확보하지 못할 시에는 400(bad request) 메시지를 클라이언트에 보내게 된다. 그리고 서버가 매번 요구 메시지에 대해 똑같은 응답을 할 것인지 알 수가 없으므로 클라이언트에서는 굳이 POST 메소드에 대한 응답을 캐싱 할 필요가 없다.

 

OPTIONS

클라이언트가 OPTIONS로 요구 URI에서 지정한 자원을 요구하면 서버는 요구와 응답의 관계를 선택할 수 있는 권한을 클라이언트에게 부여함과 동시에 자원과 관련된 필요 사항도 결정할 수 있는 권한을 준다. 또한 서버 기능도 알아볼 수 있다. 자원을 접근할 수 있는 통신 선택 사항은 Allow 헤더 필드에 나열돼 있다. 

 

PUT 

메시지 바디 부분의 데이터를 지정한 요구 URI에 저장한다. 만약 URI 자리에 이미 자원이 존재한다면 메시지의 데이터를 가장 최근 자원이라 인식하고 저장한다. 또 클라이언트는 이 URI를 통해 저장된 자원에 접근할 수 있다

 

DELETE 

서버에서 요구 URI에 지정된 자원을 삭제할 수 있다. 

 

TRACE 

요구 메시지가 최종 수신처에 도달 경로를 기록하는 loop back 검사용으로 쓰인다.  클라이언트의 요구 메시지가 거쳐가는 proxy나 gateway의 중간 경로부터 최종 수신 서버까지의 경로를 알아낼 때 사용된다. 이와 함께 사용되는 Max-Forwards 헤드 필드에는 중간에 거쳐갈 proxy나 gateway 경로의 최대수를 지정할 수 있다. 

 

 

댓글