๐Ÿ’ป Computer Science

01. HTTP ์›น ๊ธฐ๋ณธ ์ง€์‹ - ์ธํ„ฐ๋„ท ๋„คํŠธ์›Œํฌ

์• ์ •์“ฐ 2021. 5. 3. 11:21

www.inflearn.com/course/http-์›น-๋„คํŠธ์›Œํฌ#

 

๋ชจ๋“  ๊ฐœ๋ฐœ์ž๋ฅผ ์œ„ํ•œ HTTP ์›น ๊ธฐ๋ณธ ์ง€์‹ - ์ธํ”„๋Ÿฐ | ๊ฐ•์˜

์‹ค๋ฌด์— ๊ผญ ํ•„์š”ํ•œ HTTP ํ•ต์‹ฌ ๊ธฐ๋Šฅ๊ณผ ์˜ฌ๋ฐ”๋ฅธ HTTP API ์„ค๊ณ„ ๋ฐฉ๋ฒ•์„ ํ•™์Šตํ•ฉ๋‹ˆ๋‹ค., ์›น ๊ธฐ์ˆ ์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฐœ๋ฐœ์ž๋ผ๋ฉด ๋ˆ„๊ตฌ๋‚˜ OK!๊ผญ ํ•„์š”ํ•œ HTTP์˜ ํ•ต์‹ฌ์„ ์•Œ๋ ค๋“œ๋ฆฝ๋‹ˆ๋‹ค. ๐Ÿ“ฃ ํ™•์ธํ•ด์ฃผ์„ธ์š”!๋ณธ ๊ฐ•์˜๋Š” ์ž๋ฐ” ์Šค

www.inflearn.com

๊น€์˜ํ•œ๋‹˜์˜ HTTP ์›น ๊ธฐ๋ณธ ์ง€์‹ ๊ฐ•์˜๋ฅผ ๋ณด๊ณ  ํ•„๊ธฐํ–ˆ์Šต๋‹ˆ๋‹ค! ๊ฐ•์˜๋ฅผ ๋ณด๋ฉด ์ดํ•ด๊ฐ€ ๋” ์‰ฌ์šฐ๋‹ˆ ์ถ”์ฒœ ํ•ฉ๋‹ˆ๋‹ค. ๐Ÿ˜‹

 

์‹ค๋ฌด์—์„œ ํ•„์š”ํ•œ HTTP ๊ธฐ๋Šฅ๊ณผ ์˜ฌ๋ฐ”๋ฅธ HTTP API ์„ค๊ณ„ ๋ฐฉ๋ฒ•์„ ํ•™์Šตํ•ฉ๋‹ˆ๋‹ค! 

 

๊ณต๋ถ€ ๊ณ„๊ธฐ

์šฐ๋ฆฌ๊ฐ€ ์‚ฌ์šฉํ•˜๋Š” HTTP ๊ธฐ๋ฐ˜์œผ๋กœ ๊ตฌํ˜„๋œ ์›น ํ”„๋ ˆ์ž„์›Œํฌ๋‚˜ ๊ธฐ์ˆ ๋“ค์„ ์‚ฌ์šฉํ•˜๋Š”๋ฐ ๋‹จ์ˆœํžˆ ๊ธฐ๋Šฅ ์‚ฌ์šฉ๋ฒ• ์œ„์ฃผ๋กœ ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ณ  ์›๋ฆฌ๋ฅผ ์ดํ•ดํ•˜๊ธฐ ์œ„ํ•ด์„œ ์‹œ์ž‘ํ–ˆ์Šต๋‹ˆ๋‹ค.

 

๋ชฉํ‘œ

HTTP์˜ ์ „์ฒด ํ๋ฆ„์„ ์ดํ•ดํ•œ๋‹ค.

 


 

01. ์ธํ„ฐ๋„ท ํ†ต์‹ 

IP ๋ž€ ๋ฌด์—‡์ผ๊นŒ?

์ธํ„ฐ๋„ท ํ™˜๊ฒฝ์—์„œ์˜ ํ†ต์‹ ๊ทœ์•ฝ์ž…๋‹ˆ๋‹ค. ํ˜ธ์ŠคํŠธ๊ฐ„์˜ ํ†ต์‹ ๋งŒ์„ ๋‹ด๋‹นํ•œ๋‹ค๋Š” ์ ์ด ํŠน์ง•์ž…๋‹ˆ๋‹ค.

์ง€์ •ํ•œ IP์ฃผ์†Œ์— ํŒจํ‚ท(Packet)์ด๋ผ๋Š” ํ†ต์‹  ๋‹จ์œ„๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์ „๋‹ฌ ํ•ฉ๋‹ˆ๋‹ค.

 

