[๋คํธ์ํฌ] HTTP/1.1 ์ HTTP/2 ์ ์ฐจ์ด์
๐ฉ๐ป HTTP๋?
Hypertext Transfer Protocol ์ ์ฝ์๋ก, HTML ๋ฑ์ ๋ฌธ์๋ฅผ ์ฃผ๊ณ ๋ฐ๋ ํ๋กํ ์ฝ์ด๋ค.
WEB์์ ์ด๋ฃจ์ด์ง๋ ๋ชจ๋ ๋ฐ์ดํฐ ์ ์ก ๋ฐ ์๋ต์ ๊ธฐ๋ณธ์ด๋ผ๊ณ ์๊ฐํ๋ฉด ๋๋ค.
์ถ๊ฐ) OSI๊ณ์ธต์ Application Layer ํ๋กํ ์ฝ
๐ฉ๐ป HTTP/1.0
โ ๋จ๊ธฐ ์ปค๋ฅ์
ํ๋์ ๋ฐ์ดํฐ๋ฅผ ์ ์กํ๊ธฐ ์ํด์ ํ๋์ TCP Connection์ ๋งบ์ด์ผ ํ๋ค.
TCP๋ ์ ๋ขฐ์ฑ ์๋ ๋ฐ์ดํฐ ์ ์ก์ ์ํด ์ฐ๊ฒฐ ์ 3-way handshake, ์ฐ๊ฒฐ ํด์ ์ 4-way handshake ๊ณผ์ ์ ๊ฑฐ์น๋ฉฐ
๊ฒฐ๊ตญ, ์ฌ๋ฌ API ํธ์ถ ์ Latency ์ฆ๊ฐ ๋ ๋๋ฌด ๋น์ฐํ ์๊ธฐ๋ค.
๋๋ฌด ๋นํจ์จ์ด์ฌ์ HTTP Header ์ Keep-alive ์ต์ ์ ์ฌ์ฉํ์ฌ ์ผ์ ์๊ฐ๋์ Connection์ ๋์ง ์๋ ๋ฐฉ์๋ ์ฌ์ฉ์ด ๋์๋ค.
๊ทธ๋ฌ๋, HTTP/1.0 ์์๋ ํ์ค์ด ์๋์๊ธฐ ๋๋ฌธ์ ์ง์์ด ์๋๋ ๊ณณ๋ ์์๋ค.
Connection : keep-alive
๐ฉ๐ป HTTP/1.1
HTTP/1.0์ ๋จ์ ์ ํด์ํ๊ณ ์, HTTP/1.1์ด ๋ฑ์ฅํ์๋ค.
โ Persistence Connection
์ง์ ํ timeout ์๊ฐ ๋์ Connection์ ๋์ง ์๋๋ค๋ ์ปจ์
ํ๋์ Connection์ ์ฌ๋ฌ ๊ฐ์ ์์ฒญ๊ณผ ์๋ต์ ์ฃผ๊ณ ๋ฐ์ ์ ์๋ค.
HTTP/1.0์์๋ ํด๋น ๊ธฐ๋ฅ์ ์ฌ์ฉํ๊ธฐ ์ํด Header์ keep-alive๋ฅผ Client๊ฐ ์์ฑํด์ค์ผ ๋์ง๋ง,
HTTP/1.1์์๋ ๊ธฐ๋ณธ์ ์ผ๋ก keep-alive ๊ธฐ๋ฅ์ ์ง์ํ๊ณ (Client๊ฐ ์์ฑํ์ง ์์๋), ํ์ ์๋ ๊ฒฝ์ฐ๋ง ์์ฑํด์ฃผ๋ฉด ๋๋ค.
Connection : close
โ Pipelining
์ฒซ ๋ฒ์งธ ์์ฒญ์ ๋ณด๋ธ ๋ค, ์๋ต์ ๋ฐ์ง ์์๋ ๋ ๋ฒ์งธ Request ๋ฅผ ๋ณด๋ผ ์ ์๊ฒ ํ๋ค.
๋จ, ์์ฒญ์ ๋ณด๋ธ ์์์ ๋ง๋๋ก ์๋ต์ด ์์ผํ๋ค.(์์๋ณด์ฅ)
๊ทธ๋ ๊ธฐ ๋๋ฌธ์, ์ฒซ ๋ฒ์งธ ์๋ต์ด ๋๋ฆฌ๊ฒ ์ค๋ฉด, ๋ ๋ฒ์งธ/์ธ ๋ฒ์งธ ์๋ต์๋ ์ง์ฐ์ด ๋ฐ์ํ๋ค.
๋๋ถ๋ถ์ ์๋ฒ๋ ๋ฉํฐ ์ค๋ ๋ ๊ตฌ์กฐ๋ก 1,2,3๋ฒ์งธ ์๋ต์ ๋์์ ์ฒ๋ฆฌํ๊ฒ ๋๋๋ฐ, ์๋ฒ์์๋ 1๋ฒ์งธ ์๋ต์ ์ ๊ณตํด์ฃผ๊ธฐ ์ ๊น์ง๋ 2,3๋ฒ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ง๊ณ ์์ด์ผ ํด์ ๋ฆฌ์์ค ๋ญ๋น๋ ํจ๊ป ์ผ์ด๋๋ค.
์ด ๋ฌธ์ ๊ฐ ๋ฐ๋ก Head of Line Bloking ์ด๋ค.
๐ฉ๐ป HTTP/2
โ Header ์์ถ
Header ํ๋ ์๊ณผ ๋ฐ์ดํฐ ํ๋ ์์ผ๋ก ๋๋ ํ, ์์ถํ์ฌ ๋ฐ์ดํฐ๋ฅผ ์ ์กํ๋ค.
โ Multiplexing
ํ์ดํ๋ผ์ด๋๊ณผ ๋ค๋ฅด๊ฒ ์์ฒญ์ ์์๋๋ก ์๋ต์ ์ ๊ณตํด์ค ํ์ ์์ด
๋ณ๋ ฌ์ ์ผ๋ก ์งํํ๋ฉฐ ๋นจ๋ฆฌ ๋๋ ์์ฒญ๋ถํฐ ์ฒ๋ฆฌํ์ฌ ์ ์กํด์ค๋ค.
HTTP/1.1 ์ ๋นํด latency๊ฐ ์ค์ด๋ค์์ง๋ง, TCP ํน์ฑ์ ๋ฐ๋ฅธ TCP Head of Line Bloking ๋ฌธ์ ๊ฐ ๋ฐ์ํ๋ค.
์๋ ๊ทธ๋ฆผ์ TCP Connection์ ์ฃผ๋ชฉํด๋ณด์.
TCP ์ ์ก์ ํ ๋, ๋ฐ์ดํฐ๊ฐ ๋๋์ด์ ธ ์ ์ก์ด ๋๋๋ฐ
๋ง์ฝ, 3๋ฒ์ ํจํท์ด ์ ์ก ์ค ๋๋ฝ(?)๋์ด ์ฌ์ ์ก์ด ์ผ์ด๋๋ฉด ๊ทธ ๋ค์ ์๋ ๋ชจ๋ ํจํท๋ค์ ์ง์ฐ์ด ๋๋ค.
TCP์ ์ ๋ขฐ์ฑ ์๋ ๋ฐ์ดํฐ๋ฅผ ์ ์กํ๊ธฐ ์ํ ํน์ฑ์์ ๋ฐ์ํ๋ TCP Head of Line Bloking ๋ฌธ์ ์ด๋ค.
๐ฉ๐ป QUIC
HTTP/2์ TCP Head of Line Blocking ๋ฌธ์ ๋ฅผ ๋ณด์ํ๊ธฐ ์ํด์ ๋ํ๋ Application ๊ณ์ธต ํ๋กํ ์ฝ
UDP ์ฌ์ฉ์ ํ์ฌ ์ ๋ขฐ์ฑ ์๋ ๋ฐ์ดํฐ ์ ์กํ๋ ์ปจ์ ์ผ๋ก ๊ตฌ๊ธ์์ ๋ง๋ค์๋ค.
UDP ๊ฐ ์ ๋ขฐ์ฑ์๋ ๋ฐ์ดํฐ๋ฅผ ์ ์กํ๋ค๊ณ ? ์ด๋ป๊ฒ ํ๋๊ฑฐ์ง?
QUIC์ ๋ ๋ฆฝ ์คํธ๋ฆผ์ ๋ง๋ค์ด ๋ฐ์ดํฐ๋ฅผ ์ ์กํ๋ค.
์ฆ, 3๋ฒ์ด ์ง์ฐ ๋ฐ์์ด ๋๋ค๋ฉด, ๋๋จธ์ง๋ค์ ์ํฅ์ด ์๊ฒ๋๋ค.