์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋ ˆ์ด์–ด

8/31/2025

์„œ๋ฒ„๋Š” ํ•ญ์ƒ ์‹คํ–‰๋˜๊ณ  ์žˆ์–ด์•ผ๋˜๊ณ , ํ•ญ์ƒ ๋™์ผํ•œ IP์ฃผ์†Œ๋ฅผ ๊ฐ€์ง„๋‹ค.
(๊ฐ™์€ ์ปดํ“จํ„ฐ ์•ˆ์—์„œ๋„ ํ”„๋กœ์„ธ์Šค๋ผ๋ฆฌ ๋ฐ์ดํ„ฐ๋ฅผ ์ฃผ๊ณ  ๋ฐ›์„๋•Œ '์†Œ์ผ“'์ด๋ผ๋Š” ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค๊ณ  ํ•˜๋Š”๋ฐ, ๋ฉ€๋ฆฌ ๋–จ์–ด์ง„ ์ปดํ“จํ„ฐ๋ผ๋ฆฌ ๋ฐ์ดํ„ฐ๋ฅผ ์ „์†กํ•˜๋Š”๊ฒƒ๋„ ์ด๊ฒƒ๊ณผ ๋น„์Šทํ•˜๋‹ค๊ณ  ํ•œ๋‹ค.)

์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋ ˆ์ด์–ด๋Š”, ํŠธ๋žœ์ŠคํฌํŠธ ๋ ˆ์ด์–ด ์œ„์— ์žˆ๋‹ค. (๊ทธ๋ฆฌ๊ณ  ๋„คํŠธ์›Œํฌ ๊ณ„์ธต ๋งจ ์œ„์— ์žˆ๋‹ค.)
๊ฐ ๋ ˆ์ด์–ด๋“ค์€ ์ž๊ธฐ ์œ„์— ์œ„์น˜ํ•œ ๋ ˆ์ด์–ด๋“ค์„ ์œ„ํ•ด ์–ด๋–ค ๊ธฐ๋Šฅ๋“ค์„ ์ œ๊ณตํ•ด์ค€๋‹ค๊ณ  ํ•œ๋‹ค.
ํŠธ๋žœ์ŠคํฌํŠธ ๋ ˆ์ด์–ด๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋ ˆ์ด์–ด์—๊ฒŒ ์ œ๊ณตํ•˜๋Š” ์„œ๋น„์Šค๋Š” 'data integrity' ๊ฐ€ ์žˆ๋‹ค. (TCP๊ฐ€ ํ•˜๊ณ  UDP๋Š” ํ•˜์ง€ ์•Š๋Š”๋‹ค.)
์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ํ•„์š”๋กœ ํ•˜๋Š” timing, throughput, security ๋Š” ํŠธ๋žœ์ŠคํฌํŠธ ๋ ˆ์ด์–ด์—์„œ ์ œ๊ณตํ•˜์ง€ ์•Š๋Š”๋‹ค. ๊ทธ๋ž˜์„œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ณ„์ธต์—์„œ ์Šค์Šค๋กœ ์ž๊ธ‰์ž์กฑ์œผ๋กœ ํ•ด๊ฒฐ.

ํƒ€์ด๋ฐ vs ์Šค๋ฃจํ’‹ ?

HTTP

Hyper Text Transfer Protocol

๋ง ๊ทธ๋Œ€๋กœ ํ•˜์ดํผ ํ…์ŠคํŠธ๋ฅผ ์ฃผ๊ณ  ๋ฐ›๊ธฐ ์œ„ํ•œ ํ”„๋กœํ† ์ฝœ์ด๋‹ค. (ํ•˜์ดํผ ํ…์ŠคํŠธ : ๋งํฌ๋ฅผ ํ†ตํ•ด ๋‹ค๋ฅธ ๋ฌธ์„œ๋“ค๊ณผ ์—ฐ๊ฒฐ๋˜์–ด ์žˆ๋Š” ๋ฌธ์„œ.)
๊ทธ๋ž˜์„œ ํ•˜์ดํผ ํ…์ŠคํŠธ๋ฅผ ๋‹ฌ๋ผ๊ณ ํ•˜๋Š” '์š”์ฒญ'๊ณผ ๊ทธ์— ๋งž๋Š” ํ•˜์ดํผ ํ…์ŠคํŠธ๋ฅผ ๋ณด๋‚ด์ฃผ๋Š” '์‘๋‹ต' ๋‘ ์ข…๋ฅ˜์˜ ๋ฉ”์‹œ์ง€๋ฐ–์— ์—†๋‹ค.

