Study: ComputerScience(CS)/CS: Network

[Network] HTTP ๋ฒ„์ „ ๋ณ„ ํŠน์ง•: HTTP v0.9 v1.0 v1.1 v2 v3

DrawingProcess 2023. 2. 15. 11:08
๋ฐ˜์‘ํ˜•
๐Ÿ’ก ๋ณธ ๋ฌธ์„œ๋Š” 'HTTP ๋ฒ„์ „ ๋ณ„ ํŠน์ง•: HTTP v0.9 v1.0 v1.1 v2 v3'์— ๋Œ€ํ•ด ์ •๋ฆฌํ•ด๋†“์€ ๊ธ€์ž…๋‹ˆ๋‹ค.
HTTP๋Š” ์—ฌ๋Ÿฌ ๊ณผ์ •์„ ๊ฑฐ์ณ ํ˜„์žฌ์˜ ์›น์˜ ํ‘œ์ค€์œผ๋กœ ์ž๋ฆฌ์žก๊ฒŒ ๋˜์—ˆ๋Š”๋ฐ, ํ•˜๋‹จ์—์„œ๋Š” HTTP์˜ ์—ญ์‚ฌ์™€ ํ•จ๊ป˜ ๋ณ€์ฒœ๊ณผ์ •์— ๋Œ€ํ•ด ์‚ดํŽด๋ณด๋ฉฐ HTTP์— ์ ์šฉ๋œ ๊ธฐ์ˆ ์— ๋Œ€ํ•ด ์ •๋ฆฌํ•˜์˜€์œผ๋‹ˆ ์ฐธ๊ณ ํ•˜์‹œ๊ธฐ ๋ฐ”๋ž๋‹ˆ๋‹ค.

1. HTTP ๋ž€?

HTTP๋Š” Hyper Text Transfer Protocol์˜ ์•ฝ์ž๋กœ, ์ƒ๋‹นํžˆ ํ™•์žฅ ๊ฐ€๋Šฅํ•˜๋ฉฐ HTML ๋ฌธ์„œ์™€ ๊ฐ™์€ ๋ฆฌ์†Œ์Šค๋“ค์„ ๊ฐ€์ ธ์˜ฌ ์ˆ˜ ์žˆ๋„๋ก ํ•ด์ฃผ๋Š” ํ”„๋กœํ† ์ฝœ์ž…๋‹ˆ๋‹ค. HTTP๋Š” ์›น์—์„œ ์ด๋ฃจ์–ด์ง€๋Š” ๋ชจ๋“  ๋ฐ์ดํ„ฐ ๊ตํ™˜์˜ ๊ธฐ์ดˆ์ด๋ฉฐ, ํด๋ผ์ด์–ธํŠธ-์„œ๋ฒ„ ํ”„๋กœํ† ์ฝœ์ด๊ธฐ๋„ ํ•ฉ๋‹ˆ๋‹ค. ํด๋ผ์ด์–ธํŠธ-์„œ๋ฒ„ ํ”„๋กœํ† ์ฝœ์ด๋ž€ (๋ณดํ†ต ์›น๋ธŒ๋ผ์šฐ์ €์ธ) ์ˆ˜์‹ ์ž ์ธก์— ์˜ํ•ด ์š”์ฒญ์ด ์ดˆ๊ธฐํ™”๋˜๋Š” ํ”„๋กœํ† ์ฝœ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. ํ•˜๋‚˜์˜ ์™„์ „ํ•œ ๋ฌธ์„œ๋Š” ํ…์ŠคํŠธ, ๋ ˆ์ด์•„์›ƒ ์„ค๋ช…, ์ด๋ฏธ์ง€, ๋น„๋””์˜ค, ์Šคํฌ๋ฆฝํŠธ ๋“ฑ ๋ถˆ๋Ÿฌ์˜จ(fetched) ํ•˜์œ„ ๋ฌธ์„œ๋“ค๋กœ ์žฌ๊ตฌ์„ฑ๋ฉ๋‹ˆ๋‹ค.

์ด๋Ÿฌํ•œ HTTP๋Š” ์—ฌ๋Ÿฌ ๊ณผ์ •์„ ๊ฑฐ์ณ ํ˜„์žฌ์˜ ์›น์˜ ํ‘œ์ค€์œผ๋กœ ์ž๋ฆฌ์žก๊ฒŒ ๋˜์—ˆ๋Š”๋ฐ, ํ•˜๋‹จ์—์„œ๋Š” HTTP์˜ ์—ญ์‚ฌ์™€ ํ•จ๊ป˜ ๋ณ€์ฒœ๊ณผ์ •์— ๋Œ€ํ•ด ์‚ดํŽด๋ณด๋ฉฐ HTTP์— ์ ์šฉ๋œ ๊ธฐ์ˆ ์— ๋Œ€ํ•ด ์‚ดํŽด๋ณด๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

2. HTTP ๋ฒ„์ „ ๋ณ„ ํŠน์ง•

2.0 ํ†ต์‹  ํ”„๋กœํ† ์ฝœ์˜ ์—ญ์‚ฌ

HTTP๋ฅผ ํฌํ•จํ•œ ๋‹ค์–‘ํ•œ ํ†ต์‹  ํ”„๋กœํ† ์ฝœ์˜ ์—ญ์‚ฌ์— ๋Œ€ํ•ด์„œ ์•Œ์•„๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

  • Socket API (1983, 4.2BSD Unix OS)
  • HTTP/0.9 (1991)
  • HTTP/1.0 (1996)
  • HTTP/1.1 (1997, ํ‘œ์ค€) : ๊ฐ€์žฅ ๋งŽ์ด ์‚ฌ์šฉ์ค‘
    • RFC2068 (1997) -> RFC2616 (1999) -> RFC7230~7235 (2014)
    • ํ˜„์žฌ ํ‘œ์ค€ ์ŠคํŽ™์„ ๋ณด๋ ค๋ฉด RFC7230 ์ดํ›„๋ฅผ ๋ด์•ผ ํ•จ
  • ZMQ (2007, Opensource)
  • WebRTC (2011, Opensource)
  • HTTP/2 (2015, SPDY(ํ‘œ์ค€)) : HTTP 1.1์˜ ์„ฑ๋Šฅ ๊ฐœ์„  ๋ฐ ํ™•์žฅ
  • gRPC (2016, Opensource)
  • HTTP/3 (2021, QUIC(ํ‘œ์ค€))

HTTP 1.1 ์ด ๋ชจ๋“  ๊ฒƒ์˜ ๊ธฐ๋ฐ˜์ด๊ธฐ ๋•Œ๋ฌธ์— ์ž˜ ์•Œ๊ณ  ๊ทธ ๋‹ค์Œ์— 2.0 / 3.0์„ ์•Œ์•„๋‘๋ฉด ์ข‹์œผ๋ฉฐ, ์ถ”ํ›„ ์‚ฌ์šฉ๋  HTTP 3.0๋„ ์ธ์ง€ํ•ด๋‘์ž!

