HTTP 메시지란
HTTP 메시지는 응답 혹은 요청시에 서버-클라이언트 간의 대화라고 생각하면 편하다. 응답과 요청 메시지의 구조는 다르다. 참고
구조는
- 시작
- 헤더
- 공백(CRLF)
- 메시지
로 이루어져있다.
시작라인
매우 단순한 구조로 손쉬운 확장이 가능하다.
요청 메시지
1
2
GET /search?q=helloWorld&hl=ko HTTP/1.1
Host: www.google.com
1
2
method(ex.GET,POST..) SP(공백)request-target SP HTTP-version CRLF(엔터)
Header
HTTP method
GET /search?q=helloWorld&hl=ko HTTP/1.1
종류: GET, POST, PUT, DELETE …
서버가 수행할 동작을 지정.
HTTP request-target(요청대상)
GET /search?q=helloWorld&hl=ko HTTP/1.1
절대경로(“/”) 로 시작하는 경로
HTTP version
GET /search?q=helloWorld&hl=koHTTP/1.1
HTTP의 버전 명시
HTTP Header
Host: www.google.com
Header-field = field-name: SP field-value SP
field-name에는 대소문자 구분이 없다.
HTTP 전송에 필요한 모든 부가정보가 포함되어있다. ex) 메시지 바디 내용, 크기, 클라이언트 정보등등등. 표준 헤더가 너무 많고 필요시 임의 헤더 추가도 가능하다.
응답 메시지
1
2
3
4
5
6
7
HTTP/1.1 200 OK
Content-Type: text/html;charset=UTF-8
Content-Length: 3423
<html>
<body>...</body>
</html>
1
2
3
HTTP-version SP status-code SP reason-phrase CRLF
MSG
HTTP version
HTTP/1.1 200 OK
Content-Type: text/html;charset=UTF-8
Content-Length: 3423
HTTP의 버전 명시
HTTP status-code
HTTP/1.1 200 OK
Content-Type: text/html;charset=UTF-8
Content-Length: 3423
HTTP의 연결 상태
- 200: 성공
- 400: 클라이언트 요청 오류
- 500: 서버 내부 오류
HTTP reason-phrase
HTTP/1.1 200 OK
Content-Type: text/html;charset=UTF-8
Content-Length: 3423
HTTP의 연결 상태(인간말)
HTTP Header
HTTP/1.1 200 OK
Content-Type: text/html;charset=UTF-8
Content-Length: 3423
Header-field = field-name: SP field-value SP
field-name에는 대소문자 구분이 없다.
HTTP 전송에 필요한 모든 부가정보가 포함되어있다. ex) 메시지 바디 내용, 크기, 클라이언트 정보등등등. 표준 헤더가 너무 많고 필요시 임의 헤더 추가도 가능하다.