1. HTTP의 요청 및 응답
ㅇ HTTP 동작 구조
- 웹서버 및 웹브라우저 간의 요청 및 응답 구조
ㅇ HTTP 메세지
- 웹서버 및 웹브라우저 간에 전달되는 정형화된 데이터 덩어리
2. 요청(Request) 메세지 구성
ㅇ 시작줄 : 요청 행 (Request line)
- 요청 방법(method) ☞ HTTP 요청 메소드 참조
. HTTP 요청 메소드 : GET, POST, HEAD, PUT, CONNECT, UNLINK, LINK 등
- 요청 URI (URL)
. 보통, 경로(/) 이후 상대 URI(절대 경로가 아님)를 주고, 이를 텍스트 문자열로 표기함
.. 例) /section/page.html?page=1 등
. 구분자 : 문서 경로(/), 쿼리 파라미터들(?), URI 프래그먼트(#)
- HTTP 버젼(Version)
. 例) GET /dir/page.html HTTP/1.1
ㅇ HTTP 요청 헤더 (HTTP Request Header) ☞ HTTP 요청 헤더 참조
- 일련의 요청 헤더 행(header line)들로 구성 ☞ HTTP 요청 헤더 항목 참조
. 하나의 요청 메세지에 복수의 헤더 항목들을 갖을 수 있음
. 각 헤더 항목 줄에는 `이름: 값` 형식의 구성을 함
. 헤더 항목 이름(Name) 뒤에 `:`와 `빈칸`을 두고 값(Value)이 옴
- 例)
. Host: www.kt.co.kr ⇒ 요청받는 페이지가 존재하는 호스트 이름 (Host 항목은 필수)
. User-Agent: Mozilla/4.0 ⇒ 넷스케이프 브라우저
ㅇ 빈 줄 (blank line) : (헤더의 끝을 의미함)
※ HTTP 요청 메세지 헤더 例)
GET / HTTP/1.1 // 요청 행 (메소드,웹페이지 디렉토리,버젼)
Host: www.ktword.co.kr // 호스트명
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
Accept-Encoding: gzip, deflate, sdch
Accept-Language: ko-KR,ko;q=0.8,en-US;q=0.6,en;q=0.4
User-Agent: Mozilla/5.0 (...) // 웹브라우저
ㅇ HTTP 본체 (HTTP Body)
- 단, 요청방법의 메소드가 POST가 아니면, 항상 비어있는채로 전달됨
3. 응답(Response) 메세지 구성
ㅇ 시작줄 : 응답 행 (Response line) 또는 상태 행 (Status line)
- HTTP 버젼
- 요청 성공여부에 대한 코드 ☞ HTTP 상태 코드 참조
. 1xx : 처리중, 2xx : 성공, 3xx : 리다이렉션, 4xx : 클라이언트 오류, 5xx : 서버 오류
. 例) 200 OK : 요청 성공, 400 Bad Request : 요청 오류 등
- 例) HTTP/1.1 200 OK -> HTTP 버젼이 1.1이며, 상태 코드 200(요청 성공)이 OK라는 뜻
ㅇ HTTP 응답 헤더 (HTTP Response Header) ☞ HTTP 응답 헤더 참조
- 일련의 응답 헤더 행(header line)들로 구성 ☞ HTTP 응답 헤더 항목 참조
. 하나의 응답 메세지에 복수의 헤더 항목들을 갖을 수 있음
. 각 헤더 줄에는 `이름: 값` 형식의 구성을 함
. 이름(Name) 뒤에 `:`와 `빈칸`을 두고 값(Value)이 옴
.. 例) Server: Apache/1.3.0 <- 응답결과가 아파치 웹서버에 의해 만들어짐
ㅇ 빈 줄 (blank line) : (헤더의 끝을 의미함)
※ HTTP 응답 메세지 헤더 例)
HTTP/1.1 200 OK // 응답 행 (버젼,응답 코드)
Connection: Keep-Alive
Content-Length: 6330
Content-Type: text/html
Date: Fri, 03 Apr 2015 07:27:57 GMT
Keep-Alive: timeout=5, max=100
Server: Apache/2.2.16 (Win32) PHP/5.3.13
X-Powered-By: PHP/5.3.13
ㅇ HTTP 바디 (HTTP Body)