HTTP ë©ìì§
HTTP ë©ìì§ë ìë²ì í´ë¼ì´ì¸í¸ ê°ì ë°ì´í°ê° êµíëë ë°©ìì ëë¤. ë©ìì§ íì ì ë ê°ì§ê° ììµëë¤. ìì²('request')ì í´ë¼ì´ì¸í¸ê° ìë²ë¡ ì ë¬í´ì ìë²ì ì¡ì ì´ ì¼ì´ëê²ë íë ë©ìì§ê³ , ìëµ('response')ì ìì²ì ëí ìë²ì ëµë³ì ëë¤.
HTTP ë©ìì§ë ASCIIë¡ ì¸ì½ë©ë í ì¤í¸ ì ë³´ì´ë©°, ì¬ë¬ ì¤ë¡ ëì´ ììµëë¤. HTTP íë¡í ì½ ì´ê¸° ë²ì ê³¼ HTTP/1.1ììë, í´ë¼ì´ì¸í¸ì ìë² ì¬ì´ì ì°ê²°ì íµí´ ê³µê°ì ì¼ë¡ ì ë¬ëììµëë¤. ì´ë ê² í ë ì¬ëì´ ì½ì ì ììë ë©ìì§ë HTTP/2ììë ìµì íì ì±ë¥ í¥ìì ìí´, HTTP íë ìì¼ë¡ ëëì´ì§ëë¤.
ì¹ ê°ë°ì, ëë ì¹ ë§ì¤í°ê° ìì HTTP ë©ìì§ë¥¼ í ì¤í¸ë¡ ìì±íë ê²½ì°ë ëë ëë¤. ëì ì ìíí¸ì¨ì´, ë¸ë¼ì°ì , íë¡ì, ëë ì¹ ìë²ê° ê·¸ ì¼ì í©ëë¤. HTTP ë©ìì§ë ì¤ì íì¼(íë¡ì í¹ì ìë²ì ê²½ì°), API(ë¸ë¼ì°ì ì ê²½ì°), í¹ì ë¤ë¥¸ ì¸í°íì´ì¤ë¥¼ íµí´ ì ê³µë©ëë¤.

HTTP/2ì ì´ì§ íë ì´ë° ë©ì»¤ëì¦(binary framing mechanism)ì ì¬ì© ì¤ì¸ APIë ì¤ì íì¼ ë±ì ë³ê²½íì§ ììë ëëë¡ ì¤ê³ ëì기 ë문ì, ì¬ì©ìê° ë³´ê³ ì´í´í기 ì½ìµëë¤.
HTTP ìì²ê³¼ ìëµì 구조ë ìë¡ ë®ìì¼ë©°, ê·¸ 구조ë ë¤ìê³¼ ê°ìµëë¤.
- ìì ì¤('start-line')ìë ì¤íëì´ì¼ í ìì², ëì ìì² ìíì ëí ì±ê³µ ëë ì¤í¨ê° 기ë¡ëì´ ììµëë¤. ì´ ì¤ì íì í ì¤ë¡ ëë©ëë¤.
- ìµì ì¼ë¡ 'HTTP í¤ë' ì¸í¸ê° ë¤ì´ê°ëë¤. ì¬ê¸°ìë ìì²ì ëí ì¤ëª , í¹ì ë©ìì§ ë³¸ë¬¸ì ëí ì¤ëª ì´ ë¤ì´ê°ëë¤.
- ìì²ì ëí 모ë ë©í ì ë³´ê° ì ì¡ëììì ì리ë ë¹ ì¤('blank line')ì´ ì½ì ë©ëë¤.
- ìì²ê³¼ ê´ë ¨ë ë´ì©(HTML í¼ ì½í ì¸ ë±)ì´ ìµì ì¼ë¡ ë¤ì´ê°ê±°ë, ìëµê³¼ ê´ë ¨ë 문ìê° ë¤ì´ê°ëë¤. 본문ì ì¡´ì¬ ì 무 ë° í¬ê¸°ë 첫 ì¤ê³¼ HTTP í¤ëì ëª ìë©ëë¤.
HTTP ë©ìì§ì ìì ì¤ê³¼ HTTP í¤ë를 묶ì´ì 'ìì² í¤ë(head)' ë¼ê³ ë¶ë¥´ë©°, ì´ì ë°ëë¡ HTTP ë©ìì§ì íì´ë¡ëë '본문(body)'ì´ë¼ê³ í©ëë¤.

