HTTP/3.0์ด ์ œ์•ˆ๋œ ํ‘œ์ค€ ์ƒํƒœ๋ฅผ ์ˆ˜์‹ ํ•จ

์ธํ„ฐ๋„ท ํ”„๋กœํ† ์ฝœ ๋ฐ ์•„ํ‚คํ…์ฒ˜ ๊ฐœ๋ฐœ์„ ๋‹ด๋‹นํ•˜๋Š” IETF(Internet Engineering Task Force)๋Š” HTTP/3.0 ํ”„๋กœํ† ์ฝœ์— ๋Œ€ํ•œ RFC ๊ตฌ์„ฑ์„ ์™„๋ฃŒํ•˜๊ณ  ์‹๋ณ„์ž RFC 9114(ํ”„๋กœํ† ์ฝœ) ๋ฐ RFC 9204( HTTP/3์šฉ QPACK ํ—ค๋” ์••์ถ• ๊ธฐ์ˆ ) . HTTP/3.0 ์‚ฌ์–‘์€ "์ œ์•ˆ๋œ ํ‘œ์ค€" ์ƒํƒœ๋ฅผ ๋ฐ›์•˜์Šต๋‹ˆ๋‹ค. ๊ทธ ํ›„ ์ž‘์—…์€ RFC์— ์ดˆ์•ˆ ํ‘œ์ค€(์ดˆ์•ˆ ํ‘œ์ค€) ์ƒํƒœ๋ฅผ ๋ถ€์—ฌํ•˜๊ธฐ ์‹œ์ž‘ํ•ฉ๋‹ˆ๋‹ค. ์ด๋Š” ์‹ค์ œ๋กœ ํ”„๋กœํ† ์ฝœ์˜ ์™„์ „ํ•œ ์•ˆ์ •ํ™”๋ฅผ ์˜๋ฏธํ•˜๊ณ  ๋ชจ๋“  ์‚ฌํ•ญ์„ ๊ณ ๋ คํ•ฉ๋‹ˆ๋‹ค. ์ž‘์„ฑ๋œ ๋Œ“๊ธ€์ž…๋‹ˆ๋‹ค. ๋™์‹œ์— HTTP/1.1(RFC 9112) ๋ฐ HTTP/2.0(RFC 9113) ํ”„๋กœํ† ์ฝœ์— ๋Œ€ํ•œ ์‚ฌ์–‘์˜ ์—…๋ฐ์ดํŠธ๋œ ๋ฒ„์ „๊ณผ HTTP ์š”์ฒญ(RFC 9110) ๋ฐ HTTP ์บ์‹ฑ ์ œ์–ด ํ—ค๋”์˜ ์˜๋ฏธ๋ฅผ ์ •์˜ํ•˜๋Š” ๋ฌธ์„œ๊ฐ€ ๊ฒŒ์‹œ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. (RFC 9111).

HTTP/3 ํ”„๋กœํ† ์ฝœ์€ HTTP/2์— ๋Œ€ํ•œ ์ „์†ก์œผ๋กœ QUIC(๋น ๋ฅธ UDP ์ธํ„ฐ๋„ท ์—ฐ๊ฒฐ) ํ”„๋กœํ† ์ฝœ์˜ ์‚ฌ์šฉ์„ ์ •์˜ํ•ฉ๋‹ˆ๋‹ค. QUIC๋Š” ๋‹ค์ค‘ ์—ฐ๊ฒฐ์˜ ๋‹ค์ค‘ํ™”๋ฅผ ์ง€์›ํ•˜๊ณ  TLS/SSL๊ณผ ๋™๋“ฑํ•œ ์•”ํ˜ธํ™” ๋ฐฉ๋ฒ•์„ ์ œ๊ณตํ•˜๋Š” UDP ํ”„๋กœํ† ์ฝœ์˜ ํ™•์žฅ์ž…๋‹ˆ๋‹ค. ์ด ํ”„๋กœํ† ์ฝœ์€ ์›น์šฉ TCP+TLS ์กฐํ•ฉ์˜ ๋Œ€์•ˆ์œผ๋กœ Google์ด 2013๋…„์— ๊ฐœ๋ฐœํ•˜์—ฌ TCP์˜ ๊ธด ์—ฐ๊ฒฐ ์„ค์ • ๋ฐ ํ˜‘์ƒ ์‹œ๊ฐ„ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ณ  ๋ฐ์ดํ„ฐ ์ „์†ก ์ค‘ ํŒจํ‚ท์ด ์†์‹ค๋  ๋•Œ ๋ฐœ์ƒํ•˜๋Š” ์ง€์—ฐ์„ ์ œ๊ฑฐํ•ฉ๋‹ˆ๋‹ค.