2.1 HTTP/0.9 (One-Line Protocol)

  • ์š”์ฒญ์€ ๋‹จ์ผ ๋ผ์ธ์œผ๋กœ ๊ตฌ์„ฑ๋˜๋ฉฐ, ๋ฆฌ์†Œ์Šค์— ๋Œ€ํ•œ method๋Š” GET๋งŒ ์กด์žฌ
  • ์‘๋‹ต๋„ ๊ทน๋„๋กœ ๋‹จ์ˆœ (ํŒŒ์ผ ๋‚ด์šฉ ์ž์ฒด๋กœ๋งŒ ๊ตฌ์„ฑ)
  • HTTPํ—ค๋”๊ฐ€ ์—†์—ˆ์œผ๋ฉฐ, HTML ํŒŒ์ผ๋งŒ ์ „์†ก ๊ฐ€๋Šฅ
  • ์ƒํƒœ ํ˜น์€ ์˜ค๋ฅ˜ ์ฝ”๋“œ๊ฐ€ ์—†์—ˆ์Œ
/* ์š”์ฒญ */
GET /mypage.html

/* ์‘๋‹ต */
<HTML>
A very simple HTML page
</HTML>

2.2 HTTP/1.0

HTTP/1.0 ํŠน์ง•

  • HTTP ํ—ค๋” ๊ฐœ๋…์„ ํ†ตํ•ด, ์š”์ฒญ / ์‘๋‹ต ๋ชจ๋‘ Meta data ์ „์†ก์„ ํ—ˆ์šฉํ•˜์—ฌ ํ”„๋กœํ† ์ฝœ์„ ์œ ์—ฐํ•˜๊ณ  ํ™•์žฅ ๊ฐ€๋Šฅํ•˜๋„๋ก ํ•จ
  • ๋ฒ„์ „ ์ •๋ณด์™€ ์š”์ฒญ method๊ฐ€ ํ•จ๊ป˜ ์ „์†ก๋˜๊ธฐ ์‹œ์ž‘
  • Response ์‹œ์ž‘ ๋ถ€๋ถ„์— ์ƒํƒœ ์ฝ”๋“œ ๋ผ์ธ์ด ์ถ”๊ฐ€๋˜์–ด ๋ธŒ๋ผ์šฐ์ € ์š”์ฒญ์˜ ์„ฑ๊ณต/์‹คํŒจ๋ฅผ ํŒŒ์•… ๊ฐ€๋Šฅ
    • ํ•ด๋‹น ๊ฒฐ๊ณผ์— ๋Œ€ํ•œ ๋กœ์ปฌ ์บ์‹œ ๊ฐฑ์‹  ๋“ฑ์˜ ์‚ฌ์šฉ ๊ฐ€๋Šฅ
  • Content-Type ๋„์ž…์œผ๋กœ HTML ์ด์™ธ์˜ ๋ฌธ์„œ ์ „์†ก ๊ธฐ๋Šฅ์ด ๊ฐ€๋Šฅํ•ด์ง
/* ์š”์ฒญ */
GET /mypage.html HTTP/1.0
User-Agent: NCSA_Mosaic/2.0 (Windows 3.1)

/* ์‘๋‹ต */
200 OK
Date: Tue, 15 Nov 1994 08:12:31 GMT
Server: CERN/3.0 libwww/2.17
Content-Type: text/html
<HTML>
A page with an image
  <IMG SRC="/myimage.gif">
</HTML>

HTTP/1.0 ํ•œ๊ณ„

์ปค๋„ฅ์…˜ ํ•˜๋‚˜๋‹น ์š”์ฒญ ํ•˜๋‚˜์™€ ์‘๋‹ต ํ•˜๋‚˜๋งŒ ์ฒ˜๋ฆฌ ๊ฐ€๋Šฅํ•˜์—ฌ, ๋งค์šฐ ๋น„ํšจ์œจ์ ์ด๋ฉฐ ์„œ๋ฒ„ ๋ถ€ํ•˜๋„ ๋ฌธ์ œ

2.3 HTTP/1.1 (ํ‘œ์ค€ ํ”„๋กœํ† ์ฝœ์˜ ๋“ฑ์žฅ)

HTTP/1.1 ํŠน์ง•

  • ๋ชจํ˜ธํ•จ์„ ๋ช…ํ™•ํ•˜๊ฒŒ ํ•˜๊ณ  ๋งŽ์€ ๊ฐœ์„  ์‚ฌํ•ญ์„ ๋„์ž…ํ•œ HTTP์˜ ์ฒซ๋ฒˆ์งธ ํ‘œ์ค€ ๋ฒ„์ „
  • Persistent Connection
    • ์ง€์ •ํ•œ timemout(Keep-Alive) ๋™์•ˆ์— ์ปค๋„ฅ์…˜ ์žฌ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•˜์—ฌ, ๊ธฐ์กด ์—ฐ๊ฒฐ์— ๋Œ€ํ•ด Handshaking ์ƒ๋žต
  • Pipelining ์ถ”๊ฐ€
    • ์•ž ์š”์ฒญ์˜ ์‘๋‹ต์„ ๊ธฐ๋‹ค๋ฆฌ์ง€ ์•Š๊ณ  ์ˆœ์ฐจ์ ์ธ ์—ฌ๋Ÿฌ ์š”์ฒญ์„ ์—ฐ์†์ ์œผ๋กœ ๋ณด๋‚ด๊ณ  ๊ทธ ์ˆœ์„œ์— ๋งž์ถฐ ์‘๋‹ต์„ ๋ฐ›๋Š” ๋ฐฉ์‹์ด ๋“ฑ์žฅ
    • ์ˆœ์ฐจ์ ์œผ๋กœ ํ•˜๋‚˜์”ฉ ์š”์ฒญ / ์‘๋‹ต์ด ์ฒ˜๋ฆฌ๋˜๋Š” ๊ธฐ์กด ๋ฐฉ์‹์„ ๊ฐœ์„ 
    • ํ•˜๋‚˜์˜ ์ปค๋„ฅ์…˜์— ์—ฌ๋Ÿฌ๊ฐœ์˜ ์š”์ฒญ์ด ๋“ค์–ด ์žˆ์„ ๋ฟ, ๋™์‹œ์— ์—ฌ๋Ÿฌ๊ฐœ์˜ ์š”์ฒญ์„ ์ฒ˜๋ฆฌํ•ด ์‘๋‹ต์œผ๋กœ ๋ณด๋‚ด์ฃผ๋Š” ๊ฒƒ์€ ์•„๋‹ˆ๋‹ค (multiplexing ๋˜์ง€๋Š” ์•Š์Œ)

