HTTP3๋ž€?

HTTP/3์€ HTTP/2 ์ดํ›„ ์ƒˆ๋กญ๊ฒŒ ๋‚˜์˜จ ๊ฐœ๋ฐœ ํ‘œ์ค€์œผ๋กœ, ์›น ๋ธŒ๋ผ์šฐ์ €์™€ ์„œ๋ฒ„๊ฐ€ ํ†ต์‹ ํ•˜๋Š” ๋ฐฉ์‹์— ์˜ํ–ฅ์„ ๋ฏธ์น˜๋ฉฐ, ์„ฑ๋Šฅ, ์•ˆ์ •์„ฑ, ๋ณด์•ˆ ๋“ฑ ์‚ฌ์šฉ์ž ๊ฒฝํ—˜์„ ํฌ๊ฒŒ ์—…๊ทธ๋ ˆ์ด๋“œํ–ˆ์œผ๋ฉฐ, 2022๋…„ 6์›” 6์ผ IETF(Internet Engineering Task Force) RFC 9114๋กœ ํ‘œ์ค€ํ™”๋˜์—ˆ๋‹ค.

1991๋…„ ์ตœ์ดˆ์˜ ํ•˜์ดํผํ…์ŠคํŠธ ์ „์†ก ํ”„๋กœํ† ์ฝœ(HTTP)์ด ์ถœ์‹œ๋œ ํ›„, ์ดํ›„ ์—ฌ๋Ÿฌ ์ฐจ๋ก€ ์ƒˆ๋กœ์šด ๋ฒ„์ „์„ ๋‚ด๋†“์œผ๋ฉด์„œ ๊ธฐ๋ณธ ์ฝ”๋“œ๋ฅผ ๋ณ€๊ฒฝํ•˜์ง€ ์•Š๊ณ ๋„ ์›น ์‚ฌ์ดํŠธ๋ฅผย ๋” ๋น ๋ฅด๊ฒŒย ๋งŒ๋“ค ์ˆ˜ ์žˆ์—ˆ๋‹ค.

HTTP/2์™€์˜ ์ฐจ์ด์ 

๋น ๋ฅธ ์†๋„

๊ฐ€์žฅ ์ค‘์š”ํ•œ ์ฐจ์ด์ ์€ ๊ธฐ์กด TCPํ†ต์‹  ๋ฐฉ์‹์˜ HTTP/2์™€๋Š” ๋‹ฌ๋ฆฌ UDP ๊ธฐ๋ฐ˜์˜ QUIC ํ”„๋กœํ† ์ฝœ์„ ์‚ฌ์šฉํ•˜์—ฌ ํ†ต์‹ ํ•œ๋‹ค๋Š” ์ ์ด๋‹ค.

UDP(User Datagram Protocol) ์ปดํ“จํ„ฐ๊ฐ€ ๋‹ค๋ฅธ ์ปดํ“จํ„ฐ์™€ ๋ฐ์ดํ„ฐ ํ†ต์‹ ์„ ํ•˜๊ธฐ ์œ„ํ•œ ํ”„๋กœํ† ์ฝœ์˜ ์ผ์ข…. OSI ๋ชจํ˜•(๊ตญ์ œํ‘œ์ค€ํ™”๊ธฐ๊ตฌ๊ฐ€ ๊ฐœ๋ฐœํ•œ ๋„คํŠธ์›Œํฌ ํ”„๋กœํ† ์ฝœ ๋””์ž์ธ ๋ฐ ํ†ต์‹  ๊ณ„์ธต)์—์„œ ์ „์†ก ๊ณ„์ธต(Transport Layer)์—์„œ ์‚ฌ์šฉํ•˜๋Š” ํ”„๋กœํ† ์ฝœ์ด๋‹ค.

QUIC ํ”„๋กœํ† ์ฝœ์€ ๊ตฌ๊ธ€์ด ๋งŒ๋“  ํ”„๋กœํ† ์ฝœ๋กœ, ๋‹‰๊ฐ’ํ•˜๋“ฏ์ด ๋น ๋ฅธ ์†๋„๋ฅผ ์ž๋ž‘ํ•œ๋‹ค. ํ›จ์”ฌ ๋น ๋ฅธ ๋ฐ์ดํ„ฐ ์ „์†ก ์†๋„๋ฅผ ์ž๋ž‘ํ•˜๋ฉฐ ๋” ๋งŽ์€ ๋ฆฌ์†Œ์Šค๋ฅผ ๋ณ‘๋ ฌ๋กœ ์ „์†กํ•  ์ˆ˜ ์žˆ๋‹ค.

์ด ์ฐจ์ด๋ฅผ ์ดํ•ดํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ๋จผ์ € TCP์˜ Handshake์— ๋Œ€ํ•ด ์ดํ•ดํ•  ํ•„์š”๊ฐ€ ์žˆ๋‹ค.

TCP์˜ 3-Way Handshake

TCP ํ†ต์‹ ์„ ์ด์šฉํ•˜์—ฌ ๋ฐ์ดํ„ฐ๋ฅผ ์ „์†กํ•˜๊ธฐ ์œ„ํ•ด ๋„คํŠธ์›Œํฌ ์—ฐ๊ฒฐ์„ ์„ค์ •ํ•˜๋Š” ๊ณผ์ •์ด๋‹ค. ๋…ผ๋ฆฌ์ ์ธ ์ ‘์†์„ ์„ฑ๋ฆฝ์‹œํ‚ค๊ธฐ ์œ„ํ•ด 3-way handshake๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.