stateless

HTTP๋Š” stateless ํ•˜๋‹ค. HTTP ๊ตฌ์กฐ๊ฐ€ ๋„ˆ๋ฌด ๋‹จ์ˆœํ•ด์„œ ์š”์ฒญํ•˜๋Š” ์ƒ๋Œ€์— ๋Œ€ํ•ด์„œ ์–ด๋–ค ์ •๋ณด๋„ ๊ธฐ์–ตํ•˜๊ณ  ์žˆ์„ ํ•„์š”๊ฐ€ ์—†๋‹ค๋Š” ๋œป.

persistent / non-persistent HTTP

HTTP๊ฐ€ TCP๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ์‹์— ๋”ฐ๋ผ persistent HTTP์ธ์ง€ non-persistent HTTP์ธ์ง€ ๋‚˜๋‰œ๋‹ค.

non-persistent HTTP๋Š” TCP์™€ ์—ฐ๊ฒฐํ•˜๊ณ  ํ•˜๋‚˜์˜ ํŒŒ์ผ์„ ์ „์†กํ•œ ํ›„์— ๋ฐ”๋กœ ์—ฐ๊ฒฐ์„ ๋‹ซ๋Š”๋‹ค.
1. HTTPํด๋ผ์ด์–ธํŠธ๊ฐ€ HTTP์„œ๋ฒ„์™€ TCP์—ฐ๊ฒฐ์„ ์‹œ์ž‘.
2. HTTP์„œ๋ฒ„ ์—ฐ๊ฒฐ์„ ์ˆ˜๋ฝํ•˜๊ณ  ํด๋ผ์ด์–ธํŠธ์— ์•Œ๋ฆผ.
3. ํด๋ผ์ด์–ธํŠธ๋Š” ์„œ๋ฒ„์— HTTP ์š”์ฒญ ๋ฉ”์‹œ์ง€๋ฅผ TCP ์—ฐ๊ฒฐ ์†Œ์ผ“์— ์ „์†ก.
4. ์š”์ฒญ์„ ๋ฐ›์€ ์„œ๋ฒ„๋Š” ์š”์ฒญ๋ฐ›์€ ํŒŒ์ผ์„ ๋‹ด์•„ ์‘๋‹ต ๋ฉ”์‹œ์ง€๋ฅผ ์ „์†ก.
5. ์„œ๋ฒ„๊ฐ€ TCP ์—ฐ๊ฒฐ์„ ๋‹ซ์Œ.
6. ํด๋ผ์ด์–ธํŠธ๋Š” ์‘๋‹ต์„ ๋ฐ›๊ณ  ๋ฌธ์„œ๋ฅผ parsingํ•˜๊ณ  ์ด ํŒŒ์ผ์„ ๋ธŒ๋ผ์šฐ์ €์— ์™„์ „ํžˆ ๋ณด์—ฌ์ฃผ๊ธฐ ์œ„ํ•ด์„œ๋Š” ๋‹ค๋ฅธ ํŒŒ์ผ๋“ค (์ด๋ฏธ์ง€ ๋“ฑ)์ด ํ•„์š”ํ•จ์„ ๊ฐ์ง€.
7. 1~5๋ฒˆ ๊นŒ์ง€์˜ ๊ณผ์ •์„ ๋ฐ˜๋ณตํ•œ๋‹ค. (ํ•„์š”ํ•œ ํŒŒ์ผ๋“ค์˜ ์ˆ˜ ๋งŒํผ ๋ฐ˜๋ณต.)