๊ทธ๋ ‡๋‹ค๋ฉด ํŒจํ‚ท์ด๋ž€ ๋ญ˜๊นŒ?

๋ฐ์ดํ„ฐ๋ฅผ ์ „์†กํ•  ๋•Œ ์†ก์‹ ์ธก๊ณผ ์ˆ˜์‹ ์ธก์—์„œ ํ•˜๋‚˜์˜ ๋‹จ์œ„๊ฐ€ ๋˜์–ด ์ „์†ก๋˜๋Š” ์ง‘ํ•ฉ์ฒด๋ฅผ ๋œปํ•˜๋Š”๋ฐ

ํŒจํ‚ท์•ˆ์— ์ถœ๋ฐœ์ง€IP, ๋ชฉ์ ์ง€ IP, ๊ธฐํƒ€ ... ์ด ํฌํ•จ๋˜์–ด์žˆ๋‹ค.

 

์–ด๋–ป๊ฒŒ ์ „์†กํ• ๊นŒ?

IP ํŒจํ‚ท์„ ๋งŒ๋“ ๋‹ค -> ํŒจํ‚ท ์•ˆ์— ์žˆ๋Š” ์ถœ๋ฐœ์ง€, ๋ชฉ์ ์ง€ IP ๋“ฑ์„ ์ธํ„ฐ๋„ท์œผ๋กœ ์ „๋‹ฌํ•œ๋‹ค. -> ๋…ธ๋“œ ๋ผ๋ฆฌ ์ฃผ์†Œ๋ฅผ ํ™•์ธํ•˜์—ฌ ๋ชฉ์ ์ง€๊นŒ์ง€ ์ •ํ™•ํ•˜๊ฒŒ ๋„๋‹ฌํ•œ๋‹ค. -> ๋ชฉ์ ์ง€์—์„œ ๋ฉ”์‹œ์ง€๋ฅผ ๋ฐ›์•˜์„ ๊ฒฝ์šฐ ๋ฐ›์•˜๋‹ค๋Š” OK ๋ฉ”์‹œ์ง€๋ฅผ ์ด๋ฏธ ์˜จ ๋…ธ๋“œ๋ฅผ ๊ธฐ์–ตํ•˜์—ฌ ๋น ๋ฅด๊ฒŒ ๋‹ตํ•œ๋‹ค.

 

์—ฌ๊ธฐ์„œ ๋ฌธ์ œ์ ์ด ์žˆ๋‹ค.

1. ํด๋ผ์ด์–ธํŠธ์—์„œ ์„œ๋ฒ„์—๊ฒŒ ๋ฐ์ดํ„ฐ๋ฅผ ์ „์†กํ–ˆ๋‹ค. ํ•˜์ง€๋งŒ ํ•ด๋‹น ์„œ๋ฒ„๊ฐ€ ์—†๊ฑฐ๋‚˜ ์„œ๋น„์Šค ๋ถˆ๋Šฅ ์ƒํƒœ์—ฌ๋„ ์ „์†ก์ด ๋œ๋‹ค. -> ๋น„์—ฐ๊ฒฐ์„ฑ

2. ํด๋ผ์ด์–ธํŠธ์—์„œ ์„œ๋ฒ„์—๊ฒŒ ๋ฐ์ดํ„ฐ๋ฅผ ์ „์†กํ–ˆ๋‹ค. ํ•˜์ง€๋งŒ ์ค‘๊ฐ„์— ํŒจํ‚ท์ด ์‚ฌ๋ผ์ง€๊ฑฐ๋‚˜ ํŒจํ‚ท์ด ์ˆœ์„œ๋Œ€๋กœ ๋„์ฐฉํ•˜์ง€ ์•Š์•˜๋‹ค (์†์‹ค๋˜์–ด๋„ ์•Œ ์ˆ˜ ์—†๋‹ค.) -> ๋น„์‹ ๋ขฐ์„ฑ

 

์ด ๋ฌธ์ œ์ ์„ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•œ ๋ฐฉ๋ฒ•์„ ์•Œ๊ธฐ ์ „์— ์ธํ„ฐ๋„ท ํ”„๋กœํ† ์ฝœ ์Šคํƒ์˜ 4๊ณ„์ธต์„ ์‚ดํŽด๋ณด์ž

 

์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ณ„์ธต - HTTP, FTP

์ „์†ก ๊ณ„์ธต - TCP, UDP

์ธํ„ฐ๋„ท ๊ณ„์ธต - IP

๋„คํŠธ์›Œํฌ ์ธํ„ฐํŽ˜์ด์Šค ๊ณ„์ธต - LAN ๋“œ๋ผ์ด๋ฒ„, ์žฅ๋น„

 

1. ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ ๋ฉ”์‹œ์ง€๋ฅผ ์ƒ์„ฑํ•œ๋‹ค. (ex. ์ฑ„ํŒ…์„ ๋ฉ”์‹œ์ง€ ์ž‘์„ฑ -> Socket๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ํ†ตํ•ด ์ „๋‹ฌ)

2. TCP ์ •๋ณด ์ƒ์„ฑ, ๋ฉ”์‹œ์ง€ ๋ฐ์ดํ„ฐ ํฌํ•จํ•œ๋‹ค. 

3. IP ํŒจํ‚ท ์ƒ์„ฑ, TCP ๋ฐ์ดํ„ฐ๋ฅผ ํฌํ•จํ•œ๋‹ค.

 

์ฆ‰ ๋ฐ์ดํ„ฐ๊ฐ€ ์ „์†ก๋ ๋•Œ IP ํŒจํ‚ท ์•ˆ์— TCP ๋ฐ์ดํ„ฐ, ๊ทธ์•ˆ์— ๋ฉ”์‹œ์ง€ ๋ฐ์ดํ„ฐ๋ฅผ ํฌํ•จํ•˜์—ฌ ์ „์†ก๋œ๋‹ค.

 

๋ชจ๋“  ๊ฐœ๋ฐœ์ž๋ฅผ ์œ„ํ•œ HTTP - ๊น€์˜ํ•œ / ์ธํ”„๋Ÿฐ

์œ„์™€ ๊ฐ™์€ ๊ทธ๋ฆผ์œผ๋กœ ๊ตฌ์„ฑ๋œ ํŒจํ‚ท์„ TCP/IP ํŒจํ‚ท์ด๋ผ๊ณ  ํ•œ๋‹ค. 

 

๊ทธ๋ ‡๋‹ค๋ฉด TCP๋ž€ ๋ฌด์—‡์ผ๊นŒ?

 

์ „์†ก ์ œ์–ด ํ”„๋กœํ† ์ฝœ(Transmission Control Protocol) ํŠน์ง•

 

- ์—ฐ๊ฒฐ์ง€ํ–ฅ - TCP 3 way handshake ( ๊ฐ€์ƒ ์—ฐ๊ฒฐ )

   ๋…ผ๋ฆฌ์ ์œผ๋กœ๋งŒ ์—ฐ๊ฒฐ๋˜์–ด ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•˜๋ฉด ๋œ๋‹ค.

   ์–‘์ชฝ์—์„œ SYN, ACK๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์—ฐ๊ฒฐํ™•์ธ์„ ํ•œ๋‹ค.

    -> ์ตœ๊ทผ์—๋Š” ๋งˆ์ง€๋ง‰์œผ๋กœ ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์„œ๋ฒ„์™€ ํ™•์ธํ•˜๋Š” ACK๋ฅผ ๋ณด๋‚ผ๋•Œ ์š”์ฒญ๋„ ๊ฐ™์ด ๋ณด๋‚ธ๋‹ค. 

 

    1. ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์„œ๋ฒ„์—๊ฒŒ ์—ฐ๊ฒฐ์š”์ฒญ (SYN) ํ•œ๋‹ค.

    2. ์„œ๋ฒ„๊ฐ€ ํด๋ผ์ด์–ธํŠธ์—๊ฒŒ ์š”์ฒญ์ •๋ณด (SYN), ์š”์ฒญ ์ˆ˜๋ฝ(ACK) ๋ฅผ ๋ณด๋‚ธ๋‹ค.

    3. ํด๋ผ์ด์–ธํŠธ๊ฐ€ ๋งˆ์ง€๋ง‰์œผ๋กœ ์„œ๋ฒ„์™€ ํ™•์ธํ•˜๋Š” ์š”์ฒญ ์ˆ˜๋ฝ(ACK)๋ฅผ ๋ณด๋‚ธ๋‹ค. -> ์ด๋•Œ ๋ฐ์ดํ„ฐ ์ „์†ก์„ ๋ณด๋‚ด๊ธฐ๋„ ํ•œ๋‹ค.

    4. ๋ฐ์ดํ„ฐ ์ „์†ก ํ•œ๋‹ค.

 

- ๋ฐ์ดํ„ฐ ์ „๋‹ฌ ๋ณด์ฆ

   ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์„œ๋ฒ„์—๊ฒŒ ๋ฐ์ดํ„ฐ๋ฅผ ์ „์†กํ•˜๋ฉด ์„œ๋ฒ„์—์„œ ์ž˜ ๋ฐ›์•˜๋Š”์ง€ ์‘๋‹ตํ•ด์ค€๋‹ค.

 