๋ฉ”์ปค๋‹ˆ์ฆ˜

TCP๋Š” PAR(Positive Acknowledgement with Re-transmission) ์ด๋ผ๋Š” ๊ธฐ๋Šฅ์„ ํ†ตํ•ด ์•ˆ์ •์ ์ธ ํ†ต์‹ ์„ ์ œ๊ณตํ•œ๋‹ค.

์ „์†ก ๊ณ„์ธต์˜ ย PDU(Protocol Data Unit)๋ฅผ ์„ธ๊ทธ๋จผํŠธ๋ผ๊ณ  ํ•˜๋Š”๋ฐ, PAR์„ ์‚ฌ์šฉํ•˜๋Š” ์žฅ์น˜๋Š” ์Šน์ธ์„ ๋ฐ›์„ ๋•Œ๊นŒ์ง€ ์„ธ๊ทธ๋จผํŠธ๋ฅผ ๋‹ค์‹œ ๋ณด๋‚ธ๋‹ค. ์ˆ˜์‹ ์ธก์—์„œ ์ˆ˜์‹ ํ•œ ๋ฐ์ดํ„ฐ ๋‹จ์œ„๊ฐ€ ์†์ƒ๋œ ๊ฒฝ์šฐ, ํ•ด๋‹น ์„ธ๊ทธ๋จผํŠธ๋ฅผ ํ๊ธฐํ•˜๊ณ  ์†ก์‹ ์ž๋Š” ๋‹ค์‹œ ์„ธ๊ทธ๋จผํŠธ๋ฅผ ๋ณด๋‚ด์•ผ ํ•œ๋‹ค.

์—ฌ๊ธฐ์„œ ์†ก์‹ ์ž๋Š” ํด๋ผ์ด์–ธํŠธ, ์ˆ˜์‹ ์ž๋Š” ์„œ๋ฒ„๋ฅผ ์˜๋ฏธํ•œ๋‹ค

์ด๋ ‡๊ฒŒ ์„ธ๊ทธ๋จผํŠธ๋ฅผ ๋ณด๋‚ด๋Š” ๊ณผ์ •์—์„œ ์„ธ ๊ฐœ์˜ ์„ธ๊ทธ๋จผํŠธ๊ฐ€ ๊ตํ™˜๋œ๋‹ค.

SYN(Synchronize sequence numbers) ์—ฐ๊ฒฐ์„ ์š”์ฒญํ•  ๋•Œ SYN bit๋ฅผ 1๋กœ ์„ค์ •, ๋‚˜๋จธ์ง€ ๊ฒฝ์šฐ์—๋Š” SYN bit๋ฅผ 0์œผ๋กœ ์„ค์ •ํ•œ๋‹ค.

ACK: Acknowlegment ํŒจํ‚ท์„ ๋ฐ›์•˜๋‹ค๋Š” ์‘๋‹ต์„ ํ•  ๋•Œ ์‚ฌ์šฉํ•œ๋‹ค. Acknowlegment Number๊ฐ€ ์œ ํšจํ•œ์ง€ ๋‚˜ํƒ€๋‚ธ๋‹ค.

  • 1๋‹จ๊ณ„(SYN) : ํด๋ผ์ด์–ธํŠธ๋Š” ์„œ๋ฒ„์™€ ์—ฐ๊ฒฐ์„ ์„ค์ •ํ•˜๊ธฐ ์œ„ํ•ด SYN์ด ํฌํ•จ๋œ ์„ธ๊ทธ๋จผํŠธ๋ฅผ ๋ณด๋‚ธ๋‹ค. ์ด ์„ธ๊ทธ๋จผํŠธ์—๋Š” ํด๋ผ์ด์–ธํŠธ๊ฐ€ ํ†ต์‹ ์„ ์‹œ์ž‘ํ•  ๊ฒƒ์ด๋ผ๊ณ  ์•Œ๋ฆฌ๋Š” ์—ญํ• ์„ ํ•œ๋‹ค.
    • SYN bit๋ฅผ 1๋กœ ์„ค์ •ํ•˜๋ฉด์„œ ํ†ต์‹ ์„ ์‹œ์ž‘ํ•  ๊ฒƒ์ž„์„ ์•Œ๋ฆฐ๋‹ค
    • SYN ์„ธ๊ทธ๋จผํŠธ๋ฅผ ์ „์†ก ํ›„ SYNSENT ์ƒํƒœ๋กœ ์„œ๋ฒ„์˜ ACK ์„ธ๊ทธ๋จผํŠธ๋ฅผ ๊ธฐ๋‹ค๋ฆฐ๋‹ค.
  • 2๋‹จ๊ณ„(SYN + ACK) : ์„œ๋ฒ„๋Š” ํด๋ผ์ด์–ธํŠธ์˜ ์š”์ฒญ์ธ SYN ์„ธ๊ทธ๋จผํŠธ์— ๋Œ€ํ•œ ACK ์„ธ๊ทธ๋จผํŠธ๋ฅผ ์ „์†กํ•จ๊ณผ ๋™์‹œ์— ์„œ๋ฒ„๊ฐ€ ํด๋ผ์ด์–ธํŠธ์— ์—ฐ๊ฒฐ์„ ์š”์ฒญํ•˜๋Š” SYN Segment๋ฅผ ์ „์†กํ•œ๋‹ค.
    • ํด๋ผ์ด์–ธํŠธ๋Š” SYN + ACK ์„ธ๊ทธ๋จผํŠธ๋ฅผ ์ „์†กํ•˜๊ณ  SYN RCVD ์ƒํƒœ๋กœ ํด๋ผ์ด์–ธํŠธ์˜ ACK๋ฅผ ๊ธฐ๋‹ค๋ฆฐ๋‹ค.
    • ํด๋ผ์ด์–ธํŠธ๋Š” ACK ์„ธ๊ทธ๋จผํŠธ๋ฅผ ๋ฐ›๊ณ  ์—ฐ๊ฒฐ์ด ์™„๋ฃŒ๋œ ESTAB ์ƒํƒœ๊ฐ€ ๋œ๋‹ค.
  • 3๋‹จ๊ณ„(ACK): ํด๋ผ์ด์–ธํŠธ๋Š” ์„œ๋ฒ„์˜ SYN ์„ธ๊ทธ๋จผํŠธ์— ๋Œ€ํ•œ ACK ์„ธ๊ทธ๋จผํŠธ๋ฅผ ์ „์†กํ•˜๊ณ , ์‹ค์งˆ์ ์œผ๋กœ ๋ฏฟ์„ ์ˆ˜ ์žˆ๋Š” ๋ฐ์ดํ„ฐ ๊ตํ™˜ ์—ฐ๊ฒฐ์ด ์„ฑ๋ฆฝ๋œ๋‹ค.
    • ์„œ๋ฒ„๋Š” ACK ์„ธ๊ทธ๋จผํŠธ๋ฅผ ๋ฐ›๊ณ  ์—ฐ๊ฒฐ์ด ์™„๋ฃŒ๋œ ESTAB ์ƒํƒœ๊ฐ€ ๋œ๋‹ค.

