๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
โญ Personal_Study/CS

CS ๋ฉด์ ‘ ์งˆ๋ฌธ ์ •๋ฆฌ - ๋„คํŠธ์›Œํฌ

by ํฌ์ŠคํŠธ์‰์ดํฌ 2023. 2. 23.

๋„คํŠธ์›Œํฌ

1. HTTP, HTTP Method, HTTPS

2. ์ฟ ํ‚ค์™€ ์„ธ์…˜

3. DNS (Domain Name Server)

4. ์›น ๋™์ž‘ ๊ณผ์ •

5. OSI 7๊ณ„์ธต / TCP/IP 5๊ณ„์ธต

6. TCP์™€ UDP

7. TCP 3way / 4way handshake

8. ๋ผ์šฐํ„ฐ / ๋ผ์šฐํŒ… ์•Œ๊ณ ๋ฆฌ์ฆ˜

9. DHCP (Dynamic Host Configuration Protocol)

10. NAT(Network Address Translation)

11. MAC Protocol

12. WebSocket & Web RTC

1. HTTP, HTTP Method, HTTPS

HTTP

โœ” Hyper Text Transfer Protocol: ๋งํฌ๋ฅผ ํ†ตํ•ด ํ…์ŠคํŠธ์™€ ํŒŒ์ผ์„ ์ „์†กํ•˜๋Š” ํ”„๋กœํ† ์ฝœ

โœ” HTTP์˜ ํŠน์ง•

  • Stateless: ์ƒํƒœ๋ฅผ ๊ฐ€์ง€๊ฑฐ๋‚˜ ๊ธฐ์–ตํ•˜์ง€ ์•Š๊ณ  ๋“ค์–ด์˜จ request๋งŒ ์ฒ˜๋ฆฌํ•œ๋‹ค
    • ์ฟ ํ‚ค๋‚˜ ์„ธ์…˜ ์ด์šฉํ•ด ๋ณด์™„!
  • TCP: ํ•˜์œ„ ๊ณ„์ธต์ธ transport layer์—์„œ TCP๋ฅผ ์‚ฌ์šฉํ•ด์„œ ํ•ด๋‹น ํ”„๋กœํ† ์ฝœ์˜ ๊ธฐ๋Šฅ๋“ค์„ ๊ฐ€์ ธ์˜จ๋‹ค

โœ” HTTP connections

  • non-persistent HTTP: ๋ฐ์ดํ„ฐ ์ „๋‹ฌ ์‹œ TCP ์—ฐ๊ฒฐ ์ƒ์„ฑ, ๋ฐ์ดํ„ฐ ์ „๋‹ฌ ์™„๋ฃŒ ์‹œ TCP ์—ฐ๊ฒฐ ์ข…๋ฃŒ
  • persistent HTTP: ๋ฐ์ดํ„ฐ ์ „๋‹ฌ ์‹œ TCP ์—ฐ๊ฒฐ ์ƒ์„ฑ, ํ•ด๋‹น TCP์˜ ์—ฐ๊ฒฐ์„ ๋Š์ง€ ์•Š๊ณ  ๊ณ„์† ์‚ฌ์šฉ
    • ๋Œ€๋ถ€๋ถ„์˜ ์›น์‚ฌ์ดํŠธ์—์„œ ํ•ด๋‹น ๋ฐฉ์‹ ์‚ฌ์šฉ

HTTP Method

โœ” GET: ์„œ๋ฒ„์— ๋ฆฌ์†Œ์Šค๋ฅผ ์š”์ฒญ

โœ” POST: ์„œ๋ฒ„์— ๋ฐ์ดํ„ฐ๋ฅผ ์ „์†ก (๋ฆฌ์†Œ์Šค์˜ ์ƒ์„ฑ / ๋ณ€๊ฒฝ)

โœ” PUT: ์„œ๋ฒ„์˜ ๋ฆฌ์†Œ์Šค๋ฅผ ๊ฐฑ์‹ 

โœ” DELETE: ์„œ๋ฒ„์˜ ๋ฆฌ์†Œ์Šค๋ฅผ ์‚ญ์ œ

โœ” PATCH: ์„œ๋ฒ„์˜ ๋ฆฌ์†Œ์Šค๋ฅผ ๋ถ€๋ถ„์ ์œผ๋กœ ๊ฐฑ์‹ 

โœ” OPTIONS: ๋ฆฌ์†Œ์Šค์˜ ํ†ต์‹  ์˜ต์…˜(๋ฉ”์„œ๋“œ) ์งˆ์˜

โœ” HEAD: ๋ฆฌ์†Œ์Šค์˜ ํ—ค๋” ์ •๋ณด๋งŒ ์š”์ฒญ

GET vs POST

โœ” GET

  • ๋ฐ์ดํ„ฐ ์กฐํšŒ
  • ๋ฐ์ดํ„ฐ ์œ„์น˜: Header(ํ—ค๋”)
  • URL์— ๋ฐ์ดํ„ฐ ๋…ธ์ถœ
  • ์บ์‹ฑ์„ ํ†ตํ•œ ์†๋„ ํ–ฅ์ƒ
  • ๋ณด์•ˆ ↓

