HTTP λ©μμ§λ?
HTTP λ©μμ§λ μλ²μ ν΄λΌμ΄μΈνΈ κ°μ λ°μ΄ν°κ° κ΅νλλ λ°©μμ΄λ€. κ°μμμ μ€λͺ νλ κ²μ²λΌ, λ©μμ§ νμ μ μμ²(Request), μλ΅(Response)μ΄ μλ€.
HTTP λ©μμ§λ ASCIIλ‘ μΈμ½λ©λ μ¬λ¬ μ€μ ν μ€νΈ μ 보μ΄λ€. HTTP/1.1λλ μ½μ μ μμμ§λ§ HTTP/2λΆν°λ μ½μ μ μμΌλ©° HTTP νλ μμΌλ‘ λλμ΄μ§λ€.
HTTP/2μ μ΄μ§ νλ μ΄λ° λ©μ»€λμ¦μ ν΅ν΄ μ¬μ©μκ° APIλ μ€μ νμΌ λ±μ λ³κ²½ν νμκ° μκ² μ€κ³λμ΄ λ³΄κ³ μ΄ν΄νκΈ°κ° μ½λ€.
μμ²κ³Ό μλ΅μ ꡬ쑰λ μλμ κ°λ€
- μμμ€μ μ€νλμ΄μΌ ν μμ²/μλ΅(μ±κ³΅ or μ€ν¨) κΈ°λ‘
- HTTP ν€λ(option) β μμ², λ©μμ§ λ³Έλ¬Έ λ±μ λν μ€λͺ
- μμ²μ λν λͺ¨λ λ©ν μ λ³΄κ° μ μ‘λμμμ μ리λ λΉ μ€
- μμ²μ κ΄λ ¨λ λ΄μ© μλ΅ κ΄λ ¨ λ¬Έμ λ±(option. λ³Έλ¬Έμ μ‘΄μ¬ μ 무 λ° ν¬κΈ°λ 첫 μ€κ³Ό HTTP ν€λμ λͺ μ)
- HTTP λ©μμ§μ νμ΄λ‘λλ‘ μ€λ λ³Έλ¬Έ

μμ² ν€λ(head): HTTP λ©μμ§μ μμ μ€ + HTTP ν€λ λ³Έλ¬Έ(body): HTTP λ©μμ§μ νμ΄λ‘λ(Payload)
μ¬κΈ°μ μμ²κ³Ό μλ΅μ ꡬ쑰μ λν΄μ μ‘°κΈ λ μμΈν μ΄ν΄λ³΄μ
HTTP μμ²
μμ μ€
- HTTP λ©μλ(GET, PUT, POST, HEAD, OPTIONS λ±)λ₯Ό ν΅ν΄ μλ²κ° μνν΄μΌ ν λμμ λνλ
- μμ² νκ² β URL/ ν¬νΈ, λλ©μΈ, νλ‘ν μ½μ μ λ κ²½λ‘ λ±
- νκ²μ ν¬λ§·μ HTTP λ©μλμ λ°λΌ λ¬λΌμ§
- μΌλ°μ μΈ ν¬λ§·
- Origin νμμΌλ‘ μλ €μ§ μ λκ²½λ‘
- ex) HEAD /test.html?query=minsu
- absolute νμμΌλ‘ μλ €μ§ μμ ν URL
- ex) GET http://developer.mozilla.org/ko/docs/Web/HTTP/Messages HTTP/1.1
- authority νμμΌλ‘ μλ €μ§ λλ©μΈ μ΄λ¦ & μ΅μ
ν¬νΈ(URLμ μΈμ¦ μ»΄ν¬λνΈλ‘ HTTP ν°λμ ꡬμΆνλ κ²½μ°μλ§ CONNECTμ ν¨κ» μ¬μ©κ°λ₯)
- ex) CONNECT developer.mozilla.org:80 HTTP/1.1
- asterisk νμμΌλ‘ μλ €μ§ λͺ¨λ μλ² λνλ΄λ ν¬λ§·
- ex) OPTIONS * HTTP/1.1
- Origin νμμΌλ‘ μλ €μ§ μ λκ²½λ‘
- μΌλ°μ μΈ ν¬λ§·
- νκ²μ ν¬λ§·μ HTTP λ©μλμ λ°λΌ λ¬λΌμ§
- HTTP λ²μ
ν€λ
λ¬Έμμ΄ λ€μμ μ½λ‘ (:)μ΄ λΆκ³ λ€μ μ€λ κ°μ ν€λ λ°λΌ λ¬λΌμ§.