๋Œ์•„์™€์„œ..

์•”ํŠผ TCP์—์„œ๋Š” ์ƒˆ ์—ฐ๊ฒฐ์„ ์„ค์ •ํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” Handshake ๊ณผ์ •์ด ํ•„์š”ํ•˜๋‹ค. ํ•˜์ง€๋งŒ ์ด๋Ÿฌํ•œ ์—ฐ๊ฒฐ์€ ๋„คํŠธ์›Œํฌ์˜ ์™•๋ณต์ด ํ•„์š”ํ•˜๊ณ , ์—ฌ๊ธฐ์„œ ์ง€์—ฐ์ด ๋ฐœ์ƒํ•  ๊ฐ€๋Šฅ์„ฑ์ด ์žˆ๋‹ค. ๊ทธ๋ž˜์„œ QUIC์˜ ๊ฒฝ์šฐ๋Š” ์œ„์™€ ๊ฐ™์€ 3-way Handshake ๋Œ€์‹  1-RTT/0-RTT ์„ธ์…˜์„ ํ†ตํ•ด ๋” ๋น ๋ฅธ ์—ฐ๊ฒฐ์„ ์ œ๊ณตํ•œ๋‹ค.

QUIC 0-RTT

์™•๋ณต ์‹œ๊ฐ„ ์—†๋Š” ์—ฐ๊ฒฐ์˜ ์žฌ์‹œ์ž‘์„ ์ง€์›ํ•œ๋‹ค. ์—ฐ๊ฒฐ์„ ์‹œ์ž‘ํ•˜๋ฉด์„œ ๋™์‹œ์— ํด๋ผ์ด์–ธํŠธ๊ฐ€ ๋ฐ”๋กœ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณด๋‚ผ ์ˆ˜ ์žˆ๋‹ค. 3-Way-Handshake์ฒ˜๋Ÿผ ๋”ฐ๋กœ ์„ธ๊ทธ๋จผํŠธ์˜ ๊ตํ™˜์ด ํ•„์š”๊ฐ€ ์—†์–ด ๋„คํŠธ์›Œํฌ ์™•๋ณต์ด ํ•„์š”์—†์œผ๋ฉฐ, ์ด์— ๋”ฐ๋ผ ์ง€์—ฐ๋˜๋Š” ์‹œ๊ฐ„ ๋˜ํ•œ ์—†๋‹ค. ๋น ๋ฅธ ์†๋„๋กœ ์—…๋ฐ์ดํŠธ๊ฐ€ ๊ฐ€๋Šฅํ•œ ๋งŒํผ, ๋ผ์ด๋ธŒ ํŠธ๋ž˜ํ”ฝ์— ์ฃผ๋กœ ์‚ฌ์šฉ๋˜๋ฉฐ, ํ™”์ƒ ํšŒ์˜๋‚˜ ๊ฒŒ์ž„ ๊ฐ™์€ ๊ณณ์— ์œ ์šฉํ•˜๋‹ค.

TLS, TCP ๋ฐ QUIC์˜ Handshake ๋น„๊ต

๋ณด์•ˆ

HTTP/2์˜ ๊ฒฝ์šฐ๋Š” TLS(Transport Layer Security)๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ฐ์ดํ„ฐ๋ฅผ ์•”ํ˜ธํ™”ํ•˜์ง€๋งŒ, HTTP/3์˜ ๊ฒฝ์šฐ๋Š” QUIC์— ๋‚ด์žฅ๋œ TLS ์•”ํ˜ธํ™”๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋ณด์•ˆ์ด ๊ธฐ๋ณธ์ ์œผ๋กœ ๋‚ด์žฅ๋˜์–ด ์žˆ๋‹ค.

