
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๊ฐ ๋์จ์ง๋ ์ผ๋ง ๋์ง ์์๋ค๋ ๊ฒ์ด๋ค.

ํ๋ก๊ทธ๋๋ฐ ์ธ์ด๋ ํ๋ ์์ํฌ๊ฐ์ ์น๊ตฌ๋ค์ ๋ฐฐํฌํ๋ ์ชฝ์์ ์ ๋ฐ์ดํธ๋ฅผ ์ซ ํด๋ฒ๋ฆฌ๊ณ ์ ์ ๋ค์ด ์ ๋ฐ์ดํธ๋ฅผ ํ๋ฉด ๊ทธ๋ง์ด์ง๋ง, ํ๋กํ ์ฝ์ ์ผ์ข ์ ๊ท์ฝ์ด๊ธฐ ๋๋ฌธ์ ์ํํธ์จ์ด ์ ์กฐ์ฌ ๊ฐ ํฉ์ ๋ง์ถ๋ ๊ธฐ๊ฐ์ด ํ์ํ๋ฏ๋ก ์ด๋ ๊ฒ ๋จ๊ธฐ๊ฐ ์์ ๊ธ๊ฒฉํ ๋ณํ๊ฐ ์์ฃผ ๋ฐ์ํ์ง ์์ ๊ฒ์ด๋ผ๊ณ ์๊ฐํ๋ค.
์๋ฌด๋ฆฌ ์์ฆ ๊ธฐ์ ์ ๋ณํ๊ฐ ๋น ๋ฅด๋ค์ง๋ง, 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

ํ์๋ ์น ๊ฐ๋ฐ์์ด๊ธฐ ๋๋ฌธ์ 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๊ฐ ์ด๋ค ์๋ฆฌ๋ก ์๋ํ๋์ง๋ง ์ค๋ช
ํ๊ฒ ๋ค.

์ ๊ทธ๋ฆผ์ ๋ณด๋ฉด ํด๋ผ์ด์ธํธ๊ฐ ์ฒ์ ์๋ฒ์ ํต์ ์ ํ๊ธฐ ์ํด 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๋ฅผ ์ฌ์ฉํจ์ผ๋ก์จ ์ด๋ฅผ ์คํํด๋ผ ์ ์์๋ค.

