싸이트에 접속하기 위해서 우리는 http접속을 하게 됩니다. 굳이 쓰지 않더라도 웹브라우저가 알아서 도메인앞에 채워주기도 하죠. 웹을 이해하기전에 무엇보다도 http protocol을 이해하는게 우선입니다.
원문링크
HTTP란
관례적으로 개념해석부터, http는 'Hypertext Transfer Protocol'의 약자로 번역하면 '超文本传输协议', 쉽게 생각하면 웹상에서 텍스트, 이미지 등과 같은 컨텐츠들을 전송하는 약속입니다. 현재 여러분이 보고 있는 이 내용도 어차피 http를 통해 다운받아서 보는겁니다.
HTTP Headers
우리가 사용하는 웹브라우저가 웹서버에 보내는 요청이 담긴 문자열의 집합. 인간대 인간으로 이해할때 A가 물음을 제기해야 B가 대답을 할수 있듯이 HTTP Headers는 A의 물음 즉 우리 웹브라우저가 보내는 요청, 이런 식이죠. 그 과정을 그림으로 보면
구체적인 HTTP Headers를 실제 문자열로 보겠습니다.
1. 우리가 웹브라우저에 url입력한후 생기는 HTTP Headers.
GET /tutorials/other/top-20-mysql-best-practices/ HTTP/1.1
Host: net.tutsplus.com
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.1.5) Gecko/20091102 Firefox/3.5.5 (.NET CLR 3.5.30729)
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 300
Connection: keep-alive
Cookie: PHPSESSID=r2t5uvjq435r4q7ib3vtdjq120
Pragma: no-cache
Cache-Control: no-cache
첫번째 라인을 HTTP Request Line (HTTP요청라인)이라 하고 나머지는 HTTP headers.
2. 요청내용이 끝난후 서버로부터 Response(응답)내용을 받습니다.
HTTP/1.x 200 OK
Transfer-Encoding: chunked
Date: Sat, 28 Nov 2009 04:36:25 GMT
Server: LiteSpeed
Connection: close
X-Powered-By: W3 Total Cache/0.8
Pragma: public
Expires: Sat, 28 Nov 2009 05:36:25 GMT
Etag: "pub1259380237;gz"
Cache-Control: max-age=3600, public
Content-Type: text/html; charset=UTF-8
Last-Modified: Sat, 28 Nov 2009 03:50:37 GMT
X-Pingback: http://net.tutsplus.com/xmlrpc.php
Content-Encoding: gzip
Vary: Accept-Encoding, Cookie, User-Agent
<!-- ... rest of the html ... -->
첫번째 라인을 Status Line(상태라인)이라 하는데, B가 A의 말귀를 알아 들었는지 여부, A의 물음을 들었는지(서버가 다운되어 있는 귀머거리의 경우), 직접 물음에 대답하고 있는지 여부를 200과 같은 코드로 표현합니다. 예제에서는 200 OK이면 말귀를 알아듣고 대답한다는 뜻이죠. 나머지 부분은 역시 HTTP Headers로 분류됩니다. 요청부분과 다른 점이라면 대답내용이 있다는거, <!-- ... rest of the html ... -->略