HTTP/1.1 ํ•œ๊ณ„: High Latency

  • Head Of Line Blocking (HOL)
    • ์ˆœ์„œ๋Œ€๋กœ ์ฒ˜๋ฆฌ(์š”์ฒญ/์‘๋‹ต)ํ•˜๋Š” TCP์˜ ํŠน์„ฑ์œผ๋กœ, ์ฒซ ๋ฒˆ์งธ ์ฒ˜๋ฆฌ๊ฐ€ ์™„๋ฃŒ๋˜๊ธฐ๊นŒ์ง€ ๋‹ค๋ฅธ ์š”์ฒญ๋“ค์ด ๋ชจ๋‘ ๋Œ€๊ธฐํ•˜๊ฒŒ ๋˜๋Š” ๋ฌธ์ œ
    • ๊ฒฐ๊ตญ ์•ž ์š”์ฒญ์˜ ์‘๋‹ต์ด ๋„ˆ๋ฌด ์˜ค๋ž˜๊ฑธ๋ฆฌ๋ฉด, ๋’ค ์š”์ฒญ์€ Blocking ๋˜์–ด๋ฒ„๋ฆผ
  • RTT (Round Trip Time)
    • ํ•˜๋‚˜์˜ Connection์— ํ•˜๋‚˜์˜ ์š”์ฒญ์„ ์ฒ˜๋ฆฌํ•˜๋Š” ํŠน์„ฑ ์ƒ, 3 way handshake ๋ฐ˜๋ณต ๋“ฑ latency๊ฐ€ ์ฆ๊ฐ€ํ•˜๊ฒŒ ๋จ
  • Fat message headers
    • HTTP/1.1 ํ—ค๋”์—๋Š” ๋งŽ์€ Meta data๊ฐ€ ์žˆ์Œ
    • ๋งค ์š”์ฒญ ์‹œ ๋งˆ๋‹ค ์ค‘๋ณต๋œ Header ๊ฐ’์„ ์ „์†กํ•˜๊ฒŒ ๋˜๋ฉฐ (๋ณ„๋„์˜ domain sharding์„ ํ•˜์ง€ ์•Š์•˜์„ ๊ฒฝ์šฐ), ๋˜ํ•œ ํ•ด๋‹น domain์— ์„ค ์ •๋œ cookie ์ •๋ณด๋„ ๋งค ์š”์ฒญ ์‹œ ๋งˆ๋‹ค ํ—ค๋”์— ํฌํ•จ๋˜์–ด ์ „์†กํ•จ
      • domain sharding: 
    • ์ „์†กํ•˜๋ ค๋Š” ๊ฐ’๋ณด๋‹ค ํ—ค๋” ๊ฐ’์ด ๋” ํฐ ๊ฒฝ์šฐ๋„ ์ž์ฃผ ๋ฐœ์ƒํ•จ
  • ์ด ์™ธ์—๋„ Limited priorities(์šฐ์„ ์ˆœ์œ„ ์—†์Œ), Client-driven Transmission(์ •๋ณด ์š”์ฒญ์„ ํ•ด์•ผ๋งŒ ํ†ต์‹ ๊ฐ€๋Šฅ)
/* ์š”์ฒญ */
GET /en-US/docs/Glossary/Simple_header HTTP/1.1
Host: developer.mozilla.org
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.9; rv:50.0) Gecko/20100101 Firefox/50.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate, br
Referer: https://developer.mozilla.org/en-US/docs/Glossary/Simple_header

/* ์‘๋‹ต */
200 OK
Connection: Keep-Alive
Content-Encoding: gzip
Content-Type: text/html; charset=utf-8
Date: Wed, 20 Jul 2016 10:55:30 GMT
Etag: "547fa7e369ef56031dd3bff2ace9fc0832eb251a"
Keep-Alive: timeout=5, max=1000
Last-Modified: Tue, 19 Jul 2016 00:59:33 GMT
Server: Apache
Transfer-Encoding: chunked
Vary: Cookie, Accept-Encoding

(content)

2.4 HTTP/2

๊ธฐ์กด HTTP 1.X ๋ฒ„์ „์˜ ์„ฑ๋Šฅ ํ–ฅ์ƒ์— ์ดˆ์ ์„ ๋งž์ถ˜ ํ”„๋กœํ† ์ฝœ๋กœ ํ‘œ์ค€(HTTP 1.1)์˜ ๋Œ€์ฒด๊ฐ€ ์•„๋‹Œ ํ™•์žฅ๋˜๋Š” ๊ฐœ๋…์œผ๋กœ ๋“ฑ์žฅํ•˜์˜€์Šต๋‹ˆ๋‹ค. HTTP/2๋ฅผ ํ‘œ์ค€ํ™”ํ•จ์— ์žˆ์–ด ์ฐธ๊ณ  ๊ทœ๊ฒฉ์œผ๋กœ ๊ตฌ๊ธ€์˜ SPDY(Proprietary Solution)์„ ์‚ฌ์šฉํ•˜์˜€์Šต๋‹ˆ๋‹ค.

2.4.1 Google SPDY (Proprietary Solution)

SDPY ๊ฐœ์š”

  • ์›น ์ฝ˜ํ…์ธ  ์ „์†ก์„ ์œ„ํ•ด ๊ตฌ๊ธ€์ด ๊ฐœ๋ฐœํ•œ ๋น„ํ‘œ์ค€ ๋„คํŠธ์›Œํฌ ํ”„๋กœํ† ์ฝœ
  • ์›น ํŽ˜์ด์ง€ ์ „์†ก ์ง€์—ฐ๋ฅผ ์ค„์ด๊ณ  ์›น ๋ณด์•ˆ์„ ๊ฐœ์„ ํ•˜๋Š” ๋ชฉํ‘œ๋กœ, ์••์ถ•, ๋‹ค์ค‘ํ™”, ์šฐ์„  ์ˆœ์œ„ ์„ค์ • ๋“ฑ์„ ํ†ตํ•œ ์ „์†ก ์ง€์—ฐ ๊ฐ์†Œ
  • SSL/TLS๋Š” ์•”ํ˜ธํ™” ๋˜์ง€ ์•Š์€ ์—ฐ๊ฒฐ์„ ์ง€์›ํ•˜์ง€ ์•Š์Œ

SDPY ์—ฐํ˜

  • 2009๋…„ ๊ตฌ๊ธ€์˜ ๋‚ด๋ถ€ ํ”„๋กœ์ ํŠธ๋กœ ๊ณต๊ฐœ
  • 2010๋…„ ํฌ๋กฌ ๋ธŒ๋ผ์šฐ์ €์˜ ์˜คํ”ˆ์†Œ์Šค ์—”์ง„์— ํƒ‘์žฌ
  • 2011๋…„ ๊ตฌ๊ธ€์˜ ๋ชจ๋“  ์„œ๋น„์Šค์— ๋„์ž…
  • 2012๋…„ ์•„ํŒŒ์น˜ ์„œ๋ฒ„์šฉ ๊ตฌ๊ธ€ SPDY ํŒจ์น˜ ์ œ๊ณต & Nginx์˜ ์ง€์› ๊ณต๊ฐœ 2012๋…„ IETF ๋‹จ์ฒด๋ฅผ ํ†ตํ•œ ํ‘œ์ค€ํ™” ์ถ”์ง„
  • 2015๋…„ HTTP/2๊ฐ€ RFC 7540 ํ‘œ์ค€ํ™” ๋˜๋ฉด์„œ, SPDY ์ค‘๋‹จ