๋˜ํ•œ ๋ณ„๋„์˜ TLS Handshake ์—†์ด ๋ณด์•ˆ ์—ฐ๊ฒฐ์„ ์„ค์ •ํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ํŒจํ‚ท ํ—ค๋”์™€ pyaload์—์„œ์˜ ์ „์†ก ๊ณ„์ธต ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ๋„ ์•”ํ˜ธํ™”๋˜๊ธฐ ๋•Œ๋ฌธ์— ์—ฌ๋Ÿฌ ์ด์ ์„ ๊ฐ€์ง„๋‹ค.

  • ๋” ๋น ๋ฅธ ์†๋„
  • ์ „์†ก ๋ฐ ์•”ํ˜ธํ™” Handshake๋ฅผ ํ•˜๋‚˜๋กœ ๊ฒฐํ•ฉํ•˜์—ฌ ์™•๋ณต ์‹œ๊ฐ„ ์ ˆ์•ฝ๊ณผ ํ•จ๊ป˜ ๋ณด์•ˆ์„ฑ ํ–ฅ์ƒ
  • ์™„์ „ํžˆ ์•”ํ˜ธํ™”๋˜์–ด ๋„คํŠธ์›Œํฌ์˜ ๋ฏธ๋“ค๋ฐ•์Šค๊ฐ€ ๋‚ด๋ถ€ ์ž‘๋™์„ ๊ด€์ฐฐํ•˜๊ณ  ํ•ด์„ํ•  ์ˆ˜ ์—†๋‹ค. ๋”ฐ๋ผ์„œ ์—…๋ฐ์ดํŠธ๊ฐ€ ์–ด๋ ค์šด ๋ฏธ๋“ค ๋ฐ•์Šค ๋Œ€์‹  ์ตœ์ข… ์žฅ์น˜๋งŒ ์—…๋ฐ์ดํŠธํ•˜๋ฉด ๋˜์–ด ๋ณด๋‹ค ์—…๋ฐ์ดํŠธ๊ฐ€ ์šฉ์ดํ•˜๋‹ค.

๋ฏธ๋“ค๋ฐ•์Šค ์„œ๋กœ ํ†ต์‹ ํ•˜๋Š” ๋‘ ๊ฐœ์˜ ์ตœ์ข… ํ˜ธ์ŠคํŠธ ์‚ฌ์ด ๊ฒฝ๋กœ์— ์žˆ๋Š” ๋„คํŠธ์›Œํฌ ๋‚ด ๋””๋ฐ”์ด์Šค๋กœ, TCP ์—ฐ๊ฒฐ์˜ ๊ฒฝ์šฐ ์ „์†ก ์ค‘์ธ ํŒจํ‚ท ์Šคํฌ๋ฆผ์„ ๋ชจ๋‹ˆํ„ฐ๋ง, ํ•„์–ดํ‹ธ, ๋ณ€ํ™˜์ด ๊ฐ€๋Šฅํ•˜๋‹ค.

๋‹ค์ค‘ํ™”(Multiplexing)

HTTP/1.1์—์„œ๋Š” ๋ฆฌ์†Œ์Šค ๋กœ๋”ฉ ํ”„๋กœ์„ธ์Šค์—์„œ ๊ฐ ํŒŒ์ผ ์ž์ฒด์— ๋Œ€ํ•ด TCP์—ฐ๊ฒฐ์ด ์ œ๊ณต๋˜์—ˆ๊ณ  ๊ฐ๊ฐ์˜ ์—ฐ๊ฒฐ์— ์˜ค๋ฒ„ํ—ค๋“œ๊ฐ€ ์žˆ์—ˆ๊ธฐ ๋•Œ๋ฌธ์— ๋น„ํšจ์œจ์ ์ด์—ˆ๋‹ค.

HTTP/2์—์„œ๋Š” ์ด๋ฅผ ๊ฐœ์„ ํ•˜๊ณ ์ž ๋‹จ์ผ TCP ์—ฐ๊ฒฐ์„ ํ†ตํ•ด ๋‹ค์–‘ํ•œ ๋ฆฌ์†Œ์Šค๋“ค์„ ๋‹ค์šด๋กœ๋“œํ•˜๋Š” ๋ฐ”์ดํŠธ ์ŠคํŠธ๋ฆผ์˜ Multiplexing์„ ์ด์šฉํ•˜์˜€๋‹ค.

์ด๋ ‡๊ฒŒ HTTP/1.1์—์„œ๋Š” ๊ฐ ํŒŒ์ผ๋งˆ๋‹ค TCP ์—ฐ๊ฒฐ ์ œ๊ณต๋˜์—ˆ๊ธฐ ๋•Œ๋ฌธ์— ํ•˜๋‚˜์”ฉ ์ˆœ์„œ๋Œ€๋กœ ๋‹ค์šด๋กœ๋“œํ•  ์ˆ˜๋ฐ–์— ์—†์—ˆ๋‹ค.