HTTP ìì²
>ìì ì¤
HTTP ìì²ì ìë²ê° í¹ì ëìì ì·¨íê²ë ë§ë¤ê¸° ìí´ í´ë¼ì´ì¸í¸ìì ì ì¡íë ë©ìì§ì ëë¤. ìì ì¤ì ë¤ìê³¼ ê°ì´ ì¸ ê°ì§ ììë¡ ì´ë£¨ì´ì ¸ ììµëë¤.
-
'HTTP ë©ìë'ë¡, ìì´ ëì¬(
GET,PUT,POST) í¹ì ëª ì¬(HEAD,OPTIONS)를 ì¬ì©í´ ìë²ê° ìíí´ì¼ í ëìì ëíë ëë¤. ì를 ë¤ì´,GETì 리ìì¤ë¥¼ í´ë¼ì´ì¸í¸ë¡ ê°ì ¸ë¤ ë¬ë¼ë ê²ì ë»íë©°,POSTë ë°ì´í°ê° ìë²ë¡ ë¤ì´ê°ì¼ í¨ì ì미(리ìì¤ë¥¼ ìë¡ ë§ë¤ê±°ë ìì í기 ìí´, ëë í´ë¼ì´ì¸í¸ë¡ ëë ¤ ë³´ë¼ ìì 문ì를 ìì±í기 ìí´)í©ëë¤. -
'ìì² íê²'ì ì£¼ë¡ URL, ëë íë¡í ì½, í¬í¸, ëë©ì¸ì ì ë ê²½ë¡ë¡ ëíë¼ ìë ìì¼ë©° ì´ë¤ì ìì² ì»¨í ì¤í¸ì ìí´ í¹ì ì§ì´ ì§ëë¤. ìì² íê² í¬ë§·ì HTTP ë©ìëì ë°ë¼ ë¬ë¼ì§ëë¤. í¬ë§·ìë ë¤ìê³¼ ê°ì ê²ë¤ì´ ììµëë¤.
- ê°ì¥ ì¼ë°ì ì¸ íìì´ê³ 'origin íì'ì¼ë¡ ìë ¤ì§ ì ë ê²½ë¡ì
ëë¤. ì´ íìì ëì
'?'ì 쿼리 문ìì´ì´ ë°ë¼ìµëë¤.GET,POST,HEAD,OPTIONSë©ìëì í¨ê» ì¬ì©í©ëë¤.POST / HTTP/1.1GET /background.png HTTP/1.0HEAD /test.html?query=alibaba HTTP/1.1OPTIONS /anypage.html HTTP/1.0
- 'absolute íì'ì¼ë¡ ìë ¤ì§ ìì í URLì íë¡ìì ì°ê²°íë ê²½ì° ëë¶ë¶
GETê³¼ í¨ê» ì¬ì©ë©ëë¤.GET http://developer.mozilla.org/ko/docs/Web/HTTP/Messages HTTP/1.1 - 'authority íì'ì¼ë¡ ìë ¤ì§ê³ ëë©ì¸ ì´ë¦ ë° ìµì
í¬í¸(
':'ê° ìì ë¶ìµëë¤)ë¡ ì´ë£¨ì´ì§ URLì ì¸ì¦ ì»´í¬ëí¸ ì ëë¤. HTTP í°ëì 구ì¶íë ê²½ì°ìë§CONNECTì í¨ê» ì¬ì©í ì ììµëë¤.CONNECT developer.mozilla.org:80 HTTP/1.1 OPTIONSì í¨ê» ë³í('*') íëë¡ ìë² ì 체를 ëíë´ë 'asterisk íì'ì ëë¤.OPTIONS * HTTP/1.1
- ê°ì¥ ì¼ë°ì ì¸ íìì´ê³ 'origin íì'ì¼ë¡ ìë ¤ì§ ì ë ê²½ë¡ì
ëë¤. ì´ íìì ëì
-
ë©ìì§ì ë¨ì 구조를 ì ìíë HTTP ë²ì ì ìëµ ë©ìì§ìì ì¨ì¼ í HTTP ë²ì ì ìë ¤ì£¼ë ìí ì í©ëë¤.
í¤ë
ìì²ì ë¤ì´ê°ë HTTP í¤ëë HTTP í¤ëì 기본 구조를 ë°ë¦
ëë¤. ëì문ì 구ë¶ìë 문ìì´ ë¤ìì ì½ë¡ (':')ì´ ë¶ì¼ë©°, ê·¸ ë¤ì ì¤ë ê°ì í¤ëì ë°ë¼ ë¬ë¼ì§ëë¤. í¤ëë ê°ê¹ì§ í¬í¨í´ í ì¤ë¡ 구ì±ëì§ë§, 꽤 길ì´ì§ ì ììµëë¤.
ë¤ìí ì¢ ë¥ì ìì² í¤ëê° ìëë°, ì´ë¤ì ë¤ìê³¼ ê°ì´ ëªëª 그룹ì¼ë¡ ëë ì ììµëë¤.
Viaì ê°ì General í¤ëë ë©ìì§ ì ì²´ì ì ì©ë©ëë¤.User-Agent,Acceptì ê°ì Request í¤ëë ìì²ì ë´ì©ì ì¢ ë 구체í ìí¤ê³ (Accept-Language), 컨í ì¤ë¥¼ ì ê³µí기ë íë©°(Referer), ì¡°ê±´ì ë°ë¥¸ ì ì½ ì¬íì 주기ë íë©´ì(If-None) ìì² ë´ì©ì ìì í©ëë¤.- ë©ìì§ ë°ì´í°ì ìë íìê³¼ ì ì©ë ì¸ì½ë©ì ì¤ëª
íë
Content-Typeê³¼ ê°ì Representation í¤ë(ë©ìì§ì ë³¸ë¬¸ì´ ìë ê²½ì°ìë§ ì¡´ì¬í©ëë¤).