μμ² ν€λμ μ’ λ₯
Via(λ©μμ§ μ λ¬μΆμ , μμ²λ£¨ν λ°©μ§, λ°μ μμ νλ‘ν μ½ κΈ°λ₯ μλ³) λ±μ General Header β λ©μμ§ μ 체 μ μ©
Request Header β μμ² κ΅¬μ²΄ν, 컨ν μ€νΈ μ 곡, μ μ½ μ€μ , μμ² λ΄μ© μμ λ±
Representation Header β λ©μμ§ λ°μ΄ν°μ μλ νμκ³Ό μ μ©λ μΈμ½λ© μ€λͺ
λ³Έλ¬Έ
μμ²μ λ§μ§λ§ λΆλΆ. GET, HEAD, DELETE, OPTIONSμ²λΌ 리μμ€λ₯Ό κ°μ Έμ€λ μμ²μ λ³Έλ¬Έμ΄ νμμλ€
λ³Έλ¬Έμ λ κ°μ§ μ’ λ₯λ‘ λλλ€
ν€λ λ κ°(Content-Type, Content-Length)λ‘ μ μλ λ¨μΌ νμ΄μ§λ‘ ꡬμ±λλ λ¨μΌ-리μμ€ λ³Έλ¬Έ
λ€μ€ 리μμ€ λ³Έλ¬Έ β Web Form(μ μ μμ μνΈμμ©)κ³Ό κ΄λ ¨.
HTTP μλ΅
μν μ€
HTTP μλ΅μ μμ μ€.
- λ³΄ν΅ HTTP/1.1μΈ νλ‘ν μ½ λ²μ
- μμ²μ μ±κ³΅ μ¬λΆλ₯Ό λνλ΄λ μνμ½λ
- HTTP λ©μμ§λ₯Ό μ΄ν΄ν λ λμλλ μν ν μ€νΈ
μνμ½λ
μν μ½λλ 5κ°μ λΈλ‘μΌλ‘ λλλ€.
- 1XX Informational
- 2XX μ±κ³΅
- 3XX 리λλ μ
- 4XX ν΄λΌμ΄μΈνΈ μ€λ₯
- 5XX Server Error
XXλ 0~99μ μ«μλ₯Ό λνλ΄λ©° λλΆλΆ λνμ μΈ μ«μκ° μλ€. ex) 200, 404, 500 λ±
ν€λ
λ€λ₯Έ ν€λμ λμΌν ꡬ쑰λ₯Ό κ°μ§λ€ λ¬Έμμ΄ λ€μ μ½λ‘ (:), κ·Έ λ€μ κ°μ ν€λ λ°λΌ λ€λ₯΄λ€.
ν€λ μ’ λ₯