ํ•˜์ง€๋งŒ HTTP/2์˜ ๊ฒฝ์šฐ ์ด๋ ‡๊ฒŒ ๊ฐ๊ฐ์˜ ํŒŒ์ผ์— ๋Œ€ํ•ด ์กฐ๊ธˆ์”ฉ ํ˜ผํ•ฉํ•˜์—ฌ ๋‹ค์šด๋กœ๋“œ๋ฐ›๊ธฐ ๋•Œ๋ฌธ์— HTTP/1.1๋ณด๋‹ค ์†๋„๋„ ์กฐ๊ธˆ ๋‚ซ๋„ ์˜ค๋ฒ„ํ—ค๋“œ๊ฐ€ ํ›จ์”ฌ ๋‚ฎ๋‹ค๋Š” ์žฅ์ ์ด ์žˆ๋‹ค.

ํ•˜์ง€๋งŒ ์—ฌ๊ธฐ์—” TCP์— ๋ฌธ์ œ๊ฐ€ ์žˆ๋Š”๋ฐ, ์—ฌ๋Ÿฌ ํŒŒ์ผ์„ ์ „์†กํ•˜์ง€๋งŒ TCP๋Š” ์ด๋ฅผ ๋‹จ์ผ ํŒŒ์ผ ํ•˜๋‚˜๋ฅผ ์ „์†กํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ค‘๊ฐ„์— ๋ฐ์ดํ„ฐ ํŒจํ‚ท์— ์†์‹ค์ด ๋‚˜๋ฉด ํ•˜๋‚˜๋งŒ ์•ˆ ๋œจ๋Š”๊ฒŒ ์•„๋‹ˆ๋ผ ์ดํ›„์˜ ํŒŒ์ผ๋“ค๋„ ์ฒ˜๋ฆฌ๋˜์ง€ ๋ชปํ•ด ์†๋„๊ฐ€ ๊ธ‰๊ฒฉํžˆ ๋А๋ ค์ง€๋Š” ํ˜„์ƒ์ด ๋‚˜ํƒ€๋‚œ๋‹ค. ์ด๋Ÿฌํ•œ ํ˜„์ƒ์„ HOL(Head-Of-Line) Blocking ๋ฌธ์ œ๋ผ๊ณ  ํ•œ๋‹ค.

์ด๋Ÿฌํ•œ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋Š” ๊ฒƒ์ด QUIC์˜ ๊ณผ์ œ์˜€๋Š”๋ฐ QUIC๋Š” ์ŠคํŠธ๋ฆผ ๋ณ„๋กœ ํŒจํ‚ท ์†์‹ค ๊ฐ์ง€ ๋ฐ ๋ณต๊ตฌ ๋กœ์ง์„ ์ˆ˜ํ–‰ํ• ์ˆ˜ ์žˆ๊ฒŒ ๋งŒ๋“ฆ์œผ๋กœ์จ HOL Blocking ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜์˜€๋‹ค.

์ด๋Ÿฐ ์‹์œผ๋กœ ์†์‹ค๋œ ๋ฐ์ดํ„ฐ ํŒจํ‚ท๋งŒ ๋”ฐ๋กœ ๋นผ๋†“๊ณ  ๋ณต๊ตฌ์‹œํ‚ด์œผ๋กœ์จ ๋‹ค๋ฅธ ๋ฐ์ดํ„ฐ ํŒจํ‚ท๋“ค์ด ๋‹ค์šด๋กœ๋“œ ๋ฐ›์„ ์ˆ˜ ์žˆ๋‹ค.

1์ธ์šฉ ์—์Šค์ปฌ๋ ˆ์ดํ„ฐ๋Š” ํ•œ ๋ช…์ด ๊ฟ‹๊ฟ‹ํ•˜๊ฒŒ ์„œ ์žˆ์œผ๋ฉด ๋’ค์— ์žˆ๋Š” ์‚ฌ๋žŒ๋“ค์€ ๊ฑธ์–ด์„œ ๋ชป ์˜ฌ๋ผ๊ฐ„๋‹ค. ํ•˜์ง€๋งŒ 2์ธ์šฉ ์—์Šค์ปฌ๋ ˆ์ดํ„ฐ๋Š” ํ•œ ์ค„๋กœ ์„œ์žˆ๋Š” ์ค„๊ณผ ๋”ฐ๋กœ ๊ฑธ์–ด์„œ ์˜ฌ๋ผ๊ฐ€๋Š” ์ค„์ด ์žˆ์–ด ํ•œ ์ค„์ด ๋ง‰๊ณ  ์žˆ์–ด๋„ ๋‹ค๋ฅธ ์ค„๋กœ ๊ฑธ์–ด์˜ฌ๋ผ๊ฐ€๋ฉด ๋œ๋‹ค. ์ด์™€ ๊ฐ™์€ ์ฐจ์ด๋ผ๊ณ  ์ƒ๊ฐํ•˜๋ฉด ๋  ๊ฒƒ ๊ฐ™๋‹ค.

์—ฐ๊ฒฐ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜(Connection Migration)

QUIC์˜ ์—ฐ๊ฒฐ์€ TCP ์—ฐ๊ฒฐ๋ณด๋‹ค ๋” ์˜ค๋ž˜ ์ง€์†๋  ์ˆ˜ ์žˆ๋‹ค. ์ด ์ด์œ ์— ๋Œ€ํ•ด ์•Œ๊ธฐ ์œ„ํ•ด์„œ๋Š” ํŒจํ‚ท์ด ์—ฐ๊ฒฐ๋˜์–ด ์–ด๋–ป๊ฒŒ ๋ชฉ์ ์ง€๊นŒ์ง€ ์ „์†ก๋˜๋Š” ์ง€์— ๋Œ€ํ•ด์„œ ์•Œ์•„์•ผ ํ•œ๋‹ค.

