HTTP / 0.9 ~ 1.1
HTTP(HyperText Transfer Protocol)
์น ์์์ ํด๋ผ์ด์ธํธ์ ์๋ฒ ๊ฐ ํต์ ์ ์ํ ํ๋กํ ์ฝ. ์ฆ, ์ธํฐ๋ท์์ ์น ์๋ฒ์ ์ฌ์ฉ์ ๋ธ๋ผ์ฐ์ ์ฌ์ด์ ๋ฌธ์๋ฅผ ์ ์กํ๊ธฐ ์ํด ์ฌ์ฉ๋๋ ํต์ ๊ท์ฝ์ด๋ค.
HTTP/number๋ผ๊ณ ํ๊ธฐํ๋๋ฐ, ์ฌ๊ธฐ์ number๋ ๋ฒ์ ์ ์๋ฏธํ๋ค.
HTTP 0.9 : The One-line Protocol
// ์์ฒญ
GET /mypage.html
// ์๋ต
<HTML>
A very Simple HTML page
</HTML>๋งค์ฐ ๊ฐ๋จํ ์์ฒญ๊ณผ ์๋ต๋ง ํฌํจ๋์ด ์์๊ณ ํ์ฅํด์ ์ฌ์ฉํ๊ธฐ์๋ ๋๋ฌด ๊ฐ๋จํ๋ค.
๋ฉ์๋๋ Get๋ง ์กด์ฌํ๊ณ ์๋ต๋ html๋ง ์ ์ก์ด ๊ฐ๋ฅํ๊ธฐ ๋๋ฌธ์ ๋ค๋ฅธ ์ ํ์ ๋ฌธ์๋ ์ ์ก๋ ์ ์๋ค.
HTTP 1.0
ํค๋๊ฐ ์ถ๊ฐ๋์๊ณ , ์๋ต์๋ ์ํ์ฝ๋๋ ์ถ๊ฐ๋์๋ค. ๋ํ ์ด๋ฏธ์ง ํ์ผ๋ ์ ์ก์ด ๊ฐ๋ฅํด์ง
ํน์ง : 1 Request & 1 Response per Connection
์ปค๋ฅ์ ํ๋๋น ์์ฒญ ํ๊ฐ, ์๋ต ํ๋๋ง ์ฒ๋ฆฌ ๊ฐ๋ฅ
๋งค๋ฒ ์๋ก์ด ์ฐ๊ฒฐ๋ก ์ฑ๋ฅ ์ ํ
์๋ฒ ๋ถํ ๋น์ฉ ์ฆ๊ฐ
HTTP 1.1
1.0์ ๋ณด์ํ๊ณ ์ Pesistent Connection์ ๋์ ํ๋ค. ์ง์ ํ Timeout๋์ ์ปค๋ฅ์ ์ด ๋ซํ์ง ์๋ ๋ฐฉ์์ด๋ค. ์ฆ, ๋จ์ผ ์ฐ๊ฒฐ๋ก ์ฌ๋ฌ ์์ฒญ์ ์คํํ ์ ์๋ค. (TCP ์ฐ๊ฒฐ์ ์์ฒญ๋ง๋ค close(์ค๋จ)ํ์ง ์๊ณ ์ฌ์ฉํ ์ ์๋ค.)
๐ฅ Persistenct Connection์ด ํ์ํ ์ด์ . (PC๋ผ๊ณ ์ค์ด๊ฒ ์)
pc์ฌ์ฉํ๋ฉด tcp ์ฐ๊ฒฐ์์ ํ์ํ 3way handshake๋ฅผ request๋ง๋ค ํ ํ์๊ฐ ์๋ค.
tcp connection reqeust๊ฐ ๊ฐ์ํ๊ธฐ ๋๋ฌธ์ "๋คํธ์ํฌ ํผ์ก ๊ฐ์"
HTTP๋ ์์ฐจ์ ์ผ๋ก ์์ฒญ์ ์ฒ๋ฆฌํ๊ณ ์๋ต์ ์ฃผ๋๋ฐ, ๋ง์ ์์ฒญ์ ์ฒ๋ฆฌํ๊ธฐ์๋ ๋๊ธฐ์๊ฐ์ด ๋๋ฌด ๊ธธ๊ธฐ ๋๋ฌธ์ Pipelining์ ๋์ ํ๋ค.
Pipelining : ํ๋์ ์ปค๋ฅ์ ์์ ์๋ต์ ๊ธฐ๋ค๋ฆฌ์ง ์๊ณ ์์ฐจ์ ์ธ ์ฌ๋ฌ ์์ฒญ์ ์ฐ์์ ์ผ๋ก ๋ณด๋ด ๊ทธ ์์์ ๋ง์ถฐ ์๋ต์ ๋ฐ๋ ๋ฐฉ์์ผ๋ก ์ง์ฐ ์๊ฐ์ ์ค์ด๋ ๋ฐฉ๋ฒ

