ì íì ì¸ HTTP ì¸ì
HTTPì ê°ì í´ë¼ì´ì¸í¸-ìë² íë¡í ì½ìì, ì¸ì ì ë¤ìì ì¸ ê°ì§ ê³¼ì ì¼ë¡ ì´ë£¨ì´ì§ëë¤.
- í´ë¼ì´ì¸í¸ê° TCP ì°ê²°ì ì립í©ëë¤(ëë ì ì¡ ê³ì¸µì´ TCPê° ìë ë¤ë¥¸ ì ë¹í ì°ê²°ë¡).
- í´ë¼ì´ì¸í¸ë ìì²ì ì ì¡í ë¤ ìëµì 기ë¤ë¦½ëë¤.
- ìë²ë ìì²ì ëí´ ì²ë¦¬íê³ ê·¸ì ëí ìëµì ìí ì½ë ê·¸ë¦¬ê³ ìì²ì ë¶í©íë ë°ì´í°ì í¨ê» ëë ¤ë³´ë ëë¤.
HTTP/1.1ë¶í°ë ì¸ë²ì§¸ ê³¼ì ì´í í´ë¼ì´ì¸í¸ê° í´ë¹ ìì ì ë ë¤ë¥¸ ìì²ì ë³´ë¼ ì ìëë¡ ì°ê²°ì ë ì´ì ë«ì§ ììµëë¤. ê·¸ë¬ë¯ë¡ ëë²ì§¸, ì¸ë²ì§¸ ê³¼ì ì´ ëª ë²ì ê±¸ì³ ì¼ì´ë ì ììµëë¤.
ì°ê²° ì립
í´ë¼ì´ì¸í¸-ìë² íë¡í ì½ì, í´ë¼ì´ì¸í¸ë ì°ê²°ì ì립í©ëë¤. HTTPìì ì°ê²°ì ì¬ë ê²ì ë³´íµì ê²½ì° TCPì¸ ê¸°ë³¸ì ì¸ ì ì¡ ê³ì¸µ ë´ìì ì°ê²°ì ì립íë ê²ì ë»í©ëë¤.
TCP를 ì´ì©í ê²½ì°, ì»´í¨í° ìì HTTP ìë²ë¥¼ ìí 기본 í¬í¸ë 80ì¸ë° 8000 í¹ì 8080ì²ë¼ ë¤ë¥¸ í¬í¸ë¤ë ì주 ì¬ì©ë곤 í©ëë¤. ìì²ì ìí íì´ì§ URLì ëë©ì¸ ì´ë¦ê³¼ í¬í¸ ë²í¸ ë ë¤ í¬í¨íì§ë§ í¬í¸ ë²í¸ê° 80ì¼ ê²½ì° ìëµ ê°ë¥í©ëë¤. ì¢ ë ìì¸í ë´ì©ì ì¹ ë¦¬ìì¤ ìë³ì ì°¸ê³ íì기 ë°ëëë¤.
ì°¸ê³ :
기ìµíì¸ì í´ë¼ì´ì¸í¸-ìë² ëª¨ë¸ì ìë²ë¡ íì¬ê¸ ëª
ìì ì¸ ìì²ìì´ í´ë¼ì´ì¸í¸ë¡ ë°ì´í°ë¥¼ ì ì¡íë ê²ì íì©íì§ ììµëë¤. ì´ë° 문ì ì ëí í´ê²°ì±
ì¼ë¡, ì¹ ê°ë°ìë¤ì ëª ê°ì§ 기ì ì ì¬ì©í©ëë¤: XMLHTTPRequest í¹ì Fetch API를 íµí´ 주기ì ì¼ë¡ ìë²ì íí기, HTML ì¹ìì¼ API, í¹ì ê·¸ì ì ì¬í íë¡í ì½ ì¬ì©
í´ë¼ì´ì¸í¸ ìì² ì ì¡
ì°ê²°ì´ íë² ì립ëê³ ëë©´ ì¬ì©ì-ìì´ì í¸ë ìì²ì ë³´ë¼ ì ììµëë¤(ì¬ì©ì-ìì´ì í¸ë ì¼ë°ì ì¼ë¡ ì¹ ë¸ë¼ì°ì 를 ë§íì§ë§, ì를 ë¤ìë©´ crawlerì ê°ì´ 무ìì´ë ë ì ììµëë¤). í´ë¼ì´ì¸í¸ ìì²ì ì¸ ê°ì§ ë¸ë¡ì¼ë¡ ëëì´ì§ CRLF(ë¼ì¸ í¼ë를 ë°ë¥´ë ìºë¦¬ì§ 리í´)ë¡ êµ¬ë¶ë í ì¤í¸ ì§ììë¤ë¡ ì´ë£¨ì´ì§ëë¤.
-
첫ë²ì§¸ ì¤ì íë¼ë©í°ê° ë°ë¥´ë ìì² ë©ìë를 í¬í¨í©ëë¤.
- 문ìì ê²½ë¡, ì¦ íë¡í ì½ê³¼ ëë©ì¸ ì´ë¦ì ì ì¸í ì ë URL
- ì¬ì©ì¤ì¸ HTTP íë¡í ì½ ë²ì
-
ë°ë¡ ë¤ì ì¤ë¤ì ê°ê° í¹ì í¤ë를 ëíë´ëë° ë°ì´í°ì ì¢ ë¥ê° ì í©íì§(ì를 ë¤ì´, ì¸ì´ë 무ìì¸ì§, MIME íì ì 무ìì¸ì§ ë±) í¹ì ìë²ì ëìì ìì íë ëª ê°ì§ ë°ì´í°(ì를 ë¤ì´ ì´ë¯¸ ìºìëì´ ìë ê²½ì° ìëµì ì ì¡íì§ ìëë¤ë ì§ íë) ë±ì ê´í ëª ê°ì§ ì 보를 ìë²ìê² ì ê³µí©ëë¤. ì´ë° HTTP í¤ëë¤ì ë¹ ì¤ë¡ ëëë ë¸ë¡ì íì±í©ëë¤.
-
ë§ì§ë§ ë¸ë¡ì ë¶ê°ì ì¸ ë°ì´í° ë¸ë¡ì¼ë¡. ë ë§ì ë°ì´í°ë¥¼ í¬í¨íë©° ì£¼ë¡ POST ë©ìëì ìí´ ì¬ì©ë©ëë¤.
ìì² ìì
develper.mozilla.org. http://developer.mozilla.org/ì ìµìì íì´ì§ë¥¼ ê°ì ¸ì¤ëë¡ ìì²íê³ , ê°ë¥íë¤ë©´ ìë²ìê² ì¬ì©ì-ìì´ì í¸ê° í´ë¹ íì´ì§ì ëí´ íëì¤ì´ë¡ ë íì´ì§ë¥¼ ìíë¤ê³ ìë ¤ì¤ëë¤.
GET / HTTP/1.1 Host: developer.mozilla.org Accept-Language: fr
í¤ë ë¸ë¡ì¼ë¡ë¶í° ë°ì´í° ë¸ë¡ì 구ë¶ì§ë 첫ë²ì§¸ ë¹ì¤ì 주목íì¸ì. í¤ë ì¤ì Content-Length: í¤ëê° ìì¼ë¯ë¡, ë°ì´í° ë¸ë¡ì ë¹ì´ìê³ ìë²ë í¤ëì ë§ì§ë§ì ëíë´ë ë¹ ì¤ì ë°ë ì¦ì ìì²ì ì²ë¦¬í ì ììµëë¤.
ë¤ìì ê²°ê³¼ ì ì¡ íìì ëë¤.
POST /contact_form.php HTTP/1.1 Host: developer.mozilla.org Content-Length: 64 Content-Type: application/x-www-form-urlencoded name=Joe%20User&request=Send%20me%20one%20of%20your%20catalogue
ìì² ë©ìë
HTTPë 주ì´ì§ ììì ëí´ ì¤íë길 ë°ë¼ë ëìì ê°ë¦¬í¤ë ìì² ë©ìë ì§í©ì ì ìí©ëë¤. ê·¸ê²ë¤ì´ ëª
ì¬ê° ë ì ììì§ë¼ë, ì´ ìì² ë©ìëë¤ì ëëë¡ HTTP ëì¬ë¡ì¨ 참조ë©ëë¤. ì¼ë°ì ì¼ë¡ ëë¶ë¶ì ìì²ì GETê³¼ POSTì
ëë¤.
GETë©ìëë ì§ì ë ììì íì를 ìì²í©ëë¤.GETì ì¬ì©íë ìì²ì ë°ì´í°ë¥¼ ê°ì ¸ì¤ë ê² ì¸ìë í ì ììµëë¤.POSTë©ìëë ìë²ì ë°ì´í°ë¥¼ ì ì¡íì¬ ìë²ê° ìí를 ë°ê¾¸ëë¡ ë§ëëë¤. ì´ê²ì HTML Formsìì ì주 ì¬ì©ëë ë©ìëì ëë¤.
ìë² ìëµì 구조
ì°ê²°ë ìì´ì í¸ê° ìì ì ìì²ì ì ì¡íê³ ë ë¤ì, ì¹ ìë²ê° ê·¸ê²ì ì²ë¦¬íê³ ìµì¢ ì ì¼ë¡ ìëµì ëë ¤ë³´ë´ê² ë©ëë¤. í´ë¼ì´ì¸í¸ ìì²ê³¼ ì ì¬íê² ìë² ìëµì ì¸ ê°ì ë¤ë¥¸ ë¸ë¡ì¼ë¡ ëëì´ì§ CRLFë¡ êµ¬ë¶ë í ì¤í¸ ì§ììë¤ë¡ íì±ë©ëë¤.
- ìí ì¤ì¸ 첫ë²ì§¸ ì¤ì ìí ìì²(ê·¸ë¦¬ê³ ì¸ê°ì´ ì½ì ì ìë í ì¤í¸ ë´ììì ì미)ì´ ë°ë¥´ëë¡ ì¬ì©ë HTTP ë²ì ì acknowledgmentë¡ êµ¬ì±ë©ëë¤.
- ë¤ì ì¤ë¤ì ê°ê° í¹ì HTTP í¤ë를 ëíëë°, ì ì¡ëë ë°ì´í°ì ê´í ì ë³´(ì´ë¥¼í ë©´, íì , ë°ì´í° í¬ê¸°, ì¬ì©ë ìì¶ ìê³ ë¦¬ì¦, ìºìì ëí íí¸ ë±)를 í´ë¼ì´ì¸í¸ìê² ì ê³µí©ëë¤. í´ë¼ì´ì¸í¸ì ìì²ì ëí HTTP í¤ë ë¸ë¡ê³¼ ì ì¬íê², ì´ HTTP í¤ëë¤ì ë¹ ì¤ë¡ ëëë ë¸ë¡ì íì±í©ëë¤.
- ë§ì§ë§ ë¸ë¡ì ë°ì´í° ë¸ë¡ì¼ë¡ (ì¡´ì¬íë¤ë©´) ë°ì´í°ë¥¼ í¬í¨í©ëë¤.
ìëµ ìì
ì¹ íì´ì§ì ì±ê³µì ì¸ ìì
HTTP/1.1 200 OK Date: Sat, 09 Oct 2010 14:28:02 GMT Server: Apache Last-Modified: Tue, 01 Dec 2009 20:18:22 GMT ETag: "51142bc1-7449-479b075b2891b" Accept-Ranges: bytes Content-Length: 29769 Content-Type: text/html <!DOCTYPE html... (here comes the 29769 bytes of the requested web page)
ìì² ììì´ ì구ì ì¼ë¡ ì®ê²¨ì¡ë¤ë ë´ì©ì ì림
HTTP/1.1 301 Moved Permanently Server: Apache/2.2.3 (Red Hat) Content-Type: text/html; charset=iso-8859-1 Date: Sat, 09 Oct 2010 14:30:24 GMT Location: https://developer.mozilla.org/ (this is the new link to the resource; it is expected that the user-agent will fetch it) Keep-Alive: timeout=15, max=98 Accept-Ranges: bytes Via: Moz-Cache-zlb05 Connection: Keep-Alive X-Cache-Info: caching X-Cache-Info: caching Content-Length: 325 (the content contains a default page to display if the user-agent is not able to follow the link) <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN"> <html><head> <title>301 Moved Permanently</title> </head><body> <h1>Moved Permanently</h1> <p>The document has moved <a href="https://developer.mozilla.org/">here</a>.</p> <hr> <address>Apache/2.2.3 (Red Hat) Server at developer.mozilla.org Port 80</address> </body></html>
ìì²ë ììì´ ì¡´ì¬íì§ ìëë¤ë ë´ì©ì ì림
HTTP/1.1 404 Not Found Date: Sat, 09 Oct 2010 14:33:02 GMT Server: Apache Last-Modified: Tue, 01 May 2007 14:24:39 GMT ETag: "499fd34e-29ec-42f695ca96761;48fe7523cfcc1" Accept-Ranges: bytes Content-Length: 10732 Content-Type: text/html <!DOCTYPE html... (contains a site-customized page helping the user to find the missing resource)
ìëµ ìí ì½ë
HTTP ìëµ ìí ì½ëë í¹ì HTTP ìì²ì´ ì±ê³µì ì¼ë¡ ëë¬ëì§ ìëì§ë¥¼ ê°ë¦¬íµëë¤. ìëµì ë¤ì¯ê°ì§ ê³ì¸µ ë´ë¡ 그룹íë©ëë¤: ì 보를 ì ê³µíë ìëµ, ì±ê³µì ì¸ ìëµ, 리ë¤ì´ë í¸, í´ë¼ì´ì¸í¸ ì¤ë¥, ê·¸ë¦¬ê³ ìë² ì¤ë¥.