์ธํ„ฐ๋„ท์—์„œ IP ์ฃผ์†Œ๋Š” ๋‘ ๊ฐœ์˜ ๊ณ ์œ ํ•œ ์‹œ์Šคํ…œ ๊ฐ„์— ํŒจํ‚ท์„ ๋ผ์šฐํŒ…ํ•˜๋Š”๋ฐ ์‚ฌ์šฉ๋œ๋‹ค. ํ•˜์ง€๋งŒ ์ด ๋‘ IP๋งŒ ์žˆ์–ด์„œ๋Š” ์ถฉ๋ถ„ํ•˜์ง€ ์•Š๋‹ค. ๊ฐ ๋์—์„œ ๋™์‹œ์— ์—ฌ๋Ÿฌ ๋„คํŠธ์›Œํฌ ํ”„๋กœ๊ทธ๋žจ์„ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์–ด์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

๊ธฐ์กด TCP ์—ฐ๊ฒฐ์—์„œ ์ด๋Ÿฌํ•œ ์‹œ์Šคํ…œ๊ณผ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ „๋ฐ˜์— ๊ฑธ์ณ ๊ณ ์œ ํ•œ ์—ฐ๊ฒฐ์„ ์ •์˜ํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ํด๋ผ์ด์–ธํŠธ IP ์ฃผ์†Œ + ํด๋ผ์ด์–ธํŠธ ํฌํŠธ + ์„œ๋ฒ„ IP์ฃผ์†Œ + ์„œ๋ฒ„ ํฌํŠธ 4๊ฐ€์ง€๋กœ ์ด๋ฃจ์–ด์ง„ 4-tuple์ด ํ•„์š”ํ•˜๋‹ค.

ํ•˜์ง€๋งŒ ๋ฌธ์ œ๋Š” ์ด 4-tuple ์ค‘ ํ•˜๋‚˜๋งŒ ๋ฐ”๋€Œ์–ด๋„ ์—ฐ๊ฒฐ์€ ๋ฌดํšจํ™”๋˜๊ณ  ์ƒˆ๋กœ ์„ค์ •๋˜์–ด์•ผ ํ•œ๋‹ค๋Š” ์ ์ด๋‹ค. ์—ฌ๊ธฐ์„œ parking-lot ๋ฌธ์ œ๋ผ๊ณ  ํ•˜๋Š”๊ฒŒ ์ƒ๊ธด๋‹ค.

๋‚ด๊ฐ€ ์ง‘์—์„œ๋Š” ์™€์ดํŒŒ์ด๋ฅผ ์“ฐ๊ธฐ ๋•Œ๋ฌธ์— ํด๋ผ์ด์–ธํŠธ IP ์ฃผ์†Œ๊ฐ€ ์™€์ดํŒŒ์ด IP ์ฃผ์†Œ๋กœ ์„ค์ •๋˜์–ด ์žˆ์ง€๋งŒ ์ฃผ์ฐจ์žฅ์œผ๋กœ ๊ฐ€๋ฉด ๋ฐ์ดํ„ฐ๋กœ ๋ฐ”๋€Œ๊ธฐ ๋•Œ๋ฌธ์— ํด๋ผ์ด์–ธํŠธ IP ์ฃผ์†Œ๊ฐ€ ๋ฐ”๋€Œ๊ฒŒ ๋œ๋‹ค. ํด๋ผ์ด์–ธํŠธ IP ์ฃผ์†Œ๊ฐ€ ๋ฐ”๋€Œ๊ฒŒ ๋˜๋ฉด ๋˜ ์ƒˆ๋กญ๊ฒŒ ์—ฐ๊ฒฐ์„ ์‹œ๋„ํ•ด์•ผ ํ•˜๋Š” ๊ฒƒ์ด๋‹ค.

๊ฒŒ๋‹ค๊ฐ€ TCP ์—ฐ๊ฒฐ ์ž์ฒด๊ฐ€ ์›Œ๋‚™ ์˜ค๋ž˜๋œ ์—ฐ๊ฒฐ์ด๋‹ค๋ณด๋‹ˆ ์ด๋Ÿฌํ•œ ์ƒˆ๋กœ์šด ์—ฐ๊ฒฐ์ด ์ด๋ฃจ์–ด์กŒ๋‹ค๋Š” ์‚ฌ์‹ค ์กฐ์ฐจ ์•Œ ์ˆ˜ ์—†์œผ๋ฉฐ, ๊ธฐ์กด์˜ ์—ฐ๊ฒฐ์กฐ์ฐจ ๋‹ซ๋Š” ๋ฐฉ๋ฒ•์ด ์—†๋‹ค.

๊ฒฐ๊ตญ ์ƒˆ๋กœ์šด Handshake๋ฅผ ์‹คํ–‰ํ•ด์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ˆ˜์ค€ ํ”„๋กœํ† ์ฝœ์— ๋”ฐ๋ผ ์ง„ํ–‰์ค‘์ธ ์ž‘์—… ๋˜ํ•œ ๋‹ค์‹œ ์‹œ์ž‘ํ•ด์•ผ ํ•œ๋‹ค. ํŒŒ์ผ ๋‹ค์šด๋กœ๋“œ ๊ฐ™์€ ๊ฒฝ์šฐ์—๋„ ๋‹ค์‹œ ์š”์ฒญํ•ด์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ๋„ ์ƒ๊ธฐ๋Š” ๊ฒƒ์ด๋‹ค.

