BLOG main image
분류 전체보기 (313)
교육 (13)
NEIS (6)
Edufine (0)
Programmer (5)
Android Programming (1)
Internet W3 (18)
JAVA Programming (9)
JSP/Servlet (1)
Framework (7)
Spring For Beginner (4)
eGovFrame (10)
MEAN Stack (2)
NodeJS (5)
SublimeText (30)
SublimeText_Tips (18)
Eclipse (16)
JavaScript (8)
jQuery (12)
jQuery_tips (1)
Ajax (3)
DWR(Direct Web Remote) (4)
JSON(JS Object Notation) (4)
Oracle (2)
MySQL (28)
OS (16)
Download (3)
Life (10)
Favorit Site (1)
Books (2)
Healthy (1)
Stocks (1)
HTML5/CSS (1)
Python (4)
Security (7)
CISSP (0)
Ruby On Rails (5)
일기장 (0)
영어 교과서(중2) (3)
알고리즘 (0)
Go Lang (3)
VB 2010 (12)
C# (1)
정보보안기사(네트워크보안) (0)
업무 활용 엑셀 (11)
틈틈이 활용팁 (14)
하루 하루 살아가며 ……. (2)
기술 (1)
파이썬 & 데이터분석 (1)
Visitors up to today!
Today hit, Yesterday hit
daisy rss
tistory 티스토리 가입하기!
2015. 7. 17. 19:32

HTTP 요청과 HTTP 응답 메세지 구조



HTTP(HyperText Transfer Protocol, 문화어: 초본문전송규약, 하이퍼본문전송규약)는 WWW 상에서 정보를 주고 받을 수 있는 프로토콜이다. 주로 HTML 문서를 주고 받는 데에 쓰인다. TCP UDP를 사용하며, 80번 포트를 사용한다. 1996년 버전 1.0, 그리고 1999년 1.1이 각각 발표되었으며, 현재 가장 널리 쓰이는 버전이 1.1이다.

HTTP는 클라이언트 서버 사이에 이루어지는 요청/응답(request/response) 프로토콜이다. 예를 들면, 클라이언트인 웹 브라우저가 HTTP를 통하여 서버로부터 웹페이지나 그림 정보를 요청하면, 서버는 이 요청에 응답하여 필요한 정보를 해당 사용자에게 전달하게 된다. 이 정보가 모니터와 같은 출력 장치를 통해 사용자에게 나타나는 것이다.

HTTP를 통해 전달되는 자료는 http:로 시작하는 URL(인터넷 주소)로 조회할 수 있다.

HTTP Message
[Request Message : Client -> Web Server]

Request

Line

method URL version 요청 방식과 URL을 기술

(ex) GET /login.jsp HTTP/1.1

GET : 요청 방식(Method) 중 하나

/login.jsp : 요청하는 페이지

HTTP/1.1 : 프로토콜 버전

Header Line

Header_Field_Name : value

HTTP 프로토콜을 이용하는데 필요한 부가 정보를 기술

Host : 서버의 기본 URL

ex) Host : 127.0.0.1:8000


Connection :

ex) keep-alive


Cache-control :

ex) max-age=0


Accept :

ex) text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8


Content-Type : 요청 문서의 미디어 타입


Content-Length : 전송되는 메시지의 길이

User-Agent : 클라이언트의 요청 에이전트 종류

운영체제, 운영체제의 종류, 현재 브라우저의 종류, GPS 위도 경도 좌표 등

ex) Mozila/5.0 (Windows NT 5.1) AppleWebKit/537.36(KHTML, like Gecko)

Chrome/27.0.1453.116 Safari/537.36


Accept-Language : 클라이언트가 처리할 수 있는 언어

ex) ko-KR,ko;q=0.8,en-US;q=0.6,en;q=0.4


Accept-Encoding :

ex) gzip, deflate, sdch

Cookie :
웹상에서의 주민번호와 같음

ex) JSESSIONID=6360435F8F56E41C89F797E4632AC12A

Refer : 다른 페이지를 요청할 경우 이전 페이지의 주소

Entitiy Body

Request_Data

서버로 전달하려는 실제 메시지를 포함하는 부분

[Response Message : Web Server -> Client]

Response

Line

version status

(ex) HTTP/1.1 200 OK


HTTP/1.1 : 프로토콜 버전


200 OK : 상태 코드, 정상적으로 접속됨을 의미

Header Line

Header_Field_Name : value

각각의 항목은 이름과 값으로 구성된다.

Date

패킷 생성 시간

ex) Date: Fri, 28 Jun 2013 06:26:33 GMT

Server

서버 정보를 담고 있지만 이 부분을 클라이언트에게 줄 경우 위험(보통 주지 않음)

ex) Server: Apache-Coyote/1.1

Cache-Control
클라이언트가 받은 문서를 캐시(Cache)에 저장할 것인지 여부를 설정
Connection 항목은 웹 브라우저의 연결 방식을 지정한다. 웹 브라우저가 영속적 HTTP 연결을 사용하지 않도록 설정하려면 Connection 항목의 값을 close로 지정하면 된다. 기본적으로는 영속적 연결을 사용한다.

Connection
웹 서버로부터 응답이 완료된 후 연결을 유지할 것인지 끊을 것인지를 지정
Expires 항목은 캐시에 문서가 남아있을 시간을 설정한다. Expires 항목에 지정된 시간만큼 클라이언트의 캐시에 문서가 보관된다.

Expires
캐시에 문서가 저장되어있을 시간을 설정
Refresh 항목은 웹 브라우저가 Refresh 항목에 지정된 웹 페이지로 자동 연결하도록 지정하기 위해 사용한다.

Refresh
또 다른 웹 페이지의 자동 로딩을 지정

Set-Cookie
쿠키를 설정

Data

Response_Data

클라이언트로부터 전달된 요청의 수행 결과가 포함된다. HTTP 응답 메시지는 첫번째 줄을 제외하고 HTTP요청 메시지와 유사한 구조를 가지고 있다.

<html><body>

Hello

</body></html>

[출처] http://blog.naver.com/abrightpn/60194877969

 

반응형