HTTP/3.0์ด ์ œ์•ˆ๋œ ํ‘œ์ค€ ์ƒํƒœ๋ฅผ ์ˆ˜์‹ ํ•จ

ํ˜„์žฌ QUIC ๋ฐ HTTP/3.0 ์ง€์›์€ ๋„๋ฆฌ ์‚ฌ์šฉ๋˜๋Š” ๋ชจ๋“  ์›น ๋ธŒ๋ผ์šฐ์ €์— ์ด๋ฏธ ๊ตฌํ˜„๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค(Chrome, Firefox ๋ฐ Edge์—์„œ๋Š” HTTP/3 ์ง€์›์ด ๊ธฐ๋ณธ์ ์œผ๋กœ ํ™œ์„ฑํ™”๋˜์–ด ์žˆ์œผ๋ฉฐ Safari์—์„œ๋Š” "๊ณ ๊ธ‰ > ์‹คํ—˜์  ๊ธฐ๋Šฅ > HTTP/3" ์„ค์ •์ด ํ•„์š”ํ•จ). ํ™œ์„ฑํ™”๋ฉ๋‹ˆ๋‹ค). ์„œ๋ฒ„ ์ธก์—์„œ๋Š” nginx(๋ณ„๋„์˜ ๋ถ„๊ธฐ ๋ฐ ๋ณ„๋„์˜ ๋ชจ๋“ˆ ํ˜•์‹), Caddy, IIS ๋ฐ LiteSpeed์— ๋Œ€ํ•ด HTTP/3 ๊ตฌํ˜„์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. HTTP/3 ์ง€์›์€ Cloudflare ์ฝ˜ํ…์ธ  ์ „์†ก ๋„คํŠธ์›Œํฌ์—์„œ๋„ ์ œ๊ณต๋ฉ๋‹ˆ๋‹ค.

