HTTPλ?
HTML λ¬Έμμ κ°μ 리μμ€λ€μ κ°μ Έμ¬ μ μλλ‘ ν΄μ£Όλ νλ‘ν μ½. μΉμμ μ΄λ£¨μ΄μ§λ λͺ¨λ λ°μ΄ν° κ΅νμ κΈ°μ΄μ΄λ©° ν΄λΌμ΄μΈνΈ-μλ² νλ‘ν μ½μ΄λ€.
ν΄λΌμ΄μΈνΈ-μλ² νλ‘ν μ½: μμ μ μΈ‘μ μν΄ μμ²μ΄ μ΄κΈ°νλλ νλ‘ν μ½
νλμ μμ ν λ¬Έμλ μ΄κ²μ κ² Fetchν νμ λ¬Έμλ€λ‘ μ¬κ΅¬μ±λλ€.
ν΄λΌμ μλ²λ κ°λ³μ μΈ λ©μΈμ§ κ΅νμ μν΄ ν΅μ νλ€.
λ³΄ν΅ λΈλΌμ°μ μΈ ν΄λΌμ΄μΈνΈμ μν΄ μ μ‘λλ λ©μΈμ§λ₯Ό **μμ²(request)** μ΄λΌ νκ³ μλ²μμ λ°λ λ©μΈμ§λ₯Ό **μλ΅(response)** μ΄λΌκ³ νλ€.
HTTPλ μ ν리μΌμ΄μ
κ³μΈ΅μ νλ‘ν μ½λ‘, μ λ’° κ°λ₯ν μ μ‘ νλ‘ν μ½μ΄λ©΄ μ΄λ‘ μ 무μμ΄λ μ¬μ©ν μ μλ€.
TCP νΉμ μνΈνλ TCP μ°κ²°μΈ TLSλ₯Ό ν΅ν΄ μ μ‘λλ€.
TCP(Transport Control Protocol) μ μ‘ μ μ΄ νλ‘ν μ½, λ κ°μ νΈμ€νΈλ₯Ό μ°κ²°νκ³ λ°μ΄ν° μ€νΈλ¦Όμ κ΅ννκ² ν΄μ£Όλ μ€μ λ€νΈμν¬ νλ‘ν μ½
TLS(Transport Layer Security) μ μ‘ κ³μΈ΅ 보μ, μ ν리μΌμ΄μ λ€μ΄ λ€νΈμν¬ μμμ μμ νκ² ν΅μ νκΈ° μν΄ μ¬μ©λ νλ‘ν μ½. μ΄λ©μΌ, μΉ λΈλΌμ°μ§, λ©μμ§, λ€λ₯Έ νλ‘ν μ½λ€μ κ°μ²μ ν΅ν μ 보μ λ³νμ λ°©μ§νλ€. SSL(Secure Sockets Layer)μΌλ‘λ μλ €μ Έ μμ. μ΅μ λΈλΌμ°μ λ€μ μ ν¨ν λμ§νΈ μΈμ¦μλ₯Ό μ 곡νλλ‘ μꡬνλ TLS νλ‘ν μ½μ μ§μνκ³ μλ€.
μ΄λ₯Ό ν΅ν΄ μ€λλ μ°λ¦¬κ° μ΄λ°μ λ° μΈν°λ·μμ μ¬λ¬ μ 보λ₯Ό κ΅νν μ μλ κ²μ΄λ€.
HTTP κΈ°λ° μμ€ν μ κ΅¬μ± μμ
HTTPλ ν΄λΌμ΄μΈνΈ-μλ² νλ‘ν μ½λ‘ μμ²μ νλμ κ°μ²΄, μ¬μ©μ μμ΄μ νΈμ μν΄ μ μ‘λλ€. μ¬μ©μ μμ΄μ νΈλ λΈλΌμ°μ μ§λ§ λ‘λ΄μ΄λ 무μμ΄λ λ μ μλ€. κ°κ°μ μμ²μ μλ²λ‘ 보λ΄μ§κ³ responseλ₯Ό λ°λ κ³Όμ μμ κ²μ΄νΈμ¨μ΄ λλ μΊμ μν μ νλ νλ‘μκ° μ€κ°μ κ±Έμ³ μλ€.
μ€μ λ‘ λΈλΌμ°μ μ μλ² μ¬μ΄μλ μΈν°λ·μμ μ€λͺ νλ― λͺ¨λμ΄λ λΌμ°ν°μ κ°μ μ»΄ν¨ν°λ€μ΄ μ‘΄μ¬νμ§λ§ μΉμ κ³μΈ΅μ μΈ μ€κ³λ‘ λ€νΈμν¬μ μ μ‘ κ³μΈ΅ λ΄λ‘ μ¨κ²¨μ§λ€. μ¬κΈ°μ HTTPλ μ ν리μΌμ΄μ κ³μΈ΅μ μ΅μμμ μλ€.
HTTPμ κΈ°μ΄μ μΈ μΈ‘λ©΄
κ°λ¨νλ€
μ¬λμ΄ μ½μ μ μκ³ κ°λ¨νμ¬ μ¬λμ΄ μ½κ³ μ΄ν΄κ° κ°λ₯νλ€.
νμ₯ κ°λ₯νλ€
HTTPν€λλ HTTPλ₯Ό νμ₯νκ³ μ€ννκΈ° μ½κ² λ§λ€μ΄μ£Όμ΄ κ³μν΄μ κ°λ₯ μΆκ°κ° κ°λ₯νλ€.
μνκ° μμ§λ§ μΈμ μ΄ μλ€
μνλ₯Ό μ μ₯νμ§ μμ§λ§ HTTP μΏ ν€λ₯Ό ν΅ν΄ μνκ° μλ μΈμ μ λ§λ€λλ‘ ν΄μ€λ€. ν€λ νμ₯μ±μ μ¬μ©νμ¬ λμΌν 컨ν μ€νΈ λλ λμΌν μνλ₯Ό 곡μ νκΈ° μν΄ κ°κ°μ μμ²λ€μ μΈμ μ λ§λ€λλ‘ HTTP μΏ ν€κ° μΆκ°λλ€.
HTTP μΏ ν€ μλ²κ° μ¬μ©μμ μΉ λΈλΌμ°μ μ μ μ‘νλ μμ λ°μ΄ν° μ‘°κ°. λΈλΌμ°μ λ μΏ ν€λ₯Ό μ μ₯ν΄ λμλ€κ° λμΌν μλ²μ μ¬μμ²μ μ μ₯λ λ°μ΄ν°λ₯Ό ν¨κ» μ μ‘νλ€. λ μμ²μ΄ λμΌν λΈλΌμ°μ μμ λ€μ΄μλμ§ μλμ§λ₯Ό νλ¨ν λ μ£Όλ‘ μ¬μ©νλ€ μ¬μ©μμ λ‘κ·ΈμΈ μν μ μ§μμ μ¬μ©λλ νΈ
μ°κ²°
μ°κ²°μ μ μ‘ κ³μΈ΅μ΄λ―λ‘ HTTP μμμ λ°μ΄λ€. κ·Όλ³Έμ μΈ μ μ‘ νλ‘ν μ½μ μꡬνμ§ μμ§λ§ μ λ’°ν μ μκ±°λ λ©μΈμ§ μμ€μ΄ μλ μ°κ²°μ μꡬνλ€. μ¦ μ°κ²°μ΄ νμλ μλμ§λ§ μ°κ²° κΈ°λ°μΈ TCP νμ€μ μμ‘΄νλ€.
HTTPλ‘ ν΄λΌμ΄μΈνΈ/μλ²κ° μμ²/μλ΅μΌλ‘ κ΅ννκΈ° μ TCP μ°κ²° μ€μ μ΄ νμνλ€. HTTP/1.0μ κ° μμ²/μλ΅μ λν΄ λ³λ TCP μ°κ²°μ μ΄μ΄μΌ νμ§λ§ μ΄ κ²½μ° μ°μμ μΈ μμ²μ΄ μμ κ²½μ° λΉν¨μ¨μ μ΄κ² λλ€.
μ΄μ HTTP/1.1μ νμ΄νλΌμ΄λ κ°λ κ³Ό μ§μμ μΈ μ°κ²°μ κ°λ μ λμ νμ¬ Connection ν€λλ₯Ό μ¬μ©ν΄ λΆλΆμ μΌλ‘ μ μ΄ν μ μλ€.
HTTP/2λ μ°κ²°μ μ§μλκ³ ν¨μ¨μ μΌλ‘ μ μ§νλλ° λμμ΄ λλλ‘ λ¨μΌ μ°κ²° μμμ λ©μΈμ§λ₯Ό λ€μ€μ μ‘ν μ μλλ‘ λ°μ νλ€.
νμ¬λ λ λμ μ μ‘ νλ‘ν μ½μ μ€κ³νλ μ€μ΄λ€.
HTTPλ‘ μ μ΄ν μ μλ κ²
μΊμ
λ¬Έμκ° μΊμλλ λ°©μμ μ μ΄ν μ μλ€. μλ²λ μΊμ λμκ³Ό κΈ°κ°μ νλ‘μμ ν΄λΌμ΄μΈνΈμ μ§μν μ μκ³ ν΄λΌμ΄μΈνΈλ μ μ₯λ λ¬Έμλ₯Ό 무μνλΌκ³ μ€κ° μΊμ νλ‘μμκ² μ§μν μ μλ€.
Origin μ μ½μ¬ν μν
μ€λνκ³Ό λ€λ₯Έ νλΌμ΄λ²μ μΉ¨ν΄λ₯Ό λ§κΈ° μν΄, λΈλΌμ°μ λ μΉ μ¬μ΄νΈ κ°μ μ격ν λΆλ¦¬λ₯Ό κ°μ νλ€. λμΌν originμΌλ‘λΆν° μ¨ νμ΄μ§λ§μ΄ μΉ νμ΄μ§μ μ 체 μ 보μ μ κ·Όν μ μλ€. κ·Έλ° μ μ½ μ¬νμ μλ²μ λΆλ΄μ΄ λμ§λ§, HTTP ν€λλ₯Ό ν΅ν΄ κ·Έκ²μ μνμν¬ μ μλ€. κ·Έλ° λλΆμ λ¬Έμλ λ€λ₯Έ λλ©μΈμΌλ‘λΆν° μ λ¬λ μ 보λ₯Ό ν¨μΉμν¬ν μ μλ€.
μ€λν : λ€νΈμν¬ μμ λ λλ μ€μ μ 보λ₯Ό λͺ°λ νλνλ νμ
μΈμ¦
μ΄λ€ νμ΄μ§λ€μ 보νΈλμ΄ μ€λ‘μ§ νΉμ μ¬μ©μλ§μ΄ κ·Έκ²μ μ κ·Όν μλ μλ€.
κΈ°λ³Έ μΈμ¦μ HTTPλ₯Ό ν΅ν΄Β WWW-AuthenticateΒ (en-US)Β λλ μ μ¬ν ν€λλ₯Ό μ¬μ©ν΄ μ 곡λκ±°λ,Β HTTP μΏ ν€λ₯Ό μ¬μ©ν΄ νΉμ μΈμ
μ μ€μ νμ¬ μ΄λ£¨μ΄μ§ μλ μμ΅λλ€.
νλ‘μμ ν°λλ§
μλ²/ν΄λΌμ΄μΈνΈ νΉμ κ·Έ λ λ€ μ’ μ’ μΈνΈλΌλ·μ μμΉνλ©° λ€λ₯Έ κ°μ²΄λ€μκ² κ·Έλ€μ μ€μ μ£Όμλ₯Ό μ¨κΈ°κΈ°λ νλ€. HTTP μμ²μ λ€νΈμν¬ μ₯λ²½μ κ°λ‘μ§λ₯΄κΈ° μν΄ νλ‘μλ₯Ό ν΅ν΄ λκ°κ² λλ€. νμ§λ§ λͺ¨λ νλ‘μκ° HTTP νλ‘μλ μλλ€.
νλ‘μ(Proxy) μ νλ‘μ μλ² ν΄λΌμ΄μΈνΈκ° μμ μ ν΅ν΄μ λ€λ₯Έ λ€νΈμν¬ μλΉμ€μ κ°μ μ μΌλ‘ μ μν μ μκ² ν΄ μ£Όλ μ»΄ν¨ν° μμ€ν μ΄λ μμ© νλ‘κ·Έλ¨μ κ°λ¦¬ν΄. μλ²μ ν΄λΌμ΄μΈνΈ μ¬μ΄μ μ€κ³κΈ°λ‘μ λλ¦¬λ‘ ν΅μ μ μννλ νμ μ체λ₯Ό νλ‘μλΌκ³ νλ©°, κ·Έ μ€κ³ κΈ°λ₯μ νλ κ²μ νλ‘μ μλ²λΌκ³ λΆλ₯Έλ€
μΈμ
μΏ ν€ μ¬μ©μ ν΅ν΄ μλ² μνλ₯Ό μμ²κ³Ό μ°κ²°μν¨λ€. statelessν νλ‘ν μ½μμλ μΈμ μ λ§λ€μ΄μ£Όλ κ³κΈ°κ° λλ€. λΈλΌμ°μ μ μ΄μ»€λ¨Έμ€ μΉκ°μ κ³³μμλ μ₯λ°κ΅¬λμ λ΄μ ν λκ°λ€ λ€μ΄μλ μ μ§μμΌμ£Όλ κ·Έλ° κΈ°λ₯μ ν μ μλ€.
HTTP νλ¦
ν΄λΌμ΄μΈνΈκ° μλ²μ ν΅μ ν λ, μ€κ°νλ‘μκ° νλ λ€μμ κ³Όμ μ μλμ κ°λ€.
1. TCP μ°κ²° μ΄κΈ°
TCP(Transport Control Protocol) μ°κ²°μ μμ²μ 보λ΄κ±°λ μλ΅μ λ°λλ° μ¬μ©λλ€.
2. HTTP λ©μΈμ§ μ μ‘
μΈκ°μ΄ μ½μ μ μλ ννμ λ©μΈμ§(HTTP/2 μ΄μ ) HTTP/2μμλ μ§μ μ½λκ² λΆκ°λ₯νμ§λ§ μμΉμ λμΌνλ€
GET / HTTP/1.1
Host: developer.mozilla.org
Accept-Language: fr3. μλ²μ μν΄ μ μ‘λ μλ΅ μ½κΈ°
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)4. μ°κ²°μ λ«κ±°λ λ€λ₯Έ μμ²μ μν μ¬μ¬μ©
HTTP νμ΄νλΌμ΄λμ΄ νμ±νλλ©΄ 첫λ²μ§Έ μλ΅μ μμ ν μμ ν λκΉμ§ κΈ°λ€λ¦¬μ§ μκ³ μ¬λ¬ μμ²μ λ³΄λΌ μ μλ€.
HTTP νμ΄νλΌμ΄λ μ¬λ¬ μμ²μΌλ‘ μΉ μ±λ₯μ κ°μ νλ λ°©λ². λ¨μΌ TCP μ°κ²°μ ν΅ν΄ μ¬λ¬ HTTP μμ²μ 보λ΄λ κΈ°μ HTTP/1.1 ν΄λΌμ΄μΈνΈμ κ²½μ° λ€μμ HTTP μμ²μ νλμ TCP/IP PacketμΌλ‘ μ°μμ μΌλ‘ Packingν΄μ μμ²μ 보λΈλ€. HTTP/2μμλ μ΄λ―Έ λ€μ€νλ₯Ό ν΅ν©νκ³ μμΌλ―λ‘ νμ΄νλΌμ΄λ μμ΄ HTTP/2μ μλλ₯Ό κ°μ νλ€.
HTTP λ©μΈμ§
HTTP/1.1κ³Ό μ΄κΈ° HTTPλ μ¬λμ΄ μ½μ μ μμ§λ§ HTTP/2λ μλ‘μ΄ μ΄μ§ κ΅¬μ‘°μΈ νλ μ μμΌλ‘ μλ² λλμ΄ μ½μ μ μλ€. νμ§λ§ μμμ λ§νλ― λ©μΈμ§μ μμΉμ λμΌνλ©°, κ° λ©μΈμ§μ μλ―Έλ€ λν λ³ννμ§ μμλ€. λ°λΌμ HTTP/1.1μ ν¬λ§·μ μ΄ν΄νλ€λ©΄ HTTP/2 λν μ΄ν΄ν μ μλ€.
μμ²
### Method
HTTP λ©μλλ‘ ν΄λΌμ΄μΈνΈκ° μννκ³ μ νλ λμμ μ μνλ€(GET, POST λ±).
Path
κ°μ Έμ€λ €λ 리μμ€μ κ²½λ‘. νλ‘ν μ½(http://), λλ©μΈ, TCP ν¬νΈμΈ μμλ€μ μ κ±°ν 리μμ€μ URL
Version of the Protocol
HTTP νλ‘ν μ½μ λ²μ
Header
μλ²μ λν μΆκ°μ μΈ μ 보λ₯Ό μ λ¬
μλ΅
### Version of the Protocol
HTTP νλ‘ν μ½μ λ²μ
Status Code
μμ²μ μ±κ³΅ μ¬λΆμ κ·Έ μ΄μ λ₯Ό μ½λλ₯Ό ν΅ν΄ λνλΈλ€.(200, 404λ±)
Satus message
μν μ½λμ μ§§μ μ€λͺ 200 - μ±κ³΅, 404 - Not Found λ±
Headers
μμ²κ³Ό λ§μ°¬κ°μ§λ‘ μλ²μ λν μΆκ°μ μΈ μ 보λ₯Ό λ΄λλ€
HTTP κΈ°λ° API
HTTP κΈ°λ°μΌλ‘ κ°μ₯ μΌλ°μ μΌλ‘ μ¬μ©λ APIλ XMLHttpRequest APIμ΄λ€. μ΅μ Fetch APIλ μ΄λ³΄λ€ κ°λ ₯νκ³ μ μ°ν κΈ°λ₯μ μ§λλ€.
λ€λ₯Έ APIλ‘ μλ²-μ μ‘ μ΄λ²€νΈμ Websocket API λ±μ΄ μλ€.
XMLHttpRequest μλ²μ μνΈμμ©ν λ μ¬μ©νλ κ°μ²΄(XHR)λ‘ νμ΄μ§μ μλ‘κ³ μΉ¨ μμ΄ URLμμ λ°μ΄ν°λ₯Ό κ°μ Έμ¬ μ μλ€. AJAX νλ‘κ·Έλλ°μ λ§μ΄ μ¬μ©λλ€.
Fetch API λ€νΈμν¬ ν΅μ μ ν¬ν¨ν 리μμ€ μ·¨λμ μν μΈν°νμ΄μ€λ₯Ό μ 곡νλ€. Requestμ Response, κΈ°ν λ€νΈμν¬ μμ²μ κ΄λ ¨λ κ²λ€μ μ¬μ©νκ³ , CORSμ HTTP Origin ν€λ νλ λ± κ΄λ ¨ν κ°λ λ ν¬ν¨νκ³ μλ€.
μλ²-μ μ‘ μ΄λ²€νΈ(Server-sent events) μλλ μλ‘μ΄ λ°μ΄ν°λ₯Ό λ°κΈ° μν΄ μλ²λ‘ μμ²μ 보λ΄μΌ νμ§λ§ Server-sent Events λ°©μμ μΉνμ΄μ§μ μμ² μμ΄λ μΈμ λμ§ μλ²κ° μλ‘μ΄ λ°μ΄ν°λ₯Ό λ³΄λΌ μ μλ€. μ΄λ κ² λ³΄λ΄μ§ λ©μΈμ§λ μΉνμ΄μ§μμ Events(DOMμμ λ°μνλ μ΄λ²€νΈ)μ λ°μ΄ν°λ‘ λ€λ£° μ μλ€. μ΄λ²€νΈ λ°μ΄ν°λ λ©μΈμ§ λ°μ΄ν°λ₯Ό μλ²μμ κ°μ Έμ€λ ν΅μ μ μ 리νλ€
WebSocket API μ¬μ©μμ λΈλΌμ°μ μ μλ² μ¬μ΄μ μΈν°μ‘ν°λΈ ν΅μ μΈμ μ μ€μ ν μ μκ² ν΄μ€λ€. μλ²λ₯Ό νλ§νμ§ μκ³ λ μ΄λ²€νΈ μ€μ¬ μλ΅μ λ°λ κ²μ΄ κ°λ₯νλ€. μμ ν μλ°©ν₯ ν΅μ μ κ²½μ°μλ Server-sent Eventλ³΄λ€ WebSocket APIκ° μ 리νλ€.