웹서버

[정보] HTTP 구조 - 헤더(Header)와 본문(Body)

투칼론 2020. 3. 22. 16:08
반응형

하이퍼 텍스트 전송 프로토콜(HTTP, Hyper Text Transport Protocol) 통신을 사용하면 클라이언트와 서버간에 두 가지 유형의 메시지 (HTTP 요청 및 HTTP 응답)를 전송할 수 있다. 클라이언트/브라우저가 요청을 서버로 보내고 서버가 브라우저로 응답을 보낸다. 두 메시지는 공통 포맷을 가지고 있고, HTTP 헤더와 HTTP 본문을 포함한다.

HTTP 요청 / 응답 메시지

1. HTTP 헤더


HTTP 헤더는 HTTP 본문(body) 및 요청/응답에 대한 정보를 포함한다. 
본문에 대한 정보는 본문 컨텐츠 길이 등 본문 컨텐츠와 관련이 있다.

요청/응답에 대한 정보는 요청/응답에 대한 일반(General) 정보를 포함한다 (예 : 요청 시간, 요청에 사용 된 브라우저 등). 헤더의 프로퍼티는 이름-값(Name-Value) 쌍으로 설정되며, 콜론 ':'으로 구분된다. 형식은 다음과 같다.

이름 : 값  (Name - Value)

 

2. HTTP 헤더 유형

HTTP 1.1에서 헤더는 세 부분으로 더 나눌 수 있습니다.

일반 헤더 (General Header)
요청 / 응답 헤더 (Request / Response Header)
엔터티 헤더 (Entity Header)

1) 일반 헤더
전송되는 HTTP 본문 컨텐츠와 관련없고, 요청/응답이 생성된 날짜 및 시간 등과 같은 HTTP 통신에 대한 일반적인 정보가 포함된다. 이 헤더는 HTTP 요청과 응답 메시지에 공통으로 사용된다. 예

예) Date:Tue, 17 Nov 2015 16:39:15 GMT

2) 요청 / 응답 헤더
서버에 요청하면 요청 헤더가 있고 서버가 클라이언트/브라우저로 응답을 다시 보낼 때 응답 헤더가 있다.

요청 헤더는 요청한 URL, 메소드 (GET, POST, HEAD), 요청 생성에 사용 된 브라우저 및 기타 정보와 같은 요청에 대한 정보가 포함된다.

예)  User-Agent:”Mozilla / 5.0 (Windows NT 10.0; WOW64; rv : 41.0) Gecko / 20100101 Firefox / 41.0 ″

브라우저라는 용어는 사용자 에이전트(User Agent)라고도 한다. 따라서 페이지에 대한 간단한 요청조차도 사용중인 브라우저 및 운영 체제에 대한 정보를 전송해야한다. 위의 헤더 필드에서 Windows 10 및 Firefox 41.0 브라우저를 사용하고 있음을 알 수 있다.

응답 헤더 는 사용자가 특정 페이지 또는 리소스에 대한 요청을 보낸 후 서버에서 브라우저에 의해 수신되며 컨텐츠에 사용 된 인코딩, 서버 시스템에서 응답을 생성하는 데 사용되는 서버 소프트웨어 및 기타 정보를 포함한다.

예) Server:nginx

대부분의 사이트는 해커가 서버에서 어떤 소프트웨어가 사용되고 있는지 알기 어렵도록 서버 정보를 숨긴다. 이는 웹서버 구성파일에 설정 가능하다.

3) 엔터티 헤더
이 헤더에는 실제 메시지 또는 전송중인 HTTP 본문에 대한 정보가 포함된다. 컨텐츠 길이, 컨텐츠 언어, 인코딩, 만료 날짜 및 기타 중요한 정보와 같은 정보. 

예) Contents-Length:4959

위의 컨텐츠 길이 4,595 바이트(4.5 KB)는 헤더를 제외한 본문/컨텐츠의 길이를 의미한다. 이제 브라우저는 수신 된이 데이터를 읽기 시작하고, 헤더 섹션에있는 CSS, JavaScript, 이미지 파일의 URL에 연결하여, 별도의 HTTP 요청을 통해 해당 리소스를 가져 오기 위해 모든 요청을 전송한다.

 

3. HTTP 본문

이제 가져올 실제 데이터 컨텐츠/메시지 본문이 나타난다. 콘텐츠에는 요청한 리소스에 따라 HTML 코드, 이미지, CSS 스타일 시트 또는 JavaScript 파일이 포함될 수 있다.

 

[글참조] http://www.cleantutorials.com/html/format-of-http-request-response-header-and-body-with-example