โœ” POST

  • ๋ฐ์ดํ„ฐ ์ƒ์„ฑ / ์ˆ˜์ •
  • ๋ฐ์ดํ„ฐ ์œ„์น˜: Body(๋ฐ”๋””)
  • URL์— ๋ฐ์ดํ„ฐ ๋…ธ์ถœ x
  • GET ๋ฐฉ์‹๋ณด๋‹ค ์•ˆ์ „

HTTP ์ƒํƒœ ์ฝ”๋“œ

โœ” 2xx (Successful): ์š”์ฒญ์„ ์„ฑ๊ณต์ ์œผ๋กœ ๋ฐ›์•˜์œผ๋ฉฐ ์ธ์‹ํ–ˆ๊ณ  ์ˆ˜์šฉํ•˜์˜€๋‹ค

  • 200(OK): ์š”์ฒญ์ด ์„ฑ๊ณต์ ์œผ๋กœ ์ˆ˜ํ–‰๋จ (์ฃผ๋กœ GET ์š”์ฒญ์— ๋Œ€ํ•œ ์‘๋‹ต)
  • 201(Created): ์š”์ฒญ์ด ์„ฑ๊ณต์ ์œผ๋กœ ์ˆ˜ํ–‰๋˜์–ด ์ƒˆ๋กœ์šด ๋ฆฌ์†Œ์Šค๊ฐ€ ์ƒ์„ฑ๋จ (์ฃผ๋กœ POST)
  • 204(No Content): ์š”์ฒญ์ด ์„ฑ๊ณต์ ์œผ๋กœ ์ˆ˜ํ–‰๋˜์–ด ๋ฆฌ์†Œ์Šค๊ฐ€ ์—†์Œ(์ฃผ๋กœ DELETE)

โœ” 3xx (Redirection): ์š”์ฒญ ์™„๋ฃŒ๋ฅผ ์œ„ํ•ด ์ถ”๊ฐ€ ์ž‘์—… ์กฐ์น˜๊ฐ€ ํ•„์š”ํ•˜๋‹ค

  • 301(Moved Permanently): ์š”์ฒญ๋œ ๋ฆฌ์†Œ์Šค์˜ URI๊ฐ€ ๋ณ€๊ฒฝ๋จ
  • 302(Found): ์š”์ฒญ๋œ ๋ฆฌ์†Œ์Šค์˜ URI๊ฐ€ ์ผ์‹œ์ ์œผ๋กœ ๋ณ€๊ฒฝ๋จ (ex: pc -> ๋ชจ๋ฐ”์ผ)

โœ” 4xx (Client Error): ์š”์ฒญ์˜ ๋ฌธ๋ฒ•์ด ์ž˜๋ชป๋˜์—ˆ๊ฑฐ๋‚˜ ์š”์ฒญ์„ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์—†๋‹ค

  • 400(Bad Request): ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์ž˜๋ชป๋œ ์š”์ฒญ(ex: ๋ฌธ๋ฒ•)์„ ๋ณด๋ƒ„
  • 401(Unauthorized): ์ธ์ฆ๋˜์ง€ ์•Š์€ ํด๋ผ์ด์–ธํŠธ
  • 403(Forbidden): ๊ถŒํ•œ์ด ์—†๋Š” ํด๋ผ์ด์–ธํŠธ (์„œ๋ฒ„๋Š” ํด๋ผ์ด์–ธํŠธ๊ฐ€ ๋ˆ„๊ตฌ์ธ์ง€ ์•Œ๊ณ  ์žˆ๋‹ค)
  • 404(Not Found): ์š”์ฒญํ•œ ๋ฆฌ์†Œ์Šค๊ฐ€ ์กด์žฌํ•˜์ง€ ์•Š์Œ
  • 405(Method Not Allowed): ํ˜„์žฌ ๋ฆฌ์†Œ์Šค์— ๋งž์ง€ ์•Š์€ ๋ฉ”์„œ๋“œ ์‚ฌ์šฉ
  • 406(No Acceptable): ์•Œ๋งž์€ ์ปจํ…์ธ  ํƒ€์ž…์ด ์—†์Œ
  • 408(Request Time Out): ์š”์ฒญ์— ์‘๋‹ตํ•˜๋Š” ์‹œ๊ฐ„์ด ๋„ˆ๋ฌด ์˜ค๋ž˜๊ฑธ๋ฆผ

โœ” 5xx (Server Error): ์„œ๋ฒ„๊ฐ€ ๋ช…๋ฐฑํžˆ ์œ ํšจํ•œ ์š”์ฒญ์— ๋Œ€ํ•ด ์ถฉ์กฑ์„ ์‹คํŒจํ–ˆ๋‹ค

  • 500(Internal Server Error): ์„œ๋ฒ„์— ์˜ค๋ฅ˜ ๋ฐœ์ƒ
  • 502(Bad Gateway): ์„œ๋ฒ„์˜ ๋ถ€๋ชจ ์„œ๋ฒ„์—์„œ ์˜ค๋ฅ˜ ๋ฐœ์ƒ (ex: ํŠธ๋ž˜ํ”ฝ ๊ณผ๋ถ€ํ•˜)
  • 503(Service Unavailable): ์„œ๋ฒ„๊ฐ€ ์š”์ฒญ์„ ์ฒ˜๋ฆฌํ•  ์ค€๋น„๊ฐ€ ๋˜์ง€ ์•Š์Œ(ex: ์œ ์ง€๋ณด์ˆ˜)