UDP๋ User Datagram Protocol์ด๋ผ๋ ์ด๋ฆ์์๋ ์ ์ ์๋ฏ์ด ๋ฐ์ดํฐ๊ทธ๋จ ๋ฐฉ์์ ์ฌ์ฉํ๋ ํ๋กํ ์ฝ์ด๊ธฐ ๋๋ฌธ์ ์ ์ด์ ๊ฐ๊ฐ์ ํจํท ๊ฐ์ ์์๊ฐ ์กด์ฌํ์ง ์๋ ๋ ๋ฆฝ์ ์ธ ํจํท์ ์ฌ์ฉํ๋ค. ๋ํ ๋ฐ์ดํฐ๊ทธ๋จ ๋ฐฉ์์ ํจํท์ ๋ชฉ์ ์ง๋ง ์ ํด์ ธ์๋ค๋ฉด ์ค๊ฐ ๊ฒฝ๋ก๋ ์ด๋ ํ๋ ์ ๊ฒฝ์ฐ์ง ์๊ธฐ ๋๋ฌธ์ ์ข ๋จ ๊ฐ์ ์ฐ๊ฒฐ ์ค์ ๋ํ ํ์ง ์๋๋ค. ์ฆ, ํธ๋์์ดํฌ ๊ณผ์ ์ด ํ์์๋ค๋ ๊ฒ์ด๋ค.
๊ฒฐ๋ก ์ ์ผ๋ก UDP๋ TCP๊ฐ ์ ๋ขฐ์ฑ์ ํ๋ณดํ๊ธฐ ์ํด ๊ฑฐ์น๋ ๋ง์ ๊ณผ์ ์ ๊ฑฐ์น์ง ์๊ธฐ ๋๋ฌธ์ ์๋๊ฐ ๋ ๋น ๋ฅผ ์ ๋ฐ์ ์๋ค๋ ๊ฒ์ธ๋ฐ, ๊ทธ๋ ๋ค๋ฉด UDP๋ฅผ ์ฌ์ฉํ๊ฒ๋๋ฉด ๊ธฐ์กด์ TCP๊ฐ ๊ฐ์ง๋ ์ ๋ขฐ์ฑ๊ณผ ํจํท์ ๋ฌด๊ฒฐํจ๋ ํจ๊ป ์ฌ๋ผ์ง๋ ๊ฑธ๊น?
์๋ ๊ทธ๋ ์ง ์๋ค. UDP๋ฅผ ์ฌ์ฉํ๋๋ผ๋ ๊ธฐ์กด์ TCP๊ฐ ๊ฐ์ง๊ณ ์๋ ๊ธฐ๋ฅ์ ์ ๋ถ ๊ตฌํํ ์ ์๋ค. UDP์ ์ง์ง ์ฅ์ ์ ๋ฐ๋ก ์ปค์คํฐ๋ง์ด์ง์ด ์ฉ์ดํ๋ค
๋ ๊ฒ์ด๊ธฐ ๋๋ฌธ์ด๋ค.
UDP๋ ํ์ ๋ํ์ง ๊ฐ์ ํ๋กํ ์ฝ์ด๋ค
ํ์๋ ํ๊ต์์ UDP์ TCP์ ๊ฐ์ฅ ํฐ ์ฐจ์ด์ ์ผ๋ก UDP๋ TCP๋ณด๋ค ์ ๋ขฐ์ฑ์ด ์๋ ๋์ ๋น ๋ฅด๋ค
๋ผ๊ณ ๋ฐฐ์ ์๋๋ฐ, ์ฌ์ค ์ด ๋ง์ ๋ฐ์ ๋ง๊ณ ๋ฐ์ ํ๋ฆฌ๋ค.
์๋๋ฉด ์ ์ด์ UDP๋ ๋ฐ์ดํฐ ์ ์ก์ ์ ์ธํ ๊ทธ ์ด๋ค ๊ธฐ๋ฅ๋ ์ ์๋์ด ์์ง ์์ ํ๋กํ ์ฝ์ด๊ธฐ ๋๋ฌธ์ ํ๋กํ ์ฝ ์์ฒด์ ์ผ๋ก ์ ๋ขฐ์ฑ์ ๋ณด์ฅํ์ง ์๋ ๊ฒ์ ๋ง์ง๋ง, ๋ค๋ฅด๊ฒ ๋งํ์๋ฉด ๋ฐ์ดํฐ ์ ์ก ๊ธฐ๋ฅ์ ์ ์ธํ ์๋ฌด ๊ธฐ๋ฅ์ด ์๋ ๋ฐฑ์ง ์ํ์ ํ๋กํ ์ฝ์ด๋ผ๊ณ ๋ ํ ์ ์๊ธฐ ๋๋ฌธ์ด๋ค. TCP๊ฐ ์ ๋ขฐ์ฑ์๋ ์ฐ๊ฒฐ๊ณผ ํผ์ก ์ ์ด ๋ฑ์ ์ํด ์ผ๋ง๋ ๋ง์ ๊ธฐ๋ฅ์ ๊ฐ์ง๊ณ ์๋ ์ง๋ TCP์ ํค๋๋ฅผ ๋ณด๋ฉด ๋์ถฉ ๊ฐ์ด ๋์จ๋ค.

