아이티-잉

공부하며 정리하는 IT블로그

Today   Total  
2023년! 복 많이 받으세요

[네트워크] HTTP 프로토콜의 구조와 메소드

2016. 6. 8. 21:46

HTTP(HyperText Transfer Protocol)

 

 

우리는 웹 브라우저의 주소창에 웹 사이트 주소를 입력할 때, http://it-ing.tistory.com/과 같이 입력한다.

가장 앞에 위치한 http가 바로 응용계층에서 사용되는 대표적인 통신 프로토콜 중 하나다.

 

초기에는 하이퍼텍스트(Hypertext) 문서 중심의 데이터 전송을 목적으로 했으나,

오늘 날에는 각종 멀티미디어를 지원하고 있다.

 

HTTP의 가장 큰 특징은 상태를 유지하는 기능이 없다는 점이다.

 

 

 


~ 광고 타임 ~


 

 

구조

 

(이미지 출처 : 정보통신기술용어해설)

 

HTTP는 크게 일반적인 구조(일반, 엔티티)와 요청 및 응답에 대한 메시지를 담은 구조로 나누어 볼 수 있다.

이미지를 보면 헤더 뒤에 항상 공간(Space, Blank line)이 존재하는데, 이는 헤더의 끝을 나타낸다.

 

실제로는 굉장히 많은 내용들이 포함되기 때문에 본 블로그에서는 주요 필드만 살펴볼 것이다.

그러므로 보다 자세한 내용은 링크를 통해 직접 확인하자.

 

 

 

1) 일반헤더(General Header)

 

일반헤더는 클라이언트와 서버 구분없이 이용할 수 있는 헤더를 말한다.

 

명칭  예시 값 설명
 Date  Wed, 8 June 2016 10:10:00 GMT  현재 날짜와 요일, 시각 등을 표시한다.
 Connection  close  본 메시지 이후 연결을 끊겠다는 것을 알린다.
 Pragma  no-cache  프록시 서버에 대한 명령을 담고, 목적 서버에선 무시된다.
 Cache-Control   max-age=10  캐시에 관련된 여러 명령어를 사용할 수 있다. max-age의 경우, 해당 시간(초)을 초과하면 응답하지 않게 된다.
 Upgrade  SHTTP/1.3  우선시하는 프로토콜을 지정한다.
 Via  HTTP/1.1 Proxy1, HTTP/1.1 Proxy2  트랜잭션을 처리하는 프로토콜 및 호스트를 나타낸다.
 Transfer-Encoding  chunked  원활한 전송을 위해 사용된 인코딩 방식을 나타낸다.

 

 

 

2) 엔티티헤더(Entity Header)

 

일반헤더와 마찬가지로 요청메시지나 응답메시지 모두에 사용될 수 있다.

대체적으로 페이지 본문에 대한 정보를 담는다.

 

명칭  예시 값 설명
 Allow  GET, HEAD  지정한 URI에서 허용하는 메소드 값들을 가진다.
 Content-Encoding  gzip  개체 데이터의 압축 방식을 담는다.
 Content-Type  text/html  개체에 포함되는 미디어 타입정보를 가진다.
 Content-Language  ko  개체와 부합하는 적절한 언어정보를 표기한다.
 Content-Length  1004  문서의 길이를 바이트 단위로 표기한다.
 Expires  Wed, 8 June 2016 10:10:00 GMT  문서가 변경될 수 있는 시간이나 유효하지 않을 시간을 표기한다.

 

 

 


~ 광고 타임 ~


 

 

3) 요청헤더(Request Header)

 

요청메시지에 담는 헤더로, 내용이 가장 많이 담길 수 있다.

 

명칭  예시 값 설명
 From  isbin0303@gmail.com  클라이언트 사용자의 메일 주소다.
 Accept  text/html, image/*  클라이언트가 이해가능한 미디어 타입과 우선순위를 표시한다.
 Authorization  BASIC qWiasdkQWJsjahSDkq==  사용자의 인증정보를 Base64로 인코딩한다.
 Cookie  name = value  서버에 의해 설정된 클라이언트의 쿠키정보를 나타낸다.
 Host  www.it-ing.tistory.com  호스트명과 포트번호를 표시한다.
 User-Agent  Mozilla/5.0 (Windows NT 6.1) ...  클라이언트의 소프트웨어 명칭 및 버전 정보를 가진다.

 

 

 

4) 응답헤더(Response Header)

 

응답메시지에 담는 헤더로, 응답메시지에서만 사용된다.

 

명칭  예시 값 설명
 Server  Microsoft-IIS/5.0  서버의 소프트웨어 정보를 나타낸다.
 Age  2147483648(2^31)  문서의 나이를 나타낸다.
 Set-Cookie  name=value[; option]  클라이언트에게 서버측이 쿠키를 설정한다.
 Location  http://localhost/main.asp  리다이렉트 또는 새로 생성된 리소스 주소를 나타낸다.
 Allow  GET, HEAD  리소스가 지원가능한 HTTP 메소드 리스트를 나타낸다.
 Last-Modified  Tye, 06 Mon 2016 11:11:11 GMT  마지막 수정일자 및 시각정보를 담는다.
 Vary  Date  지정된 헤더가 다중 자원으로 인해 상황에 따라 변할 수 있음을 나타낸다.
 Proxy-authenticate  [challenge]  서버가 프록시 서버일 경우 사용자 인증을 요구하기 위한 헤더다. 

 

 

 


~ 광고 타임 ~


 

 

 

메소드(Method)

 

서버와 클라이언트 간 통신에서 메소드를 통해 어떤 요청이 이뤄지는지 서버에 알려주게 된다.

메소드는 많지 않고, 실제 사용되는건 HEAD, GET, POST, OPTIONS 정도이다.

 

1) HEAD : GET과 동일하나, 자료에 대한 헤더정보만 받는다. 

2) GET : URL에 해당하는 자료의 전송을 요청한다.

3) POST : 서버가 처리할 수 있는 자료를 제출한다.

4) PUT : 해당 URL에 자료를 저장한다. 파일전송이 가능하다.

5) DELETE : 해당 URL에 존재하는 자료를 삭제한다.

6) TRACE : 요청을 그대로 반환한다.

7) OPTIONS : 웹서버가 지원하는 메소드 종류를 요청한다.

8) CONNECT : 프록시와 같은 중간 서버를 경유할 때만 드믈게 사용한다.

 

 

 

 

마치며

 

HTTP는 응용계층에서 이뤄지는 프로토콜이기 때문에,

사용자가 스니핑도구를 통해 얼마든지 직접 헤더정보를 확인할 수도 있다.

 

조만간 스니핑도구를 소개할 때 링크를 추가하도록 하겠다.

 

 

 

끝.

 

 

 

 

참고문서

 

MSDNcoffeenix / joinc / 정보통신기술용어해설 / 인생을즐기자 / 위키