์œ„์˜ ๊ณผ์ •์€ ๋ฒˆ๊ฑฐ๋กœ์›Œ ๋ณด์ธ๋‹ค, ํŠนํžˆ๋‚˜ ํ˜„๋Œ€ ์›น ํ™˜๊ฒฝ์—์„œ๋Š” html ํŒŒ์ผ ํ•˜๋‚˜๋งŒ์œผ๋กœ ์›น ํŽ˜์ด์ง€๊ฐ€ ์ด๋ฃจ์–ด์ง€๋Š” ๊ฒฝ์šฐ๋Š” ์‹ค์งˆ์ ์œผ๋กœ ์—†์œผ๋‹ˆ ๋”์šฑ ๋” ๋ฒˆ๊ฑฐ๋กญ๋‹ค. ๊ทธ๋ž˜์„œ ์‚ฌ์šฉํ•˜๋Š”๊ฒŒ persistent HTTP.

์†Œ์ผ“

๋„คํŠธ์›Œํฌ ํ†ต์‹ ๋„ ๊ฒฐ๊ตญ ๋ฉ€๋ฆฌ ์œ„์น˜ํ•œ ์ปดํ“จํ„ฐ์— ๊ฐ€๋™๋˜๊ณ  ์žˆ๋Š” ํ”„๋กœ์„ธ์Šค๋“ค๋ผ๋ฆฌ์˜ ํ†ต์‹ ์ด๋‹ค.
๊ทธ๋ž˜์„œ OS์—์„œ ์ œ๊ณตํ•˜๋Š” ์†Œ์ผ“ API(ํ”„๋กœ์„ธ์Šค ๋ผ๋ฆฌ์˜ ์ •๋ณด ๊ตํ™˜์„ ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•จ)๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.

์†Œ์ผ“์˜ ์ข…๋ฅ˜๋Š” ์–ด๋–ค ์ „์†ก ๊ณ„์ธต ํ”„๋กœํ† ์ฝœ์„ ์‚ฌ์šฉํ• ์ง€์— ๋”ฐ๋ผ ๋‘ ๊ฐ€์ง€๋กœ ๋‚˜๋‰œ๋‹ค.
TCP ์†Œ์ผ“๊ณผ, UDP ์†Œ์ผ“

TCP ์†Œ์ผ“

์„œ๋ฒ„์ธก์—์„œ ๋จผ์ € (ํ•จ์ˆ˜๋Š” C์–ธ์–ด ๊ธฐ์ค€)
1. ์†Œ์ผ“์„ ๋งŒ๋“ ๋‹ค : socket(int domain, int type, int protocol)
2. ์†Œ์ผ“๊ณผ ํฌํŠธ๋ฅผ ์—ฐ๊ฒฐ : bind(int sockfd, struct sockaddr* myaddr, int addrlen)
3. ํ•ด๋‹น ์†Œ์ผ“์ด ์š”์ฒญ์„ ๋ฐ›์•„๋“ค์ด๋Š” ์šฉ๋„์ž„์„ ์ง€์ • : listen(int sockfd, intbacklog)
4. ์š”์ฒญ ๋ฐ›์•„๋“ค์ด๊ธฐ ์‹œ์ž‘ : accept(int sockfd, struct sockaddr* cliaddr, int* addrlen)

ํด๋ผ์ด์–ธํŠธ ์ธก์—์„œ๋Š”
1. ํด๋ผ์ด์–ธํŠธ ์ธก์—์„œ๋„ ํ†ต์‹ ์— ์‚ฌ์šฉํ•  ์†Œ์ผ“์„ ๋งŒ๋“ค์–ด์•ผ ํ•œ๋‹ค : socket()
- bind()๋Š” ํ•„์š”ํ•˜์ง€ ์•Š๋‹ค. ์™œ๋ƒํ•˜๋ฉด ํด๋ผ์ด์–ธํŠธ ์ชฝ์—์„œ๋Š” ๋น„์–ด์žˆ๋Š” ํฌํŠธ ์•„๋ฌด๊ฑฐ๋‚˜ ์‚ฌ์šฉํ•ด๋„ ๋ฌด๋ฐฉํ•˜๊ธฐ ๋•Œ๋ฌธ์—.
2. ๋งŒ๋“ค์–ด์ง„ ๋‹ค๋ฅธ ์†Œ์ผ“๊ณผ ์—ฐ๊ฒฐํ•œ๋‹ค : connect(int sockfd, struct sockaddr* servaddr, int addrlen)