TCP์ ๊ฒฝ์ฐ ์๋ ์ค๋ ์ ์ ์ค๊ณ๋๊ธฐ๋ ํ๊ณ , ์ด๋ฐ ์ ๋ฐ ๊ธฐ๋ฅ์ด ์๋ ๋ง์ด ํฌํจ๋ ํ๋กํ ์ฝ์ด๋ค๋ณด๋ ์ด๋ฏธ ํค๋๊ฐ ๊ฑฐ์ ํ๋ฐฉ์ด๋ค. TCP์ ๊ธฐ๋ณธ์ ์ผ๋ก ์ ์๋์ด ์๋ ๊ธฐ๋ฅ ์ธ์ ๋ค๋ฅธ ์ถ๊ฐ ๊ธฐ๋ฅ์ ๊ตฌํํ๊ณ ์ถ๋ค๋ฉด ๊ฐ์ฅ ํ๋จ์ ์๋ ์ต์
(Options)
ํ๋๋ฅผ ์ฌ์ฉํด์ผ ํ๋๋ฐ, ์ต์
ํ๋๋ ๋ฌดํ์ ๋ฐฐ๋น ํด์ค ์๋ ์์ผ๋ ์ต๋ ํฌ๊ธฐ๋ฅผ 320 bits
๋ก ์ ํด๋์๋ค.
๊ทธ๋ฌ๋ TCP์ ๋จ์ ์ ๋ณด์ํ๊ธฐ ์ํด ๋์ค์ ์ ์๋ MSS(Maximum Segment Size)
, WSCALE(Window Scale factor)
, SACK(Selective ACK)
๋ฑ ๋ง์ ์ต์
๋ค์ด ์ด๋ฏธ ์ต์
ํ๋๋ฅผ ์ฐจ์งํ๊ณ ์๊ธฐ ๋๋ฌธ์ ์ค์ง์ ์ผ๋ก ์ฌ์ฉ์๊ฐ ์ปค์คํ
๊ธฐ๋ฅ์ ๊ตฌํํ ์ ์๋ ์๋ฆฌ๋ ๊ฑฐ์ ๋จ์ง๋ ์์๋ค.
๋ฐ๋ฉด UDP๋ ๋ฐ์ดํฐ ์ ์ก ์์ฒด์๋ง ์ด์ ์ ๋ง์ถ๊ณ ์ค๊ณ๋์๊ธฐ ๋๋ฌธ์ ํค๋์ ์ง์ง ์๋ฌด ๊ฒ๋ ์๋ค.

UDP์ ํค๋์๋ ์ถ๋ฐ์ง์ ๋์ฐฉ์ง, ํจํท์ ๊ธธ์ด, ์ฒดํฌ์ฌ ๋ฐ์ ์๋ค. ์ด๋ ์ฒดํฌ์ฌ์ ํจํท์ ๋ฌด๊ฒฐ์ฑ์ ํ์ธํ๊ธฐ ์ํด ์ฌ์ฉ๋๋๋ฐ, TCP์ ์ฒดํฌ์ฌ๊ณผ๋ ๋ค๋ฅด๊ฒ UDP์ ์ฒดํฌ์ฌ์ ์ฌ์ฉํด๋ ๋๊ณ ์ํด๋ ๋๋ ์ต์ ์ด๋ค.
์ฆ, UDP ํ๋กํ ์ฝ ์์ฒด๋ TCP๋ณด๋ค ์ ๋ขฐ์ฑ์ด ๋ฎ๊ธฐ๋ ํ๊ณ ํ๋ฆ ์ ์ด๋ ์๋์ง๋ง, ์ดํ ๊ฐ๋ฐ์๊ฐ ์ดํ๋ฆฌ์ผ์ด์ ์์ ๊ตฌํ์ ์ด๋ป๊ฒ ํ๋์ ๋ฐ๋ผ์ TCP์ ๋น์ทํ ์์ค์ ๊ธฐ๋ฅ์ ๊ฐ์ง ์๋ ์๋ค๋ ๊ฒ์ด๋ค.
๋ฌผ๋ก TCP๊ฐ ์ ๋ขฐ์ฑ์ ํ๋ณดํ๊ธฐ์ํด ์ด๋ฐ ์ ๋ฐ ๊ธฐ๋ฅ์ ์ ๊ณตํด์ฃผ๋ ๊ฒ์ด ๊ฐ๋ฐ์ ์
์ฅ์์๋ ํธํ๊ณ ์ข์ง๋ง, ํ๊ฐ์ง ์ฌํ ์ ์ ์ด ๊ธฐ๋ฅ๋ค์ด ํ๋กํ ์ฝ ์์ฒด์ ์ ์๋ ํ์ ๊ณผ์
์ด๋ผ์ ๊ฐ๋ฐ์๊ฐ ๋ง๋๋ก ์ปค์คํฐ๋ง์ด์ง ํ ์ ์๋ค๋ ๊ฒ์ด๋ค. ๊ฒฐ๊ตญ ์ฌ๊ธฐ์ ๋ฐ์ํ๋ ๋ ์ดํด์๋ค์ ์ด๋ป๊ฒ ๋ ์ค์ฌ๋ณผ ์๋์กฐ์ฐจ ํ๊ธฐ ํ๋ค๋ค.

