[ CS > Network ]
[HTTP] HTTP๋
HTTP(Hypertext Transfer Protocol)
์ต๊ทผ ๋ฉด์ ์ ๋ณด๋ฉด์ ๊ธฐ์ด๋ค์ ๋ง์ด ๊น๋จน์๊ณ ์ ๋๋ก ์ ๋ฆฌ๋์ด ์์ง ์๋ค๊ณ ๋๊ผ์ต๋๋ค. ๊ทธ๋์ ๊ธฐ์ด๋ถํฐ ๋ค์ ์ฒ์ ๋ฐฐ์ฐ๋ ๋ง์๊ฐ์ง์ผ๋ก ๊ธ์ ์์ฑํฉ๋๋ค... ใ ใ
HTTP๋ ๋ฆฌ์์ค๋ค์ ๊ฐ์ ธ์ฌ ์ ์๋๋ก ํด์ฃผ๋ ํ๋กํ ์ฝ์ด๋ค. ํนํ ์น์์ ์ด๋ฃจ์ด์ง๋ ๋ฐ์ดํฐ ๊ตํ์ ๊ธฐ์ด์ด๋ฉฐ, ์ฃผ๋ก Server-Client๊ฐ์ ํต์ ํ๋กํ ์ฝ์ด๋ค. ๋ณดํต ์น ๋ธ๋ผ์ฐ์ (ํฌ๋กฌ, ์ฌํ๋ฆฌ ๋ฑ)๊ฐ Client์ด๊ณ Tomcat, Nginx ๊ฐ์ ๊ฒ๋ค์ด Server ์ญํ ์ ํ๋ค.
1. ๋ฆฌ์์ค
์น ์๋ฒ๋ ๋ฆฌ์์ค๋ฅผ ๊ด๋ฆฌํ๊ณ ์ ๊ณตํ๋ค. ์น ์๋ฒ์ ์ ์ ํ์ผ์ ์ ๋ฌํด์ค ์๋ ์์ง๋ง, ๋๊ฐ ์ธ์ ์์ฒญํ๋์ง์ ๋ฐ๋ผ ๋์ ์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ์ ๋ฌํด์ค ์ ์๋ค. ์๋ฅผ๋ค๋ฉด ๋ก๊ทธ์ธ์์ ์ ์ ๋ณ๋ก ๋ฐ์์ค๋ ๋๋ค์ ์ ๋ณด๋ ๋ค๋ฅผ ๊ฒ์ด๋ค. ๊ทธ๋ฆฌ๊ณ ์ด ์น ํด๋ผ์ด์ธํธ๋ ์ฉ๋์ ๋ง๋ ์น์๋ฒ๋ฅผ ํตํด ์ด๋ฌํ ๋ฐ์ดํฐ๋ค์ ์ ๋ฌ๋ฐ๋๋ค.
1.1 MIME(๋ฏธ๋์ด ํ์ , Content-type)
MIME(Multipurpose Internet Mail Extensions)๋ ๊ฐ๊ธฐ ๋ค๋ฅธ ๋ฉ์ผ ์์คํ ์ฌ์ด์์ ๋ฉ์์ง๊ฐ ์ค๊ฐ ๋ ๊ฒช๋ ๋ฌธ์ ์ ์ ํด๊ฒฐํ๊ธฐ ์ํด ์ค๊ณ๋์์ต๋๋ค. ๋ ์์ธํ๊ฒ๋ ๊ฐ ๋ฉ์ผ ์์คํ ์ด ์๊ธฐ ๋ฐฉ์๋๋ก ์ฒจ๋ถํ์ผ์ ์ธ์ฝ๋ฉ ์ฒ๋ฆฌํ๊ธฐ ๋๋ฌธ์, ์ด๋ค ํ์ผ์ธ์ง์ ์ธ์ฝ๋ฉ ๋ฐฉ์์ ์ง์ ํ์ฌ ํธํ๋๋๋ก ๋ง๋ค๊ธฐ ์ํจ์ด์์ต๋๋ค. HTTPํต์ ์์๋ ๋ค์ํ ์ ํ์ ํ์ผ์ ์ ๋ฌํ๊ธฐ ๋๋ฌธ์ ์ ๋ฌํ ๋ฐ์ดํฐ์ ๋ํด์ MIME ํ์ ์ ํตํด ํ์ธ๊ฐ๋ฅ ํ๋๋ก ๋ง๋ค์ด์ผ ํ์ต๋๋ค.
๊ทธ๋์ HTTP์์๋ Content-type(๋ฐ์ดํฐ ํ์), Content-length(๋ฐ์ดํฐ ํฌ๊ธฐ), Content-Encoding(์์ถ ๋ฐฉ์)์ด๋ผ๋ ํค๋๋ฅผ ํตํด์ ๋ฐ์ดํฐ์ ํ์๊ณผ ์์ถ ๋ฐฉ์์ ๋ณด๋ด์ฃผ๊ณ , ์น ํด๋ผ์ด์ธํธ์์๋ ํด๋น ์ ๋ณด๋ฅผ ํ์ฉํ์ฌ ๋ฐ์ดํฐ๋ฅผ ์๋ง๊ฒ ์ฒ๋ฆฌํฉ๋๋ค.
HTTP์์ ์ด๋ฏธ์ง๋ฅผ ๋ฐ์ผ๋ฉด MIME๋ ๋ค์๊ณผ ํ์์ผ๋ก ๋ฐ์์ฌ ๊ฒ์
๋๋ค.HTTP/1.1 200 OKContent-Type: image/jpegContent-Length: 245760Content-Encoding: gzipContent-Type: {์ฃผํ์
}/{๋ถํ์
}; charset={์ธ์ฝ๋ฉ ๋ฐฉ์,utf-8 ๋ฑ}Content-Length: ํ์ผ ํฌ๊ธฐContent-Enccoding: {์์ถ๋ฐฉ์, gzip ๋ฑ๋ฑ
1.2 URI (uniform resource identifier, ํตํฉ ์์ ์๋ณ์)
์น ์๋ฒ ๋ฆฌ์์ค๋ ๊ฐ์ ์ด๋ฆ์ ๊ฐ๊ณ ์๊ณ , ํด๋ผ์ด์ธํธ๋ ํด๋น ๋ฆฌ์์ค๋ฅผ ์ง๋ชฉํ ์ ์์ด์ผ ํ๋ค. ๊ทธ๋ฆฌ๊ณ ์ด๋ฌํ ์๋ฒ ๋ฆฌ์์ค์ ์ด๋ฆ์ URI๋ผ๊ณ ๋ถ๋ฅธ๋ค. ์ด URI๋ ์ ๋ณด ๋ฆฌ์์ค๋ฅผ ๊ณ ์ ํ๊ฒ ์๋ณํ๊ณ ์์น๋ฅผ ์ง์ ํ ์ ์๋๋ก ๋์์ค๋ค.
์๋ฅผ๋ค๋ฉด ์ด ๋ธ๋ก๊ทธ ๋ฐฐ๊ฒฝํ๋ฉด ๋์์์ URI๋ https://api.yooncarrot.com/static/home/background2.mp4์ด๋ค.(S3์๋ฒ ์ฃผ์์ S3์์ ํด๋น ํ์ผ์ ๋ฆฌ์์ค ์์น๋ฅผ ์๋ฉด, S3์๋ฒ ์ฃผ์๋ฅผ ํตํด ์ ๊ทผํ ์๋ ์๋ค.)
URI๋ URL๊ณผ URN 2๊ฐ์ง ์ข ๋ฅ๊ฐ ์๋ค.
URL(uniform resource locator)
ํน์ ์๋ฒ์ ํ ๋ฆฌ์์ค์ ๋ํ ๊ตฌ์ฒด์ ์ธ ์์น๋ฅผ ์๋ฏธํ๋ค. ๊ทธ๋ฆฌ๊ณ URL์ 3 ๋ถ๋ถ์ผ๋ก ์ด๋ฃจ์ด์ง๋ค.
์คํด(scheme): https://(๋ณดํต ์ฌ์ฉ๋๋ ํ๋กํ ์ฝ)
์๋ฒ์ ์ธํฐ๋ท ์ฃผ์(๋๋ฉ์ธ) : api.yooncarrot.com
์๋ฒ์์ ๋ฆฌ์์ค ์์น: /static/home/background2.mp4
URN(uniform resource name)
๋ฆฌ์์ค ์์น์ ์ํฅ์์ด ์ ์ผํ ์ด๋ฆ ์ญํ ์ ํ๋ค. ๋ฆฌ์์ค ์์น๋ฅผ ์ฎ๊ธฐ๋๋ผ๋ ์ด URN์ ๋ฌธ์ ์์ด ์๋ํด์ผํ๋ฉฐ, ํ๋กํ ์ฝ ์๊ด์์ด ์ ๊ทผํ ์ ์๋ค. (urn:๋ค์์คํ์ด์ค:๋ค์์คํ์ด์ค์์์ด๋ฆ ์ผ๋ก ๋๋ค. urn:isbn:9780134092669) ๋ณดํต ์ฑ , ๋ ผ๋ฌธ ์ ๋ณด๋ฅผ ์ด๋ฐ์์ผ๋ก ์ ์ฅํ๋ค. ํ์ฌ๋ ์ฌ์ค์ ๊ฑฐ์ ์ฐ์ด์ง ์๋๋ค.
2. ํธ๋์ญ์
HTTP ํธ๋์ญ์ ์ ์์ฒญ(client -> server)๊ณผ ์๋ต(server -> client)๋ก ๊ตฌ์ฑ๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ด ์ํธ์์ฉ์ ์ ํํ๋ HTTP ๋ฉ์์ง๋ก ์ด๋ฃจ์ด์ง๋ค.
์์ฒญ
GET /static/home/background2.mp4 HTTP/1.1
Host: api.yooncarrot.com์๋ต
HTTP/1.1 200 OK
Content-type: video/mp4
Content-Length: 981314
์์ฒญ ์๋ HTTP ๋ฉ์๋ ์ ๋ณด, ๋ณด๋ผ ์๋ฒ ์ฃผ์, ๊ฒฝ๋ก๊ฐ ํฌํจ๋๋ฉฐ ์๋ต์๋ ํ๋กํ ์ฝ ๋ฒ์ , ์๋ต ์ํ, MIME ์ ๋ณด ๋ฑ์ด ํฌํจ๋๋ค. ๊ทธ๋ฆฌ๊ณ ์นํ์ด์ง๋ฅผ ๋์ฐ๊ธฐ ์ํด์ ๋ณดํต ์ฌ๋ฌ๋ฒ์ HTTP ํธ๋์ญ์ ์ ๊ฑฐ์น๋ค.(HTML๋ฌธ์๋ฅผ ๊ฐ์ ธ์ค๊ณ , JS ํ์ผ ๊ฐ์ ธ์ค๊ณ , ์ด๋ฏธ์ง ๊ฐ์ ธ์ค๊ณ ...)
2.1 HTTP ๋ฉ์๋
ํด๋ผ์ด์ธํธ๋ ์์ฒญ์ ํ ๋ HTTP ๋ฉ์๋๋ก ์๋ฒ๊ฐ ์ด๋ค ๋์์ ์ทจํด์ผ ํ๋์ง ์๋ ค์ค๋ค.
๋ฉ์๋ | ์ค๋ช |
GET | ์ง์ ํ ๋ฆฌ์์ค๋ฅผ ํด๋ผ์ด์ธํธ์๊ฒ ๋ณด๋ด๋ผ |
PUT | ํด๋ผ์ด์ธํธ์์ ์๋ฒ๋ก ๋ณด๋ธ ๋ฐ์ดํฐ๋ฅผ ์ง์ ํ ์ด๋ฆ์ ๋ฆฌ์์ค๋ก ์ง์ ํ๋ผ |
DELETE | ์ง์ ํ ๋ฆฌ์์ค๋ฅผ ์๋ฒ์์ ์ญ์ ํ๋ผ |
POST | ํด๋ผ์ด์ธํธ ๋ฐ์ดํฐ๋ฅผ ์๋ฒ ๊ฒ์ดํธ์จ์ด ์ ํ๋ฆฌ์ผ์ด์ ์ ์ ์กํ๋ผ |
HEAD | ์ง์ ํ ๋ฆฌ์์ค์ HTTP ํค๋ ๋ถ๋ถ๋ง ํด๋ผ์ด์ธํธ์๊ฒ ๋ณด๋ด๋ผ |
OPTIONS | ์๋ฒ์์ ์ด๋ค ๋ฉ์๋๊ฐ ๊ฐ๋ฅํ์ง ํด๋ผ์ด์ธํธ์๊ฒ ์๋ ค์ฃผ๋ผ |
2.2 ์ํ ์ฝ๋
๋ชจ๋ HTTP ์๋ต์๋ ์ํ ์ฝ๋์ ์ฌ์ ๊ตฌ์ (OK์ ๊ฐ์ ๋ฌธ๊ตฌ)์ ํจ๊ป ๋ณด๋ธ๋ค. ์ฌ์ ๊ตฌ์ ์ ๋จ์ ์ฐธ๊ณ ์ฉ์ผ๋ก ์ํ๋ HTTP Status Code๋ฅผ ํตํด ์ฒ๋ฆฌ๋๋ค.
์ํ์ฝ๋ | ์ค๋ช |
200 | ์ ์ |
302 | ๋ฆฌ์์ค๊ฐ ์ผ์์ ์ผ๋ก ์ด๋๋์์ผ๋ redirect ํด๋ผ |
404 | ์๋ ๋ฆฌ์์ค |
3. ๋ฉ์์ง
HTTP ๋ฉ์์ง๋ binaryํ์์ด ์๋ ์ผ๋ฐ ํ ์คํธ์ด๊ธฐ ๋๋ฌธ์ ์ฝ๊ณ ์ฐ๊ธฐ๊ฐ ์ฝ๋ค. ๊ทธ๋ฆฌ๊ณ ์ด HTTP ์์ฒญ๊ณผ ์๋ต์ ์์์ค, ํค๋, ๋ฐ๋์ ๊ตฌ๋ถ์ ์ํ ๋น์ค, ๋ณธ๋ฌธ์ผ๋ก ์ด๋ฃจ์ด์ ธ ์๋ค.

์์์ค
์์ฒญ์ด๋ผ๋ฉด ๋ฌด์์ ํด์ผํ๋์ง ์๋ฒ์๊ฒ ์ ๋ฌํ๊ณ , ์๋ต์ด๋ผ๋ฉด ๋ฌด์จ์ผ์ด ์์ด๋ฌ๋์ง ํด๋ผ์ด์ธํธ์๊ฒ ์ ๋ฌํ๋ค.
ํค๋
ํค๋๋ key value๋ฅผ ์์ (:)์ผ๋ก ๊ตฌ๋ถ๋์ด ์ ๋ฌ๋๊ฒ ๋๋ค. ๊ฐ์ ์ถ๊ฐํ๋ค๋ฉด 1์ค์ ์ถ๊ฐํ๋ฉด ๋๋ค.
๋ณธ๋ฌธ
๋ณธ๋ฌธ์ ํค๋์ ๋น์ค ๋ค์์ ๋์จ๋ค. HTTP ๋ฉ์์ง๋ ๋ณธ๋ฌธ์ ๋ฐ์ด๋๋ฆฌ ๋ฐ์ดํฐ๋ฅผ ํฌํจํ ์ ์๋ค.
4. TCP ์ปค๋ฅ์
HTTP ํต์ ์ ํ๊ธฐ ์ํด์๋ TCP ์ปค๋ฅ์ ์ด ํ์ํ๋ค. ๊ทธ๋ฆฌ๊ณ HTTP๋ ๋คํธ์ํฌ ๊ฐ๋ ์์ TCP ์์ ๊ณ์ธต์ด๋ค

์์ ๊ฐ์ด ๋ค์ํ ๋คํธ์ํฌ ๋ชจ๋ธ์ด ์๋๋ฐ, ์ด์ค์์ ์ต๊ทผ ์ ๋ฐ์ดํธ๋ TCP/IP 5๊ณ์ธต์ ๊ธฐ์ค์ผ๋ก HTTP๊ฐ ์ ์ก๋๋ ๊ณผ์ ์ ํ๋ก ์ ๋ฆฌํ๋ฉด ๋ค์๊ณผ ๊ฐ๋ค.

๊ทธ๋ฆฌ๊ณ ๊ทธ ์ ์ก ๊ณผ์ ์ ๊ทธ๋ฆผ์ผ๋ก ๋ํ๋ด๋ฉด ์๋์ ๊ฐ๋ค.

์์ธํ ์ค๋ช ํ์๋ฉด ์ปดํจํฐ ์ดํ๋ฆฌ์ผ์ด์ ์ ํตํด ๋ฐ์ดํฐ๋ฅผ ๋ณด๋ธ๋ค๋ฉด ๋ค์๊ณผ ๊ฐ์ ์์์ ๊ณผ์ ์ ๊ฒช์ ๊ฒ์ด๋ค.
์ ํ๋ฆฌ์ผ์ด์ ๋ฐ์ดํฐ ์์ฑ
์ ์ก๊ณ์ธต์์ TCP/UDP ํค๋(ํฌํธ) ์ถ๊ฐ (์ธ๊ทธ๋จผํธ ์์ฑ)
๋คํธ์ํฌ ๊ณ์ธต์์ IP ํค๋ ์ถ๊ฐ (ํจํท ์์ฑ)
๋ด๋ถ ๋คํธ์ํฌ๋ฉด ARP ํ ์ด๋ธ์ ํ์ธํ์ฌ ๋ชฉ์ ์ง IP์ MAC ์ฃผ์ ์กด์ฌ ์ฌ๋ถ ํ์ธํ๊ณ , ์์ผ๋ฉด ARP๋ฅผ ํตํด ๋ชฉ์ ์ง IP ARP ํ ์ด๋ธ ๊ฐฑ์ .
์ธ๋ถ ๋คํธ์ํฌ๋ฉด ARP ํ ์ด๋ธ์ ๊ธฐ๋ณธ ๊ฒ์ดํธ์จ์ด(๋ค์ ํ)์ MAC ์ฃผ์ ๋ฐ์์ ์ฌ์ฉ
ARP ํ ์ด๋ธ์์ ๋ค์ ํ MAC ์ฃผ์๋ฅผ ์ด์ฉํ์ฌ ์ด๋๋ท ํค๋ ์ถ๊ฐ(ํ๋ ์ ์์ฑ)
๋์นด๋๋ก ํ๋ ์ ์ ๋ฌ
๋์นด๋๋ ๋ค์ ํ MAC์ฃผ์๋ก ๋ฐ์ดํฐ ์ ๋ฌ.
๋ฐ์ดํฐ ์ ๋ฌ ์ค ๋ชฉ์ ์ง ์ฃผ์ IP๊ฐ ARP ํ ์ด๋ธ์ ์กด์ฌํ๋ ๋ผ์ฐํฐ๊ฐ ์กด์ฌํ๋ฉด ํด๋น ip์ ์ต์ข ์ ์ผ๋ก ์ ์ก.
ํ์ง๋ง ํด๋ผ์ด์ธํธ๋ ์ ๊ณผ์ ์์ ์๋ฒ ip์ฃผ์๋ฅผ ์ฐพ์์ผํ๋๋ฐ ๋ณดํต ๋๋ฉ์ธ ์ฃผ์๋ฅผ ์ ๋ ฅํ๋ค. ๊ทธ๋ฌ๋ฉด ์ด๋ป๊ฒ ๋๋ฉ์ธ ์ฃผ์๋ก ip๋ฅผ ์์๋ผ ์ ์์๊น?? ์๋ฅผ ๋ค๋ฉด yooncarrot.com์ 443 ํฌํธ๋ก https ํต์ ์ํด์ผํ๋๋ฐ yooncarrot.com์ ip์ฃผ์๋ฅผ ์์์ผ ํด๋น ์๋ฒ์ ์ ๊ทผํ ์ ์์ด์ผ ํ๋ค. ์ด๋ DNS๋ฅผ ํตํด ๋๋ฉ์ธ ์ฃผ์์ ํด๋นํ๋ ip์ฃผ์๋ฅผ ๋ฐ์์ค๊ณ ํด๋น ip์ฃผ์๋ก https ํต์ ์ ํ๊ธฐ ๋๋ฌธ์ด๋ค.
5. HTTP ๋ฒ์
HTTP๋ 0.9, 1.0, 1.1, 2.0, 3.0 ๊น์ง ๋์ค๋ฉด์ ๊ณ์ ๋ฐ์ ํ๊ณ ์๋ค. ํ์ฌ๋ 3.0 ๊น์ง ๋์จ ์ํ์ด๋ฉฐ 1.1๊ณผ 2.0 ๋ฒ์ ์ด ๊ฐ์ฅ ๋น๋ฒํ๊ฒ ์ฌ์ฉ๋๊ณ ์๋ค.
5.1 HTTP/0.9
HTTP/0.9๋ HTTP ํ๋กํ ํ์ ์ด๋ค. HTML ํ์ผ๋ง ์ ์กํ ์ ์์๊ณ GET ๋ฉ์๋๋ง ์กด์ฌํ๋ค.
5.2 HTTP/1.0
์ฒ์์ผ๋ก ๊ฐ์ฅ ๋๋ฆฌ ์ฐ์ธ ๋ฒ์ ์ด๋ค. ๋ฒ์ ๋ฒํธ, Header, Method, MIME๊ฐ ์ถ๊ฐ๋์๊ณ ์นํ์ด์ง Form์ผ๋ก ์ํธ์์ฉํ ์ ์๊ฒ๋์๋ค.
๊ทธ๋ฆฌ๊ณ ๊ธ๊ฒฉํ๊ฒ WWW์ด ํฝ์ฐฝํ๋ฉด์ keep-alive ์ปค๋ฅ์ , ๊ฐ์ ํธ์คํ ์ง์, ํ๋ฝ์ ์ฐ๊ฒฐ ์ง์ ๋ฑ ๋ง์ ๊ธฐ๋ฅ์ด ์ถ๊ฐ๋์๋ค.
keep-alive๋ ํด๋ผ์ด์ธํธ์ ์๋ฒ๊ฐ์ ์ฌ๋ฌ ์์ฒญ๊ณผ ์๋ต์ ํ๋์ tcp connection์ผ๋ก ์ฒ๋ฆฌํ ์ ์๋๋ก ๋ง๋ค์๋ค. ๊ทธ๋์ ๋งค ์์ฒญ๋ง๋ค connection์ด ์ด๋ฃจ์ด์ง๋ ๋น์ฉ์ ์ค์ฌ ๋ ํจ์จ์ ์ผ๋ก ์ฒ๋ฆฌ๋ ์ ์๋๋ก ๋ง๋ค์๋ค. ๊ทธ๋ฆฌ๊ณ connection์ ๋์ผ๋ ค๋ฉด ํค๋์ Connection: close๋ฅผ ํฌํจ์์ผ ๋์ ์ ์๋๋ก ๋ง๋ค์๋ค.(ํ๋์ ์๋ต์ด ๋ฆ์ด์ง๋ฉด ์ดํ์ ์๋ต์ด ๋ฆ์ด์ง๋ ํ์์ HOL blocking์ด๋ผ๊ณ ํ๋ค.)
5.3 HTTP/1.1
HTTP/1.1์ HTTP ์ค๊ณ์ ๊ตฌ์กฐ์ ๊ฒฐํจ ๊ต์ , ๋๋๋ฌ์ง ์ฑ๋ฅ ์ต์ ํ, ์๋ชป๋ ๊ธฐ๋ฅ ์ ๊ฑฐ์ ์ง์ค๋์๊ณ ๋ ๋ณต์กํด์ง ์น ์ ํ๋ฆฌ์ผ์ด์ ๋ฐฐํฌ๋ฅผ ์ง์ํ๋ค.
keep-alive ๊ธฐ๋ฅ์ default๋ก ๋ณ๊ฒฝํ์๊ณ ํ์ดํ๋ผ์ด๋ ๊ธฐ๋ฅ์ด ์ถ๊ฐ๋์๋ค.
ํ์ดํ๋ผ์ด๋์ ํ๋์ ์ฐ๊ฒฐ์์ ์ฌ๋ฌ ์์ฒญ์ ์์ฐจ์ ์ผ๋ก ๋ณด๋ด๊ณ ์์ฐจ์ ์ผ๋ก ๋ฐ์ ์ ์๋๋ก ํด์ฃผ๋ ๊ธฐ๋ฅ์ด๋ค. ์๋ต ์์๊ฐ ๋ณด์ฅ๋์ด์ผํ๊ธฐ ๋๋ฌธ์ ๋๋ฆฐ ์๋ต ํ๋๊ฐ ์ ์ฒด ์๋ต์ ์ง์ฐ์ํค๊ธฐ๋ ํ์ง๋ง ํ์ดํ๋ผ์ด๋ ๊ตฌํ์ด ์ด๋ ต๊ธฐ๋ ํ๊ณ ํ๋ก์ ์๋ฒ๊ฐ ์ ๋๋ก ์ฒ๋ฆฌํ์ง ๋ชปํด์ ๋ฌธ์ ๊ฐ ๋ง์ ์ง๊ธ ์ฌ์ฉ๋์ง ์๋๋ค.
5.4 HTTP/2.0
HTTP/2.0์ ๋ฐ์ดํฐ๋ฅผ header์ body๋ฅผ frame์ด๋ผ๋ ๋ฐ์ดํฐ ๋จ์๋ก ๋ง๋ค์ด text๊ฐ ์๋ binaryํ ํ์ฌ steamํ ํ์ฌ ๋ณด๋ธ๋ค. ๊ทธ๋ฆฌ๊ณ multiplexing(๋ฉํฐํ๋ ์ฑ)์ด๋ผ๋ ๊ธฐ๋ฅ๊ณผ Server Push๊ธฐ๋ฅ์ด ์ถ๊ฐ๋์๋ค.
HTTP/2.0์ ์์ฒญ๋ง๋ค ํค๋๋ฅผ 1๊ฐ๋ 2๊ฐ์ header frame๊ณผ 0๊ฐ ์ด์์ data frame์ผ๋ก ๋๋์ด 1๊ฐ์ stream์ผ๋ก ๋ง๋ค์ด ๋ณด๋ธ๋ค.
multiplexing(๋ฉํฐํ๋ ์ฑ)์ HOL(Head of Line) Blocking๋ฅผ ํด๊ฒฐํ๊ณ ์ ์๊ธด ๊ธฐ๋ฅ์ด๋ค. frame ๋จ์๋ก ๋ฐ์ดํฐ๋ฅผ ๋ณด๋ด๋ฉด์ 3๊ฐ์ ์์ฒญ์ด ์์ ๊ฒฝ์ฐ ๊ผญ ์์๋๋ก Header๋ฅผ ๋ณด๋ด์ง ์๊ณ 3๋ฒ์งธ ์์ฒญ์ Header๋ณด๋ค 2๋ฒ์งธ ์์ฒญ์ Header frame์ ๋ณด๋ผ ์ ์๋๋ก ๋ง๋ค์๊ธฐ ๋๋ฌธ์ ์์ฒญ ์์์ ๋ฐ๋ผ ์๋ต์ด ์์๋๋ก ์ฒ๋ฆฌ๋๋ ํ์์ ๊ฐ์ ํ๋ค.
๋ฌผ๋ก Application Layer์์๋ ๊ทน๋ณต๋์์ง๋ง TCP Connection์์ frame์ ์ฃผ๊ณ ๋ฐ์๊ธฐ ๋๋ฌธ์ TCP์์ ๋ฐ์ํ๋ HOL Blocking์ ํด๊ฒฐํ ์ ์์๋ค. ์๋ฅผ ๋ค๋ฉด ์ค๊ฐ์ ์ด๋ค Header์ ํจํท ์์ค์ด ์์๋ค๋ฉด ํด๋น ์์ค๋ ํจํฌ์ด ์ฌ ๋๊น์ง ๊ธฐ๋ค๋ฆฌ๋ ๋์ ๊ทธ ๋ค์ ๋ฐ์์ผํ ๋ฐ์ดํฐ๋ค์ ์ฌ์ ํ ๊ธฐ๋ค๋ ค์ผํ๋ค. Application Layer์์์ HOL Blocking์ ํด๊ฒฐํ์ง๋ง Transport Layer์์์ HOL์ ํด๊ฒฐํ์ง ๋ชปํ๋ค.
Server push๋ ํด๋ผ์ด์ธํธ๊ฐ HTTP ์์ฒญํ๊ธฐ ์ ์ ์๋ฒ๊ฐ ๋จผ์ ํด๋ผ์ด์ธํธ์ ๋ฆฌ์์ค๋ฅผ ๋ณด๋ด๋ ๊ฒ์ด๋ค. ํ์ง๋ง ํด๋ผ์ด์ธํธ๋ ์๋ฒ๊ฐ ๋ณด๋ธ ๋ฆฌ์์ค๋ฅผ ์์ง ๋ชปํ๊ณ ๋ค์ ์์ฒญํ๊ธฐ ๋๋ฌธ์ ์ด ๊ธฐ๋ฅ์ ์ ๊ฑฐ๋์๋ค.
5.5 HTTP/3.0
HTTP/3.0์์๋ Transport Layer์์ HOL Blocking ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ค. ์ด๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด์ TCP์ ์์กดํ์ง ์๊ณ UDP์ ๊ธฐ๋ฐํ QUIC ํ๋กํ ์ฝ์ ์ฌ์ฉํ๋ค. ๊ทธ๋์ TCP์ ๊ธฐ๋ฐํ Stream๋ค์ด UDP์ ๊ธฐ๋ฐํ QUIC ํ๋กํ ์ฝ์ ์ฌ์ฉํ์ฌ ๊ฐ ์คํธ๋ฆผ์ด ๋ ๋ฆฝ์ ์ด๊ฒ ๋์๋ค. Connection์ ๋งบ๋๋ฐ 0์ด์ ์๊ฐ์ด ๊ฑธ๋ฆฌ๊ฒ ๋์๋ค.
QUIC ํ๋กํ ์ฝ์ ์ฌ์ฉํ๊ฒ ๋๋ฉด์ ๊ฐ ์์ฒญ Stream์ด ๋ ๋ฆฝ์ ์ผ๋ก ์๋ํ ์ ์๊ฒ ๋์๋ค. ์ฝ๊ฒ ์๋ฅผ ๋ค๋ฉด ๋ชจ๋ ์์ฒญ๋ค์ 1๊ฐ์ ํ์ดํ๋ฅผ ํตํด์๋ง ๋ณด๋ด์ผ ํ๋ค๋ฉด, QUIC ํ๋กํ ์ฝ์ ์ฌ์ฉํ๋ฉด์ ๊ฐ ์์ฒญ์ ๊ฐ์๋งํผ์ ํ์ดํ๋ฅผ ์ฌ์ฉํ์ฌ ์์ฒญ์ ๋ณด๋ผ ์ ์๊ฒ๋ ๊ฒ์ด๋ค. ์ฆ ํจํท์ 1๊ฐ์ ํ์ดํ๊ฐ ์๋๋ผ ์ฌ๋ฌ ํ์ดํ๋ก ๋ณด๋ผ ์ ์๊ฒ ๋์๋ค.
QUIC ํ๋กํ ์ฝ์ TCP์ TLS ์์์ ์๋ํ์ง ์๊ณ QUIC์์ ํตํฉ ์ฒ๋ฆฌํ๊ธฐ ๋๋ฌธ์ ์ง์ฐ์ด ๋งค์ฐ ์ ๋ค. QUIC์ UDP๊ธฐ๋ฐ์ผ๋ก ๋์ํ๋ฉฐ TLS 1.3์ด ๋ด์ฅ๋์ด ํ ๋ฒ ์ฐ๊ฒฐ๋ ์๋ฒ์ ๋ํด์๋ ์ฌ์ฐ๊ฒฐ์ 0-RTT(0 Round Trip Time)๋ก ๋ฐ์ดํฐ๋ฅผ ๋ฐ๋ก ๋ณด๋ผ ์ ์๋ค. ์ฆ ํธ๋์ ฐ์ดํฌ ์์ด ๋ฐ๋ก ๋ฐ์ดํฐ๋ฅผ ๋ณด๋ผ ์ ์์ด์ 0-RTT๋ก ๋ฐ์ดํฐ๋ฅผ ๋ฐ๋ก ๋ณด๋ผ ์ ์๋ ๊ฒ์ด๋ค.