HTTPS

โœ” HTTPS: HTTP + SSL(Secure Socket Layer)

โœ” ๊ธฐ์กด์˜ HTTP๋Š” ๋ณ„๋„์˜ ๋ณด์•ˆ ์žฅ์น˜ ์—†์ด plain text message๋ฅผ ์ „์†กํ•˜๊ธฐ ๋•Œ๋ฌธ์— ํƒˆ์ทจ์˜ ์œ„ํ—˜์ด ์žˆ์Œ!

โœ” SSL(Secure Socket Layer) = TLS(Transport Layer Security)

  • plain text message๊ฐ€ SSL library๋ฅผ ๊ฑฐ์ณ ์•”ํ˜ธํ™”๋œ ์ดํ›„ TCP๋กœ ๋‚ด๋ ค๊ฐ„๋‹ค
  • ๋น„๋Œ€์นญํ‚ค ์•”ํ˜ธํ™”(์ดˆ๊ธฐ ์—ฐ๊ฒฐ)๊ณผ ๋Œ€์นญํ‚ค ์•”ํ˜ธํ™”(๋ฉ”์„ธ์ง€ ์ „์†ก) ๋ฐฉ์‹ ์‚ฌ์šฉ

2. ์ฟ ํ‚ค์™€ ์„ธ์…˜

โœ” ๋‘˜ ๋‹ค ์›น ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ ์‚ฌ์šฉ์ž์˜ state๋ฅผ ์ €์žฅ/์œ ์ง€ ํ•˜๊ธฐ ์œ„ํ•ด์„œ ์‚ฌ์šฉ (HTTP๋Š” stateless!)

โœ” ๊ฐ€์žฅ ํฐ ์ฐจ์ด์ ์€ ๋ฐ์ดํ„ฐ์˜ ์ €์žฅ ์œ„์น˜!

์ฟ ํ‚ค(Cookie)

โœ” ์ฟ ํ‚ค: ํด๋ผ์ด์–ธํŠธ ์ธก์— ์ €์žฅ๋˜๋Š” ํ‚ค์™€ ๊ฐ’์ด ๋“ค์–ด์žˆ๋Š” ์ž‘์€ ๋ฐ์ดํ„ฐ ํŒŒ์ผ

โœ” ์œ ํšจ๊ธฐ๊ฐ„ ์„ค์ • ๊ฐ€๋Šฅ(๋ธŒ๋ผ์šฐ์ € ์ข…๋ฃŒ ์ดํ›„์—๋„ ์œ ์ง€)

โœ” 300๊ฐœ ์ œํ•œ(๋„๋ฉ”์ธ๋‹น 20๊ฐœ, ์ฟ ํ‚ค ๋‹น 4KB)

  • ํด๋ผ์ด์–ธํŠธ๊ฐ€ ๋”ฐ๋กœ ์š”์ฒญํ•˜์ง€ ์•Š์•„๋„ ๋ธŒ๋ผ์šฐ์ €๊ฐ€ Request์‹œ์— Request Header๋ฅผ ๋„ฃ์–ด์„œ ์ž๋™์œผ๋กœ ์„œ๋ฒ„์— ์ „์†ก

์„ธ์…˜(Session)

โœ” ์„ธ์…˜: ์„œ๋ฒ„ ์ธก์— ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๋Š” ๋ฐฉ์‹

โœ” ์„œ๋ฒ„์—์„œ๋Š” ํด๋ผ์ด์–ธํŠธ๋ฅผ ๊ตฌ๋ถ„ํ•˜๊ธฐ ์œ„ํ•ด ๊ณ ์œ ํ•œ ์„ธ์…˜ ID ๋ถ€์—ฌ

โœ” ์ฃผ๋กœ ๋ธŒ๋ผ์šฐ์ € ์ข…๋ฃŒ ์‹œ ์ข…๋ฃŒ(๋ณ„๋„ ์œ ํšจ๊ธฐ๊ฐ„๋„ ์„ค์ • ๊ฐ€๋Šฅ)

โœ” ์ฟ ํ‚ค๋ณด๋‹ค ๋ณด์•ˆ์€ ์ข‹์ง€๋งŒ, ์‚ฌ์šฉ์ž๊ฐ€ ๋งŽ์•„์งˆ์ˆ˜๋ก ์„œ๋ฒ„ ๋ฉ”๋ชจ๋ฆฌ ๊ณผ๋ถ€ํ•˜↑

โœ” ์„œ๋ฒ„๋กœ๋ถ€ํ„ฐ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ›์•„์˜ค๊ธฐ ์œ„ํ•œ ์ถ”๊ฐ€ ์ฒ˜๋ฆฌ ์†๋„

