์์ฑ์ : ์ด๋ณ๋ฏผ
HTTP์ ์งํ
๊ทธ๋ฆผ์ผ๋ก ์ฝ๊ฒ ๋ณด๋ HTTP๋ณ์ฒ์ฌ
Introduction to HTTP/2
HTTP
๋ Hyper Text Transfer Protocol
์ ์ฝ์๋ก ์ธํฐ๋ท์์ ๋ฐ์ดํฐ๋ฅผ ์ฃผ๊ณ ๋ฐ์ ์ ์๋ ํ๋กํ ์ฝ์ด๋ค.
HTTP
๋ World Wide Web
์ ๋ด์ ๋ ํ๋กํ ์ฝ๋ก 1989๋
CERN(์ ๋ฝ ์
์ ๋ฌผ๋ฆฌํ ์ฐ๊ตฌ์)์ ํ ๋ฒ๋์ค ๋ฆฌ(Tim Berners-Lee)์ ์ํด World Wide Web
์ ์ ์ํ๋ค.
์ด๋ ๋ฌธ์ ๊ธฐ์ ์ธ์ด๋ก๋ SGML์ ๋ฒ ์ด์ค๋กํ๋ HTML
, ๋ฌธ์ ์ ์ก ํ๋กํ ์ฝ์ธ HTTP
, ๋ฌธ์์ ์ฃผ์๋ฅผ ์ง์ ํ๋ ๋ฐฉ๋ฒ์ธ URL(Uniform Resource Locator)
๋ฑ์ด ๊ฐ์ด ์ ์ ๋์๋ค.
HTTP ์ด๊ธฐ ๋ฒ์ ์๋ ๋ฒ์ ๋ฒํธ๊ฐ ์์๊ณ ์ด ํ ๋ฒ์ ๊ณผ ๊ตฌ๋ณํ๊ธฐ ์ํด์ 0.9๋ผ๊ณ ๋ถ๋ฆฌ๊ฒ ๋์๋ค.
์ด๊ธฐ HTTP๋ ์์ฒญ์ ๋จ์ผ ๋ผ์ธ์ผ๋ก๋ง ๊ตฌ์ฑ๋์๊ณ ๊ฐ๋ฅํ ๋ฉ์๋ GET
์ด ์ ์ผํ๋ค.
์ด๋๋ฌธ์ ์-๋ผ์ธ ํ๋กํ ์ฝ์ด๋ผ๊ณ ๋ ๋ถ๋ฆฐ๋ค.
-
์์ฒญ์
GET /mypage.html
-
์๋ต์
<HTML> Hello World! </HTML>
์์ ๊ฐ์ด ์ค๋ก์ง ํ์ผ ๋ด์ฉ ์์ฒด๋ก๋ง ๊ตฌ์ฑ๋๋ค.
์ด ํ ๋ฒ์ ๋ค๊ณผ๋ ๋ค๋ฅด๊ฒ HTTP header
๊ฐ ์์ด HTML
ํ์ผ๋ง ์ ์ก ๋ ์ ์์ผ๋ฉฐ ๋ค๋ฅธ ์ ํ์ ๋ฌธ์๋ ์ ์ก ๋ ์ ์๊ณ ์ํ์ฝ๋๋ ์ค๋ฅ ์ฝ๋ ๋ํ ์๋ค.
๊ทธ๋ฆฌ๊ณ ์ปค๋ฅ์
ํ๋๋น 1์์ฒญ, 1์๋ต๋ง ๊ฐ๋ฅํ์ฌ ๋งค๋ฒ ์๋ก์ด ์ฐ๊ฒฐ๋ก ์ฑ๋ฅ์ด ์ ํ๋๊ณ , ์๋ฒ ๋ถํ ๋น์ฉ์ด ์ฌ๋ผ๊ฐ๋ค.
์ด์ ๋ฒ์ ์ธ 0.9๊ฐ ๋งค์ฐ ์ ํ์ ์ด์๋๊ณผ ๋ฌ๋ฆฌ ๋ธ๋ผ์ฐ์ ์ ์๋ฒ๊ฐ ๋ชจ๋ ์ตํต์ฑ์ ๊ฐ์ง๋๋ก ํ์ฅ ๋์๋ค.
HTTP์ ๋ฒ์ ์ ๋ณด๋ ์ํ ์ฝ๋๋ค์ ์ ์ก ํ ์ ์๊ฒ ๋์๊ณ HTTP header
๊ฐ๋
์ ๋์
๋์ด์ HTML ํ์ผ๋ค ์ธ์ ๋ค๋ฅธ ๋ฌธ์๋ค์ ์ ์กํ๋ ๊ธฐ๋ฅ์ด ์ถ๊ฐ ๋์๋ค.(Content-Type ๋๋ถ์)
-
์์ฒญ์
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>
-
์๋ต์
GET /myimage.gif HTTP/1.0 User-Agent: NCSA_Mosaic/2.0 (Windows 3.1) 200 OK Date: Tue, 15 Nov 1994 08:12:32 GMT Server: CERN/3.0 libwww/2.17 Content-Type: text/gif (image content)
HTTP/1.1
์ ์ด์ ๋ฒ์ ์ ๋ชจํธํจ์ ๋ช
ํํ๊ฒ ํ๊ณ ๊ฐ์ ํ์๋ค.
์ด์ ๋ฒ์ ์์๋ ๋์ผํ ์ปดํจํฐ ์ฌ์ด์์ ์ฌ๋ฌ ๊ฐ์ ์์ฒญ์ ํด๋ ๋งค ๋ฒ ์ ์ฐ๊ฒฐ์ ํ์ด์ผํ๋ค.
ํนํ ํ๋ฒ ์ฐ๊ฒฐํ ๋๋ง๋ค TCP์์๋ 3-way handshaking
๊ฐ ์ผ์ด๋๊ธฐ ๋๋ฌธ์ ํต์ ์๋๊ฐ ๋๋ ค์ง๊ฒ ๋๋ค.
๊ทธ๋์ persist connection
๋ฅผ ๋์
ํ์ฌ ํ๋ฒ TCP์ฐ๊ฒฐ์ ๋งบ์ผ๋ฉด ๋์ด์ง์ง ์๊ณ ๊ณ์ ์ ์ง ํ ์ ์๊ฒ ํ๋ค.(์ง์ ๋ ์๊ฐ๋์ ์ปค๋ฅ์
์ ๋ซ์ง ์์์ ๊ทธ ์๊ฐ๋์์ ๊ณ์ ๊ทธ ์ปค๋ฅ์
์ ์ฌ์ฉํ ์ ์์)
๊ทธ๋ฆฌ๊ณ pipelining
๋ฅผ ๋์
ํด์ ํ๋์ ์ปค๋ฅ์
์์ ์๋ต์ ๊ธฐ๋ค๋ฆฌ์ง ์๊ณ ์์ฐจ์ ์ธ ์ฌ๋ฌ ์์ฒญ์ ์ฐ์์ ์ผ๋ก ๋ณด๋ด ๊ทธ ์์์ ๋ง์ถฐ ์๋ต์ ๋ฐ๋ ๋ฐฉ์์ผ๋ก ์ง์ฐ ์๊ฐ์ ์ค์ธ๋ค.
ํ์ง๋ง ์ด๋๋ ์ฒ์ ์์ฒญ์ด ์ค๋ ๊ฑธ๋ฆฌ๋ฉด ๊ทธ ๋ค์ ์ค๋ ์์ฒญ์ด ์ด์ ์์ฒญ์ ๊ธฐ๋ค๋ฆฌ๋ Head Of Line Blocking
์ด๋ผ๋ ๋ฌธ์ ๊ฐ ์์๊ณ ์ฐ์๋ ์์ฒญ์ ๊ฒฝ์ฐ Header๊ตฌ์กฐ๊ฐ ์ค๋ณต ๋ ์ ์๋ ๋ฌธ์ ๊ฐ ์๋ค.
HTTP/2.0
์ 2015๋
๋์ ๋ฐํ ๋์์ผ๋ฉฐ ๊ตฌ๊ธ์ SPDY(์คํผ๋)๋ผ๋ ๋คํธ์ํฌ ํ๋กํ ์ฝ์ ๊ธฐ๋ฐํ์ฌ ๊ฐ๋ฐ ๋์๋ค.
์ฐ์ HTTP/2.0
์์๋ ๋ฐ์ดํฐ ๊ตํ ๋ฐฉ์์ด ๋ฐ๋์๋ค.
HTTP์ฉ์ด
- ์คํธ๋ฆผ : ๊ตฌ์ฑ๋ ์ฐ๊ฒฐ ๋ด์ ์ํญํฅ ํ๋ฆ, ํ๋ ์ด์์ ๋ฉ์์ง๊ฐ ์ ๋ฌ ๋ ์ ์์
- ๋ฉ์์ง : ๋ ผ๋ฆฌ์ ์์ฒญ ๋๋ ์๋ต ๋ฉ์์ง์ ๋งคํ๋๋ ํ๋ ์์ ์ ์ฒด ์ํ์ค
- ํ๋ ์ : HTTP/2.0์์ ํต์ ์ ์ต์ ๋จ์๋ก ํ๋์ ํ๋ ์ ํค๋๊ฐ ํฌํจ๋๋ค.
HTTP/2.0
์ ๋์
๋ ์๋ก์ด ๋ฐ์ดํฐ ๊ตํ ๋ฐฉ์์ ๋ฐ์ด๋๋ฆฌ ํ๋ ์ด๋ฐ(binary framing)
์ผ๋ก HTTP ๋ฉ์์ง๋ฅผ ๋ ์์ ๋จ์๋ก ์ชผ๊ฐ ๋ฐ์ด๋๋ฆฌ ํํ์ธ ํ๋ ์ ๋จ์๋ก ์บก์ํํ์ฌ ํ์ฑ, ์ ์ก์๋๋ฅผ ๋์ด๊ณ ์ค๋ฅ ๋ฐ์ ๊ฐ๋ฅ์ฑ์ ์ค์๋ค.
๊ทธ๋ฆฌ๊ณ ์ด ํ๋ ์ ๋จ์๋ ๋จผ์ ๋์ฐฉํ๋ ๋ฐ์ดํฐ๋ฅผ ์ ์ก ๋ฐ์ ์ธก์์ ์กฐ๋ฆฝ์ ํ ์ ์์ด์ Head Of Line Blocking
์ ์ด๋์ ๋ ํด๊ฒฐ ํ ์ ์๊ฒ ๋์๋ค.
Stream Prioritization
์ผ๋ก ๋ฆฌ์์ค๊ฐ์ ์ฐ์ ์์๋ฅผ ์ค์ ํ ์ ์์ด์ ๋จผ์ ์ ์ก ํ๊ณ ์ ํ๋ ๋ฐ์ดํฐ๋ฅผ ๋จผ์ ๋ณด๋ผ ์ ์๋ค.
๊ฐ ์คํธ๋ฆผ์ 1~256์ฌ์ด์ ์ ์ ๊ฐ์ค์น๋ฅผ ํ ๋นํ๊ณ ๊ฐ ์คํธ๋ฆผ์๋ ๋ค๋ฅธ ์คํธ๋ฆผ์ ๋ํ ๋ช ์์ ์ข ์์ฑ์ ๋ถ์ฌ ํ ์ ์๋ค. ์คํธ๋ฆผ์ ์ข ์์ฑ ๋ฐ ๊ฐ์ค์น ์กฐํฉ์ ์ด์ฉํ์ฌ '์ฐ์ ์์ ์ง์ ํธ๋ฆฌ'๋ฅผ ๊ตฌ์ฑํ์ฌ ์ฐ์ ์์๊ฐ ๋์ ์๋ต์ด ํด๋ผ์ด์ธํธ์ ์ต์ ์ผ๋ก ์ ๋ฌ๋๋๋ก ๋์ญํญ์ ํ ๋นํ๋ค.
๊ทธ๋ฆฌ๊ณ ์๋ฒ๊ฐ ๋จ์ผ ํด๋ผ์ด์ธํธ ์์ฒญ์ ๋ํด ์ฌ๋ฌ ์๋ต์ ๋ณด๋ผ ์ ์๋ ServerPush
๊ฐ ๋์
๋์๋ค.
ServerPush
๋ก ์๋ฒ๋ ํด๋ผ์ด์ธํธ๊ฐ ์์ฒญํ์ง ์์๋ ์ถ๊ฐ์ ์ธ ๋ฆฌ์์ค๋ฅผ ํด๋ผ์ด์ธํธ์ ์ ์ก ํ ์ ์๋ค.
๋ง์ฝ htmlํ์ผ์ ์ฐธ์กฐ๋ css,jsํ์ผ๋ค์ htmlํ์ผ๊ณผ ๊ฐ์ด ํด๋ผ์ด์ธํธ์ ๋จผ์ ์ ์ก์ ํ๊ฒ ๋์ด ํด๋ผ์ด์ธํธ๊ฐ html์ฝ๊ณ ๋๋ค ์์ฒญํ ์ ์ ๋ฏธ๋ฆฌ ์ ์ก์ ํ ์ ์๋ค.
์ด์ ๋ฒ์ ์์๋ header๊ฐ์ด ์ค๋ณต๋๋๋ผ๋ ๋ชจ๋ header๊ฐ์ ๋ณด๋์ง๋ง Header Compression
์ ํตํด์ ์ค๋ณต๋ ๋ถ๋ถ์ ์ค์ฌ์ header์์ฒด์ ํฌ๊ธฐ๋ฅผ ์ค์ฌ์ ํ์ด์ง ๋ก๋ ์๊ฐ์ ๊ฐ์ ์์ผฐ๋ค.
HTTP/3.0
์ ๊ตฌ๊ธ์์ 2013๋
๋์ ๋ฐํํ QUIC(Quick UDP Internet Connections)
์ ์ฌ์ฉํ๋ค. (2018๋
์ QUIC ๊ฒฝ์ฐ HTTP๋ฅผ HTTP/3.0๋ก ํธ์นญํ๊ธฐ๋ก ํ๋ค.)
์ด QUIC
๋ ํ์ฌ ๊ตฌ๊ธ์์๋ ๋๋ถ๋ถ ์๋น์ค์ ๋์
ํ๊ณ ์๋ค.
QUIC์ TCP๊ฐ ์๋ UDP๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ์ฌ์ฉํ๋ค.
http๋ ์ ๋ขฐ์ฑ ์๋ ์ฐ๊ฒฐ์ ํ ์ ์์ผ๋ฉด TCP๋ฐฉ์์ด๋ UDP ๋ฐฉ์์ด๋ ์๊ด์ด ์๋ค.
- TCP vs UDP
- TCP UDP ์ฐ๊ฒฐ ๋ฐฉ์ ์ฐ๊ฒฐํ ์๋น์ค ๋น์ฐ๊ฒฐํ ์๋น์ค ํจํท ๊ตํ ๊ฐ์ ํ์ ๋ฐฉ์ ๋ฐ์ดํฐ๊ทธ๋จ ๋ฐฉ์ ์ ์ก ์์ ๋ณด์ฅ ๋ณด์ฅํจ ๋ณด์ฅํ์ง ์์ ์ ๋ขฐ์ฑ ๋์ ๋ฎ์ ์ ์ก์๋ ๋๋ฆผ ๋น ๋ฆ
์ถ์ฒ : wikipedia
UDP๋ฐฉ์์ ๋์
ํ ์ด์ ๋ TCP๋ ์ ๋ขฐ์ฑ์ ํ๋ณดํ๊ธฐ์ํด ๊ตฌ์กฐ๊ฐ ์ปค์ ์ง์ฐ์ ์ค์ด๊ธฐ ํ๋ค์๊ธฐ ๋๋ฌธ์ UDP๋ฅผ ๋ฐํ์ผ๋ก QUIC
์ ๋ง๋ค์๋ค.
UDP๋ ๋ฐ์ดํฐ ์ ์ก์ ์ง์ค์ด ๋์๋ ์ค๊ณ๋ก ๋ณ๋์ ๊ธฐ๋ฅ์ด ์๊ณ ์ํ๋ ๊ธฐ๋ฅ์ ๊ฐ๋ฐ์๊ฐ ๊ตฌํ ํ ์ ์์ด์ TCP์ ์ง์ฐ์ ์ค์ด๋ฉด์ TCP๋งํผ์ ์ ๋ขฐ์ฑ์ ํ๋ณด ํ์๋ค.
QUIC
๋ ์ฒซ ์ฐ๊ฒฐ ์ค์ ์์ ํ์ํ ์ ๋ณด์ ํจ๊ผ ๋ฐ์ดํฐ๋ฅผ ์ ์กํ์ฌ ์ฐ๊ฒฐ ์ฑ๊ณต ์ ์ค์ ์ ์บ์ฑํ์ฌ ๋ค์ ์ฐ๊ฒฐ๋ ๋ฐ๋ก ์ฑ๋ฆฝ์ด ๊ฐ๋ฅํ๋ค.
Connection UUID
๋ผ๋ ๊ณ ์ ํ ์๋ณ์๋ก ์๋ฒ์ ์ฐ๊ฒฐํ์ฌ ํด๋ผ์ด์ธํธ๊ฐ ์ด ์๋ณ์๋ฅผ ๊ฐ์ง๊ณ ์์ผ๋ฉด ์ปค๋ฅ์
์ ์ฌ์๋ฆฝ ํ์ง ์์๋ ๋๋ค.
IP๊ฐ ๋ณ๊ฒฝ๋๊ฑฐ๋ wifi์์ LTE๋ก ๋ณ๊ฒฝ๋์ด๋ ๊ธฐ์กด์ ์ปค๋ฅ์ ์ ์ ์ง ์ํฌ ์ ์๋ค.
-
2.0๊ณผ 3.0์ ๋ฉํฐ ํ๋ ์ฑ ๋น๊ต ์ฌ์ง
์ถ์ฒ : http3-explained
HTTP/2.0
์์๋ ๋ฉํฐ ํ๋ ์ฑ์ด ๊ฐ๋ฅ์ ํ์๋๋ฐ ์คํธ๋ฆผ์ด ๋ณ๋ ฌ๋ก ์ฒ๋ฆฌ ๋ ๋ ๋ฐ์ดํฐ ์์ฒด๊ฐ ์์ค์ด ๋๊ฒ ๋๋ฉด Head Of Line Blocking
์ด์๊ฐ ๋ค์ ์๊ธฐ๊ฒ ๋๋ค.
ํ์ง๋ง QUIC
์ ๋
๋ฆฝ ์คํธ๋ฆผ์ ์ฌ์ฉํ์ฌ ํฅ์๋ ๋ฉํฑ ํ๋ ์ฑ์ด ๊ฐ๋ฅํ๋ค.
๋ํ QUIC ํ๋กํ ์ฝ์๋ ์ผ๋ฐ ํ ์คํธ ๋ฒ์ ์ด ์๊ณ ํญ์ TLS๋ฅผ ์ฌ์ฉํด์ ์ํธํ ๋ฐ ๋ณด์์ ์ํํ์ฌ์ผ ํ๊ธฐ ๋๋ฌธ์ ๋ณด์ ๋ฉด์์๋ ๋ฐ์ด๋๋ค.
W3techs์ ๋ฐ๋ฅด๋ฉด 2022๋ 1์ ๊ธฐ์ค HTTP/3.0์ ์ ์ฒด ์น์ฌ์ดํธ์ 24.6%์ ์ฌ์ฉ๋๊ณ ์๋ค.