본문
본문ì ìì²ì ë§ì§ë§ ë¶ë¶ì ë¤ì´ê°ëë¤. 모ë ìì²ì ë³¸ë¬¸ì´ ë¤ì´ê°ì§ë ììµëë¤. GET, HEAD, DELETE , OPTIONSì²ë¼ 리ìì¤ë¥¼ ê°ì ¸ì¤ë ìì²ì ë³´íµ ë³¸ë¬¸ì´ íìê° ììµëë¤. ì¼ë¶ ìì²ì ì
ë°ì´í¸ë¥¼ í기 ìí´ ìë²ì ë°ì´í°ë¥¼ ì ì¡í©ëë¤. ë³´íµ (HTML í¼ ë°ì´í°ë¥¼ í¬í¨íë) POST ìì²ì¼ ê²½ì°ì ê·¸ë ìµëë¤.
ëê² ë³´ë©´ 본문ì ëê°ì§ ì¢ ë¥ë¡ ëë©ëë¤.
- í¤ë ë ê°(
Content-TypeìContent-Length)ë¡ ì ìë ë¨ì¼ íì¼ë¡ 구ì±ëë ë¨ì¼-리ìì¤ ë³¸ë¬¸(single-resource bodies)ì ëë¤. - ê°ê° ìë¡ ë¤ë¥¸ ì 보를 ë´ê³ ìë ë©í°íí¸ ë³¸ë¬¸ì¼ë¡ 구ì±ëë ë¤ì¤ 리ìì¤ ë³¸ë¬¸ì ëë¤. ë³´íµ HTML í¼ê³¼ ê´ë ¨ì´ ììµëë¤.
HTTP ìëµ
>ìí ì¤
HTTP ìëµì ìì ì¤ì 'ìí ì¤(status line)'' ì´ë¼ê³ ë¶ë¦¬ë©°, ë¤ìê³¼ ê°ì ì 보를 ê°ì§ê³ ììµëë¤.
- ë³´íµ
HTTP/1.1ì¸ íë¡í ì½ ë²ì ì ëë¤. - ìì²ì ì±ê³µ ì¬ë¶ë¥¼ ëíë´ë 'ìí ì½ë'ì
ëë¤. ì¼ë°ì ì¸ ìí ì½ëë
200,404í¹ì302ì ëë¤. - ì¬ëì´ HTTP ë©ìì§ë¥¼ ì´í´í ë ëìì´ ëë ìí ì½ëì ëí ì§§ê³ , ìì í ì ë³´ ì ê³µ 목ì ì 'ìí í ì¤í¸'
ìí ì¤ì ì¼ë°ì ì¼ë¡ HTTP/1.1 404 Not Found. ê°ì´ ííë©ëë¤.
í¤ë
ìëµì ë¤ì´ê°ë HTTP í¤ëë ë¤ë¥¸ í¤ëì ëì¼í 구조를 ë°ë¦
ëë¤. ëì문ì를 구ë¶íì§ ìë 문ìì´ ë¤ìì ì½ë¡ (':')ì´ ì¤ë©°, ê·¸ ë¤ì ì¤ë ê°ì êµ¬ì¡°ê° í¤ëì ë°ë¼ ë¬ë¼ì§ëë¤. í¤ëë ê°ì í¬í¨í´ ì 체를 í ì¤ë¡ íìí©ëë¤.
ë¤ìí ì¢ ë¥ì ìëµ í¤ëê° ìëë°, ì´ë¤ì ë¤ìê³¼ ê°ì´ ëªëª 그룹ì¼ë¡ ëë ì ììµëë¤.
Viaì ê°ì General í¤ëë ë©ìì§ ì ì²´ì ì ì©ë©ëë¤.VaryìAccept-Rangesì ê°ì Response í¤ëë ìí ì¤ì í¬í¨ëì§ ìì ìë²ì ëí ì¶ê° ì 보를 ì ê³µí©ëë¤.- ë©ìì§ ë°ì´í°ì ìë íìê³¼ ì ì©ë ì¸ì½ë©ì ì¤ëª
íë
Content-Typeì ê°ì Representation í¤ë(ë©ìì§ì ë³¸ë¬¸ì´ ìë ê²½ì°ìë§ ì¡´ì¬í©ëë¤).