3. DNS (Domain Name Server)

โœ” DNS: Domain Name์„ IP ์ฃผ์†Œ๋กœ ๋ฐ”๊ฟ”์ฃผ๋Š” ์‹œ์Šคํ…œ

โœ” DNS ์„œ๋ฒ„๋Š” ๊ณ„์ธต ๊ตฌ์กฐ๋กœ ์ด๋ฃจ์–ด์ ธ์žˆ๋‹ค

  • Recursive(Local) Name Server: ์‚ฌ์šฉ์ž๊ฐ€ ๊ฐ€์žฅ ๋จผ์ € ์ ‘๊ทผํ•˜๋Š” ์„œ๋ฒ„ (์บ์‹œ ํ˜•ํƒœ๋กœ ip์ •๋ณด ์ €์žฅ, ex: ISP(ํ†ต์‹ ์‚ฌ))
  • Root Name Server: ์ตœ์ƒ์œ„ dns ์„œ๋ฒ„ (์ „์„ธ๊ณ„ 13๊ฐœ), DNS ์ฟผ๋ฆฌ๋ฅผ ์ ์ ˆํ•œ TLD ์„œ๋ฒ„๋กœ ๋‚ด๋ ค์ค€๋‹ค
  • TLD(Top-Level Domain) Name Server: .com, .co.kr ๋“ฑ ๋’ค์— ์˜ค๋Š” ๋„๋ฉ”์ธ ํ™•์žฅ์ž์— ๋Œ€ํ•œ ์ •๋ณด ์œ ์ง€
  • SLD(Second-Level Domain)/Authoratice Name Server: ์‹ค์ œ ๋„๋ฉ”์ธ์˜ IP ์ฃผ์†Œ์— ๋Œ€ํ•œ ์ •๋ณด๋ฅผ ์œ ์ง€ํ•˜๋Š” ์„œ๋ฒ„

4. ์›น ๋™์ž‘ ๊ณผ์ •

  1. ํด๋ผ์ด์–ธํŠธ๊ฐ€ ๋ธŒ๋ผ์šฐ์ €์— URL(www.google.com)์„ ์ž…๋ ฅ
  2. DNS ์„œ๋ฒ„์— ๋„๋ฉ”์ธ ๋„ค์ž„์œผ๋กœ ์„œ๋ฒ„์˜ ์ง„์งœ ์ฃผ์†Œ(IP ์ฃผ์†Œ)๋ฅผ ์ฐพ์Œ
  3. ๋ธŒ๋ผ์šฐ์ €๋Š” IP ์ฃผ์†Œ๋กœ ๋œ ์›น์„œ๋ฒ„์™€ 3 Way Handshake๋ฅผ ํ†ตํ•œ TCP ์—ฐ๊ฒฐ ์ˆ˜๋ฆฝ
  4. ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์›น์„œ๋ฒ„์— HTTP ์š”์ฒญ ์†ก์‹ 
  5. ์š”์ฒญ์„ ์ˆ˜์‹ ํ•œ ์›น ์„œ๋ฒ„๋Š” HTTP ์‘๋‹ต์„ ์†ก์‹ 
  6. ๋ธŒ๋ผ์šฐ์ €๋Š” ์ˆ˜์‹ ํ•œ HTTP ์‘๋‹ต์„ ๊ธฐ๋ฐ˜์œผ๋กœ HTML ํŽ˜์ด์ง€ ๋ Œ๋”๋ง ํ›„ ์‚ฌ์šฉ์ž์—๊ฒŒ ์š”์ฒญํ•œ ์›นํŽ˜์ด์ง€ ๋ฐ˜ํ™˜

5. OSI 7๊ณ„์ธต / TCP/IP 5๊ณ„์ธต

โœ” 7๊ณ„์ธต: ์‘์šฉ ๊ณ„์ธต (Application Layer) - Data

  • ์‚ฌ์šฉ์ž์™€ ์ง์ ‘ ์ƒํ˜ธ์ž‘์šฉํ•˜๋Š” ์‘์šฉํ”„๋กœ๊ทธ๋žจ์ด ํฌํ•จ๋œ ๊ณ„์ธต
  • ์ธํ„ฐํŽ˜์ด์Šค ์—ญํ• 
  • protocol: HTTP, SMTP, DNS
  • ex: ํฌ๋กฌ, ์ด๋ฉ”์ผ...

โœ” 6๊ณ„์ธต: ํ‘œํ˜„ ๊ณ„์ธต (Presentation Layer) - Data

  • ์ฃผ๊ณ ๋ฐ›๋Š” ๋ฐ์ดํ„ฐ์˜ ํ‘œํ˜„๋ฐฉ์‹(Foramt) ๊ฒฐ์ •
  • protocol: ASCII
  • ex: ์ธ์ฝ”๋”ฉ, ๋””์ฝ”๋”ฉ

โœ” 5๊ณ„์ธต: ์„ธ์…˜ ๊ณ„์ธต (Session Layer) - Data

  • ํ”„๋กœ์„ธ์Šค๋ผ๋ฆฌ ํ†ต์‹ ํ•˜๊ธฐ ์œ„ํ•œ ์„ธ์…˜ ๊ด€๋ฆฌ(Port ์—ฐ๊ฒฐ)
  • protocol: SSL, TLS