2.4.2 HTTP/2 ํŠน์ง•

HTTP ๋ฉ”์‹œ์ง€ ์ „์†ก ๋ฐฉ์‹์˜ ์ „ํ™˜

๊ธฐ์กด : ์ผ๋ฐ˜ ํ…์ŠคํŠธ ํ˜•์‹

๊ฐœ์„ : ์ถ”๊ฐ€์ ์ธ Binary Encoding

  • Binary Framing ๊ณ„์ธต์„ ์ถ”๊ฐ€ํ•ด์„œ ๋ณด๋‚ด๋Š” ๋ฉ”์‹œ์ง€๋ฅผ ํ”„๋ ˆ์ž„(frame)์ด๋ผ๋Š” ๋‹จ์œ„๋กœ ๋ถ„ํ• ํ•˜๋ฉฐ ์ถ”๊ฐ€์ ์œผ๋กœ ๋ฐ”์ด๋„ˆ๋ฆฌ๋กœ ์ธ์ฝ”๋”ฉ์„ ํ•œ๋‹ค
  • ๋ฐ”์ด๋„ˆ๋ฆฌ ํ˜•์‹ ์‚ฌ์šฉ์œผ๋กœ ํŒŒ์‹ฑ์†๋„ ๋ฐ ์ „์†ก ์†๋„๊ฐ€ ๋น ๋ฅด๊ณ  ์˜ค๋ฅ˜ ๋ฐœ์ƒ ๊ฐ€๋Šฅ์„ฑ์ด ๋‚ฎ์•„์ง

Stream, Message & Frame

HTTP/2 basic terms

  • ์ŠคํŠธ๋ฆผ: ๊ตฌ์„ฑ๋œ ์—ฐ๊ฒฐ ๋‚ด์—์„œ ์ „๋‹ฌ๋˜๋Š” ๋ฐ”์ดํŠธ์˜ ์–‘๋ฐฉํ–ฅ ํ๋ฆ„์ด๋ฉฐ, ํ•˜๋‚˜ ์ด์ƒ์˜ ๋ฉ”์‹œ์ง€๊ฐ€ ์ „๋‹ฌ๋  ์ˆ˜ ์žˆ์Œ
  • ๋ฉ”์‹œ์ง€: ๋…ผ๋ฆฌ์  ์š”์ฒญ ๋˜๋Š” ์‘๋‹ต ๋ฉ”์‹œ์ง€์— ๋งคํ•‘๋˜๋Š” ํ”„๋ ˆ์ž„์˜ ์ „์ฒด ์‹œํ€€์Šค์ž„
  • ํ”„๋ ˆ์ž„: HTTP/2์—์„œ ํ†ต์‹ ์˜ ์ตœ์†Œ ๋‹จ์œ„์ด๋ฉฐ ๊ฐ ์ตœ์†Œ ๋‹จ์œ„์—๋Š” ํ•˜๋‚˜์˜ ํ”„๋ ˆ์ž„ ํ—ค๋”๊ฐ€ ํฌํ•จ๋จ. ์ด ํ”„๋ ˆ์ž„ ํ—ค๋”๋Š” ์ตœ์†Œํ•œ์œผ๋กœ ํ”„๋ ˆ์ž„์ด ์†ํ•˜๋Š” ์ŠคํŠธ๋ฆผ์„ ์‹๋ณ„ํ•จ

Relationship between basic terms

  • ๋ชจ๋“  ํ†ต์‹ ์€ ๋‹จ์ผ TCP ์—ฐ๊ฒฐ์„ ํ†ตํ•ด ์ˆ˜ํ–‰๋˜๋ฉฐ, ์ „๋‹ฌ๋  ์ˆ˜ ์žˆ๋Š” ์–‘๋ฐฉํ–ฅ ์ŠคํŠธ๋ฆผ์˜ ์ˆ˜๋Š” ์ œํ•œ์ด ์—†์Œ
  • ๊ฐ ์ŠคํŠธ๋ฆผ์—๋Š” ์–‘๋ฐฉํ–ฅ ๋ฉ”์‹œ์ง€ ์ „๋‹ฌ์— ์‚ฌ์šฉ๋˜๋Š” ๊ณ ์œ  ์‹๋ณ„์ž์™€ ์šฐ์„ ์ˆœ์œ„ ์ •๋ณด(์„ ํƒ ์‚ฌํ•ญ)๊ฐ€ ์žˆ์Œ
  • ๊ฐ ๋ฉ”์‹œ์ง€๋Š” ํ•˜๋‚˜์˜ ๋…ผ๋ฆฌ์  HTTP ๋ฉ”์‹œ์ง€(์˜ˆ: ์š”์ฒญ ๋˜๋Š” ์‘๋‹ต)์ด๋ฉฐ ํ•˜๋‚˜ ์ด์ƒ์˜ ํ”„๋ ˆ์ž„์œผ๋กœ ๊ตฌ์„ฑ๋จ
  • ํ”„๋ ˆ์ž„์€ ํ†ต์‹ ์˜ ์ตœ์†Œ ๋‹จ์œ„์ด๋ฉฐ ํŠน์ • ์œ ํ˜•์˜ ๋ฐ์ดํ„ฐ(์˜ˆ: HTTP ํ—ค๋”, ๋ฉ”์‹œ์ง€ ํŽ˜์ด๋กœ๋“œ ๋“ฑ)๋ฅผ ์ „๋‹ฌํ•จ. ๋‹ค๋ฅธ ์ŠคํŠธ๋ฆผ๋“ค์˜ ํ”„๋ ˆ์ž„์„ interleavingํ•œ ๋‹ค์Œ, ๊ฐ ํ”„๋ ˆ์ž„์˜ ํ—ค๋”์— ์‚ฝ์ž…๋œ ์ŠคํŠธ๋ฆผ ์‹๋ณ„์ž๋ฅผ ํ†ตํ•ด ์ด ํ”„๋ ˆ์ž„์„ ๋‹ค์‹œ ์กฐ๋ฆฝํ•  ์ˆ˜ ์žˆ์Œ
 

Multiplexed Streams

