HTTP/3๋Š” ์™œ UDP๋ฅผ ์„ ํƒํ•œ ๊ฒƒ์ผ๊นŒ?

    HTTP/3๋Š” ์™œ UDP๋ฅผ ์„ ํƒํ•œ ๊ฒƒ์ผ๊นŒ?


    HTTP/3๋Š” HTTP(Hypertext Transfer Protocol)์˜ ์„ธ ๋ฒˆ์งธ ๋ฉ”์ด์ € ๋ฒ„์ „์œผ๋กœ, ๊ธฐ์กด์˜ HTTP/1, HTTP/2์™€๋Š” ๋‹ค๋ฅด๊ฒŒ UDP ๊ธฐ๋ฐ˜์˜ ํ”„๋กœํ† ์ฝœ์ธ QUIC์„ ์‚ฌ์šฉํ•˜์—ฌ ํ†ต์‹ ํ•˜๋Š” ํ”„๋กœํ† ์ฝœ์ด๋‹ค. HTTP/3์™€ ๊ธฐ์กด HTTP ๋“ค๊ณผ ๊ฐ€์žฅ ํฐ ์ฐจ์ด์ ์ด๋ผ๋ฉด TCP๊ฐ€ ์•„๋‹Œ UDP ๊ธฐ๋ฐ˜์˜ ํ†ต์‹ ์„ ํ•œ๋‹ค๋Š” ๊ฒƒ์ด๋‹ค.

    ํ•„์ž๋Š” ์ตœ๊ทผ์— ๋‹ค๋ฅธ ๋ถ„๋“ค์ด ๊ณต์œ ํ•ด์ฃผ์‹œ๋Š” ํฌ์ŠคํŒ…์„ ๋ณด๊ณ  ๋‚˜์„œ HTTP/3๊ฐ€ ๋‚˜์™”๋‹ค๋Š” ๊ฒƒ์„ ์ฒ˜์Œ ์•Œ๊ฒŒ ๋˜์—ˆ๋‹ค. ๊ทธ ํฌ์ŠคํŒ…์€ HTTP/3: the past, the present, and the future๋ผ๋Š” ํฌ์ŠคํŒ…์ด์—ˆ๋Š”๋ฐ, ์†”์งํžˆ ์ฒ˜์Œ ๋”ฑ ์ œ๋ชฉ๋งŒ ๋ณด๊ณ ๋‚˜์„œ ์ด๋Ÿฐ ์ƒ๊ฐ์„ ํ–ˆ์—ˆ๋‹ค.

    ์•„๋‹ˆ, HTTP/2๊ฐ€ ๊ณต๊ฐœ๋œ์ง€ 4๋…„ ์ •๋„ ๋ฐ–์— ์•ˆ ์ง€๋‚ฌ๋Š”๋ฐ ๋ฌด์Šจ HTTP/3๊ฐ€ ๋ฒŒ์จ ๋‚˜์™€? ๊ทธ๋ƒฅ ์„ค๊ณ„ํ•˜๊ณ  ์žˆ๋‹ค๋Š” ๊ฑฐ ์•„๋‹ˆ์•ผ?

    ๊ทธ๋Ÿฐ๋ฐ ํฌ์ŠคํŒ…์„ ์ฝ์–ด ๋ณด๋‹ˆ ์ด๋ฏธ Google Chrome์€ HTTP/3๋ฅผ ์ง€์›ํ•˜๋Š” ์นด๋‚˜๋ฆฌ ๋นŒ๋“œ๋„ ๋ฐฐํฌ๋˜์–ด ์žˆ์–ด์„œ ์‹ค์ œ๋กœ ์‚ฌ์šฉ๊นŒ์ง€ ํ•ด๋ณผ ์ˆ˜ ์žˆ๋Š” ๋‹จ๊ณ„์— ๋„๋‹ฌํ–ˆ๋‹ค๋Š” ์‚ฌ์‹ค์„ ์•Œ๊ฒŒ ๋˜์–ด ๋†€๋ž๋‹ค. HTTP/1์—์„œ HTTP/2๋กœ ๊ฐ€๋Š” ๋ฐ๋งŒ ํ•ด๋„ ๋Œ€๋žต 15๋…„ ์ •๋„์˜ ์‹œ๊ฐ„์ด ๊ฑธ๋ ธ๋Š”๋ฐ, ๊ณ ์ž‘ 4๋…„ ๋งŒ์— ๋ฐ”๋กœ ์‚ฌ์šฉํ•ด๋ณผ ์ˆ˜ ์žˆ๋Š” ์ •๋„์˜ ์™„์„ฑ๋„์ธ ๋‹ค์Œ ๋ฉ”์ด์ € ๋ฒ„์ „์ด ๋ฐฐํฌ๋˜์—ˆ๋‹ค๋Š” ๊ฒƒ์ด๋‹ค.

    ๊ฒŒ๋‹ค๊ฐ€ ์•„์ง ์ „ ์„ธ๊ณ„์˜ HTTP/2 ์ ์œ ์œจ์„ ๋ณด๋ฉด 40% ์ •๋„ ๋ฐ–์— ์•ˆ๋œ๋‹ค. ๊ทธ ์ •๋„๋กœ HTTP/2๊ฐ€ ๋‚˜์˜จ์ง€๋„ ์–ผ๋งˆ ๋˜์ง€ ์•Š์•˜๋‹ค๋Š” ๊ฒƒ์ด๋‹ค.

    ce http2 W3Techs.com에서 조사한 2019년 8월 HTTP/2 사용률

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

    ์•„๋ฌด๋ฆฌ ์š”์ฆ˜ ๊ธฐ์ˆ ์˜ ๋ณ€ํ™”๊ฐ€ ๋น ๋ฅด๋‹ค์ง€๋งŒ, HTTP๋Š” ๋‚˜๋ฆ„ ์›น์˜ ๊ทผ๊ฐ„์ด ๋˜๋Š” ํ”„๋กœํ† ์ฝœ์ธ๋ฐ ๊ผด๋ž‘ 4๋…„ ๋งŒ์— ์ด๋Ÿฐ ๊ธ‰๊ฒฉํ•œ ๋ณ€ํ™”๊ฐ€ ์ผ์–ด๋‚ฌ๋‹ค๋Š” ๊ฒŒ ๋†€๋ผ์šธ ๋”ฐ๋ฆ„์ด๋‹ค. (๋ช‡ ๋‹ฌ ์ „์— HTTP/2๋ฅผ ์ฒ˜์Œ ๋„์ž…ํ•ด๋ณธ ์›น ๊ฐœ๋ฐœ์ž๋Š” ์›๋‹ˆ๋‹ค)

    ๊ทธ๋ฆฌ๊ณ  ๋˜ ํ•œ๊ฐ€์ง€ ๋†€๋ž๋˜ ์ ์€ HTTP/3๋Š” TCP๊ฐ€ ์•„๋‹Œ UDP๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค๋Š” ๊ฒƒ์ด์—ˆ๋‹ค. ๋ญ ๋”ฑํžˆ ์›น ํ”„๋กœํ† ์ฝœ์ด ๋ฌด์กฐ๊ฑด TCP๋งŒ ์‚ฌ์šฉํ•ด์•ผ ํ•œ๋‹ค๋Š” ๋ฒ•์ด ์žˆ๋Š” ๊ฑด ์•„๋‹ˆ๊ธด ํ•˜์ง€๋งŒ, ํ•™๊ต์—์„œ ๋ฐฐ์šธ ๋•Œ๋„ ๊ทธ๋ ‡๊ณ  ์‹ค๋ฌด์—์„œ๋„ ์‹ค์ œ๋กœ ์‚ฌ์šฉํ•  ๋•Œ๋„ ๊ทธ๋ ‡๊ณ  HTTP๋Š” TCP ์œ„์—์„œ ์ •์˜๋œ ํ”„๋กœํ† ์ฝœ์ด๋ผ๋Š” ์‚ฌ์‹ค์ด ๋„ˆ๋ฌด ๋‹น์—ฐํ•˜๊ฒŒ ์ธ์‹๋˜์–ด ์žˆ์—ˆ๊ธฐ ๋•Œ๋ฌธ์— UDP๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค๋Š” ์ ์ด ์‹ ๊ธฐํ•˜๊ธฐ๋„ ํ–ˆ๊ณ  โ€œ์™œ ๋ฉ€์ฉกํžˆ ์ž˜ ๋Œ์•„๊ฐ€๋Š” TCP๋ฅผ ๋ƒ…๋‘๊ณ  UDP๋ฅผ ์‚ฌ์šฉํ•˜๋Š”๊ฑฐ์ง€?โ€๋ผ๋Š” ์˜๋ฌธ๋„ ๋“ค์—ˆ๋‹ค.

    ์‚ฌ์‹ค HTTP/3๋Š” ์ •์‹์œผ๋กœ ๋ฐฐํฌ๋œ ํ”„๋กœํ† ์ฝœ์ด๋ผ๊ธฐ๋ณด๋‹ค ์•„์ง ํ…Œ์ŠคํŠธ๋ฅผ ๊ฑฐ์น˜๊ณ  ์žˆ๋Š” ๋‹จ๊ณ„๋ผ๊ณ  ๋ณด๋Š” ๊ฒŒ ๋งž๋‹ค. ํ•˜์ง€๋งŒ ์œ„์—์„œ ์ด์•ผ๊ธฐ ํ–ˆ๋“ฏ์ด Google Chrome์€ ์ด๋ฏธ HTTP/3๋ฅผ ์ง€์›ํ•˜๋Š” ์นด๋‚˜๋ฆฌ ๋นŒ๋“œ๋ฅผ ๋ฐฐํฌํ•œ ์ƒํƒœ์ด๊ณ , Mozila Firefox๋„ ์กฐ๋งŒ๊ฐ„ Nightly ๋ฒ„์ „์—์„œ HTTP/3๋ฅผ ์ง€์›ํ•  ์˜ˆ์ •์ด๋ฉฐ, cURL์—์„œ๋„ HTTP/3๋ฅผ ์‹คํ—˜์  ๊ธฐ๋Šฅ์œผ๋กœ ์ œ๊ณตํ•˜๊ณ  ์žˆ๋Š” ๋งŒํผ ๊ฐ€๊นŒ์šด ๋ฏธ๋ž˜ ์•ˆ์— HTTP/3๊ฐ€ ๋ฉ”์ธ ํ”„๋กœํ† ์ฝœ์ด ๋  ๊ฐ€๋Šฅ์„ฑ์ด ๋†’์€ ๊ฒƒ๋„ ์‚ฌ์‹ค์ด๋‹ค.

    ๋งŒ์•ฝ Google Chrome์—์„œ HTTP/3 ํ”„๋กœํ† ์ฝœ์„ ์‚ฌ์šฉํ•ด๋ณด๊ณ  ์‹ถ๋‹ค๋ฉด ํ„ฐ๋ฏธ๋„์—์„œ --enable-quic๊ณผ --quic-version=h3-23 ์ธ์ž๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์‹คํ–‰ํ•˜๋ฉด ๋œ๋‹ค.

    $ open -a Google\ Chrome --args --enable-quic --quic-version=h3-23
    http3 demo http/2+quic/46이라고 되어있는 녀석들이 HTTP/3 프로토콜을 사용한 연결이다

    ํ•„์ž๋Š” ์›น ๊ฐœ๋ฐœ์ž์ด๊ธฐ ๋•Œ๋ฌธ์— HTTP๊ฐ€ ๋ฉ”์ด์ € ์—…๋ฐ์ดํŠธ ๋œ๋‹ค๋Š” ์‚ฌ์‹ค์„ ๊ทธ๋ƒฅ ๋„˜๊ธฐ๊ธฐ๋Š” ํž˜๋“ค์—ˆ๊ณ , UDP๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค๋Š” ๊ฒƒ์ด ๋ญ˜ ์˜๋ฏธํ•˜๋Š”์ง€๋„ ๊ถ๊ธˆํ•˜๊ธฐ๋„ ํ•ด์„œ ๊ฒฐ๊ตญ HTTP/3์— ๋Œ€ํ•œ ์กฐ์‚ฌ๋ฅผ ํ•˜๊ฒŒ ๋˜์—ˆ๋‹ค. ๊ทธ๋ž˜์„œ ์ด๋ฒˆ ํฌ์ŠคํŒ…์—์„œ๋Š” ํ•„์ž๊ฐ€ ์—ฌ๊ธฐ์ €๊ธฐ ์‘ค์…”๋ณด๋ฉด์„œ ์•Œ์•„๋ณธ HTTP/3์— ๋Œ€ํ•œ ๋‚ด์šฉ์„ ์ •๋ฆฌํ•ด๋ณผ๊นŒ ํ•œ๋‹ค.

    HTTP/3์— ๋Œ€ํ•œ ๊ฐ„๋‹จํ•œ ์†Œ๊ฐœ

    ์‚ฌ์‹ค HTTP/3๋Š” ์ฒ˜์Œ์—๋Š” HTTP-over-QUIC์ด๋ผ๋Š” ์ด๋ฆ„์„ ๊ฐ€์ง€๊ณ  ์žˆ์—ˆ๋Š”๋ฐ, IETF(Internet Engineering Task Force) ๋‚ด HTTP ์ž‘์—… ๊ทธ๋ฃน๊ณผ QUIC ์ž‘์—… ๊ทธ๋ฃน์˜ ์˜์žฅ์ธ ๋งˆํฌ ๋…ธํŒ…์—„์ด ์ด ํ”„๋กœํ† ์ฝœ์˜ ์ด๋ฆ„์„ HTTP/3๋กœ ๋ณ€๊ฒฝํ•  ๊ฒƒ์„ ์ œ์•ˆํ–ˆ๊ณ , 2018๋…„ 11์›”์— ์ด ์ œ์•ˆ์ด ํ†ต๊ณผ๋˜์–ด HTTP-over-QUIC์ด๋ผ๋Š” ์ด๋ฆ„์—์„œ HTTP/3์œผ๋กœ ๋ณ€๊ฒฝ๋˜๊ฒŒ ๋˜์—ˆ๋‹ค.

    ์ฆ‰, HTTP/3๋Š” QUIC์ด๋ผ๋Š” ํ”„๋กœํ† ์ฝœ ์œ„์—์„œ ๋Œ์•„๊ฐ€๋Š” HTTP์ธ ๊ฒƒ์ด๋‹ค. QUIC์€ Quick UDP Internet Connection์˜ ์•ฝ์ž๋กœ, ๋ง ๊ทธ๋Œ€๋กœ UDP๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ธํ„ฐ๋„ท ์—ฐ๊ฒฐ์„ ํ•˜๋Š” ํ”„๋กœํ† ์ฝœ์ด๋‹ค.(์ฐธ๊ณ ๋กœ ๋ฐœ์Œ์€ ๊ทธ๋ƒฅ ํ€ต์ด๋ผ๊ณ  ํ•œ๋‹ค)

    HTTP/3๋Š” QUIC์„ ์‚ฌ์šฉํ•˜๊ณ , QUIC์€ UDP๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๊ฒฐ๊ณผ์ ์œผ๋กœ HTTP/3๋Š” UDP๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค ๋ผ๊ณ  ์ด์•ผ๊ธฐ ํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์ด๋‹ค.

    ๊ทธ๋ ‡๋‹ค๋ฉด QUIC์ด ๋„๋Œ€์ฒด ๋ญ๊ธธ๋ž˜ ๊ธฐ์กด์˜ TCP๋ณด๋‹ค ๋” ๋น ๋ฅธ ์ „์†ก ์†๋„๋ฅผ ๊ฐ€์งˆ ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์ผ๊นŒ? ๊ทธ ์ด์œ ๋ฅผ ์•Œ๋ ค๋ฉด ๋จผ์ € TCP๊ฐ€ ์™œ ๋А๋ฆฌ๋‹ค๊ณ  ํ•˜๋Š”์ง€, UDP๋ฅผ ์‚ฌ์šฉํ•จ์œผ๋กœ์จ ์–ด๋–ค ์ด๋“์„ ์–ป์„ ์ˆ˜ ์žˆ๋Š”์ง€ ๋ถ€ํ„ฐ ์•Œ์•„์•ผ ํ•œ๋‹ค.

    TCP๊ฐ€ ์™œ ๋А๋ฆฌ๋‹ค๊ณ  ํ•˜๋Š” ๊ฑธ๊นŒ?

    ํ•„์ž๋Š” ํ•™๊ต์—์„œ ๋„คํŠธ์›Œํฌ ๊ฐ•์˜๋ฅผ ๋“ค์„ ๋•Œ TCP์™€ UDP์˜ ์ฐจ์ด์— ๋Œ€ํ•œ ๋‚ด์šฉ์„ ์ฒ˜์Œ ๋ฐฐ์› ์—ˆ๋Š”๋ฐ, ๊ต์ˆ˜๋‹˜์ด ์ด๊ฑด ๋ฐ˜๋“œ์‹œ ์‹œํ—˜์— ๋‚˜์˜จ๋‹ค๊ธธ๋ž˜ ์ด๋Ÿฐ ํ‘œ๋ฅผ ๋ณด๋ฉด์„œ ์—ด์‹ฌํžˆ ์™ธ์› ๋˜ ๊ธฐ์–ต์ด ๋‚œ๋‹ค.

    TCP UDP
    ์—ฐ๊ฒฐ ๋ฐฉ์‹ ์—ฐ๊ฒฐํ˜• ์„œ๋น„์Šค ๋น„์—ฐ๊ฒฐํ˜• ์„œ๋น„์Šค
    ํŒจํ‚ท ๊ตํ™˜ ๊ฐ€์ƒ ํšŒ์„  ๋ฐฉ์‹ ๋ฐ์ดํ„ฐ๊ทธ๋žจ ๋ฐฉ์‹
    ์ „์†ก ์ˆœ์„œ ๋ณด์žฅ ๋ณด์žฅํ•จ ๋ณด์žฅํ•˜์ง€ ์•Š์Œ
    ์‹ ๋ขฐ์„ฑ ๋†’์Œ ๋‚ฎ์Œ
    ์ „์†ก ์†๋„ ๋А๋ฆผ ๋น ๋ฆ„

    ์œ„ ํ‘œ๋ฅผ ๋ณด๋ฉด ๋Œ€๋žต TCP๋Š” ์‹ ๋ขฐ์„ฑ์ด ๋†’๊ณ  ๋А๋ฆฌ๋‹ค, UDP๋Š” ์‹ ๋ขฐ์„ฑ์ด ๋‚ฎ๊ณ  ๋น ๋ฅด๋‹ค ์ •๋„๋กœ ์ •๋ฆฌ๊ฐ€ ๋˜๋Š”๋ฐ, ์—ฌ๊ธฐ์„œ ๋งํ•˜๋Š” ์‹ ๋ขฐ์„ฑ์ด๋ž€ ์ „์†ก๋˜๋Š” ๋ฐ์ดํ„ฐ ํŒจํ‚ท๋“ค์˜ ์ˆœ์„œ, ํŒจํ‚ท ์œ ์‹ค ์—ฌ๋ถ€ ๋“ฑ์„ ๊ฒ€์‚ฌํ•˜์—ฌ ์†ก์‹  ์ธก์ด ๋ณด๋‚ธ ๋ชจ๋“  ๋ฐ์ดํ„ฐ๊ฐ€ ์ˆ˜์‹  ์ธก์— ์˜จ์ „ํ•˜๊ฒŒ ์ „๋‹ฌ์ด ๋  ์ˆ˜ ์žˆ๋А๋ƒ๋ฅผ ๋งํ•˜๋Š” ๊ฒƒ์ด๋‹ค.

    TCP๋Š” ํด๋ผ์ด์–ธํŠธ์™€ ์„œ๋ฒ„๊ฐ€ ์„œ๋กœ ์‹ ๋ขฐ์„ฑ์žˆ๋Š” ํ†ต์‹ ์„ ํ•  ์ˆ˜ ์žˆ๋„๋ก ๋ช‡ ๊ฐ€์ง€ ๋ฐฉ๋ฒ•์„ ์‚ฌ์šฉํ•˜๊ฒŒ๋˜๋Š”๋ฐ, ์ด ๋ฐฉ๋ฒ•๋“ค ๋˜ํ•œ ๊ฒฐ๊ตญ์€ ํด๋ผ์ด์–ธํŠธ์™€ ์„œ๋ฒ„ ๊ฐ„์˜ ํ†ต์‹ ์ด๊ธฐ ๋•Œ๋ฌธ์— ๋ ˆ์ดํ„ด์‹œ๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ๋ฐ–์— ์—†๋‹ค. ๊ฒŒ๋‹ค๊ฐ€ ์ด ๊ณผ์ •์€ TCP๋ผ๋Š” ํ”„๋กœํ† ์ฝœ์ด ์ƒ๊ธธ ๋•Œ๋ถ€ํ„ฐ ์ •์˜๋œ ํ‘œ์ค€์ด๋ฏ€๋กœ ๋ฌด์‹œํ•  ์ˆ˜๋„ ์—†๋‹ค.

    ๊ทธ๋ ‡๋‹ค๋ฉด ๋ ˆ์ดํ„ด์‹œ๋ฅผ ์ค„์ด๊ธฐ ์œ„ํ•ด์„œ๋Š” TCP์—์„œ ์ •์˜ํ•œ ๊ธฐ๋Šฅ ์™ธ์— ๋‹ค๋ฅธ ๋ถ€๋ถ„๋“ค์„ ๊ฑด๋“œ๋ ค์•ผ ํ•œ๋‹ค๋Š” ๊ฒƒ์ธ๋ฐ, ์—ฌ๋Ÿฌ๋ชจ๋กœ ์ œํ•œ ์‚ฌํ•ญ์ด ๋งŽ๋‹ค. ์•„๋ฌด๋ฆฌ ํšŒ์„ ์˜ ๋Œ€์—ญํญ์„ ๋Š˜๋ฆฐ๋‹ค๊ณ  ํ•ด๋„ ๊ธฐ์ˆ ์ด ๋ฐœ์ „ํ•˜๋ฉด์„œ ์ „์†กํ•ด์•ผํ•˜๋Š” ๋ฐ์ดํ„ฐ์˜ ํฌ๊ธฐ๋„ ์ ์  ์ปค์ง€๊ธฐ ๋•Œ๋ฌธ์— ๊ฒฐ๊ตญ ์–ธ์  ๊ฐ€๋Š” ๋˜ ๋А๋ ค์งˆ ๊ฒƒ์ด๊ณ , ํšŒ์„ ์˜ ์ „์†ก ์†๋„ ์ž์ฒด๋ฅผ ๋†’ํžŒ๋‹ค๊ณ  ํ•ด๋„ ๊ฒฐ๊ตญ์€ ๋น›์˜ ์†๋„ ๋ณด๋‹ค ๋น ๋ฅด๊ฒŒ ์ „์†กํ•  ์ˆ˜ ์—†๊ธฐ ๋•Œ๋ฌธ์— ํ•œ๊ณ„๊ฐ€ ์žˆ๋‹ค.

    HTTP/3์ด UDP ๊ธฐ๋ฐ˜์ธ QUIC ํ”„๋กœํ† ์ฝœ์„ ์‚ฌ์šฉํ•˜๋Š” ์ด์œ ๊ฐ€ ๋ฐ”๋กœ ์ด๋Ÿฐ ์ œ์•ฝ ์กฐ๊ฑด์„ ๋›ฐ์–ด๋„˜๊ธฐ ์œ„ํ•ด ํ”„๋กœํ† ์ฝœ ์ž์ฒด๋ฅผ ์†๋ณด๋Š” ๋ฐฉ๋ฒ•์„ ํƒํ•œ ๊ฒƒ์ด๋‹ค. ํ•˜์ง€๋งŒ TCP๋Š” ์›Œ๋‚™ ์˜ค๋ž˜๋œ ํ”„๋กœํ† ์ฝœ์ด๊ธฐ๋„ ํ•˜๊ณ  ์ปค๋„๊นŒ์ง€ ๋‚ด๋ ค๊ฐ€๋Š” ๋กœ์šฐ ๋ ˆ๋ฒจ์—์„œ ์ •์˜๋˜์–ด ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์ด๊ฑธ ๋œฏ์–ด๊ณ ์น˜๋Š” ๊ฒƒ๋„ ๋งŒ๋งŒ์น˜ ์•Š์€ ๋Œ€์ž‘์—…์ด๋ผ UDP๋ฅผ ์„ ํƒํ•œ ๊ฒƒ์ด๋‹ค.

    ๊ทธ๋Ÿผ ํ•œ๋ฒˆ TCP๊ฐ€ ์‹ ๋ขฐ์„ฑ ์žˆ๋Š” ํ†ต์‹ ์„ ์œ„ํ•ด ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•๋“ค์ด ์™œ ๋А๋ฆฌ๋‹ค๊ณ  ํ•˜๋Š”์ง€ ์•Œ์•„๋ณด์ž.

    3 Way Handshake

    TCP๋Š” ๊ต‰์žฅํžˆ ์นœ์ ˆํ•œ ํ”„๋กœํ† ์ฝœ์ด๋‹ค. ํ†ต์‹ ์„ ์‹œ์ž‘ํ•  ๋•Œ์™€ ์ข…๋ฃŒํ•  ๋•Œ ์„œ๋กœ ์ค€๋น„๊ฐ€ ๋˜์–ด์žˆ๋Š”์ง€๋ฅผ ๋ฐ˜๋“œ์‹œ ๋จผ์ € ๋ฌผ์–ด๋ณด๊ณ  ํŒจํ‚ท์„ ์ „์†กํ•  ์ˆœ์„œ๋ฅผ ์ •ํ•˜๊ณ  ๋‚˜์„œ์•ผ ๋ณธ๊ฒฉ์ ์ธ ํ†ต์‹ ์„ ์‹œ์ž‘ํ•˜๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

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

    3way handshake 통신을 시작할 때 3 Way Handshake를 하는 과정

    ์œ„ ๊ทธ๋ฆผ์„ ๋ณด๋ฉด ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์ฒ˜์Œ ์„œ๋ฒ„์™€ ํ†ต์‹ ์„ ํ•˜๊ธฐ ์œ„ํ•ด TCP ์—ฐ๊ฒฐ์„ ์ƒ์„ฑํ•  ๋•Œ SYN์™€ ACK์ด๋ผ๋Š” ํŒจํ‚ท์„ ์ฃผ๊ณ  ๋ฐ›๊ณ  ์žˆ๋‹ค. ์ด ํŒจํ‚ท ๋‚ด๋ถ€์— ๋“ค์–ด์žˆ๋Š” ๊ฐ’๋“ค์„ ์‚ฌ์šฉํ•˜์—ฌ ํด๋ผ์ด์–ธํŠธ์™€ ์„œ๋ฒ„๊ฐ€ ์„œ๋กœ ๋ณด๋‚ธ ํŒจํ‚ท์˜ ์ˆœ์„œ์™€ ํŒจํ‚ท์„ ์ œ๋Œ€๋กœ ๋ฐ›์•˜๋Š” ์ง€๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์ด๋‹ค.

    ๊ทธ๋ฆฌ๊ณ  ์ด ๊ณผ์ •์—๋Š” ์ด 3๋ฒˆ์˜ ํ†ต์‹ ์ด ํ•„์š”ํ•˜๋‹ค. OSX๋‚˜ Linux๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๋Š” ๋ถ„์ด๋ผ๋ฉด ํ„ฐ๋ฏธ๋„์—์„œ tcpdump ์œ ํ‹ธ๋ฆฌํ‹ฐ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ด ๊ณผ์ •์„ ์ง์ ‘ ๋ˆˆ์œผ๋กœ ํ™•์ธํ•ด๋ณผ ์ˆ˜ ์žˆ๋‹ค.

    ๋‹จ, tcpdump๋ฅผ ์•„๋ฌด ์˜ต์…˜ ์—†์ด ์‚ฌ์šฉํ•˜๋ฉด ๋””๋ฐ”์ด์Šค์˜ ๋ชจ๋“  ํŒจํ‚ท์„ ๊ฐ์‹œํ•˜๊ณ  ์ถœ๋ ฅํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์›ํ•˜๋Š” ์ •๋ณด๋ฅผ ์ฐพ๊ธฐ ํž˜๋“ค๋‹ค. ๊ทธ๋ž˜์„œ ํ•„์ž๋Š” ๋ฃจํ”„๋ฐฑ์—์„œ ๋™์ž‘ํ•˜๊ณ  ์žˆ๋Š” ๋ธ”๋กœ๊ทธ ์„œ๋ฒ„์™€์˜ ํ†ต์‹ ๋งŒ ์บก์ณํ•ด๋ณด์•˜๋‹ค.

    $ sudo tcpdump host localhost -i lo0
    IP localhost.53920 > localhost.terabase: Flags [S], seq 1260460927, win 65535
    IP localhost.terabase > localhost.53920: Flags [S.], seq 3009967847, ack 1260460928, win 65535
    IP localhost.53920 > localhost.terabase: Flags [.], ack 3009967848, win 6379

    ๋ณด๋‚ธ ๋†ˆ > ๋ฐ›์€ ๋†ˆ: Flags [ํ”Œ๋ž˜๊ทธ ์ข…๋ฅ˜], ํ—ค๋”์˜ ๊ฐ’๋“ค

    ์›๋ž˜๋Š” ์ด๊ฒƒ๋ณด๋‹ค ๋” ๋งŽ์€ ์ •๋ณด๊ฐ€ ๋‚˜์˜ค์ง€๋งŒ, ์—ฌ๊ธฐ์— ์ „๋ถ€ ๊ธฐ์žฌํ•˜๊ธฐ์—๋Š” ์–‘์ด ๋„ˆ๋ฌด ๋งŽ์œผ๋‹ˆ ์„ค๋ช…์— ํ•„์š”ํ•œ ์ •๋ณด๋งŒ ์ถ”๋ ค๋ณด์•˜๋‹ค. ์ด ๋กœ๊ทธ์—์„œ ์ค‘์š”ํ•œ ํ‚ค์›Œ๋“œ๋Š” Flag, seq, ack ์ •๋„์ด๋‹ค. ํ•œ๋ฒˆ ํ•˜๋‚˜ํ•˜๋‚˜ ๋œฏ์–ด๋ณด๋„๋ก ํ•˜์ž.

    ๋จผ์ € localhost.53920์€ ํด๋ผ์ด์–ธํŠธ, localhost.terabase๋Š” ์„œ๋ฒ„๋ฅผ ์˜๋ฏธํ•œ๋‹ค. ๊ฐ ๋ผ์ธ์˜ ์ฒซ๋ฒˆ์งธ ํ•„๋“œ๋Š” ๋ณด๋‚ธ ๋†ˆ > ๋ฐ›์€ ๋†ˆ์„ ์˜๋ฏธํ•˜๊ณ  ์žˆ์œผ๋‹ˆ, ์ฒซ ํŒจํ‚ท์€ ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์„œ๋ฒ„์—๊ฒŒ, ๋‘ ๋ฒˆ์งธ ํŒจํ‚ท์€ ์„œ๋ฒ„๊ฐ€ ํด๋ผ์ด์–ธํŠธ์—๊ฒŒ ๋ณด๋‚ธ ๊ฒƒ์ด๋ผ๊ณ  ํ•  ์ˆ˜ ์žˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๊ฐ ๋ผ์ธ์—๋Š” Flag๋ผ๋Š” ๊ฒƒ์ด ๋ถ™์–ด์žˆ๋Š”๋ฐ, ํ”Œ๋ž˜๊ทธ๋Š” ์ด ํŒจํ‚ท์ด ์–ด๋–ค ํƒ€์ž…์˜ ํŒจํ‚ท์ธ์ง€๋ฅผ ์•Œ๋ ค์ฃผ๋Š” ์—ญํ• ์„ ํ•œ๋‹ค.

    Flag ์ด๋ฆ„ ์˜๋ฏธ
    S SYN ์—ฐ๊ฒฐ์„ ์ƒ์„ฑํ•  ๋•Œ ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์„œ๋ฒ„์— ์‹œํ€€์Šค ๋ฒˆํ˜ธ๋ฅผ ๋ณด๋‚ด๋Š” ํŒจํ‚ท
    S. SYN-ACK ์‹œํ€€์Šค ๋ฒˆํ˜ธ๋ฅผ ๋ฐ›์€ ์„œ๋ฒ„๊ฐ€ ACK ๊ฐ’์„ ์ƒ์„ฑํ•˜์—ฌ ํด๋ผ์ด์–ธํŠธ์—๊ฒŒ ์‘๋‹ตํ•˜๋Š” ํŒจํ‚ท
    . ACK ACK ๊ฐ’์„ ์‚ฌ์šฉํ•˜์—ฌ ์‘๋‹ตํ•˜๋Š” ํŒจํ‚ท

    ์ด ํ†ต์‹  ๊ณผ์ •์„ ๊ฑฐ์น˜๊ณ  ๋‚˜๋ฉด ํด๋ผ์ด์–ธํŠธ์™€ ์„œ๋ฒ„๋Š” ์‹ ๋ขฐ์„ฑ ์žˆ๋Š” TCP ์—ฐ๊ฒฐ์„ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ๊ณ , ์ด๋•Œ ์ด 3ํšŒ์˜ ํ†ต์‹ ์„ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— 3 Way Handshake๋ผ๊ณ  ํ•˜๋Š” ๊ฒƒ์ด๋‹ค.

    ๊ทธ๋ ‡๋‹ค๋ฉด ์ด ๊ณผ์ •์—์„œ ์–ด๋–ค ์ผ์ด ๋ฒŒ์–ด์ง€๊ธธ๋ž˜ ์‹ ๋ขฐ์„ฑ ์žˆ๋Š” ์—ฐ๊ฒฐ์„ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์ผ๊นŒ? ์กฐ๊ธˆ ๋” ์ž์„ธํžˆ ๋“ค์—ฌ๋‹ค๋ณด๋ฉด ํด๋ผ์ด์–ธํŠธ์™€ ์„œ๋ฒ„๋Š” 3 Way Handshake๋ฅผ ํ•  ๋•Œ ๋Œ€๋žต ์ด๋Ÿฐ ๊ณผ์ •์„ ๊ฑฐ์น˜๊ณ  ์žˆ๋‹ค.

    1๋ฒˆ ๋ผ์ธ: ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์„œ๋ฒ„๋กœ ์‹œํ€€์Šค ๋ฒˆํ˜ธ๋ฅผ seq ํ•„๋“œ์— ๋‹ด์•„ ๋ณด๋ƒ„
    2๋ฒˆ ๋ผ์ธ: ์„œ๋ฒ„๋Š” ํด๋ผ์ด์–ธํŠธ๊ฐ€ ๋ณด๋‚ด์ค€ ์‹œํ€€์Šค ๋ฒˆํ˜ธ๋ฅผ 1 ์ฆ๊ฐ€์‹œ์ผœ์„œ ack ํ•„๋“œ์— ๋‹ด์•„ ๋ณด๋ƒ„
    3๋ฒˆ ๋ผ์ธ: ํด๋ผ์ด์–ธํŠธ๋Š” ๋‹ค์‹œ ์„œ๋ฒ„๋กœ๋ถ€ํ„ฐ ๋ฐ›์€ ์‹œํ€€์Šค ๋ฒˆํ˜ธ๋ฅผ 1 ์ฆ๊ฐ€์‹œ์ผœ์„œ ์ž์‹ ์˜ ack ํ•„๋“œ์— ๋‹ด์•„ ๋ณด๋ƒ„

    ์ƒˆ๋กœ์šด TCP ์—ฐ๊ฒฐ์„ ์ƒ์„ฑํ•˜๊ณ ์ž ํ•  ๋•Œ ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์„œ๋ฒ„์—๊ฒŒ ๋žœ๋คํ•œ ์‹œํ€€์Šค ๋ฒˆํ˜ธ๋ฅผ ์ „์†กํ•จ์œผ๋กœ์จ 3 Way Handshake๊ฐ€ ์‹œ์ž‘๋œ๋‹ค. ์ด๋•Œ ์ƒ์„ฑ๋œ ์‹œํ€€์Šค ๋ฒˆํ˜ธ๋Š” ์ดํ›„ ์†ก์‹  ์ธก์ด ์ „์†กํ•œ ํŒจํ‚ท์„ ์ˆ˜์‹  ์ธก์ด ์žฌ์กฐ๋ฆฝํ• ๋•Œ ํŒจํ‚ท์˜ ์กฐ๋ฆฝ ์ˆœ์„œ๋ฅผ ์•Œ๋ ค์ฃผ๋Š” ์—ญํ• ์„ ํ•œ๋‹ค.

    ์ด๋•Œ ํด๋ผ์ด์–ธํŠธ์™€ ์„œ๋ฒ„๋Š” ์ƒ๋Œ€๋ฐฉ์ด ๋ณด๋‚ด์ค€ seq(์‹œํ€€์Šค ๋ฒˆํ˜ธ)๋ฅผ 1 ์ฆ๊ฐ€ ์‹œํ‚จ ํ›„ ์ž์‹ ์˜ ack(์Šน์ธ ๋ฒˆํ˜ธ) ํ•„๋“œ์— ๋‹ด์•„์„œ ๋ณด๋‚ด๋Š”๋ฐ, โ€œ์ง€๊ธˆ ์ด ํŒจํ‚ท์ด ๋‹ˆ๊ฐ€ ์ „์— ๋ณด๋‚ธ ์‹œํ€€์Šค ๋ฒˆํ˜ธ์˜ ๋‹ค์Œ์œผ๋กœ ์ด์–ด์ง€๋Š” ํŒจํ‚ท์ด์•ผโ€๋ผ๊ณ  ๋งํ•˜๊ณ  ์žˆ๋Š” ๊ฒƒ์ด๋‹ค.

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

    ์ฆ‰, TCP๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์ด์ƒ ๋ณธ๊ฒฉ์ ์ธ ํ†ต์‹ ์„ ์‹œ์ž‘ํ•˜๊ธฐ ์ „์— ๋ฌด์กฐ๊ฑด ์ € ๋ฒˆ๊ฑฐ๋กœ์šด ํ†ต์‹  ๊ณผ์ •์„ ๊ฑฐ์ณ์•ผํ•œ๋‹ค๋Š” ๊ฒƒ์ด๋‹ค.

    HTTP/1์€ ํ•˜๋‚˜์˜ TCP ์—ฐ๊ฒฐ์— ํ•˜๋‚˜์˜ ์š”์ฒญ๋งŒ ์ฒ˜๋ฆฌํ•˜๊ณ  ์—ฐ๊ฒฐ์„ ๋Š์–ด๋ฒ„๋ ธ๊ธฐ ๋•Œ๋ฌธ์— ๋งค ์š”์ฒญ๋งˆ๋‹ค ์ด ๋ฒˆ๊ฑฐ๋กœ์šด ํ•ธ๋“œ์‰์ดํฌ๋ฅผ ๊ฑฐ์ณ์•ผ ํ–ˆ๋‹ค. ๊ทธ๋ž˜์„œ HTTP/2์—์„œ๋Š” ํ•ธ๋“œ์‰์ดํฌ๋ฅผ ์ตœ์†Œํ™”ํ•˜๊ธฐ ์œ„ํ•ด์„œ ๋‹จ์ผ TCP ์—ฐ๊ฒฐ์„ ์œ ์ง€ํ•˜๋ฉด์„œ ์—ฌ๋Ÿฌ ๊ฐœ์˜ ์š”์ฒญ์„ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋„๋ก ๋ณ€๊ฒฝ๋œ ๊ฒƒ์ด๋‹ค.

    ๊ฒฐ๊ตญ HTTP/1์—์„œ HTTP/2๋กœ ๋„˜์–ด๊ฐˆ ๋•Œ๋„ ํ•ธ๋“œ์‰์ดํฌ ๊ณผ์ • ์ž์ฒด๋Š” ๊ฑด๋“œ๋ฆฌ์ง€ ์•Š์•˜๊ณ  ๋‹จ์ง€ ํ•ธ๋“œ์‰์ดํฌ๊ฐ€ ๋ฐœ์ƒํ•˜๋Š” ํšŸ์ˆ˜๋ฅผ ์ตœ์†Œํ™”ํ•จ์œผ๋กœ์จ ๋ ˆ์ดํ„ด์‹œ๋ฅผ ์ค„์ธ ๊ฒƒ์ด๋‹ค. ์ด๋Š” TCP๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์ด์ƒ ํ•ธ๋“œ์‰์ดํฌ๊ฐ€ ๋ฐ˜๋“œ์‹œ ํ•„์š”ํ•œ ๊ณผ์ •์ด๊ธฐ ๋•Œ๋ฌธ์— ๊ฑด๋“œ๋ฆฌ์ง€ ๋ชปํ•œ ๊ฒƒ์ด๋‹ค.

    ๊ทธ๋Ÿฌ๋‚˜ HTTP/3๋Š” UDP๋ฅผ ์‚ฌ์šฉํ•จ์œผ๋กœ์จ ์ด ํ•ธ๋“œ์‰์ดํฌ ๊ณผ์ • ์ž์ฒด๋ฅผ ๋‚ ๋ ค๋ฒ„๋ฆฌ๊ณ  ๋‹ค๋ฅธ ๋ฐฉ๋ฒ•์œผ๋กœ ์—ฐ๊ฒฐ์˜ ์‹ ๋ขฐ์„ฑ์„ ํ™•๋ณดํ•จ์œผ๋กœ์จ ๋ ˆ์ดํ„ด์‹œ๋ฅผ ์ค„์ด๋Š” ๋ฐฉ๋ฒ•์„ ํƒํ–ˆ๋‹ค.

    HOLB(Head of line Blocking)

    ๊ทธ ์™ธ์—๋„ TCP๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ธฐ์กด์˜ HTTP์—๋Š” ํ•œ ๊ฐ€์ง€ ๋ฌธ์ œ๊ฐ€ ๋” ์žˆ๋Š”๋ฐ, ๋ฐ”๋กœ HOLB(Head of Line Blocking)์ด๋ผ๊ณ  ํ•˜๋Š” ๋ฌธ์ œ์ด๋‹ค. ์‚ฌ์‹ค HTTP ๋ ˆ๋ฒจ์—์„œ์˜ HOLB์™€ TCP ๋ ˆ๋ฒจ์—์„œ์˜ HOLB๋Š” ๋‹ค๋ฅธ ์˜๋ฏธ์ด๊ธฐ๋Š” ํ•˜๋‚˜ ๊ฒฐ๊ตญ ์–ด๋–ค ์š”์ฒญ์— ๋ณ‘๋ชฉ์ด ์ƒ๊ฒจ์„œ ์ „์ฒด์ ์ธ ๋ ˆ์ดํ„ด์‹œ๊ฐ€ ๋Š˜์–ด๋‚œ๋‹ค๋Š” ๋งฅ๋ฝ์œผ๋กœ ๋ณธ๋‹ค๋ฉด ๋™์ผํ•˜๋‹ค๊ณ  ํ•  ์ˆ˜ ์žˆ๋‹ค.

    TCP๋ฅผ ์‚ฌ์šฉํ•œ ํ†ต์‹ ์—์„œ ํŒจํ‚ท์€ ๋ฌด์กฐ๊ฑด ์ •ํ™•ํ•œ ์ˆœ์„œ๋Œ€๋กœ ์ฒ˜๋ฆฌ๋˜์–ด์•ผ ํ•œ๋‹ค. ์ˆ˜์‹  ์ธก์€ ์†ก์‹  ์ธก๊ณผ ์ฃผ๊ณ ๋ฐ›์€ ์‹œํ€€์Šค ๋ฒˆํ˜ธ๋ฅผ ์ฐธ๊ณ ํ•˜์—ฌ ํŒจํ‚ท์„ ์žฌ์กฐ๋ฆฝํ•ด์•ผํ•˜๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

    ๊ทธ๋ž˜์„œ ํ†ต์‹  ์ค‘๊ฐ„์— ํŒจํ‚ท์ด ์†์‹ค๋˜๋ฉด ์™„์ „ํ•œ ๋ฐ์ดํ„ฐ๋กœ ๋‹ค์‹œ ์กฐ๋ฆฝํ•  ์ˆ˜ ์—†๊ธฐ ๋•Œ๋ฌธ์— ์ ˆ๋Œ€๋กœ ๊ทธ๋ƒฅ ๋„˜์–ด๊ฐ€์ง€ ์•Š๋Š”๋‹ค. ๋ฌด์กฐ๊ฑด ์†ก์‹  ์ธก์€ ์ˆ˜์‹  ์ธก์ด ํŒจํ‚ท์„ ์ œ๋Œ€๋กœ ๋‹ค ๋ฐ›์•˜๋‹ค๋Š” ๊ฒƒ์„ ํ™•์ธํ•œ ํ›„, ๋งŒ์•ฝ ์ˆ˜์‹  ์ธก์ด ์ œ๋Œ€๋กœ ํŒจํ‚ท์„ ๋ฐ›์ง€ ๋ชปํ–ˆ์œผ๋ฉด ํ•ด๋‹น ํŒจํ‚ท์„ ๋‹ค์‹œ ๋ณด๋‚ด์•ผ ํ•œ๋‹ค.

    ๋˜ํ•œ ํŒจํ‚ท์ด ์ฒ˜๋ฆฌ๋˜๋Š” ์ˆœ์„œ ๋˜ํ•œ ์ •ํ•ด์ ธ์žˆ์œผ๋ฏ€๋กœ ์ด์ „์— ๋ฐ›์€ ํŒจํ‚ท์„ ํŒŒ์‹ฑํ•˜๊ธฐ ์ „๊นŒ์ง€๋Š” ๋‹ค์Œ ํŒจํ‚ท์„ ์ฒ˜๋ฆฌํ•  ์ˆ˜๋„ ์—†๋‹ค. ์ด๋ ‡๊ฒŒ ํŒจํ‚ท์ด ์ค‘๊ฐ„์— ์œ ์‹ค๋˜๊ฑฐ๋‚˜ ์ˆ˜์‹  ์ธก์˜ ํŒจํ‚ท ํŒŒ์‹ฑ ์†๋„๊ฐ€ ๋А๋ฆฌ๋‹ค๋ฉด ํ†ต์‹ ์— ๋ณ‘๋ชฉ์ด ๋ฐœ์ƒํ•˜๊ฒŒ ๋˜๋Š” ํ˜„์ƒ์„ HOLB๋ผ๊ณ  ๋ถ€๋ฅด๋Š” ๊ฒƒ์ด๋‹ค. ์ด๊ฑด TCP ์ž์ฒด์˜ ๋ฌธ์ œ์ด๋ฏ€๋กœ HTTP/1 ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ HTTP/2๋„ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ๋ฌธ์ œ์ด๋‹ค.

    ์ด๋Ÿฐ ๋ฌธ์ œ๋“ค์„ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด HTTP/3๋Š” UDP๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ๋งŒ๋“ค์–ด์ง„ ํ”„๋กœํ† ์ฝœ์ธ QUIC ์œ„์—์„œ ์ž‘๋™ํ•˜๋Š” ๊ฒƒ์„ ์„ ํƒํ•œ ๊ฒƒ์ด๋‹ค. ๊ทธ๋Ÿผ ์ด์ œ QUIC๊ฐ€ ์ •ํ™•ํžˆ ์–ด๋–ค ํ”„๋กœํ† ์ฝœ์ธ์ง€, UDP๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค๋Š” ๊ฒƒ์ด TCP์— ๋น„ํ•ด์„œ ์–ด๋–ค ์žฅ์ ์ด ์žˆ๋‹ค๋Š” ๊ฒƒ์ธ์ง€๋ฅผ ์•Œ์•„๋ณด์ž.

    HTTP/3๊ฐ€ UDP๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์ด์œ 

    HTTP/3๋Š” QUIC์„ ๊ธฐ๋ฐ˜์œผ๋กœ ๋Œ์•„๊ฐ€๋Š” ํ”„๋กœํ† ์ฝœ์ด๊ธฐ ๋•Œ๋ฌธ์— ์šฐ๋ฆฌ๊ฐ€ HTTP/3๋ฅผ ์ดํ•ดํ•˜๋ ค๋ฉด QUIC์— ์ดˆ์ ์„ ๋งž์ถฐ์•ผ ํ•œ๋‹ค. QUIC์€ TCP๊ฐ€ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ์ด๋Ÿฐ ๋ฌธ์ œ๋“ค์„ ํ•ด๊ฒฐํ•˜๊ณ  ๋ ˆ์ดํ„ด์‹œ์˜ ํ•œ๊ณ„๋ฅผ ๋›ฐ์–ด๋„˜๊ณ ์ž ๊ตฌ๊ธ€์ด ๊ฐœ๋ฐœํ•œ UDP ๊ธฐ๋ฐ˜์˜ ํ”„๋กœํ† ์ฝœ์ด๋‹ค.

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

    quic

    UDP๋Š” User Datagram Protocol์ด๋ผ๋Š” ์ด๋ฆ„์—์„œ๋„ ์•Œ ์ˆ˜ ์žˆ๋“ฏ์ด ๋ฐ์ดํ„ฐ๊ทธ๋žจ ๋ฐฉ์‹์„ ์‚ฌ์šฉํ•˜๋Š” ํ”„๋กœํ† ์ฝœ์ด๊ธฐ ๋•Œ๋ฌธ์— ์• ์ดˆ์— ๊ฐ๊ฐ์˜ ํŒจํ‚ท ๊ฐ„์˜ ์ˆœ์„œ๊ฐ€ ์กด์žฌํ•˜์ง€ ์•Š๋Š” ๋…๋ฆฝ์ ์ธ ํŒจํ‚ท์„ ์‚ฌ์šฉํ•œ๋‹ค. ๋˜ํ•œ ๋ฐ์ดํ„ฐ๊ทธ๋žจ ๋ฐฉ์‹์€ ํŒจํ‚ท์˜ ๋ชฉ์ ์ง€๋งŒ ์ •ํ•ด์ ธ์žˆ๋‹ค๋ฉด ์ค‘๊ฐ„ ๊ฒฝ๋กœ๋Š” ์–ด๋”œ ํƒ€๋“  ์‹ ๊ฒฝ์“ฐ์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ์ข…๋‹จ ๊ฐ„์˜ ์—ฐ๊ฒฐ ์„ค์ • ๋˜ํ•œ ํ•˜์ง€ ์•Š๋Š”๋‹ค. ์ฆ‰, ํ•ธ๋“œ์‰์ดํฌ ๊ณผ์ •์ด ํ•„์š”์—†๋‹ค๋Š” ๊ฒƒ์ด๋‹ค.

    ๊ฒฐ๋ก ์ ์œผ๋กœ UDP๋Š” TCP๊ฐ€ ์‹ ๋ขฐ์„ฑ์„ ํ™•๋ณดํ•˜๊ธฐ ์œ„ํ•ด ๊ฑฐ์น˜๋˜ ๋งŽ์€ ๊ณผ์ •์„ ๊ฑฐ์น˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ์†๋„๊ฐ€ ๋” ๋น ๋ฅผ ์ˆ˜ ๋ฐ–์— ์—†๋‹ค๋Š” ๊ฒƒ์ธ๋ฐ, ๊ทธ๋ ‡๋‹ค๋ฉด UDP๋ฅผ ์‚ฌ์šฉํ•˜๊ฒŒ๋˜๋ฉด ๊ธฐ์กด์˜ TCP๊ฐ€ ๊ฐ€์ง€๋˜ ์‹ ๋ขฐ์„ฑ๊ณผ ํŒจํ‚ท์˜ ๋ฌด๊ฒฐํ•จ๋„ ํ•จ๊ป˜ ์‚ฌ๋ผ์ง€๋Š” ๊ฑธ๊นŒ?

    ์•„๋‹ˆ ๊ทธ๋ ‡์ง€ ์•Š๋‹ค. UDP๋ฅผ ์‚ฌ์šฉํ•˜๋”๋ผ๋„ ๊ธฐ์กด์˜ TCP๊ฐ€ ๊ฐ€์ง€๊ณ  ์žˆ๋˜ ๊ธฐ๋Šฅ์„ ์ „๋ถ€ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ๋‹ค. UDP์˜ ์ง„์งœ ์žฅ์ ์€ ๋ฐ”๋กœ ์ปค์Šคํ„ฐ๋งˆ์ด์ง•์ด ์šฉ์ดํ•˜๋‹ค๋Š” ๊ฒƒ์ด๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

    UDP๋Š” ํ•˜์–€ ๋„ํ™”์ง€ ๊ฐ™์€ ํ”„๋กœํ† ์ฝœ์ด๋‹ค

    ํ•„์ž๋Š” ํ•™๊ต์—์„œ UDP์™€ TCP์˜ ๊ฐ€์žฅ ํฐ ์ฐจ์ด์ ์œผ๋กœ UDP๋Š” TCP๋ณด๋‹ค ์‹ ๋ขฐ์„ฑ์ด ์—†๋Š” ๋Œ€์‹  ๋น ๋ฅด๋‹ค๋ผ๊ณ  ๋ฐฐ์› ์—ˆ๋Š”๋ฐ, ์‚ฌ์‹ค ์ด ๋ง์€ ๋ฐ˜์€ ๋งž๊ณ  ๋ฐ˜์€ ํ‹€๋ฆฌ๋‹ค.

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

    tcp header 이미 정보들이 뚱뚱하게 들어찬 TCP의 헤더

    TCP์˜ ๊ฒฝ์šฐ ์›Œ๋‚™ ์˜ค๋ž˜ ์ „์— ์„ค๊ณ„๋˜๊ธฐ๋„ ํ–ˆ๊ณ , ์ด๋Ÿฐ ์ €๋Ÿฐ ๊ธฐ๋Šฅ์ด ์›Œ๋‚™ ๋งŽ์ด ํฌํ•จ๋œ ํ”„๋กœํ† ์ฝœ์ด๋‹ค๋ณด๋‹ˆ ์ด๋ฏธ ํ—ค๋”๊ฐ€ ๊ฑฐ์˜ ํ’€๋ฐฉ์ด๋‹ค. TCP์— ๊ธฐ๋ณธ์ ์œผ๋กœ ์ •์˜๋˜์–ด ์žˆ๋Š” ๊ธฐ๋Šฅ ์™ธ์— ๋‹ค๋ฅธ ์ถ”๊ฐ€ ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด ๊ฐ€์žฅ ํ•˜๋‹จ์— ์žˆ๋Š” ์˜ต์…˜(Options) ํ•„๋“œ๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ํ•˜๋Š”๋ฐ, ์˜ต์…˜ ํ•„๋“œ๋„ ๋ฌดํ•œ์ • ๋ฐฐ๋‹น ํ•ด์ค„ ์ˆ˜๋Š” ์—†์œผ๋‹ˆ ์ตœ๋Œ€ ํฌ๊ธฐ๋ฅผ 320 bits๋กœ ์ •ํ•ด๋†“์•˜๋‹ค.

    ๊ทธ๋Ÿฌ๋‚˜ TCP์˜ ๋‹จ์ ์„ ๋ณด์™„ํ•˜๊ธฐ ์œ„ํ•ด ๋‚˜์ค‘์— ์ •์˜๋œ MSS(Maximum Segment Size), WSCALE(Window Scale factor), SACK(Selective ACK) ๋“ฑ ๋งŽ์€ ์˜ต์…˜๋“ค์ด ์ด๋ฏธ ์˜ต์…˜ ํ•„๋“œ๋ฅผ ์ฐจ์ง€ํ•˜๊ณ  ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์‹ค์งˆ์ ์œผ๋กœ ์‚ฌ์šฉ์ž๊ฐ€ ์ปค์Šคํ…€ ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ๋Š” ์ž๋ฆฌ๋Š” ๊ฑฐ์˜ ๋‚จ์ง€๋„ ์•Š์•˜๋‹ค.

    ๋ฐ˜๋ฉด UDP๋Š” ๋ฐ์ดํ„ฐ ์ „์†ก ์ž์ฒด์—๋งŒ ์ดˆ์ ์„ ๋งž์ถ”๊ณ  ์„ค๊ณ„๋˜์—ˆ๊ธฐ ๋•Œ๋ฌธ์— ํ—ค๋”์— ์ง„์งœ ์•„๋ฌด ๊ฒƒ๋„ ์—†๋‹ค.

    udp header TCP와 비교해보면 확실히 휑한 UDP의 헤더

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

    ์ฆ‰, UDP ํ”„๋กœํ† ์ฝœ ์ž์ฒด๋Š” TCP๋ณด๋‹ค ์‹ ๋ขฐ์„ฑ์ด ๋‚ฎ๊ธฐ๋„ ํ•˜๊ณ  ํ๋ฆ„ ์ œ์–ด๋„ ์•ˆ๋˜์ง€๋งŒ, ์ดํ›„ ๊ฐœ๋ฐœ์ž๊ฐ€ ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ ๊ตฌํ˜„์„ ์–ด๋–ป๊ฒŒ ํ•˜๋ƒ์— ๋”ฐ๋ผ์„œ TCP์™€ ๋น„์Šทํ•œ ์ˆ˜์ค€์˜ ๊ธฐ๋Šฅ์„ ๊ฐ€์งˆ ์ˆ˜๋„ ์žˆ๋‹ค๋Š” ๊ฒƒ์ด๋‹ค.

    ๋ฌผ๋ก  TCP๊ฐ€ ์‹ ๋ขฐ์„ฑ์„ ํ™•๋ณดํ•˜๊ธฐ์œ„ํ•ด ์ด๋Ÿฐ ์ €๋Ÿฐ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•ด์ฃผ๋Š” ๊ฒƒ์ด ๊ฐœ๋ฐœ์ž ์ž…์žฅ์—์„œ๋Š” ํŽธํ•˜๊ณ  ์ข‹์ง€๋งŒ, ํ•œ๊ฐ€์ง€ ์Šฌํ”ˆ ์ ์€ ์ด ๊ธฐ๋Šฅ๋“ค์ด ํ”„๋กœํ† ์ฝœ ์ž์ฒด์— ์ •์˜๋œ ํ•„์ˆ˜ ๊ณผ์ •์ด๋ผ์„œ ๊ฐœ๋ฐœ์ž๊ฐ€ ๋ง˜๋Œ€๋กœ ์ปค์Šคํ„ฐ๋งˆ์ด์ง• ํ•  ์ˆ˜ ์—†๋‹ค๋Š” ๊ฒƒ์ด๋‹ค. ๊ฒฐ๊ตญ ์—ฌ๊ธฐ์„œ ๋ฐœ์ƒํ•˜๋Š” ๋ ˆ์ดํ„ด์‹œ๋“ค์„ ์–ด๋–ป๊ฒŒ ๋” ์ค„์—ฌ๋ณผ ์‹œ๋„์กฐ์ฐจ ํ•˜๊ธฐ ํž˜๋“ค๋‹ค.

    tcp tls TCP에 TLS까지 사용한다면 통신을 시작하기도 전에 이렇게 많은 과정을 거쳐야 한다

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

    ์•„์ง TCP์™€ UDP์˜ ์ฐจ์ด๊ฐ€ ์ž˜ ์™€๋‹ฟ์ง€ ์•Š๋Š”๋‹ค๋ฉด ์ข‹์€ ๊ธฐ๋Šฅ์ด ๋‹ค ๋“ค์–ด์žˆ๋Š” ๋ฌด๊ฑฐ์šด ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์™€ ํ•„์š”ํ•œ ๊ธฐ๋Šฅ๋งŒ ๋“ค์–ด์žˆ๋Š” ๊ฐ€๋ฒผ์šด ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋กœ ๋น„๊ตํ•ด๋ณด๋ฉด ์กฐ๊ธˆ ๋” ์ดํ•ด๊ฐ€ ๋น ๋ฅผ ๊ฒƒ ๊ฐ™๋‹ค.

    ์˜ˆ๋ฅผ ๋“ค์–ด JavaScript ์ง„์˜์—์„œ ๋งŽ์ด ์‚ฌ์šฉํ•˜๋Š” lodash์™€ ๊ฐ™์€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋Š” ๊ธฐ๋Šฅ์€ ๋ฌด๊ถ๋ฌด์ง„ํ•˜๊ณ  ์‚ฌ์šฉ์ž์—๊ฒŒ ํฐ ํŽธ๋ฆฌํ•จ์„ ์ฃผ์ง€๋งŒ, ๋ณดํ†ต lodash์˜ ๋ชจ๋“  ๋ฉ”์†Œ๋“œ๋ฅผ ๋‹ค ์‚ฌ์šฉํ•˜๋Š” ์‚ฌ๋žŒ์€ ๋งŽ์ง€ ์•Š์„ ๊ฒƒ์ด๋‹ค. ๊ฒฐ๊ตญ ํŽธํ•˜๊ธด ํ•˜์ง€๋งŒ ๋‚ด๊ฐ€ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ๊ธฐ๋Šฅ๊นŒ์ง€ ์ „๋ถ€ ๋‚ด JS ๋ฒˆ๋“ค์— ํฌํ•จ์‹œ์ผœ์•ผ ํ•œ๋‹ค๋Š” ๋ถ€๋‹ด์ด ์žˆ๋‹ค.

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

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

    HTTP/3๊ฐ€ UDP๋ฅผ ์‚ฌ์šฉํ•จ์œผ๋กœ์จ ๊ธฐ์กด ํ”„๋กœํ† ์ฝœ๋ณด๋‹ค ๋‚˜์•„์ง„ ์ 

    ์ง€๊ธˆ๊นŒ์ง€ HTTP/3์˜ ๋ผˆ๋Œ€๋กœ ์‚ฌ์šฉ๋˜๋Š” QUIC์ด ์™œ TCP๊ฐ€ ์•„๋‹Œ UDP๋ฅผ ์‚ฌ์šฉํ–ˆ๋Š”์ง€ ๊ฐ„๋žตํ•˜๊ฒŒ ์•Œ์•„๋ณด์•˜๋‹ค. ๊ทธ๋ ‡๋‹ค๋ฉด ์‹ค์ œ๋กœ UDP๋ฅผ ์‚ฌ์šฉํ•จ์œผ๋กœ์จ ์–ป๋Š” ์ด๋“์—๋Š” ๋ฌด์—‡์ด ์žˆ์„๊นŒ? ์ง„์งœ๋กœ HTTP/3๋Š” UDP๋ฅผ ์‚ฌ์šฉํ•จ์œผ๋กœ์จ ๊ธฐ์กด์˜ HTTP+TCP+TLS๋ฅผ ์‚ฌ์šฉํ–ˆ๋˜ ๋ฐฉ๋ฒ•๋ณด๋‹ค ๋” ์ข‹์•„์ง„ ๊ฒƒ ์ผ๊นŒ?

    ๊ทธ์— ๋Œ€ํ•œ ํ•ด๋‹ต์€ Chromium Projects์˜ QUIC Overview๋ผ๋Š” ๋ฌธ์„œ์—์„œ ์ฐพ์„ ์ˆ˜ ์žˆ์—ˆ๋‹ค. ํ•œ๋ฒˆ ๊ตฌ๊ธ€์ด ์ด์•ผ๊ธฐํ•˜๋Š” QUIC์˜ ์žฅ์ ์— ๋Œ€ํ•ด์„œ ์‚ดํŽด๋ณด์ž.

    ์—ฐ๊ฒฐ ์„ค์ • ์‹œ ๋ ˆ์ดํ„ด์‹œ ๊ฐ์†Œ

    QUIC์€ TCP๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ํ†ต์‹ ์„ ์‹œ์ž‘ํ•  ๋•Œ ๋ฒˆ๊ฑฐ๋กœ์šด 3 Way Handshake ๊ณผ์ •์„ ๊ฑฐ์น˜์ง€ ์•Š์•„๋„ ๋œ๋‹ค. ํด๋ผ์ด์–ธํŠธ๊ฐ€ ๋ณด๋‚ธ ์š”์ฒญ์„ ์„œ๋ฒ„๊ฐ€ ์ฒ˜๋ฆฌํ•œ ํ›„ ๋‹ค์‹œ ํด๋ผ์ด์–ธํŠธ๋กœ ์‘๋‹ตํ•ด์ฃผ๋Š” ์‚ฌ์ดํด์„ RTT(Round Trip Time)์ด๋ผ๊ณ  ํ•˜๋Š”๋ฐ, TCP๋Š” ์—ฐ๊ฒฐ์„ ์ƒ์„ฑํ•˜๊ธฐ ์œ„ํ•ด ๊ธฐ๋ณธ์ ์œผ๋กœ 1 RTT๊ฐ€ ํ•„์š”ํ•˜๊ณ , ์—ฌ๊ธฐ์— TLS๋ฅผ ์‚ฌ์šฉํ•œ ์•”ํ˜ธํ™”๊นŒ์ง€ ํ•˜๋ ค๊ณ  ํ•œ๋‹ค๋ฉด TLS์˜ ์ž์ฒด ํ•ธ๋“œ์‰์ดํฌ๊นŒ์ง€ ๋”ํ•ด์ ธ ์ด 3 RTT๊ฐ€ ํ•„์š”ํ•˜๋‹ค.

    ๋ฐ˜๋ฉด QUIC์€ ์ฒซ ์—ฐ๊ฒฐ ์„ค์ •์— 1 RTT๋งŒ ์†Œ์š”๋œ๋‹ค. ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์„œ๋ฒ„์— ์–ด๋–ค ์‹ ํ˜ธ๋ฅผ ํ•œ๋ฒˆ ์ฃผ๊ณ , ์„œ๋ฒ„๋„ ๊ฑฐ๊ธฐ์— ์‘๋‹ตํ•˜๊ธฐ๋งŒ ํ•˜๋ฉด ๋ฐ”๋กœ ๋ณธ ํ†ต์‹ ์„ ์‹œ์ž‘ํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์ด๋‹ค. ์ฆ‰, ์—ฐ๊ฒฐ ์„ค์ •์— ์†Œ์š”๋˜๋Š” ์‹œ๊ฐ„์ด ๋ฐ˜ ์ •๋„ ๋ฐ–์— ์•ˆ๋œ๋‹ค.


    ์–ด๋–ป๊ฒŒ ์ด๊ฒŒ ๊ฐ€๋Šฅํ•œ ๊ฑธ๊นŒ? ๊ทธ ์ด์œ ๋Š” ์ƒ๊ฐ๋ณด๋‹ค ๊ฐ„๋‹จํ•˜๋‹ค. ์ฒซ๋ฒˆ์งธ ํ•ธ๋“œ์‰์ดํฌ๋ฅผ ๊ฑฐ์น  ๋•Œ, ์—ฐ๊ฒฐ ์„ค์ •์— ํ•„์š”ํ•œ ์ •๋ณด์™€ ํ•จ๊ป˜ ๋ฐ์ดํ„ฐ๋„ ๋ณด๋‚ด๋ฒ„๋ฆฌ๋Š” ๊ฒƒ์ด๋‹ค. TCP+TLS๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ๋ณด๋‚ด๊ธฐ ์ „์— ์‹ ๋ขฐ์„ฑ์žˆ๋Š” ์—ฐ๊ฒฐ๊ณผ ์•”ํ˜ธํ™”์— ํ•„์š”ํ•œ ๋ชจ๋“  ์ •๋ณด๋ฅผ ๊ตํ™˜ํ•˜๊ณ  ์œ ํšจ์„ฑ์„ ๊ฒ€์‚ฌํ•œ ๋’ค์— ๋ฐ์ดํ„ฐ๋ฅผ ๊ตํ™˜ํ•˜์ง€๋งŒ, QUIC์€ ๋ฌป์ง€๋„ ๋”ฐ์ง€์ง€๋„ ์•Š๊ณ  ๊ทธ๋ƒฅ ๋ฐ”๋กœ ๋ฐ์ดํ„ฐ๋ถ€ํ„ฐ ๊ฝ‚์•„๋ฒ„๋ฆฌ๊ณ  ์‹œ์ž‘ํ•œ๋‹ค.

    ์ด ๊ณผ์ •์— ๋Œ€ํ•ด์„œ๋Š” 2015๋…„ IEEE Symposium์—์„œ ๋ฐœํ‘œ๋œ How Secure and Quick is QUIC?์ด๋ผ๋Š” ์„ธ์…˜์—์„œ ์ž์„ธํžˆ ๋“ค์–ด๋ณผ ์ˆ˜ ์žˆ๋‹ค.

    3๋ถ„ 33์ดˆ ๋ถ€ํ„ฐ ๋ณด๋„๋ก ํ•˜์ž.
    ํ•œ ์† ์ฃผ๋จธ๋‹ˆ์— ๊ฝ‚๊ณ  ๋ฐœํ‘œํ•˜๋Š” ๋ชจ์Šต์—์„œ ์Šค์›ฉ์ด ๋„˜์นœ๋‹ค


    ๊ฒฐ๊ตญ ์ด ์˜์ƒ์—์„œ ๋งํ•˜๊ณ ์ž ํ•˜๋Š” ๊ฒƒ์€ TCP+TLS๋Š” ์„œ๋กœ ์ž์‹ ์˜ ์„ธ์…˜ ํ‚ค๋ฅผ ์ฃผ๊ณ  ๋ฐ›์•„ ์•”ํ˜ธํ™”๋œ ์—ฐ๊ฒฐ์„ ์„ฑ๋ฆฝํ•˜๋Š” ๊ณผ์ •์„ ๊ฑฐ์น˜๊ณ  ๋‚˜์„œ์•ผ ์„ธ์…˜ ํ‚ค์™€ ํ•จ๊ป˜ ๋ฐ์ดํ„ฐ๋ฅผ ๊ตํ™˜ํ•  ์ˆ˜ ์žˆ์ง€๋งŒ, QUIC์€ ์„œ๋กœ์˜ ์„ธ์…˜ ํ‚ค๋ฅผ ๊ตํ™˜ํ•˜๊ธฐ๋„ ์ „์— ๋ฐ์ดํ„ฐ๋ฅผ ๊ตํ™˜ํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์—ฐ๊ฒฐ ์„ค์ •์ด ๋” ๋น ๋ฅด๋‹ค๋Š” ๊ฒƒ์ด๋‹ค.

    ๋‹จ, ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์„œ๋ฒ„๋กœ ์ฒซ ์š”์ฒญ์„ ๋ณด๋‚ผ ๋•Œ๋Š” ์„œ๋ฒ„์˜ ์„ธ์…˜ ํ‚ค๋ฅผ ๋ชจ๋ฅด๋Š” ์ƒํƒœ์ด๊ธฐ ๋•Œ๋ฌธ์— ๋ชฉ์ ์ง€์ธ ์„œ๋ฒ„์˜ Connection ID๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ƒ์„ฑํ•œ ํŠน๋ณ„ํ•œ ํ‚ค์ธ ์ดˆ๊ธฐํ™” ํ‚ค(Initial Key)๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํ†ต์‹ ์„ ์•”ํ˜ธํ™” ํ•œ๋‹ค. ์ด ๊ณผ์ •์— ๋Œ€ํ•œ ์ž์„ธํ•œ ์„ค๋ช…์€ QUIC ์ž‘์—… ๊ทธ๋ฃน์˜ Using TLS to Secure QUIC ๋ฌธ์„œ์—์„œ ํ™•์ธ ํ•ด๋ณผ ์ˆ˜ ์žˆ๋‹ค.

    ๊ทธ๋ฆฌ๊ณ  ํ•œ๋ฒˆ ์—ฐ๊ฒฐ์— ์„ฑ๊ณตํ–ˆ๋‹ค๋ฉด ์„œ๋ฒ„๋Š” ๊ทธ ์„ค์ •์„ ์บ์‹ฑํ•ด๋†“๊ณ  ์žˆ๋‹ค๊ฐ€, ๋‹ค์Œ ์—ฐ๊ฒฐ ๋•Œ๋Š” ์บ์‹ฑํ•ด๋†“์€ ์„ค์ •์„ ์‚ฌ์šฉํ•˜์—ฌ ๋ฐ”๋กœ ์—ฐ๊ฒฐ์„ ์„ฑ๋ฆฝ์‹œํ‚ค๊ธฐ ๋•Œ๋ฌธ์— 0 RTT๋งŒ์œผ๋กœ ๋ฐ”๋กœ ํ†ต์‹ ์„ ์‹œ์ž‘ํ•  ์ˆ˜๋„ ์žˆ๋‹ค. ์ด๋Ÿฐ ์ ๋“ค ๋•Œ๋ฌธ์— QUIC์€ ๊ธฐ์กด์˜ TCP+TLS ๋ฐฉ์‹์— ๋น„ํ•ด ๋ ˆ์ดํ„ด์‹œ๋ฅผ ๋” ์ค„์ผ ์ˆ˜ ์žˆ์—ˆ๋˜ ๊ฒƒ์ด๋‹ค.

    ์ฐธ๊ณ ๋กœ ์ด ์„ธ์…˜์ด ๋ฐœํ‘œ๋  ๋‹น์‹œ์—๋Š” TLS 1.3์ด ๋‚˜์˜ค๊ธฐ ์ „์ด๋ผ ๋”ฐ๋กœ ์–ธ๊ธ‰์ด ๋˜์ง€ ์•Š์•˜์ง€๋งŒ, ์ง€๊ธˆ์€ TCP Fast Open๊ณผ TLS 1.3์„ ์‚ฌ์šฉํ•˜์—ฌ QUIC์™€ ๋น„์Šทํ•œ ๊ณผ์ •์„ ํ†ตํ•ด ์—ฐ๊ฒฐ์„ ์„ค์ •ํ•จ์œผ๋กœ์จ TCP๋ฅผ ์‚ฌ์šฉํ•˜๋”๋ผ๋„ ๋™์ผํ•œ ์ด์ ์„ ๊ฐ€์ ธ๊ฐˆ ์ˆ˜๋„ ์žˆ๊ธดํ•˜๋‹ค.

    ๊ทธ๋Ÿฌ๋‚˜ TCP SYN ํŒจํ‚ท์€ ํ•œ ํŒจํ‚ท๋‹น ์•ฝ 1460 Byte๋งŒ ์ „์†กํ•  ์ˆ˜ ์žˆ๋„๋ก ์ œํ•œํ•˜์ง€๋งŒ QUIC์€ ๋ฐ์ดํ„ฐ ์ „์ฒด๋ฅผ ์ฒซ ๋ฒˆ์งธ ๋ผ์šด๋“œ ํŠธ๋ฆฝ์— ํฌํ•จํ•ด์„œ ์ „์†กํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์ฃผ๊ณ  ๋ฐ›์•„์•ผํ•  ๋ฐ์ดํ„ฐ๊ฐ€ ํฐ ๊ฒฝ์šฐ์—๋Š” ์—ฌ์ „ํžˆ QUIC๊ฐ€ ์œ ๋ฆฌํ•˜๋‹ค๊ณ  ํ•  ์ˆ˜ ์žˆ๋‹ค.

    ํŒจํ‚ท ์†์‹ค ๊ฐ์ง€์— ๊ฑธ๋ฆฌ๋Š” ์‹œ๊ฐ„ ๋‹จ์ถ•

    QUIC๋„ TCP์™€ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ์ „์†กํ•˜๋Š” ํŒจํ‚ท์— ๋Œ€ํ•œ ํ๋ฆ„ ์ œ์–ด๋ฅผ ํ•ด์•ผํ•œ๋‹ค. ์™œ๋ƒ๋ฉด QUIC๋“  TCP๋“  ๊ฒฐ๊ตญ ๋ณธ์งˆ์ ์œผ๋กœ๋Š” ARQ ๋ฐฉ์‹์„ ์‚ฌ์šฉํ•˜๋Š” ํ”„๋กœํ† ์ฝœ์ด๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. ํ†ต์‹ ๊ณผ์ •์—์„œ ๋ฐœ์ƒํ•œ ์—๋Ÿฌ๋ฅผ ์–ด๋–ป๊ฒŒ ์ฒ˜๋ฆฌํ•  ๊ฒƒ์ธ์ง€๋ฅผ ์ด์•ผ๊ธฐํ•˜๋Š” ๊ฒƒ์ธ๋ฐ, ARQ ๋ฐฉ์‹์€ ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ•˜๋ฉด ์žฌ์ „์†ก์„ ํ†ตํ•ด ์—๋Ÿฌ๋ฅผ ๋ณต๊ตฌํ•˜๋Š” ๋ฐฉ์‹์„ ๋งํ•˜๋Š” ๊ฒƒ์ด๋‹ค.

    TCP๋Š” ์—ฌ๋Ÿฌ ARQ ๋ฐฉ์‹ ์ค‘์—์„œ Stop and Wait ARQ ๋ฐฉ์‹์„ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๋‹ค. ์ด ๋ฐฉ์‹์€ ์†ก์‹  ์ธก์ด ํŒจํ‚ท์„ ๋ณด๋‚ธ ํ›„ ํƒ€์ด๋จธ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์‹œ๊ฐ„์„ ์žฌ๊ณ , ์ผ์ • ์‹œ๊ฐ„์ด ๊ฒฝ๊ณผํ•ด๋„ ์ˆ˜์‹  ์ธก์ด ์ ์ ˆํ•œ ๋‹ต๋ณ€์„ ์ฃผ์ง€ ์•Š๋Š”๋‹ค๋ฉด ํŒจํ‚ท์ด ์†์‹ค๋œ ๊ฒƒ์œผ๋กœ ํŒ๋‹จํ•˜๊ณ  ํ•ด๋‹น ํŒจํ‚ท์„ ๋‹ค์‹œ ๋ณด๋‚ด๋Š” ๋ฐฉ์‹์ด๋‹ค.

    ์šฐ์„  2017๋…„ ๊ตฌ๊ธ€์—์„œ ๋ฐœํ‘œํ•œ QUIC Loss Detection and Congestion Control์— ๋”ฐ๋ฅด๋ฉด, QUIC์€ ๊ธฐ๋ณธ์ ์œผ๋กœ TCP์™€ ์œ ์‚ฌํ•œ ๋ฐฉ๋ฒ•์œผ๋กœ ํŒจํ‚ท ์†์‹ค์„ ํƒ์ง€ํ•˜๋‚˜, ๋ช‡ ๊ฐ€์ง€ ๊ฐœ์„  ์‚ฌํ•ญ์„ ์ถ”๊ฐ€ํ•œ ๊ฒƒ์œผ๋กœ ๋ณด์ธ๋‹ค.

    TCP์—์„œ ํŒจํ‚ท ์†์‹ค ๊ฐ์ง€์— ๋Œ€ํ•œ ๋Œ€ํ‘œ์ ์ธ ๋ฌธ์ œ๋Š” ์†ก์‹  ์ธก์ด ํŒจํ‚ท์„ ์ˆ˜์‹ ์ธก์œผ๋กœ ๋ณด๋‚ด๊ณ  ๋‚œ ํ›„ ์–ผ๋งˆ๋‚˜ ๊ธฐ๋‹ค๋ ค์ค„ ๊ฒƒ์ธ๊ฐ€, ์ฆ‰ ํƒ€์ž„ ์•„์›ƒ์„ ์–ธ์ œ ๋‚ผ ๊ฒƒ์ธ๊ฐ€๋ฅผ ๋™์ ์œผ๋กœ ๊ณ„์‚ฐํ•ด์•ผํ•œ๋‹ค๋Š” ๊ฒƒ์ด๋‹ค. ์ด๋•Œ ์ด ์‹œ๊ฐ„์„ RTO(Retransmission Time Out)๋ผ๊ณ  ํ•˜๋Š”๋ฐ, ์ด๋•Œ ํ•„์š”ํ•œ ๋ฐ์ดํ„ฐ๊ฐ€ ๋ฐ”๋กœ RTT(Round Trip Time)๋“ค์˜ ์ƒ˜ํ”Œ๋“ค์ด๋‹ค.

    ํ•œ๋ฒˆ ํŒจํ‚ท์„ ๋ณด๋‚ธ ํ›„ ์ž˜ ๋ฐ›์•˜๋‹ค๋Š” ์‘๋‹ต์„ ๋ฐ›์„ ๋•Œ ๊ฑธ๋ ธ๋˜ ์‹œ๊ฐ„๋“ค์„ ์ธก์ •ํ•ด์„œ ๋™์ ์œผ๋กœ ํƒ€์ž„ ์•„์›ƒ์„ ์ •ํ•˜๋Š” ๊ฒƒ์ด๋‹ค. ์ฆ‰, RTT ์ƒ˜ํ”Œ์„ ์ธก์ •ํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ๋ฐ˜๋“œ์‹œ ์†ก์‹  ์ธก์œผ๋กœ ๋ถ€ํ„ฐ ACK๋ฅผ ๋ฐ›์•„์•ผํ•˜๋Š”๋ฐ, ์ •์ƒ์ ์ธ ์ƒํ™ฉ์—์„œ๋Š” ๋”ฑํžˆ ๋ฌธ์ œ๊ฐ€ ์—†์œผ๋‚˜ ํƒ€์ž„ ์•„์›ƒ์ด ๋ฐœ์ƒํ•ด์„œ ํŒจํ‚ท ์†์‹ค์ด ๋ฐœ์ƒํ•˜๊ฒŒ ๋˜๋ฉด RTT ๊ณ„์‚ฐ์ด ์• ๋งคํ•ด์ง„๋‹ค.

    ํŒจํ‚ท ์ „์†ก -> ํƒ€์ž„ ์•„์›ƒ -> ํŒจํ‚ท ์žฌ์ „์†ก -> ACK ๋ฐ›์Œ!
    (๊ทผ๋ฐ ์ด๊ฑฐ ์ฒซ ๋ฒˆ์งธ๋กœ ๋ณด๋‚ธ ํŒจํ‚ท์˜ ACK์•ผ? ๋‘ ๋ฒˆ์งธ๋กœ ๋ณด๋‚ธ ํŒจํ‚ท์˜ ACK์•ผ?)

    ์ด๋•Œ ์ด ACK๊ฐ€ ์–ด๋А ํŒจํ‚ท์— ๋Œ€ํ•œ ์‘๋‹ต์ธ์ง€ ์•Œ๊ธฐ ์œ„ํ•ด์„œ๋Š” ํƒ€์ž„์Šคํƒฌํ”„๋ฅผ ํŒจํ‚ท์— ์ฐ์–ด์ฃผ๋Š” ๋“ฑ ๋ณ„๋„์˜ ๋ฐฉ๋ฒ•์„ ๋˜ ์‚ฌ์šฉํ•ด์•ผํ•˜๊ณ , ๋˜ ์ด๋ฅผ ์œ„ํ•œ ํŒจํ‚ท ๊ฒ€์‚ฌ๋„ ๋”ฐ๋กœ ํ•ด์ค˜์•ผ ํ•œ๋‹ค. ์ด๋ฅผ ์žฌ์ „์†ก ๋ชจํ˜ธ์„ฑ(Retransmission Ambiguity)์ด๋ผ๊ณ  ํ•œ๋‹ค.

    ์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด QUIC๋Š” ํ—ค๋”์— ๋ณ„๋„์˜ ํŒจํ‚ท ๋ฒˆํ˜ธ ๊ณต๊ฐ„์„ ๋ถ€์—ฌํ–ˆ๋‹ค. ์ด ํŒจํ‚ท ๋ฒˆํ˜ธ๋Š” ํŒจํ‚ท์˜ ์ „์†ก ์ˆœ์„œ ์ž์ฒด๋งŒ์„ ๋‚˜ํƒ€๋‚ด๋ฉฐ, ์žฌ์ „์†ก์‹œ ๋™์ผํ•œ ๋ฒˆํ˜ธ๊ฐ€ ์ „์†ก๋˜๋Š” ์‹œํ€€์Šค ๋ฒˆํ˜ธ์™€๋Š” ๋‹ค๋ฅด๊ฒŒ ๋งค ์ „์†ก๋งˆ๋‹ค ๋ชจ๋…ธํ† ๋‹‰ํ•˜๊ฒŒ ํŒจํ‚ท ๋ฒˆํ˜ธ๊ฐ€ ์ฆ๊ฐ€ํ•˜๊ธฐ ๋•Œ๋ฌธ์—, ํŒจํ‚ท์˜ ์ „์†ก ์ˆœ์„œ๋ฅผ ๋ช…ํ™•ํ•˜๊ฒŒ ํŒŒ์•…ํ•  ์ˆ˜ ์žˆ๋‹ค.

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

    ์ด ์™ธ์—๋„ QUIC๋Š” ๋Œ€๋žต 5๊ฐ€์ง€ ์ •๋„์˜ ๊ธฐ๋ฒ•์„ ์‚ฌ์šฉํ•˜์—ฌ ์ด ํŒจํ‚ท ์†์‹ค ๊ฐ์ง€์— ๊ฑธ๋ฆฌ๋Š” ์‹œ๊ฐ„์„ ๋‹จ์ถ•์‹œ์ผฐ๋Š”๋ฐ, ์ž์„ธํ•œ ๋‚ด์šฉ์€ QUIC Loss Detection and Congestion Control์˜ 3.1 Relevant Differences Between QUIC and TCP ์ฑ•ํ„ฐ๋ฅผ ํ•œ๋ฒˆ ์ฝ์–ด๋ณด๋Š” ๊ฒƒ์„ ์ถ”์ฒœํ•œ๋‹ค.

    ๋ฉ€ํ‹ฐํ”Œ๋ ‰์‹ฑ์„ ์ง€์›

    ๋ฉ€ํ‹ฐํ”Œ๋ ‰์‹ฑ(Multiplexing)์€ ์œ„์—์„œ TCP์˜ ๋‹จ์ ์œผ๋กœ ์–ธ๊ธ‰ํ–ˆ๋˜ HOLB(Head of Line Blocking)์„ ๋ฐฉ์ง€ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋งค์šฐ ์ค‘์š”ํ•˜๋‹ค. ์—ฌ๋Ÿฌ ๊ฐœ์˜ ์ŠคํŠธ๋ฆผ์„ ์‚ฌ์šฉํ•˜๋ฉด, ๊ทธ ์ค‘ ํŠน์ • ์ŠคํŠธ๋ฆผ์˜ ํŒจํ‚ท์ด ์†์‹ค๋˜์—ˆ๋‹ค๊ณ  ํ•˜๋”๋ผ๋„ ํ•ด๋‹น ์ŠคํŠธ๋ฆผ์—๋งŒ ์˜ํ–ฅ์„ ๋ฏธ์น˜๊ณ  ๋‚˜๋จธ์ง€ ์ŠคํŠธ๋ฆผ์€ ๋ฉ€์ฉกํ•˜๊ฒŒ ๊ตด๋ฆด ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

    ์ฐธ๊ณ ๋กœ ๋ฉ€ํ‹ฐํ”Œ๋ ‰์‹ฑ์€ ์—ฌ๋Ÿฌ ๊ฐœ์˜ TCP ์—ฐ๊ฒฐ์„ ๋งŒ๋“ ๋‹ค๋Š” ์˜๋ฏธ๊ฐ€ ์•„๋‹ˆ๋ผ, ๋‹จ์ผ ์—ฐ๊ฒฐ ์•ˆ์—์„œ ๋ช‡ ๊ฐ€์ง€ ์–Œ์ƒ์ด๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์—ฌ๋Ÿฌ ๊ฐœ์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์„ž์ด์ง€ ์•Š๊ฒŒ ๋ณด๋‚ด๋Š” ๊ธฐ๋ฒ•์ด๋‹ค. ์ด๋•Œ ๊ฐ๊ฐ์˜ ๋ฐ์ดํ„ฐ์˜ ํ๋ฆ„์„ ์ŠคํŠธ๋ฆผ์ด๋ผ๊ณ  ํ•˜๋Š” ๊ฒƒ์ด๋‹ค.

    HTTP/1์˜ ๊ฒฝ์šฐ๋Š” ํ•˜๋‚˜์˜ TCP ์—ฐ๊ฒฐ์— ํ•˜๋‚˜์˜ ์ŠคํŠธ๋ฆผ๋งŒ ์‚ฌ์šฉํ•˜๊ธฐ ๋•Œ๋ฌธ์— HOLB ๋ฌธ์ œ์—์„œ ๋ฒ—์–ด๋‚  ์ˆ˜ ์—†์—ˆ๋‹ค. ๋˜ํ•œ ํ•œ๋ฒˆ์˜ ์ „์†ก์ด ๋๋‚˜๊ฒŒ ๋˜๋ฉด ์—ฐ๊ฒฐ์ด ๋Š์–ด์ง€๊ธฐ ๋•Œ๋ฌธ์— ๋‹ค์‹œ ์—ฐ๊ฒฐ์„ ๋งŒ๋“ค๊ธฐ ์œ„ํ•ด์„œ๋Š” ๋ฒˆ๊ฑฐ๋กœ์šด ํ•ธ๋“œ์‰์ดํฌ ๊ณผ์ •์„ ๋˜ ๊ฒช์–ด์•ผ ํ–ˆ๋‹ค.

    ๋น„๋ก keep-alive ์˜ต์…˜์„ ํ†ตํ•ด ์–ด๋А ์ •๋„์˜ ์‹œ๊ฐ„ ๋™์•ˆ ์—ฐ๊ฒฐ์„ ์œ ์ง€ํ•  ์ˆ˜๋Š” ์žˆ์ง€๋งŒ ๊ฒฐ๊ตญ ์ผ์ • ์‹œ๊ฐ„ ์•ˆ์— ์•ก์„ธ์Šค๊ฐ€ ์—†๋‹ค๋ฉด ์—ฐ๊ฒฐ์ด ๋Š์–ด์ง€๊ฒŒ ๋˜๋Š” ๊ฒƒ์€ ๋˜‘๊ฐ™๋‹ค.

    ๊ทธ๋ฆฌ๊ณ  HTTP/2๋Š” ํ•˜๋‚˜์˜ TCP ์—ฐ๊ฒฐ ์•ˆ์—์„œ ์—ฌ๋Ÿฌ ๊ฐœ์˜ ์ŠคํŠธ๋ฆผ์„ ์ฒ˜๋ฆฌํ•˜๋Š” ๋ฉ€ํ‹ฐํ”Œ๋ ‰์‹ฑ ๊ธฐ๋ฒ•์„ ๋„์ž…ํ•˜์—ฌ ์„ฑ๋Šฅ์„ ๋Œ์–ด์˜ฌ๋ฆฐ ์ผ€์ด์Šค์ด๋‹ค. ์ด ๊ฒฝ์šฐ ํ•œ๋ฒˆ์˜ TCP ์—ฐ๊ฒฐ๋กœ ์—ฌ๋Ÿฌ ๊ฐœ์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์ „์†กํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ํ•ธ๋“œ์‰์ดํฌ ํšŸ์ˆ˜๋„ ์ค„์–ด๋“ค๊ฒŒ ๋˜์–ด ํšจ์œจ์ ์ธ ๋ฐ์ดํ„ฐ ์ „์†ก์„ ํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋œ๋‹ค.


    HTTP/3도 HTTP/2와 같은 멀티플렉싱을 지원한다.

    QUIC ๋˜ํ•œ HTTP/2์™€ ๋™์ผํ•˜๊ฒŒ ๋ฉ€ํ‹ฐํ”Œ๋ ‰์‹ฑ์„ ์ง€์›ํ•˜๊ธฐ ๋•Œ๋ฌธ์—, ์ด๋Ÿฐ ์ด์ ์„ ๊ทธ๋Œ€๋กœ ๊ฐ€์ ธ๊ฐ€๊ณ  ์žˆ๋‹ค. ํ˜น์—ฌ๋‚˜ ํ•˜๋‚˜์˜ ์ŠคํŠธ๋ฆผ์—์„œ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค๊ณ  ํ•ด๋„ ๋‹ค๋ฅธ ์ŠคํŠธ๋ฆผ์€ ์ง€ํ‚ฌ ์ˆ˜ ์žˆ๊ฒŒ ๋˜์–ด ์ด๋Ÿฐ ๋ฌธ์ œ์—์„œ ์ž์œ ๋กœ์šธ ์ˆ˜ ์žˆ๋‹ค.

    ํด๋ผ์ด์–ธํŠธ์˜ IP๊ฐ€ ๋ฐ”๋€Œ์–ด๋„ ์—ฐ๊ฒฐ์ด ์œ ์ง€๋จ

    TCP์˜ ๊ฒฝ์šฐ ์†Œ์Šค์˜ IP ์ฃผ์†Œ์™€ ํฌํŠธ, ์—ฐ๊ฒฐ ๋Œ€์ƒ์˜ IP ์ฃผ์†Œ์™€ ํฌํŠธ๋กœ ์—ฐ๊ฒฐ์„ ์‹๋ณ„ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ํด๋ผ์ด์–ธํŠธ์˜ IP๊ฐ€ ๋ฐ”๋€Œ๋Š” ์ƒํ™ฉ์ด ๋ฐœ์ƒํ•˜๋ฉด ์—ฐ๊ฒฐ์ด ๋Š์–ด์ ธ ๋ฒ„๋ฆฐ๋‹ค. ์—ฐ๊ฒฐ์ด ๋Š์–ด์กŒ์œผ๋‹ˆ ๋‹ค์‹œ ์—ฐ๊ฒฐ์„ ์ƒ์„ฑํ•˜๊ธฐ ์œ„ํ•ด ๊ฒฐ๊ตญ ๋ˆˆ๋ฌผ๋‚˜๋Š” 3 Way Handshake ๊ณผ์ •์„ ๋‹ค์‹œ ๊ฑฐ์ณ์•ผํ•œ๋‹ค๋Š” ๊ฒƒ์ด๊ณ , ์ด ๊ณผ์ •์—์„œ ๋‹ค์‹œ ๋ ˆ์ดํ„ด์‹œ๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค.

    ๊ฒŒ๋‹ค๊ฐ€ ์š”์ฆ˜์—๋Š” ๋ชจ๋ฐ”์ผ๋กœ ์ธํ„ฐ๋„ท์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋งŽ๊ธฐ ๋•Œ๋ฌธ์— Wi-fi์—์„œ ์…€๋ฃฐ๋Ÿฌ๋กœ ์ „ํ™˜๋˜๊ฑฐ๋‚˜ ๊ทธ ๋ฐ˜๋Œ€์˜ ๊ฒฝ์šฐ, ํ˜น์€ ๋‹ค๋ฅธ Wi-fi๋กœ ์—ฐ๊ฒฐ๋˜๋Š” ๊ฒฝ์šฐ์™€ ๊ฐ™์ด ํด๋ผ์ด์–ธํŠธ์˜ IP๊ฐ€ ๋ณ€๊ฒฝ๋˜๋Š” ์ผ์ด ๊ต‰์žฅํžˆ ์žฆ์•„์„œ ์ด ๋ฌธ์ œ๊ฐ€ ๋” ๋ˆˆ์— ๋ˆ๋‹ค.

    ๋ฐ˜๋ฉด QUIC์€ Connection ID๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์„œ๋ฒ„์™€ ์—ฐ๊ฒฐ์„ ์ƒ์„ฑํ•œ๋‹ค. Connection ID๋Š” ๋žœ๋คํ•œ ๊ฐ’์ผ ๋ฟ, ํด๋ผ์ด์–ธํŠธ์˜ IP์™€๋Š” ์ „ํ˜€ ๋ฌด๊ด€ํ•œ ๋ฐ์ดํ„ฐ์ด๊ธฐ ๋•Œ๋ฌธ์— ํด๋ผ์ด์–ธํŠธ์˜ IP๊ฐ€ ๋ณ€๊ฒฝ๋˜๋”๋ผ๋„ ๊ธฐ์กด์˜ ์—ฐ๊ฒฐ์„ ๊ณ„์† ์œ ์ง€ํ•  ์ˆ˜ ์žˆ๋‹ค. ์ด๋Š” ์ƒˆ๋กœ ์—ฐ๊ฒฐ์„ ์ƒ์„ฑํ•  ๋•Œ ๊ฑฐ์ณ์•ผํ•˜๋Š” ํ•ธ๋“œ์‰์ดํฌ ๊ณผ์ •์„ ์ƒ๋žตํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ์˜๋ฏธ์ด๋‹ค.

    ๋งˆ์น˜๋ฉฐ

    ์‚ฌ์‹ค HTTP/3์™€ QUIC์„ ์ œ๋Œ€๋กœ ์„ค๋ช…ํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ๋„คํŠธ์›Œํฌ์— ๋Œ€ํ•œ ๊ธฐ๋ณธ ๊ฐœ๋…๋“ค์ด ํ•„์ˆ˜์ ์œผ๋กœ ๋™๋ฐ˜๋˜์•ผํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ด ์งง์€ ํฌ์ŠคํŒ… ๋งŒ์œผ๋กœ ์„ธ๋ถ€์ ์ธ ์„ค๋ช…์„ ํ•˜๊ธฐ ํž˜๋“  ๋ถ€๋ถ„์ด ์žˆ์—ˆ๋‹ค. ์ตœ๋Œ€ํ•œ ์ž์„ธํ•˜๊ฒŒ ์ž‘์„ฑํ•ด๋ณด๋ ค๊ณ  ํ–ˆ์ง€๋งŒ ์ƒ๊ฐ๋ณด๋‹ค ๊ธ€์ด ๋„ˆ๋ฌด ๊ธธ์–ด์ง€๊ฒŒ ๋˜์–ด์„œ ๋ถ„๋Ÿ‰ ์กฐ์ ˆ์„ ์กฐ๊ธˆ ํ•˜๋ ค๊ณ  ํ•œ๋‹ค.

    ์ด๋ฒˆ์— HTTP/3๋ฅผ ๊ณต๋ถ€ํ•ด๋ณด๊ณ  ์—ฌ๋Ÿฌ๊ฐ€์ง€ ์ž๋ฃŒ๋ฅผ ์ฐพ์•„๋ณด๋ฉด์„œ ๋А๋‚€ ์ ์€ โ€œ๋ญ๊ฐ€ ์ด๋ ‡๊ฒŒ ๋งŽ์ด ๋ฐ”๋€Œ์—ˆ์–ด?โ€ ์˜€๋˜ ๊ฒƒ ๊ฐ™๋‹ค. ์ผ๋‹จ TCP๋ถ€ํ„ฐ ๊ฐ–๋‹ค ๋ฒ„๋ ธ์œผ๋‹ˆ ๋ญ๊ฐ€ ๋งŽ์ด ๋ฐ”๋€”๋งŒ ํ•˜๊ธด ํ–ˆ์ง€๋งŒ, HTTP/2๋ฅผ ์‚ฌ์šฉํ•ด๋ณธ์ง€๋„ ๋ช‡ ๋‹ฌ ๋ฐ–์— ๋˜์ง€ ์•Š์€ ํ•„์ž์˜ ์ž…์žฅ์—์„œ๋Š” ์กฐ๊ธˆ ๋‹นํ™ฉ์Šค๋Ÿฝ๊ธฐ๋Š” ํ–ˆ๋‹ค.(HTTP๋ฅผ ๋งŒ๋“ ๋‹ค๋ฉด์„œ TCP๋ฅผ ๊ฐ–๋‹ค ๋ฒ„๋ฆฐ ๊ฑด ์•„์ง๋„ ์‹ ๊ธฐํ•˜๋‹ค)

    ์‚ฌ์‹ค ๊ฐœ๋ฐœ์ž๋“ค์ด HTTP/2๋ฅผ ์‚ฌ์šฉํ•˜๋“  HTTP/3๋ฅผ ์‚ฌ์šฉํ•˜๋“  ํ•œ๊ตญ์—์„œ ์ธํ„ฐ๋„ท์„ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๋Š” ์‚ฌ์šฉ์ž๋Š” ๋ณ„๋กœ ํฐ ์ฐจ์ด๋ฅผ ๋ชป ๋А๋‚„ ๊ฒƒ์ด๋‹ค. ํ•œ๊ตญ์€ ์›Œ๋‚™ ๋•…๋ฉ์ด๋„ ์ž‘๊ณ  ํ†ต์‹  ์ธํ”„๋ผ๋„ ์ข‹๋‹ค๋ณด๋‹ˆ ํ•ธ๋“œ์‰์ดํฌ ๋ ˆ์ดํ„ด์‹œ๊ณ  ๋‚˜๋ฐœ์ด๊ณ  ๊ทธ๋ƒฅ ์ธํ”„๋ผ๋กœ ๋Œ€์ถฉ ์ปค๋ฒ„์น  ์ˆ˜ ์žˆ์ง€๋งŒ, ๊ทธ๋ž˜๋„ ์ƒ๋Œ€์ ์œผ๋กœ ํ†ต์‹  ์ธํ”„๋ผ๊ฐ€ ๋นˆ์•ฝํ•œ ๋‚˜๋ผ์˜ ๊ฒฝ์šฐ์—๋Š” ๊ฝค ํฐ ์ฐจ์ด๊ฐ€ ๋А๊ปด์งˆ ์ˆ˜๋„ ์žˆ์„ ๊ฒƒ ๊ฐ™๋‹ค.

    ํ•„์ž๊ฐ€ ์ด ํฌ์ŠคํŒ…์—์„œ๋Š” HTTP/3์™€ UDP์˜ ์žฅ์ ๋งŒ์„ ์ด์•ผ๊ธฐํ–ˆ์ง€๋งŒ, ์‚ฌ์‹ค ๋งŽ์€ ์‚ฌ๋žŒ๋“ค์ด TCP๋ฅผ ๋ฒ„๋ฆฌ๊ณ  UDP๋กœ ๊ฐˆ์•„ํƒ€๋Š” ๊ฒƒ์— ๋Œ€ํ•ด์„œ ๊ฑฑ์ •ํ•˜๊ณ  ์žˆ๋‹ค. ๋‹น์—ฐํžˆ ์™„๋ฒฝํ•œ ๊ธฐ์ˆ ์ด๋ž€ ์—†์œผ๋‹ˆ ๋ฌธ์ œ๋„ ์žˆ์„ ๊ฒƒ์ด๋‹ค.

    ๊ทธ๋Ÿฌ๋‚˜ ๊ธฐ์กด์˜ HTTP์™€ TCP๊ฐ€ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ํ•œ๊ณ„๋ฅผ ๋ŒํŒŒํ•˜๊ธฐ ์œ„ํ•œ ์‹œ๋„๋กœ๋Š” ๊ต‰์žฅํžˆ ์ข‹์€ ๊ฒƒ ๊ฐ™๋‹ค. ๋งˆ์น˜ ์—”๋น„๋””์•„์˜ RTX ์‹œ๋ฆฌ์ฆˆ ๊ฐ™์€ ๋А๋‚Œ์ด๋ž„๊นŒ.

    ์ด์ƒ์œผ๋กœ HTTP/3๋Š” ์™œ UDP๋ฅผ ์„ ํƒํ•œ ๊ฒƒ์ผ๊นŒ? ํฌ์ŠคํŒ…์„ ๋งˆ์นœ๋‹ค.

    ์ฐธ๊ณ  ๋งํฌ

    Evan Moon

    ๐Ÿข ๊ฑฐ๋ถ์ด์ฒ˜๋Ÿผ ์‚ด์ž

    ๊ฐœ๋ฐœ์„ ์ž˜ํ•˜๊ธฐ ์œ„ํ•ด์„œ๊ฐ€ ์•„๋‹Œ ๊ฐœ๋ฐœ์„ ์ฆ๊ธฐ๊ธฐ ์œ„ํ•ด ๋…ธ๋ ฅํ•˜๋Š” ๊ฐœ๋ฐœ์ž์ž…๋‹ˆ๋‹ค. ์‚ฌ์†Œํ•œ ์ƒ๊ฐ ์ •๋ฆฌ๋ถ€ํ„ฐ ํŠœํ† ๋ฆฌ์–ผ, ์‚ฝ์งˆ๊ธฐ ์ •๋„๋ฅผ ์ฃผ๋กœ ๋„์ ์ด๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.