โœ” 4๊ณ„์ธต: ์ „์†ก ๊ณ„์ธต (Transport Layer) - Segment

  • ๊ฐ endpoint์˜ ์‚ฌ์šฉ์ž๋“ค์ด ์‹ ๋ขฐ์„ฑ ์žˆ๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์ฃผ๊ณ  ๋ฐ›๊ฒŒ ํ—ค์ฃผ๋Š” ์—ญํ• 
  • port๋ฒˆํ˜ธ, ์ „์†ก ๋ฐฉ์‹ ๊ฒฐ์ •
  • protocol: TCP, UDP
  • ex: ๋ฐฉํ™”๋ฒฝ, ํ”„๋ก์‹œ ์„œ๋ฒ„

โœ” 3๊ณ„์ธต: ๋„คํŠธ์›Œํฌ ๊ณ„์ธต (Network Layer) - Packet

  • ์‹ค์ œ ๋„คํŠธ์›Œํฌ ๊ฐ„ ๋ฐ์ดํ„ฐ ์ „๋‹ฌ(ํฌ์›Œ๋”ฉ/๋ผ์šฐํŒ…)
  • protocol: IP
  • ex: ๋ผ์šฐํ„ฐ

โœ” 2๊ณ„์ธต: ๋งํฌ ๊ณ„์ธต (Data Link Layer) - Frame

  • ๋ฐ์ดํ„ฐ์˜ ๋ฌผ๋ฆฌ์  ์ „์†ก (1ํ™‰ ํ†ต์‹ )
  • ํ๋ฆ„ ์ œ์–ด
  • protocol: Ethernet, MAC
  • ex: ์Šค์œ„์น˜

โœ” 1๊ณ„์ธต: ๋ฌผ๋ฆฌ ๊ณ„์ธต (Physical Layer) - Bit

  • ๋ฐ์ดํ„ฐ๋ฅผ ์ „๊ธฐ ์‹ ํ˜ธ๋กœ ๋ฐ”๊พธ์–ด ์ „๋‹ฌ
  • ex: ํ—ˆ๋ธŒ, ์ผ€์ด๋ธ”

6. TCP์™€ UDP

โœ” ๋‘˜ ๋‹ค transport layer์˜ protocol -> ๋ฐ์ดํ„ฐ ์ „์†ก์„ ๋‹ด๋‹น!

โœ” ๊ฐ€์žฅ ํฐ ์ฐจ์ด์ ์€ ์—ฐ๊ฒฐ/๋น„์—ฐ๊ฒฐ ์—ฌ๋ถ€

UDP(User Datagram Protocol)

โœ” ๋ฐ์ดํ„ฐ ์ „์†ก์„ ์œ„ํ•œ ๋น„์—ฐ๊ฒฐํ˜• ํ”„๋กœํ† ์ฝœ

โœ” ๋น„์—ฐ๊ฒฐ์„ฑ(Connectionless), ๋น„์‹ ๋ขฐ์„ฑ(Unreliable)

โœ” ๋ฐ์ดํ„ฐ ์ „์†ก(๋‹ค์ค‘ํ™”/๋น„๋‹ค์ค‘ํ™”), ์—๋Ÿฌ ํ™•์ธ(checksum)์ด๋ผ๋Š” 2๊ฐ€์ง€ ๊ธฐ๋ณธ์ ์ธ ๊ธฐ๋Šฅ๋งŒ ์ œ๊ณต

โœ” dest port# / dest ip#๋งŒ ํ™•์ธ

โœ” ์„ฑ๋Šฅ/์†๋„ > ์‹ ๋ขฐ/์•ˆ์ •์„ฑ

โœ” ex: DNS, ์ŠคํŠธ๋ฆฌ๋ฐ ์„œ๋น„์Šค, ๋ฉ€ํ‹ฐํ”Œ๋ ˆ์ž‰ ๊ฒŒ์ž„...

TCP(Transmission Control Protocol)

โœ” ๋ฐ์ดํ„ฐ ์ „์†ก์„ ์œ„ํ•œ ์—ฐ๊ฒฐํ˜• ํ”„๋กœํ† ์ฝœ

โœ” ์—ฐ๊ฒฐ์„ฑ(Connection oriented), ์‹ ๋ขฐ์„ฑ(Reliability)

โœ” 3-way handshake๋ฅผ ํ†ตํ•œ ์—ฐ๊ฒฐ ์ˆ˜๋ฆฝ, 4-way handshake๋ฅผ ํ†ตํ•œ ์—ฐ๊ฒฐ ์ข…๋ฃŒ

โœ” point-to-point, inorder stream

โœ” send & receive buffer

โœ” flow control, congestion control

UDP & TCP ๋น„๊ต

7. TCP 3way / 4way handshake

TCP 3-way Handshake