QUIC๋Š” ์ด๋Ÿฌํ•œ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด **์—ฐ๊ฒฐ ์‹๋ณ„์ž(CID, Connection ID)**์ด๋ผ๋Š” ๊ฐœ๋…์„ ์‹ ๊ทœ ๋„์ž…ํ•œ๋‹ค. ๊ธฐ์กด์˜ 4-Tuple ์œ„์— ๋‹ค๋ฅธ ๋ฒˆํ˜ธ๊ฐ€ ์ถ”๊ฐ€์ ์œผ๋กœ ํ• ๋‹น๋œ๋‹ค.

์ด CID๋Š” QUIC ์ž์ฒด ์ „์†ก ๊ณ„์ธต์—์„œ ์ •์˜๋˜์–ด ๋„คํŠธ์›Œํฌ ๊ฐ„ ์ด๋™์‹œ ๋ณ€๊ฒฝ๋˜์ง€ ์•Š๋Š”๋‹ค.

์ด๋Ÿฐ ์‹์œผ๋กœ CID๋ฅผ ํ†ตํ•ด ๋„คํŠธ์›Œํฌ๊ฐ€ ๋‹ฌ๋ผ์ ธ๋„ ์—ฐ๊ฒฐ์€ ๋ณ€๋™์ด ์—†๋Š” ๊ฒƒ์ด๋‹ค. QUIC ์„œ๋ฒ„์™€ ํด๋ผ์ด์–ธํŠธ๋Š” CID๋งŒ ๋ณด๊ณ  ๊ฐ™์€ ์—ฐ๊ฒฐ์ธ์ง€ ํ™•์ธํ•˜๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. ์ด๋Ÿฌํ•œ ๊ธฐ๋Šฅ์„ ์—ฐ๊ฒฐ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜(Connection Migration) ์ด๋ผ๊ณ  ํ•œ๋‹ค.

ํ•˜์ง€๋งŒ ์ด๋ ‡๊ฒŒ ๊ฐ™์€ CID๋งŒ ์‚ฌ์šฉํ•˜๋ฉด ๋„คํŠธ์›Œํฌ๋ฅผ ํ†ตํ•ด ํ•ด์ปค๋“ค์ด ์‚ฌ์šฉ์ž ์ถ”์ ๊ณผ ๋ฌผ๋ฆฌ์  ์œ„์น˜ ์ถ”๋ก  ๋“ฑ์„ ํ•  ์ˆ˜ ์žˆ๊ธฐ ์šฉ์ดํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ƒˆ ๋„คํŠธ์›Œํฌ๊ฐ€ ์‚ฌ์šฉ๋  ๋•Œ๋งˆ๋‹ค CID๋ฅผ ๋ณ€๊ฒฝํ•ด์•ผ ํ•  ํ•„์š”์„ฑ์ด ์žˆ๋‹ค.

๊ทธ๋ ‡๋‹ค๋ฉด ์–ด๋–ป๊ฒŒ ํ•˜๋А๋ƒ

๋™์ผํ•œ ๊ฐœ๋…์  ์—ฐ๊ฒฐ์— ๋งคํ•‘๋˜๋Š” ๋ฌด์ž‘์œ„ CID๋ฅผ ์ƒ์„ฑํ•˜๋ฉด ๋œ๋‹ค. ์—ฐ๊ฒฐ์„ X๋ผ๊ณ  ํ•˜๋ฉด ์—ฐ๊ฒฐ X์— ๋งคํ•‘๋˜๋Š” CID A,B,C,Dโ€ฆ ๋“ฑ์„ ๊ณ„์†ํ•ด์„œ ๋งŒ๋“ค์–ด๋‚ด๋ฉด ๋˜๋Š” ๊ฒƒ์ด๋‹ค. ์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ๊ณต๊ฒฉ์„ ์‹œ๋„ํ•˜๋Š” ์‚ฌ๋žŒ์€ ์ด๋Ÿฌํ•œ CID๊ฐ€ X๋ผ๋Š” ๊ฒƒ์„ ์•Œ์ง€ ๋ชปํ•˜์ง€๋งŒ ํด๋ผ์ด์–ธํŠธ์™€ ์„œ๋ฒ„๋Š” ์ด๋ฅผ ์•Œ๊ณ  ์—ฐ๊ฒฐ์„ ๊ณ„์† ์œ ์ง€ํ•  ์ˆ˜ ์žˆ๋‹ค.

์œ ์—ฐ์„ฑ๊ณผ ๋ฐœ์ „ ๊ฐ€๋Šฅ์„ฑ

์œ ์—ฐ์„ฑ๊ณผ ๋ฐœ์ „ ๊ฐ€๋Šฅ์„ฑ๊ณผ ๊ฐ™์€ ๊ฒฝ์šฐ๋Š” ์œ„์—์„œ๋„ ํ•˜๋‚˜ ์–ธ๊ธ‰ํ–ˆ๋‹ค์‹œํ”ผ ๋ฏธ๋“ค๋ฐ•์Šค๊ฐ€ ์•„๋‹Œ ์—”๋“œํฌ์ธํŠธ(ํด๋ผ์ด์–ธํŠธ ๋ฐ ์„œ๋ฒ„)๋งŒ ์—…๋ฐ์ดํŠธํ•˜๋ฉด ๋˜์–ด ๋ณด๋‹ค ์—…๋ฐ์ดํŠธ๊ฐ€ ์šฉ์ดํ•˜๋‹ค๋Š” ์žฅ์ ์ด ์žˆ๋‹ค.