๊ธฐ์กด: HTTP 1.1์˜ Pipelining ์œผ๋กœ ํ•˜๋‚˜์˜ ์ปค๋„ฅ์…˜์— ์—ฌ๋Ÿฌ ์š”์ฒญ์ด ์žˆ์ง€๋งŒ, ๊ฒฐ๊ตญ ๋™์‹œ์— ์—ฌ๋Ÿฌ ์š”์ฒญ์„ ์ฒ˜๋ฆฌํ•ด ์‘๋‹ต์œผ๋กœ ์ฃผ์ง€๋Š” ๋ชปํ•˜์˜€์Œ

๊ฐœ์„ : ๋ณ‘๋ ฌ ์š”์ฒญ(Request)์ด ์ด๋ฃจ์–ด์ง€๋Š” ๋‹ค์ค‘ํ™” ํ”„๋กœํ† ์ฝœ(Multiplexed Streams).

  • ๊ตฌ์„ฑ๋œ ์—ฐ๊ฒฐ ๋‚ด์— ์ „๋‹ฌ๋˜๋Š” ๋ฐ”์ดํŠธ์˜ ์–‘๋ฐฉํ–ฅ ํ๋ฆ„์„ ์˜๋ฏธํ•˜๋Š” Stream์œผ๋กœ ์š”์ฒญ / ์‘๋‹ต์ด ๊ตํ™˜๋จ(ํ•˜๋‚˜์˜ ์ปค๋„ฅ์…˜ ์•ˆ์— ์—ฌ๋Ÿฌ๊ฐœ์˜ Stream ์กด์žฌ ๊ฐ€๋Šฅ)
  • ๋ฉ”์‹œ์ง€๊ฐ€ ์ด์ง„ํ™”๋œ ํ…์ŠคํŠธ์ธ ํ”„๋ ˆ์ž„(frame)์œผ๋กœ ๋‚˜๋‰˜์–ด ์š”์ฒญ๋งˆ๋‹ค ๊ตฌ๋ถ„๋˜๋Š” Stream์„ ํ†ตํ•ด ์ „๋‹ฌ
  • ์ฆ‰, ํ”„๋ ˆ์ž„(frame)์ด ๊ฐ ์š”์ฒญ์˜ ์ŠคํŠธ๋ฆผ(stream)์„ ํ†ตํ•ด ์ „๋‹ฌ๋˜๋ฉฐ, ํ•˜๋‚˜์˜ ์ปค๋„ฅ์…˜ ์•ˆ์— ์—ฌ๋Ÿฌ๊ฐœ์˜ ์ŠคํŠธ๋ฆผ(stream)์„ ๊ฐ€์งˆ ์ˆ˜ ์žˆ๊ฒŒ๋˜์–ด ๋™์‹œ์— ์—ฌ๋Ÿฌ ์š”์ฒญ์„ ์ฒ˜๋ฆฌํ•˜๋Š” ๋‹ค์ค‘ํ™”(multiplexing)๊ฐ€ ๊ฐ€๋Šฅํ•ด์ง
    • Stream์„ ํ†ตํ•ด์„œ ๊ฐ ์š”์ฒญ์˜ ์‘๋‹ต์˜ ์ˆœ์„œ๊ฐ€ ์˜๋ฏธ๊ฐ€ ์—†์–ด์ ธ์„œ HOL Blocking์ด ์ž์—ฐ์Šค๋Ÿฝ๊ฒŒ ํ•ด๊ฒฐ๋จ

Stream Prioritization

  • ๋ฆฌ์†Œ์Šค๊ฐ„ ์šฐ์„ ์ˆœ์œ„๋ฅผ ์„ค์ •ํ•˜๋Š” ๊ธฐ๋Šฅ์œผ๋กœ Stream์— ์šฐ์„ ์ˆœ์œ„๋ฅผ ๋ถ€์—ฌํ•ด์„œ ์ธํ„ฐ๋ฆฌ๋น™๋˜๊ณ  ์ „๋‹ฌํ•˜๋Š” ๊ฒƒ์ด ๊ฐ€๋Šฅํ•ด์ง
  • ์ด๋ฅผ ์šฉ์ดํ•˜๊ฒŒ ํ•˜๊ธฐ ์œ„ํ•ด HTTP/2 ํ‘œ์ค€์—์„œ๋Š” ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์š”์ฒญํ•œ ๊ฐ ์ŠคํŠธ๋ฆผ์ด ์—ฐ๊ด€๋œ ๊ฐ€์ค‘์น˜(1~256)์™€ ์ข…์†์„ฑ์„ ๊ฐ–๋„๋ก ํ—ˆ์šฉํ•จ

Flow Control

  • ํ๋ฆ„ ์ œ์–ด๋ฅผ ๊ตฌํ˜„ํ•˜๊ธฐ ์œ„ํ•œ ํŠน์ • ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์ง€์ •ํ•˜์ง€ ์•Š์œผ๋‚˜, ๊ฐœ๋ฐœ์ž๊ฐ€ ์ง์ ‘ ๊ตฌํ˜„ํ•˜์—ฌ ๋ฆฌ์†Œ์Šค ์‚ฌ์šฉ๊ณผ ํ• ๋‹น์„ ์ œ์–ดํ•  ์ˆ˜ ์žˆ์Œ
  • ์ข…๋‹จ๊ฐ„ ๋ฐฉ์‹(End-to-End)์ด ์•„๋‹Œ ํ™‰ ๋ฐฉ์‹(Hop-by-Hop)์ด๊ธฐ์—, proxy์™€ ๊ฐ™์€ ์ค‘๊ฐœ์ž์˜ ํ๋ฆ„์ œ์–ด๋„ ๊ฐ€๋Šฅํ•จ

Server Push

  • ๋‹จ์ผ ํด๋ผ์ด์–ธํŠธ ์š”์ฒญ์— ์—ฌ๋Ÿฌ ์‘๋‹ต์„ ๋ณด๋‚ผ ์ˆ˜ ์žˆ๋Š” ํŠน์ง•์„ ํ†ตํ•ด Server์—์„œ client์—๊ฒŒ ํ•„์š”ํ•œ ์ถ”๊ฐ€์ ์ธ ๋ฆฌ์†Œ์Šค๋ฅผ pushํ•ด์ฃผ๋Š” ๊ธฐ๋Šฅ
  • ์š”์ฒญ์˜ ์ค‘๋ณต์ด ์ƒ๊ธฐ์ง€ ์•Š๋„๋ก, ๋ชจ๋“  ์„œ๋ฒ„ ํ‘ธ์‹œ ์ŠคํŠธ๋ฆผ์€ HTTP ํ—ค๋”๋ฅผ ํฌํ•จํ•œ PUSH_PROMISE ํ”„๋ ˆ์ž„์„ ํ†ตํ•ด ์‹œ์ž‘๋จ

Header Compression