โœ” TCP์—์„œ ์—ฐ๊ฒฐ์„ ์ˆ˜๋ฆฝํ•˜๋Š” ๊ณผ์ •

  1. client๊ฐ€ serverํ•œํ…Œ tcp connection ์—ฐ๊ฒฐ ์š”์ฒญ์„ ๋ณด๋‚ธ๋‹ค.
    • tcp segment๋ฅผ SYNbit = 1๋กœ ํ•ด์„œ ๋ณด๋‚ธ๋‹ค.(ํ‰์†Œ์—๋Š” 0)
    • client์˜ ์ฒซ seq#๋ฅผ ๋ณด๋‚ธ๋‹ค.
  2. server๋Š” clientํ•œํ…Œ SYNACK๋ฅผ ๋ณด๋‚ธ๋‹ค.
    • client๊ฐ€ ๋ณด๋‚ด์˜จ seq#+1์„ ACKnum์œผ๋กœ ํ•œ๋‹ค.
    • server์˜ ์ฒซ seq#๋ฅผ ๋ณด๋‚ธ๋‹ค.
  3. client๋Š” SYNACK์— ๋Œ€ํ•œ ACK๋ฅผ ๋ณด๋‚ธ๋‹ค.
    • SYNbit๋Š” ๋‹ค์‹œ 0์ด ๋œ๋‹ค.
    • ์—ฌ๊ธฐ์„œ๋ถ€ํ„ฐ๋Š” ํŒจํ‚ท์— ๋ฐ์ดํ„ฐ ํฌํ•จ ๊ฐ€๋Šฅ

TCP 4-way Handshake

โœ” TCP์—์„œ ์—ฐ๊ฒฐ์„ ์ข…๋ฃŒํ•˜๋Š” ๊ณผ์ •

  1. client๊ฐ€ sever์— FIN control segment๋ฅผ ๋ณด๋‚ธ๋‹ค.
  2. sever๊ฐ€ FIN์„ ๋ฐ›์œผ๋ฉด ACK๋ฅผ ๋ณด๋‚ด๊ณ  server๋„ FIN์„ ๋ณด๋‚ธ๋‹ค.
  3. client๊ฐ€ FIN์„ ๋ฐ›๊ณ  ACK๋ฅผ ๋ณด๋‚ธ๋‹ค.
    • ACK๊ฐ€ ํ™•์‹คํžˆ ์ „๋‹ฌ๋˜๋„๋ก 'timed wait'
  4. server๊ฐ€ ACK์„ ๋ฐ›์œผ๋ฉด ์—ฐ๊ฒฐ์ด ์ข…๋ฃŒ๋œ๋‹ค.

8. ๋ผ์šฐํ„ฐ / ๋ผ์šฐํŒ… ์•Œ๊ณ ๋ฆฌ์ฆ˜

๋ผ์šฐํ„ฐ

โœ” ๋„คํŠธ์›Œํฌ ๋ ˆ์ด์–ด์—์„œ ๋ฐ์ดํ„ฐ ํŒจํ‚ท์˜ ์ „์†ก์„ ๋‹ด๋‹นํ•˜๋Š” ์žฅ์น˜

โœ” Forwarding: forwarding table์„ ํ™•์ธํ•ด ํŒจํ‚ท์„ ๋ชฉ์ ์ง€์— ๋งž๊ฒŒ ์ „๋‹ฌํ•˜๋Š” ์ž‘์—…

โœ” Routing: Routing Algorithm์„ ํ™œ์šฉํ•ด forwarding table์„ ๋งŒ๋“œ๋Š” ์ž‘์—…

โœ” Gateway Router: NAS, DHCP, DNS, firewall...

๋ผ์šฐํŒ… ์•Œ๊ณ ๋ฆฌ์ฆ˜

โœ” ์ตœ๋‹จ ๊ฒฝ๋กœ ๊ตฌํ•˜๊ธฐ

Link State Algorithm

โœ” ์ „์ฒด ๋„คํŠธ์›Œํฌ์˜ ์—ฐ๊ฒฐ ์ƒํƒœ๋ฅผ ์•„๋Š” ๊ฒฝ์šฐ

โœ” Dijkstra algorithm

โœ” ์ „์ฒด ๋ฒ”์œ„์— ์ ์šฉ์€ ๋ถˆ๊ฐ€๋Šฅ, ํ•˜๋‚˜์˜ ๋„คํŠธ์›Œํฌ ๋‚ด๋ถ€ ๋ฒ”์œ„ ๋‚ด์—์„œ๋งŒ!

Distance Vector Algorithm

โœ” ์—ฐ๊ฒฐ๋œ ์ธ์ ‘ ๋ผ์šฐํ„ฐ๋งŒ ์•„๋Š” ๊ฒฝ์šฐ

โœ” Bellman-Ford Algorithm

โœ” Route Poisoning ๋ฐœ์ƒ ๊ฐ€๋Šฅ์„ฑ

  • bad news ์ „ํŒŒ๋กœ ๋ฐฉ์ง€!

9. DHCP (Dynamic Host Configuration Protocol)

โœ” ์„œ๋ฒ„๋กœ๋ถ€ํ„ฐ ๋™์ ์œผ๋กœ ์ฃผ์†Œ(IP, mask, router, DNS)๋ฅผ ๋ฐ›์•„์˜ค๋Š” ํ”„๋กœํ† ์ฝœ

