๋“ค์–ด๊ฐ€๊ธฐ์— ์•ž์„œ ๊ธฐ์ดˆ์ ์ธ ๋‹จ์–ด์— ๋Œ€ํ•ด ๋จผ์ € ์„ค๋ช…ํ•˜๊ฒ ๋‹ค.
์šฐ์„  ํ”„๋กœํ† ์ฝœ์ด๋ž€ ์„œ๋กœ ํ†ต์‹ ํ•˜๊ธฐ ์œ„ํ•œ ์•ฝ์†(๊ทœ์น™)์ด๋‹ค.
TCP๋„ ํ”„๋กœํ† ์ฝœ, HTTP๋„ ํ”„๋กœํ† ์ฝœ, TLS๋„ ํ”„๋กœํ† ์ฝœ์ด๋‹ค. ์ด์ค‘ ์šฐ๋ฆฌ๋Š” ์˜ค๋Š˜ TCP์™€ HTTP์— ๋Œ€ํ•ด ์•Œ์•„๋ณด์ž.

OSI 7๊ณ„์ธต

image

๋ญ๊ฐ€ ๋ญ”์ง€ ํ•˜๋‚˜๋„ ๋ชจ๋ฅผ๊ฒƒ์ด๋‹ค. ๋‹ค ์ดํ•ดํ•˜๋ฉด ํž˜๋“œ๋‹ˆ ๊ฐ„๋‹จํ•˜๊ฒŒ ์„ค๋ช…ํ•˜๋ฉด, ๋„คํŠธ์›Œํฌ ํ†ต์‹ ์€ ์—ญํ• ์„ ๋‚˜๋ˆ  ๊ณ„์ธต ๊ตฌ์กฐ๋กœ ๋™์ž‘ํ•œ๋‹ค. ๊ทธ ๊ณ„์ธต์ด 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๋Š” ๊ทธ ๋„๋กœ ์œ„๋ฅผ ๋‹ฌ๋ฆฌ๋Š” ์ž๋™์ฐจ๋‹ค. ์–ด๋””๋กœ ๊ฐˆ์ง€, ์–ด๋–ค ๋ชฉ์ ์ง€๋กœ ๊ฐˆ์ง€ ์ •ํ•œ๋‹ค.

๋„๋กœ๊ฐ€ ์—†์œผ๋ฉด ์ฐจ๋Š” ๊ฐˆ ์ˆ˜ ์—†๊ณ , ์ฐจ๊ฐ€ ์—†์œผ๋ฉด ๋„๋กœ์˜ ์˜๋ฏธ๊ฐ€ ์—†์„ํ…Œ๋‹ˆ๊นŒ

ํƒœ๊ทธ:

์นดํ…Œ๊ณ ๋ฆฌ:

์—…๋ฐ์ดํŠธ: