HTTP 버전이 μžˆμ—ˆλ‚˜?

κ·Έλ ‡λ‹€. 확인을 ν•΄λ³΄λ‹ˆ HTTP/1, HTTP/2, HTTP/3이 μžˆμ—ˆλ‹€.
image.png

HTTP/1, HTTP/2의 μ—°κ²° 방법

연결에 μžˆμ–΄, TCPλ₯Ό μ‚¬μš©ν•œλ‹€.
TCPλŠ” μ—°κ²°ν˜• μ„œλΉ„μŠ€λ‘œ 신뒰도가 λ†’μœΌλ‚˜ 속도가 λŠλ¦¬λ‹€λŠ” 단점이 μžˆλ‹€.

λ”°λΌμ„œ TCP 연결이 수립된 이후, μ‹€μ§ˆμ μΈ HTTP μš”μ²­μ„ λ³΄λ‚΄λ―€λ‘œ 속도가 λŠλ¦¬λ‹€λŠ” 점이 μžˆλ‹€.

HTTP/3 을 μ•Œκ²Œ 된 경둜

이 κΈ€ (Cloudflare Blog)을 μ°Έκ³ ν•˜λ©΄ 확인할 수 μžˆλ“―μ΄ CloudflareλŠ” Edge Network에 λŒ€ν•΄ HTTP/3와 QUIC을 μ§€μ›ν•œλ‹€κ³  λ°œν‘œν•˜μ˜€λ‹€.

이 글을 읽고, "μœ™, HTTP/3λ₯Ό μ‚¬μš©ν•΄λ³ΌκΉŒ?" λΌλŠ” 생각도 μžˆμ—ˆμ§€λ§Œ, λ„μž…ν•˜κΈ° νž˜λ“€μ—ˆλ˜ 점을 좔후에 μ„€λͺ…을 ν•˜λ„λ‘ ν•˜κ² λ‹€.

κ·Έλž˜μ„œ HTTP/3μ—μ„œ 바뀐 사항은 뭔데?

HTTP/1, HTTP/2 μ—μ„œ μ‚¬μš©λ˜λ˜ TCP μ—°κ²° 방식을 UDP 기반의 ν”„λ‘œν† μ½œ(QUIC)둜 λ³€κ²½ν•˜μ˜€λ‹€.
이 QUIC κΈ°μˆ μ„ μ‚¬μš©ν•˜μ—¬ κΈ°μ‘΄ TCPμ—μ„œ μ‚¬μš©λ˜λ˜ μ—°κ²° 수립 과정을 λΉ λ₯΄κ²Œ 처리λ₯Ό ν•˜κ²Œ λ˜μ—ˆλ‹€.

잠깐, QUIC은 또 뭐야?

QUIC(Quick UDP Internet Connection)λŠ” κ΅¬κΈ€μ—μ„œ TCPκ°€ κ°€μ§€λŠ” μ‘λ‹΅μ†λ„μ˜ 문제의 해결을 μ€‘μ μœΌλ‘œ 두고 κ°œλ°œν•œ UDP ν”„λ‘œν† μ½œμ΄λ‹€.

UDPλ₯Ό μ‚¬μš©ν•˜λ©΄ TCP처럼 μ•ˆμ •μ μ΄κ³  신뒰도 μžˆλŠ” 연결을 μ œκ³΅ν•  수 μžˆμ„κΉŒ?

"TCPλŠ” 신뒰도가 λ†’κ³  느린 ν”„λ‘œν† μ½œμ΄λ‹€", "UDPλŠ” 신뒰도가 λ–¨μ–΄μ§€λ‚˜ λΉ λ₯Έ ν”„λ‘œν† μ½œμ΄λ‹€"
μœ„ 말이 λ°˜μ€ 맞고 λ°˜μ€ 틀리닀. μ™œ 그럴까?
μΆ©λΆ„νžˆ TCPμ—μ„œ μ œκ³΅ν•˜λŠ” κΈ°λŠ₯을 UDPμ—μ„œ κ΅¬ν˜„μ΄ κ°€λŠ₯ν•˜κΈ° λ•Œλ¬Έμ΄λ‹€.