본문
본문ì ìëµì ë§ì§ë§ ë¶ë¶ì ë¤ì´ê°ëë¤. 모ë ìëµì ë³¸ë¬¸ì´ ë¤ì´ê°ì§ë ììµëë¤. í´ë¹ íì´ë¡ë ìì´ë ìì²ì ì¶©ë¶í ìëµíë 201 Created, 204 **No Content**ê³¼ ê°ì ìí ì½ë를 ê°ì§ ìëµìë ë³´íµ ë³¸ë¬¸ì´ ììµëë¤.
ëê² ë³´ë©´ 본문ì ì¸ê°ì§ ì¢ ë¥ë¡ ëë©ëë¤.
Content-TypeìContent-Lengthë¼ë ë ê°ì í¤ëë¡ ì ìíë 길ì´ê° ìë ¤ì§ íëì íì¼ë¡ 구ì±ë ë¨ì¼-리ìì¤ ë³¸ë¬¸(Single-resource bodies).Transfer-Encodingê°chunkedë¡ ì¤ì ë ì²í¬ë¡ ëëì´ ì¸ì½ë©ëë 길ì´ë¥¼ 모르ë íëì íì¼ë¡ 구ì±ë ë¨ì¼-리ìì¤ ë³¸ë¬¸:.- ìë¡ ë¤ë¥¸ ì 보를 ë´ê³ ìë ë©í°íí¸ ë³¸ë¬¸ì¼ë¡ ì´ë£¨ì´ì§ ë¤ì¤ 리ìì¤ ë³¸ë¬¸: ì´ ê²½ì°ë ìëì ì¼ë¡ ìì ë ê²½ì°ì ë¹í´ 보기 íëëë¤.
HTTP/2 íë ì
HTTP/1.x ë©ìì§ë ëªê°ì§ ì±ë¥ ê²°í¨ì´ ììµëë¤.
- 본문ì ìì¶ì´ ëì§ë§, í¤ëë ìì¶ì´ ëì§ ììµëë¤.
- ì°ìë ë©ìì§ë¤ì ë¹ì·í í¤ë 구조를 ê°ì§ì§ë§ ë©ìì§ë§ë¤ ë°ë³µëì´ ì ì¡ëê³ ììµëë¤.
- ë¤ì¤ì ì¡(multiplexing)ì´ ë¶ê°ë¥í©ëë¤. ìë² íëì ì°ê²°ì ì¬ë¬ê° ì´ì´ì¼ íê³ , ì ê·¹ì ì¸(warm) TCP ì°ê²°ì´ ìê·¹ì ì¸(cold) TCP ì°ê²°ë³´ë¤ í¨ì¨ì ì ëë¤.
HTTP/2ììë ì¶ê°ì ì¸ ë¨ê³ê° ëì ëììµëë¤. HTTP/1.x ë©ìì§ë¥¼ íë ìì¼ë¡ ëëì´ ì¤í¸ë¦¼ì ë¼ì ë£ë ê²ì ëë¤. ë°ì´í°ì í¤ë íë ìì´ ë¶ë¦¬ ëì기 ë문ì, í¤ë를 ìì¶í ì ììµëë¤. ì¤í¸ë¦¼ ì¬ë¬ê°ë¥¼ íëë¡ ë¬¶ì ì ìì´ì(ì´ë¬í ê³¼ì ì 'ë©í°íë ì±'ì´ë¼ í©ëë¤), 기ì ìì ìíëë TCP ì°ê²°ì´ ì¢ ë í¨ì¨ì ì¼ë¡ ì´ë£¨ì´ì§ëë¤.