โœ” host๊ฐ€ ์„œ๋ฒ„์— ip์ฃผ์†Œ๋ฅผ ์š”์ฒญ(DHCP request)ํ•˜๋ฉด dhcp๊ฐ€ host์—๊ฒŒ ์ผ์ •์‹œ๊ฐ„ ๋™์•ˆ ip์ฃผ์†Œ๋ฅผ ๋Œ€์—ฌ(DHCP ack) ํ•ด์ฃผ๋Š” ๊ฐœ๋…

๋™์ž‘ ๊ณผ์ •

  1. DHCP discover
    • ์ดˆ๊ธฐ์— DHCP ์„œ๋ฒ„๋ฅผ ์ฐพ์•„๋‚ด๋Š” ๊ณผ์ •
    • src ip: ์•„์ง ์—†์Œ!
    • dest 255.255.255.255: subnet๋‚ด์˜ ๋ชจ๋“  ๋ฉค๋ฒ„์• ๊ฒŒ ๋ฉ”์„ธ์ง€๋ฅผ ๋ณด๋ƒ„ (broadcast)
  2. DHCP offer
    • 67๋ฒˆ ํฌํŠธ๋ฅผ ์—ด์–ด๋‘๊ณ  ์žˆ๋Š” DHCP์„œ๋ฒ„๋งŒ ์‘๋‹ต
    • dest: 255.255.255.255: ์•„์ง ์š”์ฒญ host๊ฐ€ ip๊ฐ€ ์—†๋Š” ์ƒํƒœ์ด๋ฏ€๋กœ broadcast๋กœ ๋ณด๋ƒ„
    • host๋Š” ํฌํŠธ ๋ฒˆํ˜ธ(68)์ด๋ž‘ transaction id๋กœ ํ•ด๋‹น ์‘๋‹ต์„ ๋ฐ›์Œ
  3. DHCP request
    • offer๋ฅผ ๋ฐ›์•„๋“ค์ธ๋‹ค๋Š” ์˜๋ฏธ๋กœ request ๋ณด๋ƒ„
    • ์•„์ง ip์ฃผ์†Œ๋ฅผ ๋ฐ›์€ ๊ฑด ์•„๋‹ˆ๋ฏ€๋กœ src ip๊ฐ€ ์—†๋‹ค.
    • transaction ID: offer๋ฅผ ๋ฐ›์•„๋“ค์ธ๋‹ค๋Š” ์˜๋ฏธ๋กœ +1
  4. DHCP ACK

10. NAT(Network Address Translation)

โœ” IP ํŒจํ‚ท์˜ TCP/UDP ํฌํŠธ ์ˆซ์ž์™€ ์†Œ์Šค ๋ฐ ๋ชฉ์ ์ง€์˜ IP ์ฃผ์†Œ ๋“ฑ์„ ์žฌ๊ธฐ๋กํ•˜๋ฉด์„œ ๋ผ์šฐํ„ฐ๋ฅผ ํ†ตํ•ด ๋„คํŠธ์›Œํฌ ํŠธ๋ž˜ํ”ฝ์„ ์ฃผ๊ณ  ๋ฐ›๋Š” ๊ธฐ์ˆ 

โœ” ๋กœ์ปฌ ๋„คํŠธ์›Œํฌ์˜ ํ˜ธ์ŠคํŠธ๊ฐ€ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณด๋‚ผ ๋•Œ ๋ผ์šฐํ„ฐ์˜ ip/ํฌํŠธ# ๋กœ ๋ณ€ํ™˜ํ•ด์„œ ๋‚ด๋ณด๋‚ธ๋‹ค.

โœ” IPv4์˜ ๊ธฐ์ˆ ์  ํ•œ๊ณ„ (32bit ์ฃผ์†Œ ๊ณต๊ฐ„์˜ ํ•œ๊ณ„) ๊ทน๋ณต ์œ„ํ•ด ๋“ฑ์žฅ

11. MAC Protocol

โœ” Link layer: ํ•œ Hop์„ ๋„˜์–ด๊ฐˆ ๋•Œ(ํ•œ node์—์„œ ๋‹ค์Œ ์ธ์ ‘ node๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์ „์†กํ•  ๋•Œ) ์–ด๋–ป๊ฒŒ ์ถฉ๋Œ (collision) ์—†์ด ๋„˜์–ด๊ฐˆ ์ˆ˜ ์žˆ์„ ๊ฒƒ์ธ๊ฐ€

โœ” MAC(Medium Access Control): ๋งค์ฒด์— ๋Œ€ํ•œ ์ ‘๊ทผ์„ ์กฐ์ ˆํ•ด์„œ ์ถฉ๋Œ์„ ์ตœ์†Œํ™” ํ•˜๋Š” ๊ธฐ์ˆ 

  1. Channel partitioning
  2. Random access
  3. Taking turns

CSMA & CSMA/CD

CSMA

โœ” Carrier Sense Multiple Access

