HTTP ํต์ ์ TCP๋ฅผ ์ด์ฉํด ์์ฐจ์ ์ด๊ณ ์์ค, ์์๋์ง ์๊ฒ ๋ฉ์์ง๋ฅผ ์ ๋ฌํ๋ค.
TCP๋ IP ํจํท(or ๋ฐ์ดํฐ๊ทธ๋จ)์ ํตํด ๋ฐ์ดํฐ๋ฅผ ์ ๋ฌํ๋ค.
์ผ์ชฝ์ HTTP, ์ค๋ฅธ์ชฝ์ HTTPS์ด๋ค. OSI 7๊ณ์ธต์์ TCP/IP ํ๋กํ ์ฝ์ 4๊ณ์ธต์ ํด๋นํ๋ค.
๋ด์๋ OSI 7๊ณ์ธต์ ๋ฐ๋ก ์ ๋ฆฌํด์ผ๊ฒ ๋ค.. ๊ฐ๋ ํท๊ฐ๋ฆผ
HTTP๊ฐ ๋ฉ์์ง๋ฅผ ์ ์กํ ๋, ํ์ฌ ์ฐ๊ฒฐ๋์ด์๋ TCP ์ปค๋ฅ์ ์ ํตํด์ ๋ฉ์์ง์ ๋ด์ฉ์ ์์๋๋ก ์ ์กํ๋ค. ์ด๋ ๋ฐ์ดํฐ๋ฅผ segment ๋จ์๋ก ๋ฐ์ดํฐ ์คํธ๋ฆผ์ผ๋ก ๋๋๊ณ , ์ด segment๋ฅผ IP ํจํท์ ๋ด์ ์ ๋ฌํ๋ค.
๊ฐ segment๋ IP ํจํท์ ๋ด๊ฒจ ์ ๋ฌ๋๋๋ฐ,
ํด๋ผ์ด์ธํธ
--> [TCP seg1]
--> [TCP seg2]
--> [TCP seg3]
--> ์๋ฒ
์ด๋ฐ ๋๋์ด๋ผ๊ณ ์ดํดํ๋ฉด ๋ ๊ฒ ๊ฐ๋ค.
์ด๋ IP ํจํท์๋ ์๋์ ๊ฐ์ ์ ๋ณด๋ค์ด ๋ด๊ฒจ์๋ค.
- IP ํจํท ํค๋ (๋ฐ/์์ ์ง ip ์ฃผ์, ํค๋ ์ฒดํฌ์ฌ)
- TCP ์ธ๊ทธ๋จผํธ ํค๋ (๋ฐ/์์ ์ง port ๋ฒํธ, TCP ์์ ๋ฒํธ, TCP ์ฒดํฌ์ญ)
- TCP ๋ฐ์ดํฐ
์์์ ๋งํ๋ ๊ฒ์ฒ๋ผ IP ํจํท์์๋ ๋ฐ/์์ ์ง ip ์ฃผ์๊ฐ, TCP ์ธ๊ทธ๋จผํธ์ ๋ฐ/์์ ์ง port ๋ฒํธ๊ฐ ๋ด๊ฒจ์๋ค. ์ฌ๊ธฐ์ ์๋ ip ์ฃผ์๋ก ํน์ ์ปดํจํฐ (์๋ฒ)์ ์ฐ๊ฒฐ๋๊ณ , port๋ฒํธ๋ก ์ํ๋ ์ดํ๋ฆฌ์ผ์ด์ ์ ์ฐพ์ ์ ์๋ค.
TCP ์ปค๋ฅ์
์ ์ด์ฒ๋ผ ๋ฐ์ ip, ์์ ip, ๋ฐ์ port, ์์ port
๋ก ์๋ณ๋๋ค. ์ด ๋ค๊ฐ์ง ๊ฐ์ด ์ค๋ณต๋๋ TCP ์ปค๋ฅ์
์ ์์ง๋ง, ์ผ๋ถ๊ฐ ๊ฐ์์๋ ์๋ค.
์ฐ๋ฆฌ๋ ์ด๋ฐ TCP ์ปค๋ฅ์ ์ผ๋ก ์๊ฒฉ ์๋ฒ์ ๋ฐ์ดํฐ๋ฅผ ์ฝ๊ณ ์ธ ์ ์๋ค. ํด๋ผ์ด์ธํธ๊ฐ ์๋ฒ์๊ฒ ์ปค๋ฅ์ ์ ์์ฒญํ๊ณ , TCP ์ปค๋ฅ์ ์ด ์์ฑ๋๋ฉด HTTP ์์ฒญ-์๋ต์ ์ฃผ๊ณ ๋ฐ์ ์ ์๋ค.
์ด๋ HTTP ์์ฒญ-์๋ต์ ์์ ๊ทธ๋ฆผ์ฒ๋ผ ์๋์ TCP ๊ณ์ธต์ด ์๊ธฐ ๋๋ฌธ์ TCP ์ฑ๋ฅ์ ์ํฅ์ ๋ฐ๋๋ค.
๋๋ฌด ํฐ ๋ฐ์ดํฐ๋ ๋ณต์กํ ์์์ ๋ด๋ ค๋ฐ์ง ์๋ ์ด์, ๋๋ถ๋ถ์ HTTP ์ง์ฐ์ TCP ๋คํธ์ํฌ ์ง์ฐ ๋๋ฌธ์ ๋ฐ์ํ๋ค.
์ด์ฒ๋ผ TCP ์ง์ฐ์ ํ๋์จ์ด ์ฑ๋ฅ, ๋คํธ์ํธ์ ์๋ฒ์ ์ ์ก ์๋, ์์ฒญ/์๋ต ๋ฉ์์ง์ ํฌ๊ธฐ ๋ฑ์ ๋ฐ๋ผ ๋ฌ๋ผ์ง๋ค.
TCP ๊ด๋ จ ์ง์ฐ ์์๋ ์ด๋ฐ ๊ฒ๋ค์ด ์๋ค.
์์ ํฌ๊ธฐ์ ๋ฐ์ดํฐ ์ ์ก์ ์ปค๋ฅ์ ์ด ์ฌ์ฉ๋๋ฉด HTTP ์ฑ๋ฅ์ ์ ํ์ํฌ ์ ์๋ค.
ํธ๋ ์
ฐ์ดํฌ ๊ณผ์ ์ ๊ฐ๋จํ ๋ฌ์ฌํ์๋ฉด
1. ํด๋ผ์ด์ธํธ -> ์๋ฒ [SYN]
2. ์๋ฒ -> ํด๋ผ์ด์ธํธ [SYN+ACK]
3. ํด๋ผ์ด์ธํธ -> ์๋ฒ [ํ์ธ ์๋ต]
4. ์๋ฒ -> ํด๋ผ์ด์ธ๋ [๋ฐ์ดํฐ ์ ์ก]
1-2๊ณผ์ ์ด ์ปค๋ฅ์
, 3์ ์ ์ฐ๊ฒฐ๋์๋ค๋ ํ์ธ ์๋ต์ด๋ค.
ํฌ๊ธฐ๊ฐ ์์ HTTP ํธ๋์ญ์ ์ 50% ์ด์์ ์๊ฐ์ TCP ๊ตฌ์ฑ์ ์ด๋ค.
์๊น TCP ์ธ๊ทธ๋จผํธ์์ ๋ค์ด๊ฐ๋ ๋ฐ์ดํฐ์ TCP ์์ ๋ฒํธ์ ์ฒดํฌ์ฌ์ด ์๋ค๊ณ ํ๋ค. ์ด๋ ๊ฐ ์ธ๊ทธ๋จผํธ์ ์์ ์๋ ์ธ๊ทธ๋จผํธ๋ฅผ ๋ฐ์์ ๋ ํ์ธ ์๋ต ํจํท์ ์ก์ ์์๊ฒ ๋ฐํํ๋ค.
์ก์ ์๋ ํ์ธ ์๋ต ํจํท์ ๋๊ธฐํ๋ค๊ฐ ํน์ ์๊ฐ์์ ๋ฐ์ง ๋ชปํ ๊ฒฝ์ฐ๋ ์ ์ก์ ๋ฌธ์ ๊ฐ ์๋ ๊ฒ์ผ๋ก ํ๋จํ๊ณ ๋ฐ์ดํฐ๋ฅผ ๋ค์ ์ ์กํ๋ค.
ํ์ธ ์๋ต์ ํฌ๊ธฐ๊ฐ ์๊ธฐ ๋๋ฌธ์ ์ก์ถ๋๋ ๋ฐ์ดํฐ ํจํท์ ํ์ธ ์๋ต์ piggyBackํ๋ค.
์ด์ ๊ฐ์ piggyback์ ๋๋ฆฌ๊ธฐ ์ํด์, TCP ์คํ์ ํ์ธ์๋ต์ง์ฐ ์๊ณ ๋ฆฌ์ฆ
์ ๊ตฌํํ๋ค.
ํ์ธ์๋ต์ง์ฐ ์๊ณ ๋ฆฌ์ฆ์, ํน์ ์๊ฐ๋์ ๋ฒํผ์ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํด๋๊ณ , piggyback ํ๊ธฐ ์ํ ๋ฐ์ดํฐ ํจํท์ ํ์ํ๋ค. ๋ง์ฝ ์๊ฐ ๋ด์ ์ฐพ์ง ๋ชปํ๋ฉด ๋ณ๋์ ํจํท์ ๋ง๋ค์ด ์ ์กํ๋ค.
TCP์ ๋ฐ์ดํฐ ์ ์ก ์๋๋ TCP ์ปค๋ฅ์
์ด ๋ง๋ค์ด์ง ์ง ์ผ๋ง๋ ์ง๋ฌ๋์ง์ ๋ฐ๋ผ ๋ฌ๋ผ์ง ์ ์๋ค.
์ฒ์์๋ TCP ์ปค๋ฅ์
์ ์ต๋ ์๋๋ฅผ ์ ํํ๊ณ , ๋ฐ์ดํฐ๊ฐ ์ฑ๊ณต์ ์ผ๋ก ์ ์ก๋๋ฉด ์๋ ์ ํ์ ์ ์ฐจ ๋์ฌ๊ฐ๋ฉด์ ์ธํฐ๋ท์ ๋ถํ์ ํผ์ก์ ๋ฐฉ์งํ๋ค.
์ด slow start๋ ํ ๋ฒ์ ์ ์กํ ์ ์๋ ํจํท์ ์๋ฅผ ์ ํํ๋๋ฐ, ์ด๊ฒ์ ํผ์ก ์๋์ฐ
์ ์ด๋ผ๊ณ ํ๋ค. ์ด ๊ธฐ๋ฅ ๋๋ฌธ์ ์๋ก ์ฐ๊ฒฐ๋ ์ปค๋ฅ์
์ ์ด๋ ์ ๋ ๋ฐ์ดํฐ๋ฅผ ์ฃผ๊ณ ๋ฐ์ ์ปค๋ฅ์
๋ณด๋ค ๋๋ฆฌ๋ค.
๋ฐ์ดํฐ ํฌ๊ธฐ๊ฐ ์์ฒญ๋๊ฒ ์๋๋ผ๋ ์ ์กํ ์ ์๋๋ก TCP๋ ๋ฐ์ดํฐ ์คํธ๋ฆผ ์ธํฐํ์ด์ค๋ฅผ ์ ๊ณตํ๋ค.
TCP ์ธ๊ทธ๋จผํธ์ ํ๋๊ทธ์ ํค๋ ๋ฑ์ด ์ฝ 40๋ฐ์ดํธ์ ๋ ๋๋๋ฐ ๋ฐ์ดํฐ๊ฐ 1๋ฐ์ดํธ๋ผ๊ณ ๊ฐ์ ํ๋ฉด ๋๋ฌด ๋นํจ์จ์ ์ธ ์ ์ก์ด๊ณ , ๋คํธ์ํฌ ์ฑ๋ฅ๋ ์ ํ๋๋ค.
๊ทธ๋์ ์ด๋ฌํ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ ์๊ณ ๋ฆฌ์ฆ์ด ๋ฐ๋ก Nagle ์๊ณ ๋ฆฌ์ฆ
์ด๋ผ๊ณ ํ๋ค.
Segment์ ํฌ๊ธฐ๊ฐ ์ต๋๊ฐ ๋์ง ์์ผ๋ฉด ์ ์กํ์ง ์๋ค๊ฐ, ์ ์ก ํ ํ์ธ ์๋ต์ ๊ธฐ๋ค๋ฆฌ๋ ํจํท์ด ํ์ธ ์๋ต์ ๋ฐ์๊ฑฐ๋ ์ ์กํ ๋งํผ์ ํจํท์ด ์์์ ๋ ์ ์ฅ๋ ๋ฐ์ดํฐ๋ฅผ ์ ์กํ๋ค.
(๋จ, ๋ค๋ฅธ ํจํท๋ค์ด ํ์ธ ์๋ต์ ๋ฐ์์ ๊ฒฝ์ฐ ์ต๋ ํฌ๊ธฐ๋ณด๋ค ์์ ํจํท์ ์ ์ก์ ํ๋ฝํ๋ค.)
ํ์ง๋ง HTTP ์ฑ๋ฅ๊ณผ ๊ด๋ จํด ๋ฌธ์ ๋ฅผ ๋ฐ์์ํจ๋ค.
1. ํฌ๊ธฐ๊ฐ ์์ HTTP ๋ฉ์์ง๋ ์ถ๊ฐ ๋ฐ์ดํฐ๋ฅผ ๊ธฐ๋ค๋ฆฌ๋ฉฐ ์ง์ฐ.
2. Nagle + ํ์ธ์๋ต์ง์ฐ ์กฐํฉ์ผ๋ก ์ฐ์ผ ๊ฒฝ์ฐ ํํธ์๋ ๋์..
๐ ํ๊ต์์ ๋ฐฐ์ฐ๋ ์ปดํจํฐ ๋คํธ์ํฌ ๊ณผ๋ชฉ์ด ์ด๋ฐ๊ฑด์ค์ ๊ฟ์๋ ๋ชฐ๋๋ค... ๊ทธ๋๋ ๊ทธ๋ฅ ๋ฌด์กฐ๊ฑด ์๊ธฐ๋ง ํ์๋๋ฐ ๋ญ๊ฐ ์ด๋ป๊ฒ ์ฐ์ด๋์ง ์๋ ๊ธฐ๋ถ์ด๋ค!!
์ด ๊ธ์ HTTP ์๋ฒฝ ๊ฐ์ด๋๋ฅผ ์ฝ๊ณ ์ ๋ฆฌํ ๊ธ์
๋๋ค.
์ ์๊ถ ๋ฐ ๊ธฐํ ๋ฌธ์ ๊ฐ ์์ผ๋ฉด ๋๊ธ๋ก ์๋ ค์ฃผ์ธ์.
๊ฐ์ฌํฉ๋๋ค.