6. Connection Management
HTTP λ©μμ§μ κΈ°λ°μ μ΄λ£¨λ μ μ‘ λλ μΈμ κ³μΈ΅ 컀λ₯μ νλ‘ν μ½κ³Ό λ 립μ μ΄λ€. HTTPλ in-order μμ² μ μ‘κ³Ό κ·Έμ μμνλ in-order μλ΅ μ μ‘μ΄ μλ μ λ’°ν μ μλ μ μ‘λ§ κ°μ νλ€.
HTTP ꡬνμ νμ¬ μ»€λ₯μ μν μ μ§, μ 컀λ₯μ μ€μ λλ κΈ°μ‘΄ 컀λ₯μ μ¬μ¬μ©, 컀λ₯μ μμ μμ λ λ©μμ§ μ²λ¦¬, 컀λ₯μ μ€ν¨ νμ§ λ° κ° μ»€λ₯μ μ λ«λ κ²μ ν¬ν¨νλ 컀λ₯μ κ΄λ¦¬μ μ± μμ§ κ²μΌλ‘ μμλλ€. λλΆλΆμ ν΄λΌμ΄μΈνΈλ μλ² μλν¬μΈνΈλΉ λκ° μ΄μμ 컀λ₯μ μ ν¬ν¨νμ¬ μ¬λ¬ 컀λ₯μ μ λ³λ ¬λ‘ μ μ§νλ€.
6.1 Connection
βConnectionβ ν€λ νλλ₯Ό ν΅ν΄ λ°μ μλ νμ¬ μ»€λ₯μ μ λν΄ μνλ μ μ΄ μ΅μ μ νμν μ μλ€.
λ©μμ§λ₯Ό μ λ¬νκΈ° μ μ, νλ½μ λλ κ²μ΄νΈμ¨μ΄κ° μμ λ 컀λ₯μ μ΅μ μ λ°λμ μ κ±°νκ±°λ λ°κΎΈμ΄μΌ νλ€. (MUST)
Connection
μ Keep-Alive
κ°μ μ°κ²°-μ§μ (Connection-specific) ν€λ νλλ€μ HTTP/2.μμ κΈμ§λμμ΅λλ€. ν¬λ‘¬κ³Ό νμ΄μ΄νμ€λ HTTP/2 μλ΅μμ κ·Έλ€μ 무μνμ§λ§, μ¬ν리λ HTTP/2 κ·κ²© μ건μ λ°λΌ ν΄λΉ νλκ° ν¬ν¨λ μλ΅μ μ²λ¦¬νμ§ μμ΅λλ€. - MDN -
νμ¬ μ»€λ₯μ μ λν μ μ΄ μ 보λ₯Ό μ 곡νκΈ° μν΄ Connection μ΄μΈμ ν€λ νλλ₯Ό μ¬μ©ν κ²½ μ°, λ°μ μλ Connection ν€λ νλμ ν΄λΉ νλ μ΄λ¦μ λ°λμ λμ΄ν΄μΌ νλ€.(MUST)
νλ½μ λλ κ²μ΄νΈ μ¨μ΄λ λ©μμ§λ₯Ό μ λ¬νκΈ° μ μ μμ λ Connection ν€λ νλλ₯Ό λΆμν΄μΌ νλ©° (MUST)
μ΄ νλμ κ° connection-optionμ λν΄ connection-optionκ³Ό λμΌν μ΄λ¦μ κ°μ§ λ©μμ§μμ ν€λ νλλ₯Ό μ κ±°ν λ€μ Connection ν€λ νλ μ체λ₯Ό μ κ±°νλ€.(λλ μ μ‘λ λ©μμ§λ₯Ό μν΄ μ€κ°μμ μ체 컀λ₯μ μ΅μ λ€κ³Ό ν¨κ» Connection ν€λ νλλ₯Ό λ체νλ€)
λ°λΌμ, Connection ν€λ νλλ μ§μ μ μΈ μμ μ("hop-by-hop")λ§μ μν ν€λ νλλ₯Ό 체 μΈμ λͺ¨λ μμ μλ₯Ό μν νλ("end-to-end")μ ꡬλΆνμ¬ λ©μμ§λ₯Ό μ체 μ€λͺ ν μ μλ€.
Connection optionμ λμλ¬Έμλ₯Ό ꡬλΆνμ§ μλλ€.
λ°μ μλ νμ΄ λ‘λμ λͺ¨λ μμ μλ₯Ό μν ν€λ νλμ ν΄λΉνλ 컀λ₯μ μ΅μ μ 보λ΄λ©΄ μλλ€. (MUST NOT)
μμμ 컀λ₯μ μ μ§μνμ§ μλ ν΄λΌμ΄μΈνΈλ λͺ¨λ μμ² λ©μμ§μμ βclose" 컀λ₯μ μ΅μ μ 보λ΄μΌ νλ€.(MUST)
μμμ 컀λ₯μ μ μ§μνμ§ μλ μλ²λ 1xx (Informational) μν μ½λκ° μλ λͺ¨λ μλ΅ λ©μμ§μμ βclose" 컀λ₯μ μ΅μ μ 보λ΄μΌ νλ€.(MUST)
6.2 Establishment
λ€μν μ μ‘ λλ μΈμ κ³μΈ΅ νλ‘ν μ½μ ν΅ν΄ 컀λ₯μ μ μ€μ νλ λ°©λ²μ μ€λͺ νλ κ²μ μ΄ κ·κ²©μ λ²μλ₯Ό λ²μ΄λλ€. κ° μ»€λ₯μ μ νλμ μ μ‘ λ§ν¬μλ§ μ μ©λλ€.
6.3 Persistence
HTTP/1.1μ κΈ°λ³Έμ μΌλ‘ βpersistent connectionsβ μ μ¬μ©νμ¬ μ¬λ¬ μμ²κ³Ό μλ΅μ λ¨μΌ 컀λ₯μ μμ μνν μ μλλ‘ νλ€. βcloseβ 컀λ₯μ μ΅μ μ νμ¬ μμ²/μλ΅ ν 컀λ₯μ μ΄ μ§μλμ§ μμμ μ리λ λ° μ¬μ©λλ€.
HTTP ꡬνμ μμμ 컀λ₯μ μ μ§μν΄μΌ νλ€. (SHOULD)
μλ²λ μλ΅μ λ³΄λΈ ν μμ² λ©μμ§ λ³Έλ¬Έ μ 체λ₯Ό λ°λμ μ½κ±°λ λλ 컀λ₯μ μ λ«μμΌ νλ€.(MUST)
νμ μμ²μ λν΄ λμΌν 컀λ₯μ μ μ¬μ¬μ©νλ €κ³ νλ€λ©΄ μλ΅ λ©μμ§ λ³Έλ¬Έ μ 체λ₯Ό μ½μ΄μΌ νλ€.(MUST)
νλ½μ μλ²λ HTTP/1.0 ν΄λΌμ΄μΈνΈμ μμμ 컀λ₯μ μ μ μ§ν΄μλ μ λλ€.(MUST NOT)
6.3.1 Retrying Requests
컀λ₯μ μ μλκ° μκ±°λ μκ±°λ μΈμ λ μ§ λ«ν μ μλ€. λΉλκΈ°μ μΌλ‘ λ«νλ μν©μΌλ‘λΆν° 볡ꡬνκΈ° μν μꡬλ₯Ό λ§μ‘±ν΄μΌ νλ€.
νλ‘μλ λΉλ©±λ± μμ²μ μλμΌλ‘ μ¬μλνλ©΄ μλλ€.(MUST NOT)
6.3.2 Pipelining
μμμ 컀λ₯μ μ μ§μνλ ν΄λΌμ΄μΈνΈλ₯Ό βpipelineβμΌλ‘ λ§λ€ μ μλ€.(MAY) (μ¦, κ° μλ΅μ κΈ°λ€λ¦¬μ§ μκ³ μ¬λ¬ μμ²μ λ³΄λΌ μ μμ).
μλ²λ μμ²μ΄ μμ ν λ©μλ([RFC7231]μ Section 4.2.1)μΈ κ²½μ° μ°μμ νμ΄ν λΌμΈ μμ²μ λ³λ ¬λ‘ μ²λ¦¬ν μ μμ§λ§, λ€λ§ μμ²μ λ°μ μμλλ‘ ν΄λΉ μλ΅μ μ μ‘ν΄μΌ νλ€.(MUST)
ν΄λΌμ΄μΈνΈλ 컀λ₯μ μ€λ¦½ μ§ν νμ΄νλΌμΈμ μ²λ¦¬ν΄μλ μ λλ€.(MUST NOT)
HTTP/2.x μ΄ λμ€λ©΄μ λ©ν°νλμ± μκ³ λ¦¬μ¦μΌλ‘ λ체λλ€.
6.4 Concurrency
ν΄λΌμ΄μΈνΈλ μ£Όμ΄μ§ μλ²λ‘ μ μ§νλ λμμ μ΄λ € μλ 컀λ₯μ μλ₯Ό μ νν΄μΌ νλ€.
6.5 Failures as Timeouts
6.6 Tear-down
βcloseβ 컀λ₯μ μ΅μ μ λ³΄λΈ ν΄λΌμ΄μΈνΈλ μΆκ° μμ²μ 보λ΄μ§ μμμΌ νλ©°(MUST NOT),
(βcloseβ κ° ν¬ν¨λ κ²½μ°) μ΄ μμ²μ ν΄λΉνλ μ΅μ’ μλ΅ λ©μμ§λ₯Ό μ½μ ν 컀λ₯μ μ λ°λμ λ«μμΌ νλ€.(MUST)
βcloseβ 컀λ₯μ μ΅μ μ μμ ν μλ²λ βcloseβκ° ν¬ν¨λ μμ²μ λν μ΅μ’ μλ΅μ λ°μ‘ν ν 컀λ₯μ μ’ λ£λ₯Ό μμν΄μΌ νλ€.(MUST)
6.7 Upgrade
βUpgradeβ ν€λ νλλ HTTP/1.1μμ λμΌν 컀λ₯μ μ λ€λ₯Έ νλ‘ν μ½λ‘ μ ννκΈ° μν κ°λ¨ν λ©μ»€λμ¦μ μ 곡νκΈ° μν κ²μ΄λ€.
101 (Switching Protocols) μλ΅μ μ μ‘νλ μλ²λ λ°λμ 컀λ₯μ μ ν λμμ μ νλ‘ν μ½ μ λνλ΄κΈ° μν΄ Upgrade ν€λ νλλ₯Ό μ μ‘ν΄μΌ νλ€.(MUST)
λ€μ€ νλ‘ν μ½ κ³μΈ΅μ΄ μ νλλ κ²½μ° λ°μ μλ κ³μΈ΅ κ΅¬λΆ μμλ‘ νλ‘ν μ½μ λμ΄ν΄μΌ νλ€.(MUST)
μλ²λ ν΄λΉ μμ²μ Upgrade ν€λ νλμ ν΄λΌμ΄μΈνΈμ μν΄ νμνμ§ μμ νλ‘ν μ½λ‘ μ νν΄μλ μ λλ€. (MUST NOT)
426(Upgrade Required) μλ΅μ μ μ‘νλ μλ²λ λ΄λ¦Όμ°¨μ κΈ°λ³Έ μ€μ μμλ‘ νμ©κ°λ₯ν νλ‘ν μ½μ λνλ΄κΈ° μν΄ Upgrade ν€λ νλλ₯Ό μ μ‘ν΄μΌ νλ€.(MUST)
101(Switching Protocols) μλ΅μ μ μ‘ν μ§ν, μλ²λ λ§μΉ μλ‘μ΄ νλ‘ν μ½ λ΄μμ κ·Έμ μμνλ κ²μ λ°μ κ²μ²λΌ μλμ μμ²μ κ³μ λμν κ²μΌλ‘ μμλλ€(μ¦, νλ‘ν μ½ λ³κ²½ νμλ μλ²κ° μΆ©μ‘±ν΄μΌ ν λ―Έκ²° μμ²μ μ¬μ ν κ°μ§κ³ μμΌλ©°, μꡬνμ§ μκ³ μ΄λ₯Ό μνν κ²μΌλ‘ μμλλ€).
HTTP/1.1 101 Switching Protocols Connection: upgrade Upgrade: HTTP/2.0
[... data stream switches to HTTP/2.0 with an appropriate response (as defined by new protocol) to the "GET /hello.txt" request ...]
Upgrade ν€λ νλκ° μ μ‘λλ©΄, λ°μ μλ λμ΄λ νλ‘ν μ½μ ꡬννμ§ μμ μλ μλ μ€κ° μμ μν΄ Upgradeκ° μ€μλ‘ μ λ¬λλ κ²μ λ°©μ§νκΈ° μν΄ βupgradeβ 컀λ₯μ μ΅μ μ΄ ν¬ν¨λ Connection ν€λ νλ(Section 6.1)λ μ μ‘ν΄μΌ νλ€.(MUST)
μλ²κ° β100-continueβ μμκ³Ό Upgrade λ° Expect ν€λ νλ([RFC7231]μ Section 5.1.1)λ₯Ό λͺ¨λ μμ νλ κ²½μ°, μλ²λ 101 (Switching Protocols) μλ΅μ 보λ΄κΈ° μ μ λ°λμ 100 (Continue) μλ΅μ 보λ΄μΌ νλ€.(MUST)
Last updated