10. HTTP/2.0
μ΄ μ± μ 8λ²μ§Έ μ΄μμ κΈ°λ°μΌλ‘ μμ±λμμ
λ±μ₯ λ°°κ²½
http/1.1 : ꡬνμ λ¨μμ±κ³Ό μ κ·Όμ± μμ£Ό
λ¬Έμ : νμ μ§μ°
μλ΅μ λ°μμΌλ§ μμ²μ λ³΄λΌ μ μμ
(μ°νμ μΈ) ν΄κ²° λ°©λ²
λ³λ ¬ 컀λ₯μ
νμ΄νλΌμΈ 컀λ₯μ
λμ : μλ‘μ΄ νλ‘ν μ½
WAKA
Microsoft S+M (Speed + Mobility)
SPDY (2.0μ κΈ°λ°)
SPDYμ νΉμ§
ν€λ μμΆ β λμν μ μ½
1 TCP λ€μ€ 컀λ₯μ (νμ μ§μ° μ€μ)
μλ² νΈμ
SPDYμ κΈ°λ°ν HTTP 2.0
νλ μ
λͺ¨λ λ©μμ§λ₯Ό λ΄λ μλ¨.
μμ² λλ μλ΅μ΄ λ΄κ²¨ μμ.
νλ μμ μ’
λ₯
λ°μ΄ν° (DATA)
ν€λ (HEADERS)
μ°μ μμ (PRIORITY)
μ€νΈλ¦Ό 리μ (RST_STREAM)
SETTINGS, PUSH_PROMISE, ... λ± μ΄ 10κ°μ§
μ€νΈλ¦Ό
ν μμ HTTP μμ²κ³Ό μλ΅μ μ²λ¦¬νλ λ¨μ.
νλ μλ€μ λ 립λ μλ°©ν₯ μνΈμ€.
νλμ 컀λ₯μ μ μ¬λ¬ κ°μ μ€νΈλ¦Όμ΄ μμ μ μμΌλ―λ‘ μ¬λ¬ κ°μ TCP 컀λ₯μ μ λ§λλ ν¨κ³Ό.
μ¬λ¬ μμ²μ΄ λμμ 보λ΄μ§ μ μκ³ μ°μ μμλ κ°μ§ μ μλ€.
μ¬λ¬ μ€νΈλ¦Όμ μ¬μ©ν¨μΌλ‘μ¨ λΈλ‘λλ κ²μ λ°©μ§νκΈ° μν΄ νλ¦μ μ΄ κΈ°λ²μ μ¬μ©.
μ€νΈλ¦Ό μλ³μ
ν TCP 컀λ₯μ μμ μ€νΈλ¦Όμ μλ³νλ 31λΉνΈ νλ
ν΄λΌμ΄μΈνΈκ° λ§λ€λ©΄ : νμ
μλ²κ° λ§λ€λ©΄ : μ§μ
μ€νΈλ¦Ό μλ³μλ μ μ μ¦κ°ν΄μΌλ§ νλ€.
κ·μΉμ μ΄κΈ°λ©΄ PROTOCOL_ERROR (컀λ₯μ μλ¬)
μλ³μλ μλ²μ ν΄λΌκ° νμ μμ΄ λ 립μ μΌλ‘ λ§λ¦
ν λ² μ¬μ©ν μλ³μ μ¬μ¬μ© λΆκ°
μλ³μκ° κ³ κ°λλ©΄ λ€μ 컀λ₯μ λ§Ίμ
ν€λ μμΆ
HPACK λͺ μΈμ λ°λΌ μμΆν λ€ μ²ν¬λ‘ μ μ‘
λ°λ μͺ½μμλ νμ μμΆμ νμ΄μΌλ§ νλ€.
μμΆ μ½ν
μ€νΈ
HPACKμ μμΆμ νκ³ , ν΄μ ν λ μμΆ μ½ν μ€νΈλΌλ κ²μ΄ λ³κ²½ λ¨.
κ° νΌμ΄μμ μμΆμ ν΄μ νλ€κ³ κΈ°λνκ³ μμ.
κ·Έλ¬λ―λ‘ ν€λλ₯Ό μ°μ§ μκ³ λ²λ¦°λ€κ³ νλλΌλ 무쑰건 μμΆμ ν΄μ ν΄μΌ ν¨.
κ·Έλ΄ μ μλ€λ©΄ COMPRESSION_ERROR (컀λ₯μ μλ¬, μ’ λ£)
μλ² νΈμ
μ΄λ€ HTML νμΌμ μμ²ν λ μλ²μμ μ΄ νμΌμ΄ λ§ν¬νκ³ μλ CSS, JS, μ΄λ―Έμ§ λ±μ ν΄λΌμ΄μΈνΈμμ μμ²νκΈ° μ μ κ°μ΄ λ°ν ν΄μ€ μ μμ.
PUSH_PROMISE
μλ² νΈμλ₯Ό μνκ³ μ ν λ ν΄λΌμ μ μμ²μ μν΄ λ§λ€μ΄μ§ μ€νΈλ¦Όμ μ μ‘νλ νλ μ
ν΄λΌμ΄μΈνΈκ° μλ² νΈμνκ³ μ νλ 리μμ€λ₯Ό μμ²νκΈ° μ μ 미리 보λ΄μΌ ν¨
μ΄ νλ μμ λ°μΌλ©΄ ν΄λΌμ΄μΈνΈλ ν΄λΉ μ€νΈλ¦Όμ
μμ½λ¨μνλ‘ λ§λ¦.ν΄λΉ μ€νΈλ¦Όμ΄ λ«νκΈ° μ κΉμ§ μλ²νΈμ λμμΈ λ¦¬μμ€λ₯Ό μμ²νλ©΄ μ λ¨.
RST_STREAM
PUSH_PROMISE νλ μμ λ°μ ν΄λΌμ΄μΈνΈκ° μλ² νΈμλ₯Ό μμΉ μμ λ 보λ΄λ νλ μ
λ°λ‘ PUSH_PROMISE νλ μμΌλ‘ λΆν° μμ½λ μ€νΈλ¦Όμ΄ λ«νκ² λ¨.
μ£Όμμ
μ€κ°μ νλ‘μκ° μλ² νΈμμ μλμλ λ³κ°λ‘ μμΉ μλ μ μ‘ / μμΉ μλ λ―Έμ μ‘μ΄ μ΄λ£¨μ΄μ§ μ μμ
μμ νκ³ μΊμ κ°λ₯νκ³ λ³Έλ¬Έμ ν¬ν¨νμ§ μλ μμ²μ λν΄μλ§ νΈμ κ°λ₯
νΈμν 리μμ€λ ν΄λΌμ΄μΈνΈκ° λͺ μμ μΌλ‘ λ³΄λΈ κ²κ³Ό μ°κ΄μ΄ μμ΄μΌλ§ ν¨
ν΄λΌλ μλ²κ° νΈμν 리μμ€λ₯Ό CORSμ λ°λΌ κ²μ¬ν΄μΌ ν¨. = λ€λ₯Έ origin μμ μ¨ λ¦¬μμ€λ κ±°λΆν΄μΌ ν¨.
μλ² νΈμλ₯Ό λκ³ μΆλ€λ©΄ SETTING_ENABLE_PUSH = 0 μΌλ‘ μ€μ
μλ €μ§ λ³΄μ μ΄μ
μ€κ°μ μΊ‘μν 곡격
Intermediary Encapsulation Attacks
2.0 λ©μμ§λ₯Ό νλ‘μκ° 1.1 λ©μμ§λ‘ λ³νν λ μλ―Έ λ³μ§ κ°λ₯μ±μ΄ μλ€.
2.0 λ©μμ§λ ν€λ νλμ μ΄λ¦κ³Ό κ°μ λ°μ΄λλ¦¬λ‘ μΈμ½λ©
μ΄λ‘μ¨ μ΄λ€ λ¬Έμμ΄μ΄λ ν€λ νλλ‘ μμ±ν μ μλ€
μ μμ μΈ 2.0 μμ²/μλ΅μ λΆλ²μ μΈ 1.1 λ©μμ§λ‘ λ²μλκ² ν μ μμ
κ·Έλ¬λ λ°λλ‘ 1.1λ©μμ§λ μ΄λ₯Ό νμ©νμ§ μμΌλ―λ‘ λΆκ°λ₯
κΈ΄ 컀λ₯μ
μ μ§ = κ°μΈμ 보 λμΆ μ°λ €
μΌλ°μ μΌλ‘, ν 컀λ₯μ μ΄ μ€νΈλ¦Ό μλ³μκ° κ³ κ°λκ±°λ ν μͺ½μμ κ°μ λ‘ λκΈ° μ μλ κ³μ μ μ§λ¨.
RTT κ° μ€μ΄λλ λμ μ§§μ 컀λ₯μ μ΄ μλ κ²½μ° (κΈΈκ² κ³μ μ μ§λλ κ²½μ°) 보μ λ¬Έμ κ° λ°μν μ μμ
κ°μ λΈλΌμ°μ λ΄μμ, μ΄μ μ¬μ©μκ° λ¬΄μμ νλμ§ μμλΌ μλ μμ.
Last updated