- ์ˆœ์„œ ๋ณด์žฅ

  ํด๋ผ์ด์–ธํŠธ๊ฐ€ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณด๋ƒˆ๋Š”๋ฐ ์„œ๋ฒ„์—์„œ ๋„์ฐฉํ•œ ๋ฐ์ดํ„ฐ์˜ ์ˆœ์„œ๊ฐ€ ๋‹ค๋ฅผ์‹œ ์ „๋ถ€ ๋ฒ„๋ฆฌ๊ณ  ๋‹ค์‹œ ์š”์ฒญํ•˜์—ฌ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ›๋Š”๋‹ค.

   -> TCP ์•ˆ์— ์ •๋ณด๊ฐ€ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ๊ฐ€๋Šฅํ•˜๋‹ค. ( ์ˆœ์„œ์ •๋ณด, ๊ฒ€์ฆ ์ •๋ณด ๋“ฑ๋“ฑ,, )->  ์‹ ๋ขฐํ•  ์ˆ˜ ์žˆ๋Š” ํ”„๋กœํ† ์ฝœ

 

- ํ˜„์žฌ๋Š” ๋Œ€๋ถ€๋ถ„ TCP ๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค. 

 

 

TCP์™€ ๊ฐ™์€ ์ „์†ก๊ณ„์ธต์— ์žˆ๋Š” UDP๋ž€ ๋ฌด์—‡์ผ๊นŒ? (User Datafram Protocol)

IP์™€ ๊ฐ™์€๋ฐ PORT, ์ฒดํฌ์„ฌ ์ •๋ณด๊ฐ€ ์ถ”๊ฐ€๋˜์—ˆ๋‹ค.

 

์™œ ์‚ฌ์šฉํ•˜์ง€?

 

- UDP PORT๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํ•˜๋‚˜์˜ IP ์—์„œ ์—ฌ๋Ÿฌ๊ฐœ์˜ ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ํŒจํ‚ท์„ ์•ˆ์ „ํ•˜๊ฒŒ ๋ฐ›๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉํ•œ๋‹ค. 

- 3 way handshake ๊ฐ€ ์—†์–ด ๋น ๋ฅด๋‹ค.

- TCP๊ฐ€ ์ •๋ณด๋ฅผ ๋งŽ์ด ๊ฐ–๊ณ  ์žˆ๊ณ  ์—ฐ๊ฒฐํ™•์ธ(3 way handshake)์„ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋Š๋ฆฐ ๋ถ€๋ถ„์„ ๋ณด์•ˆํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉํ•œ๋‹ค. (์ตœ์ ํ™”)

 

๊ทธ๋ ‡๋‹ค๋ฉด PORT๋Š” ๋ฌด์—‡์ผ๊นŒ?

IP ๋งŒ์œผ๋กœ๋Š” ์–ด๋””์„œ ํ•„์š”ํ•œ ํŒจํ‚ท์ธ ์•Œ์ˆ˜๊ฐ€ ์—†๊ธฐ ๋•Œ๋ฌธ์— PORT๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.

์„œ๋ฒ„์•ˆ์—์„œ ๋Œ์•„๊ฐ€๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๊ตฌ๋ถ„ํ•  ๋•Œ ์‚ฌ์šฉํ•œ๋‹ค.

 

๊ทœ์น™

  • 0 ~ 1023 : ์ž˜ ์•Œ๋ ค์ง„ ํฌํŠธ, ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ๊ฒƒ์ด ์ข‹์ŒTELNET - 23HTTPS - 443
  • HTTP - 80
  • FTP - 20,21
  • 0 ~ 65535 : ํ• ๋‹น ๊ฐ€๋Šฅ

 

๊ทธ๋ ‡๋‹ค๋ฉด IP ์ฃผ์†Œ๋ฅผ ์™ธ์šฐ์„œ ์‚ฌ์šฉํ•ด์•ผ ํ•˜๋‚˜?

๋„๋ฉ”์ธ ๋„ค์ž„ ์‹œ์Šคํ…œ DNS(Domain Name System)

IP๋Š” ๊ธธ๊ณ  ์–ด๋ ค์šด๋ฐ๋‹ค๊ฐ€ ๋ณ€๊ฒฝ๋  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— DNS๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค. ๋„๋ฉ”์ธ๋ช…์„ IP ์ฃผ์†Œ๋กœ ๋ณ€ํ™˜ํ•œ๋‹ค.

 

IP ๋กœ ๋„๋ฉ”์ธ์„ ํ™•์ธํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด?

> nslookup 8.8.8.8 

๋ฐ˜์‘ํ˜•