โœ” listen before transmit: ๋ฐ์ดํ„ฐ๊ฐ€ ์ „์†ก ์ค‘์ด๋ฉด ๋Œ€๊ธฐ, ์ „์†ก ์ค‘์ธ ๋ฐ์ดํ„ฐ๊ฐ€ ์—†์œผ๋ฉด ๋ฐ์ดํ„ฐ ์ „์†ก

CSMA/CD

โœ” Collision Detection

โœ” CSMA ๋ฐฉ์‹์—์„œ ์ถฉ๋Œ์ด ๋ฐœ์ƒํ–ˆ์„ ๊ฒฝ์šฐ ์ฆ‰์‹œ ์ „์†ก์„ ๋ฉˆ์ถค!

โœ” ์ค‘๋‹จ ์ดํ›„ ์žฌ์ „์†ก ๋ฐฉ์‹: NIC enters binary

  • M๋ฒˆ์˜ ์ถฉ๋Œ์ด ์žˆ์—ˆ์œผ๋ฉด (0 ~ M - 1) ์ค‘ ํ•˜๋‚˜์˜ ์ˆ˜๋ฅผ randomํ•˜๊ฒŒ ์„ ํƒํ•ด์„œ ๋Œ€๊ธฐ
  • ์ถฉ๋Œ์ด ๋งŽ์•„์งˆ ์ˆ˜๋ก(์‚ฌ๋žŒ์ด ๋งŽ์•„์งˆ ์ˆ˜๋ก) ์„ ํƒํ•˜๋Š” random ์ˆซ์ž์˜ ๋ฒ”์œ„๋„ ์ฆ๊ฐ€ -> ์˜ค๋ž˜ ๊ธฐ๋‹ค๋ฆด ๊ฐ€๋Šฅ์„ฑ๋„ ์ฆ๊ฐ€

12. WebSocket & Web RTC

WebSocket

โœ” TCPํ†ต์‹  ๋ฐฉ์‹์œผ๋กœ ์„œ๋ฒ„์™€ ํด๋ผ์ด์–ธํŠธ ์‚ฌ์ด์— ์‹ค์‹œ๊ฐ„์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์ฃผ๊ณ  ๋ฐ›์„ ์ˆ˜ ์žˆ๋Š” ํ”„๋กœํ† ์ฝœ

โœ” sock.io: ์›น์†Œ์ผ“ ๋ฏธ์ง€์› ๋ธŒ๋ผ์šฐ์ €์—์„œ ์–‘๋ฐฉํ–ฅ ํ†ต์‹ ์„ ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•˜๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ

  • ์ฃผ๋กœ javscript(node.js)์—์„œ ์‚ฌ์šฉ

โœ” sock.js: ์›น์†Œ์ผ“ ๋ฏธ์ง€์› ๋ธŒ๋ผ์šฐ์ €์—์„œ ์–‘๋ฐฉํ–ฅ ํ†ต์‹ ์„ ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•˜๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ

  • spring ์ง€์›

STOMP

โœ” Simple Text Oriented Messaging Protocol

โœ” ํด๋ผ์ด์–ธํŠธ์™€ ์„œ๋ฒ„๊ฐ€ ์ „์†กํ•  ๋ฉ”์‹œ์ง€์˜ ์œ ํ˜•, ํ˜•์‹, ๋‚ด์šฉ๋“ค์„ ์ •์˜ํ•˜๋Š” ํ”„๋กœํ† ์ฝœ

โœ” pub/sub(๋ฐœํ–‰/๊ตฌ๋…)์œผ๋กœ ๋ฉ”์„ธ์ง€ ๋ฐ ํด๋ผ์ด์–ธํŠธ ๊ด€๋ฆฌ

โœ” ์ฃผ๋กœ Spring์—์„œ ์›น์†Œ์ผ“์„ ๊ตฌํ˜„ํ•  ๋•Œ ํ•จ๊ป˜ ์‚ฌ์šฉ

Web RTC

โœ” Web Real-Time Communication

โœ” p2p ๋ฐฉ์‹์„ ์ด์šฉํ•ด ํ”Œ๋Ÿฌ๊ทธ์ธ์ด๋‚˜ ์„œ๋ฒ„ ๋“ฑ ์ค‘์žฌ์ž ์—†์ด ๋ธŒ๋ผ์šฐ์ €(ํด๋ผ์ด์–ธํŠธ) ๊ฐ„ ๋ฐ์ดํ„ฐ๋ฅผ ์ฃผ๊ณ  ๋ฐ›์„ ์ˆ˜ ์žˆ๋„๋ก ํ•˜๋Š” API

โœ” Low latency (์„œ๋ฒ„๋ฅผ ๊ฑฐ์น˜์ง€ ์•Š์Œ!)

โœ” Signaling server(์„ธ์…˜ ์ œ์–ด, ์—ฐ๊ฒฐ ๊ตฌ์„ฑ)์„ ์œ„ํ•ด ์›น์†Œ์ผ“ ์‚ฌ์šฉ

โœ” STUN, TURN Server: NAT ์‹๋ณ„, ๋ฐฉํ™”๋ฒฝ ์šฐํšŒ

๋Œ“๊ธ€