๊ธฐ์กด: ์—ฐ์†๋œ ์š”์ฒญ์˜ ๊ฒฝ์šฐ ๋งŽ์€ ์ค‘๋ณต๋œ ํ—ค๋”์˜ ์ „์†ก์œผ๋กœ ์˜ค๋ฒ„ํ—ค๋“œ๊ฐ€ ๋งŽ์ด๋ฐœ์ƒํ–ˆ์Œ

๊ฐœ์„ : ์š”์ฒญ๊ณผ ์‘๋‹ต์˜ ํ—ค๋” ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ๋ฅผ ์ค‘๋ณต ์ œ๊ฑฐ ๋ฐ ์••์ถ•ํ•ด์„œ ์˜ค๋ฒ„ํ—ค๋“œ๋ฅผ ๊ฐ์†Œ

  • ์ „์†ก๋˜๋Š” ํ—ค๋” ํ•„๋“œ๋ฅผ static/dynamic table๋กœ ์„œ๋ฒ„์—์„œ ์œ ์ง€
    • Static table is defined in the specification and provides a list of common HTTP header fields that all connections are likely to use (e.g., valid header names)
    • Dynamic table is initially empty and is updated based on exchanged values within a particular connection
  • ์ด์ „์— ํ‘œ์‹œ๋œ ํ—ค๋”๋ฅผ ์ œ์™ธํ•œ ํ•„๋“œ๋ฅผ ํ—ˆํ”„๋งŒ(huffman) ์ธ์ฝ”๋”ฉ(HPAC ์••์ถ•)์„ ์ˆ˜ํ–‰ํ•ด์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์••์ถ•
    • ์ •ํ™•ํžˆ๋Š” ์ด์ „์— ํ‘œ์‹œ๋ฌ๋˜ ํ—ค๋”์˜ ๊ฒฝ์šฐ static table์— ์ €์žฅ๋˜์–ด ์žˆ์œผ๋ฉฐ ํ•ด๋‹น ์ธ๋ฑ์Šค๋ฅผ ์ธ์ฝ”๋”ฉํ•  ๋•Œ ๋„ฃ์–ด์ฃผ์–ด ์••์ถ•

2.4.3 HTTP/2 ํ•œ๊ณ„

๊ฐ ์š”์ฒญ๋งˆ๋‹ค Stream์œผ๋กœ ๊ตฌ๋ถ„ํ•ด์„œ ๋ณ‘๋ ฌ์ ์œผ๋กœ ์ฒ˜๋ฆฌํ–ˆ์ง€๋งŒ, TCP ๊ณ ์œ ์˜ HOL Blocking์ด ์กด์žฌํ•ฉ๋‹ˆ๋‹ค. ์„œ๋กœ ๋‹ค๋ฅธ Stream์ด ์ „์†ก๋˜๊ณ  ์žˆ๋”๋ผ๋„ ํ•˜๋‚˜์˜ Stream์—์„œ ์œ ์‹ค์ด ๋ฐœ์ƒ๋˜๊ฑฐ๋‚˜ ๋ฌธ์ œ๊ฐ€ ์ƒ๊ธฐ๋ฉด ๊ฒฐ๊ตญ ๋‹ค๋ฅธ Stream๋„ ๋ฌธ์ œ๊ฐ€ ํ•ด๊ฒฐ๋  ๋•Œ ๊นŒ์ง€ ์ง€์—ฐ๋˜๋Š” ํ˜„์ƒ์ด ๋ฐœ์ƒ๋˜๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ์ฆ‰, ์ด๋Ÿฌํ•œ TCP์˜ ํƒœ์ƒ์ ์ธ HOL Blocking์„ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด UDP ๊ธฐ๋ฐ˜ ํ”„๋กœํ† ์ฝœ์ธ 'QUIC / HTTP3.0'์ด ๋“ฑ์žฅ ํ•˜์˜€์Šต๋‹ˆ๋‹ค.

2.5 HTTP/3: QUIC

HTTP 3

QUIC์„ ๊ธฐ๋ฐ˜์œผ๋กœ ๋‚˜์˜จ ์ƒˆ๋กœ์šด HTTP ๋ฉ”์ด์ € ๋ฒ„์ „์œผ๋กœ HTTP ์‹œ๋ฉ˜ํ‹ฑ์Šค๋Š” ์ด์ „ ๋ฒ„์ „๋“ค๊ณผ ๋™์ผํ•ฉ๋‹ˆ๋‹ค(Method, Msg Field, Status ... ). ๊ทธ๋ ‡๋‹ค๋ฉด QUIC์ด๋ž€ ๋ญ˜๊นŒ์š”?

QUIC(Quick UDP Internet Connections)?

QUIC์€ TCP๋ฅผ ๋Œ€์ฒดํ•˜๋Š” ๋ฒ”์šฉ ๋ชฉ์ ์˜ ์ „์†ก ๊ณ„์ธต(Transport Layer) ํ†ต์‹  ํ”„๋กœํ† ์ฝœ๋กœ์„œ, ๊ตฌ๊ธ€์˜ ์ง ๋กœ์Šคํ‚จ๋“œ๊ฐ€ ์ฒ˜์Œ ์„ค๊ณ„ํ•˜์˜€์Šต๋‹ˆ๋‹ค. ์ด๋Š” ๊ตญ์ œ ์ธํ„ฐ๋„ท ํ‘œ์ค€ํ™” ๊ธฐ๊ตฌ์— ๊ธฐ์ˆ ๋˜์—ˆ๊ณ , 2021๋…„ 5์›” IETF RFC9000(+RFC9001/9002/8989)์œผ๋กœ ์ •์‹ ํ‘œ์ค€ํ™” ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ ์ด๋ฏธ ๊ตฌ๊ธ€ ํฌ๋กฌ์—์„œ๋ถ€ํ„ฐ ๊ตฌ๊ธ€ ์„œ๋ฒ„์— ์ด๋ฅด๋Š” ๋ชจ๋“  ์—ฐ๊ฒฐ์˜ ์ ˆ๋ฐ˜ ์ด์ƒ์— ์‚ฌ์šฉ๋˜๊ณ  ์žˆ์œผ๋ฉฐ, ํฌ๋กฌ/MS ์—ฃ์ง€/๋ชจ์งˆ๋ผ ํŒŒ์ด์–ดํญ์Šค/์‚ฌ ํŒŒ๋ฆฌ์—์„œ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค.

QUIC์€ UDP์™€ ๋™์ผํ•˜๊ฒŒ Transport Layer์—์„œ ๊ตฌ๋™๋˜์ง€๋งŒ, UCP ์œ„์— ์ƒˆ๋กœ์šด ๊ณ„์ธต์„ ์ถ”๊ฐ€ํ•จ์œผ๋กœ์จ ์‹ ๋ขฐ์„ฑ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ์ถ”๊ฐ€๋œ ๊ณ„์ธต์€ TCP์— ์กด์žฌํ•˜๋Š” ํŒจํ‚ท ์žฌ์ „์†ก, ํ˜ผ์žก ์ œ์–ด, ์†๋„ ์กฐ์ • ๋ฐ ๋‹ค๋ฅธ ๊ธฐ๋Šฅ๋“ค์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