QUIC์˜ ์ฃผ์š” ๊ธฐ๋Šฅ:

  • TLS์™€ ์œ ์‚ฌํ•œ ๋†’์€ ๋ณด์•ˆ(๊ธฐ๋ณธ์ ์œผ๋กœ QUIC๋Š” UDP๋ฅผ ํ†ตํ•ด TLS๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค)
  • ํ๋ฆ„ ๋ฌด๊ฒฐ์„ฑ ์ œ์–ด, ํŒจํ‚ท ์†์‹ค ๋ฐฉ์ง€
  • ์ฆ‰์‹œ ์—ฐ๊ฒฐ์„ ์„ค์ •ํ•˜๊ณ (0-RTT, ์•ฝ 75%์˜ ๊ฒฝ์šฐ ์—ฐ๊ฒฐ ์„ค์ • ํŒจํ‚ท์„ ๋ณด๋‚ธ ํ›„ ์ฆ‰์‹œ ๋ฐ์ดํ„ฐ๋ฅผ ์ „์†กํ•  ์ˆ˜ ์žˆ์Œ) ์š”์ฒญ ์ „์†ก๊ณผ ์‘๋‹ต ์ˆ˜์‹  ์‚ฌ์ด์˜ ์ง€์—ฐ์„ ์ตœ์†Œํ™”ํ•˜๋Š” ๊ธฐ๋Šฅ(RTT, ์™•๋ณต ์‹œ๊ฐ„)
    HTTP/3.0์ด ์ œ์•ˆ๋œ ํ‘œ์ค€ ์ƒํƒœ๋ฅผ ์ˆ˜์‹ ํ•จ
  • ํŒจํ‚ท์„ ์žฌ์ „์†กํ•  ๋•Œ ๋‹ค๋ฅธ ์‹œํ€€์Šค ๋ฒˆํ˜ธ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์ˆ˜์‹ ๋œ ํŒจํ‚ท ์‹๋ณ„์˜ ๋ชจํ˜ธ์„ฑ์„ ๋ฐฉ์ง€ํ•˜๊ณ  ์‹œ๊ฐ„ ์ดˆ๊ณผ๋ฅผ ์ œ๊ฑฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ํŒจํ‚ท ์†์‹ค์€ ํ•ด๋‹น ํŒจํ‚ท๊ณผ ๊ด€๋ จ๋œ ์ŠคํŠธ๋ฆผ์˜ ์ „๋‹ฌ์—๋งŒ ์˜ํ–ฅ์„ ๋ฏธ์น˜๋ฉฐ ํ˜„์žฌ ์—ฐ๊ฒฐ์„ ํ†ตํ•ด ์ „์†ก๋˜๋Š” ๋ณ‘๋ ฌ ์ŠคํŠธ๋ฆผ์˜ ๋ฐ์ดํ„ฐ ์ „๋‹ฌ์„ ์ค‘๋‹จํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
  • ์†์‹ค๋œ ํŒจํ‚ท์˜ ์žฌ์ „์†ก์œผ๋กœ ์ธํ•œ ์ง€์—ฐ์„ ์ตœ์†Œํ™”ํ•˜๋Š” ์˜ค๋ฅ˜ ์ˆ˜์ • ๊ธฐ๋Šฅ์ž…๋‹ˆ๋‹ค. ์†์‹ค๋œ ํŒจํ‚ท ๋ฐ์ดํ„ฐ์˜ ์žฌ์ „์†ก์ด ํ•„์š”ํ•œ ์ƒํ™ฉ์„ ์ค„์ด๊ธฐ ์œ„ํ•ด ํŒจํ‚ท ์ˆ˜์ค€์—์„œ ํŠน์ˆ˜ ์˜ค๋ฅ˜ ์ˆ˜์ • ์ฝ”๋“œ๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.
  • ์•”ํ˜ธํ™” ๋ธ”๋ก ๊ฒฝ๊ณ„๋Š” QUIC ํŒจํ‚ท ๊ฒฝ๊ณ„์™€ ์ •๋ ฌ๋˜์–ด ํ›„์† ํŒจํ‚ท์˜ ๋‚ด์šฉ์„ ๋””์ฝ”๋”ฉํ•  ๋•Œ ํŒจํ‚ท ์†์‹ค์ด ๋ฏธ์น˜๋Š” ์˜ํ–ฅ์„ ์ค„์ž…๋‹ˆ๋‹ค.
  • TCP ๋Œ€๊ธฐ์—ด ์ฐจ๋‹จ์—๋Š” ๋ฌธ์ œ๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค.
  • ๋ชจ๋ฐ”์ผ ํด๋ผ์ด์–ธํŠธ์— ๋Œ€ํ•œ ์žฌ์—ฐ๊ฒฐ์„ ์„ค์ •ํ•˜๋Š” ๋ฐ ๊ฑธ๋ฆฌ๋Š” ์‹œ๊ฐ„์„ ์ค„์ด๋Š” ์—ฐ๊ฒฐ ์‹๋ณ„์ž ์ง€์›
  • ๊ณ ๊ธ‰ ์—ฐ๊ฒฐ ์ •์ฒด ์ œ์–ด ๋ฉ”์ปค๋‹ˆ์ฆ˜ ์—ฐ๊ฒฐ ๊ฐ€๋Šฅ์„ฑ
  • ๋ฐฉํ–ฅ๋ณ„ ์ฒ˜๋ฆฌ๋Ÿ‰ ์˜ˆ์ธก ๊ธฐ์ˆ ์„ ์‚ฌ์šฉํ•˜์—ฌ ํŒจํ‚ท์ด ์ตœ์ ์˜ ์†๋„๋กœ ์ „์†ก๋˜๋„๋ก ๋ณด์žฅํ•˜์—ฌ ํŒจํ‚ท์ด ์ •์ฒด๋˜๊ฑฐ๋‚˜ ํŒจํ‚ท ์†์‹ค์ด ๋ฐœ์ƒํ•˜๋Š” ๊ฒƒ์„ ๋ฐฉ์ง€ํ•ฉ๋‹ˆ๋‹ค.
  • TCP์— ๋น„ํ•ด ์„ฑ๋Šฅ๊ณผ ์ฒ˜๋ฆฌ๋Ÿ‰์ด ํฌ๊ฒŒ ์ฆ๊ฐ€ํ•ฉ๋‹ˆ๋‹ค. YouTube์™€ ๊ฐ™์€ ๋™์˜์ƒ ์„œ๋น„์Šค์˜ ๊ฒฝ์šฐ QUIC์€ ๋™์˜์ƒ ์‹œ์ฒญ ์‹œ ๋ฆฌ๋ฒ„ํผ๋ง ์ž‘์—…์„ 30%๊นŒ์ง€ ์ค„์ด๋Š” ๊ฒƒ์œผ๋กœ ๋‚˜ํƒ€๋‚ฌ์Šต๋‹ˆ๋‹ค.