Via(λ©μμ§ μ λ¬μΆμ , μμ²λ£¨ν λ°©μ§, λ°μ μμ νλ‘ν μ½ κΈ°λ₯ μλ³) λ±μ General Header β λ©μμ§ μ 체 μ μ©
Response Header β μλ²μ λν μΆκ° μ 보 μ 곡. Varyλ Vary : μμ² λ©μμ§μ λ©μλ λ° URLμ μ μΈνκ³ μλ΅ λ΄μ©μ μν₯μ μ€ λΆλΆ μ€λͺ . μ½ν μΈ νμ(λμΌν URLμμ 리μμ€μ μλ‘ λ€λ₯Έ λ²μ μ μ 곡νκΈ° μν΄ μ¬μ©νλ λ©μ»€λμ¦. μ μΌ μ λ§λ μΈμ΄, μΈμ½λ© λ±μ λͺ μ)
Representation Header β λ©μμ§ λ°μ΄ν°μ μλ νμκ³Ό μ μ©λ μΈμ½λ© μ€λͺ
λ³Έλ¬Έ
μλ΅μ λ§μ§λ§ λΆλΆ λ³Έλ¬Έμ΄ μμ μλ μλ€(201 Created, 204 No content λ±)
λ³Έλ¬Έμ μ’ λ₯
Content-TypeμΒ Content-LengthλΌλ λ κ°μ ν€λλ‘ μ μνλ κΈΈμ΄κ° μλ €μ§ νλμ νμΌλ‘ ꡬμ±λ λ¨μΌ-리μμ€ λ³Έλ¬Έ(Single-resource bodies).
Transfer-Encodingκ°Β chunkedλ‘ μ€μ λ μ²ν¬λ‘ λλμ΄ μΈμ½λ©λλ κΈΈμ΄λ₯Ό λͺ¨λ₯΄λ νλμ νμΌλ‘ ꡬμ±λ λ¨μΌ-리μμ€ λ³Έλ¬Έ Transfer-Encoding : μ¬μ©μμκ² entityλ₯Ό μμ νκ² μ μ‘νκΈ° μν΄ μΈμ½λ© νμμ μ§μ ν ν€λ
μλ‘ λ€λ₯Έ μ 보λ₯Ό λ΄κ³ μλ λ©ν°ννΈ λ³Έλ¬ΈμΌλ‘ μ΄λ£¨μ΄μ§Β λ€μ€ 리μμ€ λ³Έλ¬Έ(option)
HTTP/2 νλ μ
HTTP/1.X λ²μ μ μ±λ₯ κ²°ν¨μ΄ μμ΄ νμ¬λ λλΆλΆ 2 μ΄μμ μ΄λ€ λ°λΌμ 2λ μ΄ λ¬Έμ λ€μ λ€λ₯Έ λ°©μμΌλ‘ 보μνλ€κ³ λ³Ό μ μλ€.
- λ³Έλ¬Έμ μμΆμ΄ λμ§λ§, ν€λλ μμΆμ΄ λμ§ μλ HTTP/1.X
- μ°μλ λ©μμ§λ€μ λΉμ·ν ν€λ ꡬ쑰λ₯Ό κ°μ§μ§λ§ λ©μμ§λ§λ€ λ°λ³΅λμ΄ μ μ‘λ¨
- λ€μ€μ μ‘(multiplexing)μ΄ λΆκ°λ₯
μ΄λ¬ν λ¬Έμ λ€μ 보μν HTTP/2μ νλ μμ λ€μκ³Ό κ°λ€
μ΄λ κ² νλ μμΌλ‘ λλμ΄ μ€νΈλ¦Όμ λΌμλ£μΌλ©΄μ λ°μ΄ν°μ ν€λ νλ μμ λΆλ¦¬νλ€.
λ°μ΄ν°μ ν€λ νλ μμ λΆλ¦¬ν¨μΌλ‘μ¨ κΈ°μ‘΄μ κ°μ§ λ¬Έμ μ μ ν΄κ²°ν μ μλ€.
- νλ μμ λΆλ¦¬νλ©΄μ ν€λ νλ μλ§ μ ννμ¬ μμΆμ΄ μμΆμ΄ κ°λ₯ν΄μ§λ€.
- μ€νΈλ¦Ό μ¬λ¬κ°λ₯Ό ν λ²μ λ¬Άλ λ©ν°νλ μ±μ΄ κ°λ₯ν΄μ§λ©΄μ TCP μ°κ²°μ΄ ν¨μ¨μ μ΄κ² λλ€.