1. HTTP
HTTP λ°μ κ³Όμ
- HTTP/0.9(1991λ ) βΆοΈ HTTP/1(1996λ ) βΆοΈ HTTP/1.1(1997λ ) βΆοΈ HTTP/2(2015λ ) βΆοΈ HTTP/3(2020λ )
HTTP/0.9(1991λ )
- μ΅μ΄ μμ± μ λ²μ μ΄ μμμΌλ HTTP/1μ΄ μκΈ°λ©΄μ ꡬλΆνκΈ° μνμ¬ HTTP 0.9λ‘ λΆλ¦¬κΈ° μμ
- λ¨μ HTMLλ§ μ μ‘ κ°λ₯
- GET λ©μλλ§ κ°λ₯
HTTP/1(1996λ )
- ν€λ λ±μ₯
- μλ² μν νμΈ κ°λ₯
- HTML μΈ μ»¨ν μΈ νμΌ μ μ‘ κ°λ₯
- POST, PUT λ©μλ μΆκ°
HTTP/1.1(1997λ )
- νμ€ λͺ¨λΈ
- Keep Alive κΈ°λ₯ μΆκ°
- μ§μ 컀λ₯μ κΈ°λ₯μΌλ‘ TCP Connection μ¬νμ©
- νμ΄νλΌμ΄λ κΈ°λ₯ μΆκ°
- OPTIONS, GET, HEAD, POST, PUT, DELETE, TRACE λ©μλ μΆκ°
HTTP/2(2015λ )
- ꡬκΈμ΄ κ°λ°ν SPDYλ₯Ό κΈ°λ°
- HTTP ν€λ μμΆ
- μλ² νΈμ κΈ°λ₯ μΆκ°
- λ°μ΄λ리 νλ‘ν μ½λ‘ λ³ν
- λ€μ€ μ²λ¦¬ κΈ°λ₯ μΆκ°
HTTP/3(HTTP over QUIC)(2019λ )
- ꡬκΈμ΄ κ°λ°ν QUIC(Quick UDP Internet Connections) μ΄μ©
- UDPλ‘ λ³κ²½
- QUIC 3 way handshaking ꡬν
- 보μ κ°ν
2. HTTP/2 νΉμ§
HTTP/1.1 νΈν κ°λ₯
- λΈλΌμ°μ λ OSμ λ°λΌ HTTP/2λ₯Ό λ―Έμ§μνκΈ°λ νμ¬ νΈν νμ
- HTTP/2λ₯Ό λ―Έμ§μνλ Clientμμλ HTTP/1.1λ‘ ν΅μ
HTTP ν€λ μμΆ(Header compression)
- ν€λ ν μ΄λΈμ κ΄λ¦¬νμ¬ μ΄μ Requestμ μ€λ³΅λ κ°μ μΈλ±μ€ κ°λ§ μ μ‘νμ¬ λ°μ΄ν° μμ μ€μ
- HTTP/1.1μμλ νλ μΈ ν μ€νΈλ‘ μ μ‘νμ§λ§ HTTP/2μμλ HuffmanμΌλ‘ μΈμ½λ©νμ¬ ν μ€νΈμ μΈ μμΆ
- HPACK μκ³ λ¦¬μ¦μ ν΅ν΄ ν€λμ ν¬κΈ°λ₯Ό 80% μ΄μ μμΆ
μλ² νΈμ(Server Push)
- Clientκ° λ¨μΌ Request νΉμ Request μμ΄ Serverκ° Clientκ° νμν Response(PUSH_PROMISE)λ₯Ό 보λ
λ°μ΄λ리 νλ‘ν μ½(Binary Protocol)
- HTTP/1.1μμλ νλ μΈ ν μ€νΈλ‘ μ μ‘νμμ§λ§ HTTP/2μμλ νλ μ ꡬ쑰(Header Frame, Data Frame)λ‘ μ μ‘
- λ°μ΄λ리 νλ‘ν μ½μ Header Frameκ³Ό Data Frame(μ΄μ§ λ°μ΄ν°)μΌλ‘ ꡬμ±
- νλ μμ΄ λͺ¨μ¬ λ©μΈμ§κ° λκ³ , λ©μΈμ§κ° λͺ¨μ¬ μ€νΈλ¦Όμ΄ λ¨(μ μ‘ λ¨μ λ©μΈμ§)
λ€μ€ μ²λ¦¬(Multiplexing)
- μ§μ 컀λ₯μ (Persistent Connection)μΌλ‘ TCP Connection μ¬νμ©
- νμ΄νλΌμ΄λ(Pipeling)μΌλ‘ Reqeustλ₯Ό μ¬λ¬κ° λ 릴 μ μλλ‘ ν¨
- νλ μλ§λ€ μ€νΈλ¦Ό(μμ² μμ λ²νΈ) νκΈ°νμ¬ Response μμλλ‘ λ°μ§ μμλ λ¨
- μ€νΈλ¦Όλ³ μ°μ μμ μ§μ κ°λ₯(Prioritization)
HTTP HOL(Head of Line) Blocking λ¬Έμ ν΄κ²°
- HTTP HOL Blocking λ¬Έμ : HTTP/1.1μμλ νμ΄νλΌμ΄λ κ°λ₯νμ§λ§ μ¬λ¬κ°μ Requestλ₯Ό μμμ λ§κ² Responseλ₯Ό λ°μμΌλ§ νμ(κ°μ₯ λ¨Όμ λ°μ Reqeustμ Responseμ μ§μ° λ°μν κ²½μ° μ΄ν Requsetλ€λ ν¨κ» μ§μ° λ¨)
- HTTP/2μμλ λ€μ€ μ²λ¦¬λ‘ μΈνμ¬ HTTP HOL Blocking λ¬Έμ ν΄κ²°
λΈλΌμ°μ μΉ λ‘λ© μλ λΉ¨λΌμ§
- HTTP ν€λ μμΆ κΈ°λ₯μΌλ‘ λ°μ΄ν° μμ μ€μ΄κ³ μμΆ
- μλ² νΈμ κΈ°λ₯μΌλ‘ λΆνμν Request λκΈ° μκ° μ€μ
- λ°μ΄λ리 νλ‘ν μ½, λ€μ€μ²λ¦¬ κΈ°λ₯μΌλ‘ λ©μΈμ§λ₯Ό νλ μμΌλ‘ μͺΌκ°κ³ λ€μ€ μ²λ¦¬ κ°λ₯
보μ κ°ν
- TLS νμ
3. HTTP/2 ν΅μ κ³Όμ
TLS Handsahking κ³Όμ μ€ Client Hello ν¨ν·κ³Ό Server Hello ν¨ν·μ Extension : application_layer_protocol_negotiation(ALPN)νλμ νμ¬ λΈλΌμ°μ μμ μ§μ κ°λ₯ν HTTP λ²μ
HTTPSμΌ κ²½μ° Application Data ν¨ν·μ μνΈνλμ΄ HTTP λ²μ μ νμΈν μ μμ
4. HTTP/3 νΉμ§
νμ¬ μ€ν μ€μΌλ‘ ν¬λ‘¬ μ€νμ€μμ QUIC κΈ°λ₯μ μΌμΌ HTTP/3λ₯Ό μ λλ‘ ν μ€νΈν΄λ³Ό μ μμ΅λλ€ π€
QUIC(Quick UDP Internet Connections)
- ꡬκΈμμ κ°λ°ν νλ‘ν μ½
- HTTP/2κ° QUIC μμμ λμ
- IPκ° μλ Connection IDλ‘ ν΅μ μ νμ¬ IPκ° λ°λμ΄λ κΈ°μ‘΄ μ°κ²°μ μ μ§ν μ μμ
UDPλ‘ λ³κ²½
- TCP Handshaking νμ μμ
- UDPλ TCPλ³΄λ€ λΉκ΅μ λΉ λ¦
TCPμ UDP βΆοΈ https://eunhyee.tistory.com/96
QUIC 3 way Handshaking
- TLS Handshaking κ³Όμ ν¬ν¨
λΈλΌμ°μ μΉ λ‘λ© μλ λΉ¨λΌμ§
- UDP λ³κ²½μΌλ‘ μλ λΉ¨λΌμ§(TCPμ UDPλ μ μ‘ κ³μΈ΅μΌλ‘ μλ μ°¨μ΄κ° μμ)
- QUIC 3 way Handshaking κΈ°λ₯μΌλ‘ Handshaking κ³Όμ λ¨μΆ
보μ κ°ν
- TLS 1.3 νμ
μ°Έκ³ : https://velog.io/@zzzz465/HTTP1.1-2-3-%EC%9D%98-%EC%B0%A8%EC%9D%B4%EC%A0%90
'Web(HTTPS)' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
HTTPS ν¨ν· λΆμ(TLS 1.2μ TLS 1.3) (2) | 2021.06.11 |
---|---|
HTTP and TLS(SSL) (0) | 2021.06.06 |
URI, URL, URN (0) | 2020.03.22 |
HTTP Method(GET/POST) (0) | 2020.03.22 |
HTTP Header (0) | 2020.03.22 |