ì´ì ì¹ ê°ë°ì ì ì¥ììë HTTP íë ìì ë§¤ì° ì½ê² ì´í´ë³¼ ì ìê² ëììµëë¤. HTTP íë ìì HTTP/1.1 ë©ìì§ì 기ì ê° ëë ì ì¡ íë¡í ì½ ì¬ì´ì HTTP/2ìì ì¶ê°ë ë¨ê³ì ëë¤. ê·¸ë ë¤ê³ í´ì HTTP íë ì ë문ì ê°ë°ìë¤ì´ API를 ë°ê¿ì¼ í íìë ììµëë¤. ë¸ë¼ì°ì ì ìë² ë ë¤ ëª¨ë HTTP íë ìì ì¸ ì ìë¤ë©´, HTTP/2ê° íì±íëê³ ì¬ì©ë©ëë¤.
ê²°ë¡
HTTP ë©ìì§ë HTTPìì íµì¬ì ì¸ ìí ì í©ëë¤. ë©ìì§ êµ¬ì¡°ë ë¨ìíê² ì´ë£¨ì´ì ¸ ìì¼ë©°, íì¥ì±ë ë§¤ì° ì¢ìµëë¤. HTTP/2 íë ì´ë° ë©ì»¤ëì¦ ëë¶ì HTTP/1.x 구문과 기ì ê° ëë ì ì¡ íë¡í ì½ ì¬ì´ì ìë¡ì´ ì¤ê° ë¨ê³ê° ì¶ê° ëììµëë¤. íë¡í ì½ì ìì²´ì ì¼ë¡ ìì íì§ ìê³ , ì´ë¯¸ ì ì¦ë ë©ì»¤ëì¦ì ë°íì¼ë¡ ì´ë¤ë¸ ê²ì ëë¤.