ํ์ง๋ง Pipelining์ HOL(Head Of Line) Blocking ๋ฌธ์ ๊ฐ ์์๋ค. HOL์ ๋ง์ฝ, ์์ฐจ์ ์ผ๋ก ์์ฒญ์ด ๋ค์ด์๋๋ฐ ์ฒซ ๋ฒ์งธ ์์ฒญ์ ์ฒ๋ฆฌํ๋ ์๊ฐ์ด ๋๋ฌด ๊ธธ์ด์ง๋ฉด ๊ทธ ๋ค์ ์์ฒญ๋ค๋ ๋ฐ๋ก ์ฒ๋ฆฌํ ์ ์๋ค.
์๋ฅผ ๋ค์ด, ์ฒซ ๋ฒ์งธ ์์ฒญ์ ์ฒ๋ฆฌ๊ฐ 30์ด๊ฐ ๊ฑธ๋ฆฌ๊ณ ๋ ๋ฒ์งธ ์์ฒญ์ 1์ด๊ฐ ๊ฑธ๋ฆฌ๋๋ฐ, ์ฒซ ๋ฒ์งธ ์์ฒญ์ ์ฒ๋ฆฌ๊ฐ ๊ธธ์ด์ง๊ธฐ ๋๋ฌธ์ ์ฒ๋ฆฌ ์๊ฐ์ด ์งง์ ๋ ๋ฒ์งธ ์์ฒญ์ด block๋ ์ํ๋ก ๋จ์์๋ ๊ฒ์ด๋ค.
HTTP Keep Alive
keep-alive๋ Persistenct Connection์ ๊ธฐ๋ฒ ์ค ํ๋๋ก, HTTP/1.0~ ์ดํ ๋ฒ์ ๋ถํฐ ์ง์ํ๋ค.
HTTP/1.1์ ๊ธฐ๋ณธ์ ์ผ๋ก ํ์ฑํ ๋์ด ์๊ธฐ ๋๋ฌธ์ ๋ณ๋์ ์ปค๋ฅ์ ์ ๋ํ ์ค์ ์ด ์์ผ๋ฉด keep-alive๋ฅผ ์ฌ์ฉํ๋ค.
๋ง์ฝ 1.1์์ ์ปค๋ฅ์
์ closeํ๋ ค๋ฉด ๋ช
์์ ์ผ๋ก Connection: close ํค๋๋ฅผ ์์ฑํด์ผ ํ๋ค.
์์์ ์๊ธฐํ๋ฏ์ด keep-alive ์ต์ ์ ํ์ฑํํ๋ฉด request ๋ง๋ค connection์ ๋์ง ์๊ณ ์ง์์ ์ผ๋ก ์ฐ๊ฒฐ์ ์ ์งํ๊ธฐ ๋๋ฌธ์ ๋คํธ์ํฌ ๋ถํ์ latency๋ฅผ ์ค์ผ ์ ์๋ค.
keep alive ์ฌ์ฉ๋ฒ
keep-alive ์ต์
์ ์ฌ์ฉํ๋ ค๋ฉด ํด๋ผ์ด์ธํธ๋ HTTP header์ ํฌํจ์ํค๊ณ , ์๋ฒ๋ ํด๋ผ์ด์ธํธ์ ์์ฒญ์ ๋ฐ๊ณ ์ฐ๊ฒฐ์ ์ ์งํ๊ธฐ ์ํด์๋ ์๋ต์ Connection: keep-aliveํค๋์ ์ถ๊ฐ ์ค์ ์ ํฌํจ์์ผ์ผ ํ๋ค.
timeout
์ปค๋ฅ์ ์ด ์ผ๋ง๋ ์ ์ง๋ ๊ฒ์ธ๊ฐ๋ฅผ ์๋ฏธํ๋ค. ์ด ์๊ฐ ๋์ request๊ฐ ์์ผ๋ฉด connection์ close ๋๋ค. ์ฆ, ๋ฐ์ดํฐ๊ฐ ์ ์ก๋์ง ์์ ๋, ์ฐ๊ฒฐ์ ์ ์งํ๋ ์๊ฐ(์ด ๋จ์)๋ฅผ ์ง์ ํ๋ ๊ฒ์ด๋ค.
max (MaxKeepAliveRequest)
์ฒ๋ฆฌํ ์ ์๋ ์ต๋ HTTP ์์ฒญ ์๋ฅผ ์ง์ ํ๋ค. ์ด๋ ์๋ฒ๊ฐ ์ฒ๋ฆฌํ ์ ์๋ ์์ฒญ์ ์์ ์ ํํ์ฌ ๋ฆฌ์์ค๋ฅผ ํจ์จ์ ์ผ๋ก ๊ด๋ฆฌํ๋ค. ์ง์ ๋ ์ ๋ณด๋ค ๋ ๋ง์ request๋ฅผ ๋ฐ๊ฒ ๋๋ฉด connection์ close ๋๋ค.
์ฑ๋ฅ ์ต์ ํ๋ฅผ ์ํด์๋ timeout๊ณผ max๊ฐ์ ์ ์ ํ ์กฐ์ ํด์ผ ํ๋ค.
Last updated