μ‹€μ œλ‘œ QUIC은 TCP-like ν”„λ‘œν† μ½œλ‘œ UDPμ—μ„œ κ΅¬ν˜„λœ TCP + TLS + HTTP/2와 κ°™λ‹€κ³  생각할 수 μžˆλ‹€.
μžμ„Έν•œ λ‚΄μš©μ€ Cloudflare Blog (영문)을 μ°Έκ³ ν•˜λ©΄ 더 μ •ν™•ν•  것이닀.

QUIC은 TCP의 μ „ν˜•μ μΈ 3λ°©ν–₯ ν•Έλ“œμ…°μ΄ν¬μ™€ TLS 1.3의 ν•Έλ“œμ…°μ΄ν¬λ₯Ό κ²°ν•© ν•©λ‹ˆλ‹€. 이런 결합은 μ•”ν˜Έν™”μ™€ 인증이 기본으둜 제곡되고 연결을 더 빨리 λ§Œλ“€ 수 있게 ν•©λ‹ˆλ‹€. 달리 λ§ν•˜λ©΄ HTTP의 첫 μš”μ²­μ— ν•„μš”ν•œ QUIC 연결을 μƒˆλ‘œ λ§Œλ“€ λ•Œμ—λ„ 데이터 전솑 μ‹œμž‘κΉŒμ§€ κ±Έλ¦¬λŠ” 지연 μ‹œκ°„μ€ TCP μƒμ˜ TLS보닀 μž‘μŠ΅λ‹ˆλ‹€.
by CloudFlare Blog

μ™œ HTTP/3λ₯Ό λ„μž…ν•˜μ§€ μ•Šμ•˜λŠ”κ°€

High-Cost, Low-Return

HTTP/3을 μ‚¬μš©ν•  수 있게 ν• λ €λ©΄ Web μ„œλ²„λ„ QUIC을 지원할 수 μžˆλ„λ‘ λ‹€μ‹œ λΉŒλ“œν•΄μ•Ό ν•˜λŠ”λ°,
아직 TEST쀑인 ν”„λ‘œν† μ½œμ„ μ‚¬μš©ν•˜κΈ° μœ„ν•΄ NGINX μ†ŒμŠ€λ₯Ό λ‚΄λ €λ°›μ•„ 섀정을 μΆ”κ°€ν•˜κ³  λ‹€μ‹œ λΉŒλ“œν•˜κ³ , μ„€μΉ˜ν•˜λŠ” 과정은 λ³΅μž‘ν•˜κ³  μ‹€μ œλ‘œ λΉŒλ“œλ₯Ό ν•˜λ‹€λ³΄λ‹ˆ κ²©λŠ” 였λ₯˜λ„ λ§Žμ•˜λ‹€.

QUIC을 μ‚¬μš©ν•˜κΈ° μœ„ν•œ λΈŒλΌμš°μ € μ„€μ •

μ΄λŸ¬ν•œ 였λ₯˜λ₯Ό λ‹€ ν•΄μ³λ‚˜κ°€κ³  섀정을 ν•˜κ³  ν…ŒμŠ€νŠΈλ₯Ό ν•˜λ €κ³  ν•˜λ‹ˆ, Chrome μΉ΄λ‚˜λ¦¬μ•„ λΈŒλΌμš°μ €λ₯Ό μ‚¬μš©ν•˜μ—¬μ•Ό ν–ˆκ³ , QUIC을 μ‚¬μš©ν•˜λ €λ©΄ Chrome을 λ‹€μŒκ³Ό 같이 κ΅¬λ™ν•˜μ—¬μ•Ό ν–ˆλ‹€.

chrome.exe --enable-quic --quic-version=h3-23

이에 아직 ν”„λ‘œν† μ½œμ„ μ‚¬μš©ν•  μœ μ €λŠ” μƒλ‹Ήνžˆ 적은 μƒνƒœμ—μ„œ, QUIC μ„€μ •λœ NGINX λΉŒλ“œκ°€ μ–Όλ§ˆλ‚˜ μ•ˆμ •ν™”κ°€ λ˜μ—ˆλŠ”μ§€ λΆˆν™•μ‹€ν•˜μ—¬ 천천히 λ„μž…ν•˜κΈ°λ‘œ κ²°μ •ν•˜μ˜€λ‹€.