๐ tcp vs http
๋ค์ด๊ฐ๊ธฐ์ ์์ ๊ธฐ์ด์ ์ธ ๋จ์ด์ ๋ํด ๋จผ์ ์ค๋ช
ํ๊ฒ ๋ค.
์ฐ์ ํ๋กํ ์ฝ์ด๋ ์๋ก ํต์ ํ๊ธฐ ์ํ ์ฝ์(๊ท์น)์ด๋ค.
TCP๋ ํ๋กํ ์ฝ, HTTP๋ ํ๋กํ ์ฝ, TLS๋ ํ๋กํ ์ฝ์ด๋ค.
์ด์ค ์ฐ๋ฆฌ๋ ์ค๋ TCP์ HTTP์ ๋ํด ์์๋ณด์.
OSI 7๊ณ์ธต

๋ญ๊ฐ ๋ญ์ง ํ๋๋ ๋ชจ๋ฅผ๊ฒ์ด๋ค. ๋ค ์ดํดํ๋ฉด ํ๋๋ ๊ฐ๋จํ๊ฒ ์ค๋ช
ํ๋ฉด, ๋คํธ์ํฌ ํต์ ์ ์ญํ ์ ๋๋ ๊ณ์ธต ๊ตฌ์กฐ๋ก ๋์ํ๋ค.
๊ทธ ๊ณ์ธต์ด 7๊ฐ๋ก ๋๋์ด์ ธ ์๋ ๊ฑฐ๋ค.
์ด์ค ์ฐ๋ฆฌ๋ 2๊ฐ์ ๊ณ์ธต๋ง์ ๋ค๋ฃฐ๊ฑฐ๋ค.
๋ฐ์ดํฐ๊ฐ ์์ ํ๊ฒ ๊ฐ๋๋ก ์ฑ
์์ง๋ ์ ์ก ๊ณ์ธต (Transport Layer), ์ฐ๋ฆฌ๊ฐ ์ค์ ์ฌ์ฉํ๋ ์น ๊ท์น์ธ ์์ฉ ๊ณ์ธต (Application Layer)
์ค๋ ์์๋ณผ TCP๋ ์ด ์ค์์ ์ ์ก ๊ณ์ธต์ ์ํ๊ณ HTTP๋ ์์ฉ ๊ณ์ธต์ ์ํ๋ค.
์ฆ TCP๋ ๋ฐ์ดํฐ๋ฅผ ์์ ํ๊ฒ ์ ๋ฌํ๋ ์ญํ ์ ํ๊ณ , HTTP๋ ๊ทธ ์์์ ์ด๋ค ๋ฐ์ดํฐ๋ฅผ ์ด๋ป๊ฒ ์ฃผ๊ณ ๋ฐ์์ง๋ฅผ ์ ์ํ๋ค.
TCP
๊ทธ๋์ TCP๊ฐ ๋ญ๋?
์์ HTTP์ ๋ํด ์ด ๋ธ๋ก๊ทธ๋ฅผ ๋ณด๋ฉด HTTP/1.1๊ณผ HTTP/2 ๋ชจ๋ TCP ๊ธฐ๋ฐ์ผ๋ก ๋์ํ๋ค๋ฉฐ ๋จผ์ ์ธ๊ธ์ ํ๋ค.
๊ทธ๋ ๋ค๋ฉด ์ฌ๊ธฐ์ ์์ฐ์ค๋ฝ๊ฒ ์ง๋ฌธ์ด ์๊ธด๋ค.
HTTP๋ TCP ์์์ ๋์ํ๋ค๋ ๊ฒ ๋ฌด์จ ๋ป์ผ๊น?
์ฐ๋ฆฌ๊ฐ ์น์์ ๋ฐ์ดํฐ๋ฅผ ์ฃผ๊ณ ๋ฐ์ ๋, HTTP๋ โ์ด๋ค ํ์์ผ๋ก ์์ฒญํ๊ณ ์๋ตํ ์งโ๋ฅผ ์ ํ๋ ๊ท์น์ด๋ค.
ํ์ง๋ง ๊ทธ ์์ฒญ๊ณผ ์๋ต์ด ์ธํฐ๋ท์ ํตํด ์ค์ ๋ก ์์ ํ๊ฒ ์ ๋ฌ๋๋ ค๋ฉด ๋๊ตฐ๊ฐ๋ ๊ทธ ๋ฐ์ดํฐ๋ฅผ ์ฑ
์์ง๊ณ ์ด๋ฐํด์ผ ํ๋ค.
๊ทธ ์ญํ ์ ํ๋ ๊ฒ์ด ๋ฐ๋ก TCP๋ค.
์ฆ, HTTP๋ ๋ํ์ ๋ด์ฉ๊ณผ ํ์์ ์ ํ๊ณ , TCP๋ ๊ทธ ๋ํ๋ฅผ ์์ ํ๊ฒ ์ ๋ฌํ๋ค.
์ ํํ๊ฒ ์ค๋ช
ํ๋ฉด HTTP๋ TCP ์์์ ๋์ํ๋ ํ๋กํ ์ฝ์ด๋ค.
์ฐ๊ฒฐ ์งํฅ์
TCP๋ ๋ฐ์ดํฐ๋ฅผ ๋ณด๋ด๊ธฐ ์ ์ ๋จผ์ ์ฐ๊ฒฐ๋ถํฐ ๋ง๋ ๋ค. ์ด๊ฑธ 3-Way Handshake๋ผ๊ณ ํ๋ค.
HTTP๋ โ๋น์ฐ๊ฒฐ์ฑโ์ด๋ผ๊ณ ํ์ง๋ง, ๊ทธ๊ฑด ์์ฒญ/์๋ต์ด ๋๋๋ฉด ์ฐ๊ฒฐ์ ๋๋ ๊ตฌ์กฐ๋ผ๋ ๋ป์ด๊ณ ,
TCP๋ ๊ทธ ์ด์ ๋จ๊ณ์์ โ์์ ํต์ ์ ์์ํ๊ธฐ ์ ์ ์๋ก ์ค๋น๊ฐ ๋์๋์ง ํ์ธํ๋ ๊ณผ์ โ์ด ์๋ค.
TCP๋ ์ด 3๋ฒ์ ์ ํธ๋ฅผ ์ฃผ๊ณ ๋ฐ๋๋ค.
1๏ธโฃ SYN (Synchronize)
ํด๋ผ์ด์ธํธ โ ์๋ฒ
โ๋ ๋๋ ํต์ ํ๊ณ ์ถ์๋ฐ ๊ฐ๋ฅํด?โ
์ด๋ ํด๋ผ์ด์ธํธ๋ ์์ ์ ์ด๊ธฐ ์ํ์ค ๋ฒํธ(ISN)๋ฅผ ๊ฐ์ด ๋ณด๋ธ๋ค.
(์ํ์ค ๋ฒํธ๋ ๋ฐ์ดํฐ ์์๋ฅผ ๋ง์ถ๊ธฐ ์ํ ๋ฒํธ)
2๏ธโฃ SYN + ACK
์๋ฒ โ ํด๋ผ์ด์ธํธ
โใ
ใ
๋๋ ์ค๋น๋์ด. ๊ทธ๋ฆฌ๊ณ ๋ค ๋ฒํธ ์ ๋ฐ์์ดโ
์๋ฒ๋ ์์ ์ ์ํ์ค ๋ฒํธ๋ฅผ ๋ณด๋ธ๋ค. ACK๋ โ๋ค ์ ํธ๋ฅผ ์ ์์ ์ผ๋ก ๋ฐ์๋คโ๋ ํ์ธ ์๋ต์ด๋ค.
3๏ธโฃ ACK
ํด๋ผ์ด์ธํธ โ ์๋ฒ
โํ์ธ. ์ด์ ํต์ ์์โ
๋ง์ง๋ง์ผ๋ก ์ด ์ ํธ๊ฐ ๊ฐ๋ฉด TCP ์ฐ๊ฒฐ์ด ์์ ํ ์ฑ๋ฆฝ๋๋ค.
๋๋ฌด ๋ณต์กํด ๋ณด์ด์ง๋ง ๋ค ์ด์ ๊ฐ ์๋ค.
์ฐ์ ์๋ ์๋ฒ๊ฐ ์ค์ ๋ก ์กด์ฌํ๋์ง ํ์ธ. ์ฆ ์๋ฒ๊ฐ ์ค์ ๋ก ์กด์ฌํ๋์ง ํ์ธ์ ํด์ผํ๋ค. ๋ํ TCP๋ ๋ฐ์ดํฐ๊ฐ ์์๋๋ก ์์ผ ํ๊ธฐ๋๋ฌธ์ โ๋ ์ด ๋ฒํธ๋ถํฐ ์์ํ๋ค?โ ์ด๋ฐ์์ผ๋ก ์ฝ์์ ํ๋๊ฑฐ๋ค. ๋ํ ์ด๋ ๊ฒ ๊น๋ค๋ก์ด ๊ณผ์ ์ ๊ฑฐ์ณ์ผ์ง ์ ์ค ์ฌ๋ถ ํ์ธํ๊ณ ์ฌ์ ์กํ๋๊ฐ ์์ ๋ณด์ฅ๊ฐ์ ๊ฒ ๊ฐ๋ฅํด์ง๋ค๋๊ฑฐ๋ค.
๊ทธ๋ผ ์ HTTP๋ ๋น์ฐ๊ฒฐ์ฑ์ด๋ผ๊ณ ํ๋ฉด์ TCP ์์์ ๋์ํ ๊น?
๋์ด ์ญํ ์ด ๋ค๋ฅด๋๊น.
TCP๋ ์ฐ๊ฒฐ์ ๊ด๋ฆฌํ๋ ํ๋กํ ์ฝ, HTTP๋ ์์ฒญ/์๋ต์ ์ ์ํ๋ ํ๋กํ ์ฝ
HTTP๋ TCP ์์์ ๋์ํ์ง๋ง ์์ฒญ ๋จ์๋ก ๋
๋ฆฝ์ ์ด๊ธฐ์ ๋น์ฐ๊ฒฐ์ฑ์ด๋ผ๊ณ ํ๋ค.
์ ๋ขฐ์ฑ
TCP๋ ๋จ์ํ ์ฐ๊ฒฐ๋ง ๋ง๋๋ ๊ฒ์ด ์๋๋ผ, ๋ฐ์ดํฐ๊ฐ ์ ํํ๊ฒ ๋์ฐฉํ๋์ง๋ ํ์ธํ๋ค.
์๊น TCP๊ฐ ๋์๊ณผ์ ์์ ํด๋ผ์ด์ธํธ๋ ์์ ์ ์ํ์ค ๋ฒํธ(ISN)๋ฅผ ๊ฐ์ด ๋ณด๋ธ๋ค๊ณ ํ์๋ค. ์ด๊ฑด ์์ด๋ณด์ด๋ ค๊ณ ๊ทธ๋ฌ๋๊ฒ ์๋๋ค.
์ค๊ฐ์ ๋น ์ง ๊ฒ ์์ผ๋ฉด ๋ค์ ๋ณด๋ด๋ฌ๋ผ๊ณ ์์ฒญํ๊ฑฐ๋ ์์๊ฐ ๋ค๋ฐ๋๋ฉด ์ฌ์ ๋ ฌํ๋ ๋ฑ ์ ๋์ฐฉํ๋์ง ํ์ธ์ ํ๊ธฐ ์ํด ๋ณด๋ด๋ ๊ฑฐ๋ค.
๊ทธ๋ผ HTTP๋?
HTTP๋ ์ด๋ฐ ๊ฑฐ ์ ๊ฒฝ ์ฐ์ง ์๋๋ค.
๊ทธ๋ฅ ๋จ์ํ โGET /users/1 ๋ณด๋ด๊ณ
์๋ต์ผ๋ก JSON ๋ฐ๋๋คโ ์ด๊ฑฐ๋ง ์๊ฐํ๋ค.
์๊น HTTP๋ ์์ฉ ๊ณ์ธต์ด๋ผ ํ์์? ๋ฐ์ดํฐ๊ฐ ์ค๊ฐ์ ๊นจ์ก๋์ง, ์์๊ฐ ๋ฐ๋์๋์ง, ์ ์ค๋๋์ง
์ด๊ฑด HTTP์ ์ฑ
์์ด ์๋๋ค. ๊ทธ๊ฑด TCP์ ์์ญ์ด๋ค.
ํ๋ฆ ์ ์ด / ํผ์ก ์ ์ด
TCP๋ ๋ฌด์์ ๋น ๋ฅด๊ฒ ๋ฐ์ดํฐ๋ฅผ ๋ณด๋ด์ง ์๋๋ค. ์๋๊ฐ ์ฒ๋ฆฌํ ์ ์๋ ๋งํผ๋ง ๋ณด๋ด๊ณ ,
๋คํธ์ํฌ๊ฐ ํผ์กํ๋ฉด ์๋๋ฅผ ์ค์ธ๋ค.
์์ ์๊ฐ ๋ฐ์ ์ ์๋ ํฌ๊ธฐ๋ฅผ ํ์ธ(์๋์ฐ ์ฌ์ด์ฆ)ํ๊ณ , ๋คํธ์ํฌ๊ฐ ํผ์กํ๋ฉด ์ ์ก ์๋๋ฅผ ๋ฎ์ถ๋ค ๋ฌธ์ ๊ฐ ์์ผ๋ฉด ์ ์ ์๋๋ฅผ ์ฌ๋ฆฐ๋ค.
์ฆ TCP๋ ์ ํํ๊ฒ ๋ณด๋ด๋ฉด์, ๋คํธ์ํฌ ์ํฉ๊น์ง ๊ณ ๋ คํ๋ ํ๋กํ ์ฝ์ด๋ค.
TCP๋ ๋๋ก๋ฅผ ๋ง๋ ๋ค.
์ฐจ์ ๋ ์ ๋ฆฌํ๊ณ , ์ ํธ๋ ๋ง์ถ๊ณ , ์ฌ๊ณ ๊ฐ ๋๋ฉด ๋ณต๊ตฌํ๋ค.
HTTP๋ ๊ทธ ๋๋ก ์๋ฅผ ๋ฌ๋ฆฌ๋ ์๋์ฐจ๋ค. ์ด๋๋ก ๊ฐ์ง, ์ด๋ค ๋ชฉ์ ์ง๋ก ๊ฐ์ง ์ ํ๋ค.
๋๋ก๊ฐ ์์ผ๋ฉด ์ฐจ๋ ๊ฐ ์ ์๊ณ , ์ฐจ๊ฐ ์์ผ๋ฉด ๋๋ก์ ์๋ฏธ๊ฐ ์์ํ
๋๊น