๊ฒฐ๊ตญ ๋ ์ดํด์๋ฅผ ์ค์ด๋ ค๋ฉด ํ๋กํ ์ฝ ์ธ์ ์ธ ๊ฒ๋ค์ ๊ฑด๋๋ ค์ผ ํ๋๋ฐ, ์์์ ์ด์ผ๊ธฐ ํ๋ฏ์ด ์ผ๋ฐ์ ์ธ ๊ฐ๋ฐ์๊ฐ ํต์ ๊ณผ์ ์์ ๊ฑด๋๋ฆด ์ ์๋ ์์ญ์ ํ๊ณ๊ฐ ์๊ธฐ ๋๋ฌธ์ ์ด ๋ํ ์ด๋ ค์ด ๊ฒ์ด ์ฌ์ค์ด๋ค.(ํต์ ์ ๊ณ์ ํฐ ์ ํ๋๋ค์ด ์ธํ๋ผ๋ฅผ ๊น์์ฃผ์๋ ๊ฑธ ๊ธฐ๋ค๋ฆฌ์)
์์ง 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?
์ด๋ผ๋ ์ธ์
์์ ์์ธํ ๋ค์ด๋ณผ ์ ์๋ค.
ํ ์ ์ฃผ๋จธ๋์ ๊ฝ๊ณ ๋ฐํํ๋ ๋ชจ์ต์์ ์ค์ฉ์ด ๋์น๋ค
๊ฒฐ๊ตญ ์ด ์์์์ ๋งํ๊ณ ์ ํ๋ ๊ฒ์ 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๋ฅผ ์ ํํ ๊ฒ์ผ๊น? ํฌ์คํ ์ ๋ง์น๋ค.
์ฐธ๊ณ ๋งํฌ
- The QUIC Transport Protocol: Design and Internet-Scale Deployment
- QUIC vs TCP+TLS - and why QUIC is not the next big thing
- HTTP/3: the past, the present, and the future
- QUIC๊ณผ HTTP/3 - 1.UDP๊ธฐ๋ฐ ์ ์ก ํ๋กํ ์ฝ์ ๋๋
- QUIC, a multiplexed stream transport over UDP
- Using TLS to Secure QUIC
- The Road to QUIC
๊ด๋ จ ํฌ์คํ ๋ณด๋ฌ๊ฐ๊ธฐ

์ฐ๋ฆฌ ์ง์์ ๊ตฌ๊ธ๊น์ง ๊ฐ๋ ๊ธธ
ํ๋ก๊ทธ๋๋ฐ/๋คํธ์ํฌ
CORS๋ ์ ์ด๋ ๊ฒ ์ฐ๋ฆฌ๋ฅผ ํ๋ค๊ฒ ํ๋๊ฑธ๊น?
ํ๋ก๊ทธ๋๋ฐ/๋คํธ์ํฌ/์น
์ฌ์ด ์ข๊ฒ ๋คํธ์ํฌ๋ฅผ ๋๋ ์ฐ๋ ๋ฐฉ๋ฒ, TCP์ ํผ์ก ์ ์ด
ํ๋ก๊ทธ๋๋ฐ/๋คํธ์ํฌ
ํจํท์ ํ๋ฆ๊ณผ ์ค๋ฅ๋ฅผ ์ ์ดํ๋ TCP
ํ๋ก๊ทธ๋๋ฐ/๋คํธ์ํฌ
TCP๊ฐ ์ฐ๊ฒฐ์ ์์ฑํ๊ณ ์ข ๋ฃํ๋ ๋ฐฉ๋ฒ, ํธ๋์์ดํฌ
ํ๋ก๊ทธ๋๋ฐ/๋คํธ์ํฌ