오늘은 지난포스팅에 이어 HTTP가 어떻게 사용되는지에 대해 포스팅하겠습니다.
저희가 웹브라우저로 구글에 접속할 수 있는것은 웹브라우저에서 http request를 전송하고, http response를 받아서 화면에 뿌려주기 때문입니다.
먼저 http request 메시지 Format에 대해 알아보겠습니다.
Reque메시지는 스펙상 아래와 같습니다.
1 Request-Line
2 *(( general-header | request-header | entity-header ) CRLF)
3 CRLF
4 [ message-body ]
아래는 예시입니다.
GET /test.html HTTP/1.1
Date : Mon, 10 Aprial 2017 11:11:11:11 GMT
Content-Type : text/html; charset=UTF-8
1. Request-Line ( GET /test.html HTTP/1.1 )
이것의 형식은 Method[space]Request-URI[SPACE]HTTP-VERSION[CRLF] 입니다. 아래는 예시입니다.
제일 앞의 GET는 HTTP Request Method입니다.
이 메소드들에 대해 간단히 설명하겠습니다.
메소드 |
설명 |
GET |
URI가 가진 정보를 검색하기 위해 서버측에 요청하는 형태 |
POST |
요청 데이터를 담아 서버에 전송. |
PUT |
POST와 유사한 형태지만 갱신위주로 사용. |
DELETE |
PUT과 반대로 서버의 파일을 삭제하기 위해 사용되는 형태 |
HEAD |
GET과 유사한 방식이지만, 문서 정보를 요청. |
OPTIONS | 시스템에서 지원디는 메소즈 종류를 확인하기 위해 사용 |
TRACE | 서버에 LoopBack 메시지를 호출하기 위해 사용 |
CONNECT |
프락시 기능을 요청할 때 사용 |
이 중에 GET, POST, PUT, DELETE를 많이 사용합니다.
/test.html은 URI 정보입니다. 예를 들면 www.abc.com/test.html을 웹 브라우저에 입력했다면, URI 정보는 /뒤의 값(/test.html)이 되는 것입니다.
마지막 HTTP/1.1은 HTTP 버젼정보입니다.
2. *(( general-header | request-header | entity-header ) CRLF)
( Date : Mon, 10 Aprial 2017 11:11:11:11 GMT
Content-Type : text/html; charset=UTF-8 )
그 다음은 헤더정보들 입니다.
헤더 종류는 아주많습니다.
여기서는 Date, Content-Type를 넣어봤습니다.
많은 헤더들 중에 필요한 정보들만 적으면 됩니다. 웹브라우져에서 자동으로 만듭니다.
3. CRLF
이것은 헤더의 끝을 알려주기 위해 공백을 사용합니다. 개행을 사용하면됩니다.
4. [ message-body ]
메시지 바디는 메소드에 따라 생략이 가능합니다.
다음, http response 메시지 Format에 대해 알아보겠습니다.
1 Status-Line
2 *(( general-header | response-header | entity-header ) CRLF)
3 CRLF
4 [ message-body ]
아래는 예시입니다.
HTTP/1.1 200 OK
Date : Mon, 10 Aprial 2017 11:11:11:11 GMT
Content-Type : text/html; charset=UTF-8
{
test
}
1. Status-Line ( HTTP/1.1 200 OK )
이것의 형식은HTTP-VERSIOPN[SPACE]STATUS-CODE[SPACE]Reason-Phrase CRLF 입니다.
제일 앞의 HTTP/1.1은 버젼정보입니다.
그 다음 200 은 상태 코드입니다.
상태 코드에대해 몇 가지만 적어보겠습니다.
상태 코드 |
설명 |
1xx |
정보성 |
2xx |
성공 |
3xx |
리다이렉션 |
4xx |
클라이언트 오류 |
5xx |
서버 오류 |
위의 200은 성공에 대한 상태코드 입니다.
뒤의 OK는 상태코드에 따른 값입니다.
2. *(( general-header | response-header | entity-header ) CRLF)
( Date : Mon, 10 Aprial 2017 11:11:11:11 GMT
Content-Type : text/html; charset=UTF-8 )
헤더 정보입니다.
request 메시지와 비슷한 헤더들도 있습니다.
3. CRLF
여기도 마찬가지로 헤더의 끝을 알립니다.
4 [ message-body ]
( {
test
} )
여기는 메시지 바디 정보입니다. 바디 정보에 필요한 응답 메시지 등의 값들이 들어갑니다.
HTTP에 대해 좀 더 알아보았습니다.
오늘 포스팅은 여기까지하겠습니다.
감사합니다.
'네트워크 > 프로토콜' 카테고리의 다른 글
[프로토콜]IMAP ( Internet Message Access Protocl ) (0) | 2017.08.03 |
---|---|
[프로토콜]S-HTTP(Secure Hypertext Transfer Protocol) (0) | 2017.07.18 |
[프로토콜]HTTP(Hypertext Trasfer Protocol) 프로토콜(1) (0) | 2017.05.29 |
[프로토콜]Finger(User Information Protocol ) 프로토콜 (0) | 2017.05.18 |
[프로토콜]FTP(FileTransfer Protocol) 프로토콜 (0) | 2017.03.22 |