์ถ”๊ฐ€์ ์œผ๋กœ ์œ ์—ฐ์„ฑ๊ณผ ๋ฐœ์ „ ๊ฐ€๋Šฅ์„ฑ์„ ๊ฐ€์ง€๋Š” ์ด์œ ๊ฐ€ ํ•˜๋‚˜ ๋” ์žˆ๋‹ค. TCP์™€ ๋‹ฌ๋ฆฌ QUIC๋Š” ๋ชจ๋“  ํ”„๋กœํ† ์ฝœ ๋ฉ”ํƒ€ ๋ฐ์ดํ„ฐ๋ฅผ ์ „์†กํ•˜๊ธฐ ์œ„ํ•ด ๋‹จ์ผ ๊ณ ์ • ํŒจํ‚ท ํ—ค๋”๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š”๋‹ค. ๋Œ€์‹  QUIC๋Š” ์งง์€ ํŒจํ‚ท ํ—ค๋”๋ฅผ ๊ฐ€์ง€๊ณ  ํŒจํ‚ท ํŽ˜์ด๋กœ๋“œ ๋‚ด๋ถ€์˜ ๋‹ค์–‘ํ•œ ํ”„๋ ˆ์ž„(์†Œํ˜• ํŠน์ˆ˜ ํŒจํ‚ท)์„ ์‚ฌ์šฉํ•˜์—ฌ ์ถ”๊ฐ€ ์ •๋ณด๋ฅผ ์ „๋‹ฌํ•œ๋‹ค.

์ด๋ ‡๊ฒŒ ํ”„๋ ˆ์ž„์„ ์‚ฌ์šฉํ•˜์—ฌ ์ •๋ณด๋ฅผ ์ „๋‹ฌํ•  ๊ฒฝ์šฐ ์ตœ์ ํ™”๊ฐ€ ๊ฐ€๋Šฅํ•ด ๋ณด๋‹ค ๋ฐ”์ดํŠธ๋ฅผ ์ ˆ์•ฝํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ ํ”„๋ ˆ์ž„ ์‚ฌ์šฉ์œผ๋กœ ๋ฏธ๋ž˜์— QUIC๋ฅผ ํ™•์žฅํ•˜๋ฉด์„œ ์ƒˆ๋กœ์šด ํ”„๋ ˆ์ž„ ์œ ํ˜•์„ ์ •์˜ํ•˜๋Š” ๊ฒƒ์ด ์‰ฝ๋‹ค๋Š” ์ ์ด ์žฅ์ ์ด๋‹ค.

์ถ”๊ฐ€์ ์œผ๋กœ, QUIC์€ ์‚ฌ์šฉ์ž ์ •์˜ Transport Parameter๋ผ๋Š” TLS ํ™•์žฅ์„ ์‚ฌ์šฉํ•œ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ํด๋ผ์ด์–ธํŠธ์™€ ์„œ๋ฒ„๋Š” QUIC ์—ฐ๊ฒฐ์— ๋Œ€ํ•œ ๊ตฌ์„ฑ์„ ์„ ํƒํ•  ์ˆ˜ ์žˆ๋‹ค. ์ฆ‰, ์–ด๋–ค ๊ธฐ๋Šฅ์„ ํ™œ์„ฑํ™”ํ•˜๊ณ  ๊ธฐ๋ณธ๊ฐ’์„ ๋”ฐ๋กœ ์ •์˜ํ•จ์œผ๋กœ์จ ํ”„๋กœํ† ์ฝœ์„ ์œ ์—ฐํ•˜๊ฒŒ ๋งŒ๋“œ๋Š” ๊ฒƒ์ด๋‹ค.

์ด๋Ÿฌํ•œ ๊ตฌํ˜„์€ ๋˜ํ•œ ์‚ฌ์šฉ์ž ๊ณต๊ฐ„์— ์ˆ˜ํ–‰๋˜์–ด โ€˜kernel spance(์ปค๋„ ๊ณต๊ฐ„)โ€˜์—์„œ ์ˆ˜ํ–‰๋˜๋Š” TCP๋ณด๋‹ค QUIC ๊ตฌํ˜„ ๋ณ€ํ˜• ๋ฐ ํ™•์žฅ์˜ ์‹คํ—˜ ๋ฐ ๋ฐฐํฌ๊ฐ€ ํ›จ์”ฌ ์‰ฝ๋‹ค.

์ฐธ๊ณ ์ž๋ฃŒ

https://www.geeksforgeeks.org/tcp-3-way-handshake-process/ https://mindnet.tistory.com/entry/%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%81%AC-%EC%89%BD%EA%B2%8C-%EC%9D%B4%ED%95%B4%ED%95%98%EA%B8%B0-22%ED%8E%B8-TCP-3-WayHandshake-4-WayHandshake https://developer.mozilla.org/ko/docs/Glossary/TCP_handshake https://hojunking.tistory.com/106 https://www.smashingmagazine.com/2021/08/http3-core-concepts-part1/