QUIC ํŠน์ง•

UDP based NEW Transport Protocol

  • Google์—์„œ TCP์˜ ๊ตฌ์กฐ์  ๋ฌธ์ œ์ธ HOLB๋กœ ์„ฑ๋Šฅ ํ–ฅ์ƒ์ด ์–ด๋ ต๋‹ค๊ณ  ํŒ๋‹จํ•˜์—ฌ UDP ๊ธฐ๋ฐ˜์„ ์„ ํƒ
  • QUIC์€ UDP์™€ ๋™์ผํ•˜๊ฒŒ Transport Layer์—์„œ ๊ตฌ๋™๋˜์ง€๋งŒ, UCP ์œ„์— ์ƒˆ๋กœ์šด ๊ณ„์ธต์„ ์ถ”๊ฐ€ํ•จ์œผ๋กœ์จ ์‹ ๋ขฐ์„ฑ์„ ์ œ๊ณตํ•จ
  • ์ถ”๊ฐ€๋œ ๊ณ„์ธต์€ TCP์— ์กด์žฌํ•˜๋Š” ํŒจํ‚ท ์žฌ์ „์†ก, ํ˜ผ์žก ์ œ์–ด, ์†๋„ ์กฐ์ • ๋ฐ ๋‹ค๋ฅธ ๊ธฐ๋Šฅ๋“ค์„ ์ œ๊ณตํ•จ

Connection based Transport: ํ•˜๋‚˜์˜ Stream chain์œผ๋กœ ์—ฐ๊ฒฐ๋˜๋Š” TCP์™€ ๋‹ฌ๋ฆฌ, ๊ฐ Stream ๋‹น ๋…๋ฆฝ๋œ Stream chain์„ ๊ตฌ์„ฑํ•˜์—ฌ TCP HOL Blocking์„ ํ•ด๊ฒฐ

  • QUIC Connection
    • QUIC์˜ ์—ฐ๊ฒฐ ์„ค์ •์€ ๋ฒ„์ „ ํ˜‘์ƒ, ์•”ํ˜ธํ™”, ์ „์†ก ํ•ธ๋“œ์‰์ดํฌ๋กœ ๊ตฌ์„ฑ๋˜์–ด ์žˆ์œผ๋ฏ€๋กœ ์—ฐ๊ฒฐ ์„ค์ •์˜ ์ง€์—ฐ์‹œ๊ฐ„์„ ์ค„์—ฌ์คŒ
    • QUIC์˜ ์—ฐ๊ฒฐ์„ ํ†ตํ•ด ์‹ค์ œ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณด๋‚ด๋ ค๋ฉด ํ•˜๋‚˜ ์ด์ƒ์˜ ์ŠคํŠธ๋ฆผ์„ ๋งŒ๋“ค์–ด์„œ ์‚ฌ์šฉํ•ด์•ผ ํ•จ
  • QUIC Connection ID
    • ๊ฐ ์—ฐ๊ฒฐ์€ ์—ฐ๊ฒฐ ์‹๋ณ„์ž๋‚˜ ์—ฐ๊ฒฐ ID๋ฅผ ๊ฐ€์ง€๋ฏ€๋กœ ์ด๋ฅผ ํ†ตํ•ด ์—ฐ๊ฒฐ์„ ์‹๋ณ„ํ•จ
    • ์—”๋“œํฌ์ธํŠธ๊ฐ€ ์ž์œ ๋กญ๊ฒŒ ์—ฐ๊ฒฐ ID๋ฅผ ์„ ํƒํ•˜๋ฉฐ, ๊ฐ ์—”๋“œํฌ์ธํŠธ๋Š” ์—”๋“œํฌ์ธํŠธ์˜ ํ”ผ์–ด๊ฐ€ ์‚ฌ์šฉํ•  ์—ฐ๊ฒฐ ID๋ฅผ ์„ ํƒํ•จ
    • ์—ฐ๊ฒฐ ID์˜ ์ฃผ์š” ๊ธฐ๋Šฅ์€ ํ•˜์œ„ ํ”„๋กœํ† ์ฝœ ๊ณ„์ธต(UDP, IP ํ˜น์€ ๊ทธ ์•„ ๋ž˜ ๊ณ„์ธต)์—์„œ ์ฃผ์†Œ๊ฐ€ ๋ณ€๊ฒฝ๋˜๋”๋ผ๋„ QUIC ์—ฐ๊ฒฐ์˜ ํŒจํ‚ท์ด ์ž˜๋ชป๋œ ์—”๋“œํฌ์ธํŠธ๋กœ ์ „๋‹ฌ๋˜์ง€ ์•Š๋„๋ก ๋ณด์žฅํ•˜๋Š” ๊ฒƒ์ž„
      • e.g. ์‚ฌ์šฉ์ž๊ฐ€ WiFi์—์„œ ๋‹ค์šด๋กœ๋“œํ•˜๋‹ค๊ฐ€ ๋Š๋ ค์„œ ์…€๋ฃฐ๋Ÿฌ ๋„คํŠธ์›Œํฌ๋กœ ๋ณ€๊ฒฝํ•˜๋”๋ผ๋„ ๊ณ„์† ๋‹ค์šด๋กœ๋“œ๋ฅผ ์ง„ํ–‰๊ฐ€๋Šฅ

Stream based Transport

  • ํ•˜๋‚˜์˜ ์—ฐ๊ฒฐ๋กœ ๋‹ค์ˆ˜์˜ ๋ณ‘๋ ฌ ์ŠคํŠธ๋ฆผ์„ ์ „์†กํ•˜๋ฉฐ, ์ŠคํŠธ๋ฆผ ๊ฐ„์— ์˜ํ–ฅ์„ ์ฃผ์ง€ ์•Š๊ณ  ๋ฐ์ดํ„ฐ๋ฅผ ๋™์‹œ์— ์ „์†กํ•จ
  • ์ŠคํŠธ๋ฆผ์€ 62๋น„ํŠธ ์ •์ˆ˜์˜ ์ŠคํŠธ๋ฆผ ID ์‹๋ณ„์ž๋กœ ๊ตฌ๋ถ„ํ•จ
  • ์ŠคํŠธ๋ฆผ์€ ์ˆœ์„œ๋Œ€๋กœ ์ „๋‹ฌ๋˜๊ณ  ์‹ ๋ขฐํ•  ์ˆ˜ ์žˆ์ง€๋งŒ ์„œ๋กœ ๋‹ค๋ฅธ ์ŠคํŠธ๋ฆผ์€ ์ˆœ์„œ ์—†์ด ์ „๋‹ฌ๋  ์ˆ˜ ์žˆ์Œ
  • QUIC์€ ์—ฐ๊ฒฐ๊ณผ ์ŠคํŠธ๋ฆผ ๋ชจ๋‘์—์„œ ํ๋ฆ„ ์ œ์–ด๋ฅผ ์ œ๊ณตํ•จ
  • QUIC์„ ์‚ฌ์šฉํ•˜๋Š” ์ƒ์œ„ ๊ณ„์ธต์„ ํ†ตํ•ด์„œ ์ŠคํŠธ๋ฆผ์— ๋Œ€ํ•œ ์šฐ์„  ์ˆœ์œ„๋ฅผ ์š”์ฒญ๋ฐ›์•„, ์ด๋ฅผ ํ† ๋Œ€๋กœ ์ •๋ณด ๊ตํ™˜์„ ํ•  ์ˆ˜ ์žˆ์Œ