HTTP/1.1 ์‚ฌ์–‘์˜ ๋ณ€๊ฒฝ ์‚ฌํ•ญ ์ค‘ ๋‚ด์šฉ๊ณผ ํ•จ๊ป˜ ๋ณธ๋ฌธ ์™ธ๋ถ€์— ์บ๋ฆฌ์ง€ ๋ฆฌํ„ด(CR) ๋ฌธ์ž๋ฅผ ๊ฒฉ๋ฆฌํ•˜์—ฌ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ๊ธˆ์ง€๋˜์–ด ์žˆ๋‹ค๋Š” ์ ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํ”„๋กœํ† ์ฝœ ์š”์†Œ์—์„œ CR ๋ฌธ์ž๋Š” ์ค„ ๋ฐ”๊ฟˆ ๋ฌธ์ž(CRLF)์™€ ํ•จ๊ป˜๋งŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ฒญํฌ ์š”์ฒญ ๋ ˆ์ด์•„์›ƒ ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด ๊ฐœ์„ ๋˜์–ด ํ—ค๋”๊ฐ€ ์žˆ๋Š” ์ฒจ๋ถ€๋œ ํ•„๋“œ์™€ ์„น์…˜์˜ ๋ถ„๋ฆฌ๋ฅผ ๋‹จ์ˆœํ™”ํ–ˆ์Šต๋‹ˆ๋‹ค. "HTTP ์š”์ฒญ ๋ฐ€์ˆ˜(HTTP Request Smuggling)" ๊ณต๊ฒฉ์„ ์ฐจ๋‹จํ•˜๊ธฐ ์œ„ํ•ด ๋ชจํ˜ธํ•œ ์ฝ˜ํ…์ธ ๋ฅผ ์ฒ˜๋ฆฌํ•˜๊ธฐ ์œ„ํ•œ ๊ถŒ์žฅ ์‚ฌํ•ญ์„ ์ถ”๊ฐ€ํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ํ”„๋ŸฐํŠธ์—”๋“œ์™€ ๋ฐฑ์—”๋“œ ์‚ฌ์ด์˜ ํ๋ฆ„์—์„œ ๋‹ค๋ฅธ ์‚ฌ์šฉ์ž์˜ ์š”์ฒญ ์ฝ˜ํ…์ธ ์— ๊ฐœ์ž…ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

HTTP/2.0 ์‚ฌ์–‘ ์—…๋ฐ์ดํŠธ๋Š” TLS 1.3์— ๋Œ€ํ•œ ์ง€์›์„ ๋ช…์‹œ์ ์œผ๋กœ ์ •์˜ํ•ฉ๋‹ˆ๋‹ค. ์šฐ์„ ์ˆœ์œ„ ์ฒด๊ณ„ ๋ฐ ๊ด€๋ จ ํ—ค๋” ํ•„๋“œ๊ฐ€ ๋” ์ด์ƒ ์‚ฌ์šฉ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. HTTP/1.1 ์—ฐ๊ฒฐ์„ ์—…๋ฐ์ดํŠธํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉ๋˜์ง€ ์•Š๋Š” ๋ฉ”์ปค๋‹ˆ์ฆ˜์€ ๋” ์ด์ƒ ์‚ฌ์šฉ๋˜์ง€ ์•Š๋Š” ๊ฒƒ์œผ๋กœ ์„ ์–ธ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ํ•„๋“œ ์ด๋ฆ„ ๋ฐ ๊ฐ’ ํ™•์ธ์— ๋Œ€ํ•œ ์š”๊ตฌ ์‚ฌํ•ญ์ด ๊ฐ์†Œ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ด์ „์— ์˜ˆ์•ฝ๋œ ์ผ๋ถ€ ํ”„๋ ˆ์ž„ ์œ ํ˜• ๋ฐ ๋งค๊ฐœ๋ณ€์ˆ˜๊ฐ€ ์‚ฌ์šฉํ•˜๋„๋ก ์ œ์•ˆ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์—ฐ๊ฒฐ๊ณผ ๊ด€๋ จ๋œ ๊ธˆ์ง€๋œ ํ—ค๋” ํ•„๋“œ๊ฐ€ ๋” ์ •ํ™•ํ•˜๊ฒŒ ์ •์˜๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

์ถœ์ฒ˜ : opennet.ru

์ฝ”๋ฉ˜ํŠธ๋ฅผ ์ถ”๊ฐ€