Secure Communication

  • QUIC์€ ์ผ๋ฐ˜ ํ…์ŠคํŠธ ๋ฒ„์ „์ด ์—†๊ณ , QUIC ์—ฐ๊ฒฐ๊ณผ ํ˜‘์ƒํ•˜๋ ค๋ฉด TLS 1.3์„ ์‚ฌ์šฉํ•ด์„œ ์•”ํ˜ธํ™” ๋ฐ ๋ณด์•ˆ์„ ์ˆ˜ํ–‰ํ•ด์•ผ ํ•จ
  • ์ด์ „ ๋ฒ„์ „์˜ TLS์™€ ๋น„๊ตํ•ด์„œ TLS 1.3์— ๋ช‡๋ช‡ ์žฅ์ ์ด ์žˆ์ง€๋งŒ QUIC์ด TLS 1.3์„ ์‚ฌ์šฉํ•œ ์ฃผ๋œ ์ด์œ ๋Š” ํ•ธ๋“œ์‰์ดํฌ์— ๋” ์ ์€ ๋ผ์šด๋“œ ํŠธ๋ฆฝ์ด ํ•„์š”ํ•˜๋„๋ก ๋ฐ”๋€Œ์—ˆ๊ธฐ ๋•Œ๋ฌธ์œผ๋กœ, ํ”„๋กœํ† ์ฝœ ์ง€์—ฐ์„ ์ค„์—ฌ์คŒ
  • TLS๋ฅผ ๊ธฐ๋ณธ์œผ๋กœ ์‚ฌ์šฉํ•˜๋ฏ€๋กœ, ์›น ์‚ฌ์šฉ์ž๊ฐ€ ๊ธฐ๋Œ€ํ•˜๊ณ  ์›ํ•˜๋Š” HTTPS์˜ ๋ชจ๋“  ๋ณด์•ˆ ์†์„ฑ์„ ์ง€์›ํ•จ

Reduced {Signaling} Latency

QUIC๋Š” 0-RTT, 1-RTT ํ•ธ๋“œ์‰์ดํฌ๋ฅผ ์ œ๊ณตํ•˜๋Š”๋ฐ ์ด๋Š” ์ƒˆ๋กœ์šด ์—ฐ๊ฒฐ์„ ํ˜‘์ƒํ•˜๊ณ  ์„ค์ •ํ•˜๋Š”๋ฐ ๊ฑธ๋ฆฌ๋Š” ์‹œ๊ฐ„์„ ์ค„์—ฌ์ค๋‹ˆ๋‹ค.

  • ์ฐธ๊ณ ๋กœ RTT๋ž€ ๋ฉ”์‹œ์ง€๋ฅผ ์ฃผ๊ณ  ๋ฐ›๋Š” ๊ฒƒ์„ ๋งํ•˜๋ฉฐ 1-RTT๋Š” ํ•œ๋ฒˆ ์ฃผ๊ณ  ๋ฐ›์Œ์„ ์˜๋ฏธํ•จ
  • ์—ฌ๊ธฐ์„œ TCP๋Š” 3-way handshake ์œผ๋กœ RTT๋กœ ํ‘œํ˜„ํ•˜๋ฉด 1.5-RTT(?)๋ผ๊ณ  ํ‘œํ˜„ํ•  ์ˆ˜ ์žˆ์Œ

QUIC์€ ์ถ”๊ฐ€๋กœ ๋” ๋งŽ์€ ๋ฐ์ดํ„ฐ๋ฅผ ํ—ˆ์šฉํ•˜๋Š” "early data"๋ฅผ ์ฒ˜์Œ๋ถ€ํ„ฐ ์ง€์›ํ•˜์—ฌ, ํ•ธ๋“œ์‰์ดํฌ ๊ณผ์ •์—์„œ TLS ์—ฐ๊ฒฐ์„ค์ • ๋ฐ ํ•ด์ œ๋„ ๋™์‹œ์— ์ฒ˜๋ฆฌํ•ฉ๋‹ˆ๋‹ค.

๋˜ํ•œ ๊ธฐ์กด์— ์กด์žฌํ•˜๋Š” ์—ฐ๊ฒฐ์ด ๋๋‚˜๊ธฐ๋ฅผ ๋จผ์ € ๊ธฐ๋‹ค๋ฆด ํ•„์š” ์—†์ด ๊ฐ™์€ ํ˜ธ์ŠคํŠธ๋กœ์˜ ๋˜ ๋‹ค๋ฅธ ๋…ผ๋ฆฌ ์—ฐ๊ฒฐ๋„ ๋™์‹œ์— ์ฒ˜๋ฆฌ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • ์ƒˆ๋กœ์šด ์—ฐ๊ฒฐ์„ ์„ค์ •ํ•˜๋Š”๋ฐ ํ•„์š”ํ•œ ์‹œ๊ฐ„์„ ์ค„์ด๋ ค๊ณ  ์ด์ „์— ์„œ๋ฒ„์— ์—ฐ๊ฒฐํ–ˆ๋˜ ํด๋ผ์ด์–ธํŠธ๋Š” ํ•ด๋‹น ์—ฐ๊ฒฐ์˜ ํŠน์ • ํŒŒ๋ผ๋ฏธํ„ฐ ๋ฅผ ์บ์‹œํ•œ ๋’ค ์ด์–ด์„œ ์„œ๋ฒ„์™€ 0-RTT ์—ฐ๊ฒฐ์„ ์„ค์ •ํ•  ์ˆ˜ ์žˆ์Œ
  • ์ด๋กœ ์ธํ•ด์„œ ํด๋ผ์ด์–ธํŠธ๋Š” ํ•ธ๋“œ์‰์ดํฌ๊ฐ€ ์™„๋ฃŒ๋˜๊ธฐ๋ฅผ ๊ธฐ๋‹ค๋ฆฌ์ง€ ์•Š๊ณ  ๋ฐ”๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณด๋‚ผ ์ˆ˜ ์žˆ์Œ (0-RTT)

์ฐธ๊ณ 

๋ฐ˜์‘ํ˜•