1. ์›น ํ†ต์‹  ํ๋ฆ„
  2. TCP UDP
  3. TCP 3,4 way handshake
  4. HTTP / HTTPS
  5. ์›น ์†Œ์ผ“

1. ์›น ํ†ต์‹  ํ๋ฆ„

์›น ํ†ต์‹ ์˜ ํฐ ํ๋ฆ„

img

  1. ํด๋ผ์ด์–ธํŠธ ์š”์ฒญ
  2. DNS ์กฐํšŒ๋ฅผ ํ†ตํ•ด ๋„๋ฉ”์ธ ๋„ค์ž„์„ IP ์ฃผ์†Œ๋กœ ๋ณ€ํ™˜ํ•˜์—ฌ ์„œ๋ฒ„์—๊ฒŒ ์š”์ฒญ
  3. ์„œ๋ฒ„๋Š” ์š”์ฒญ์„ ๋ฐ›๊ณ  ์š”์ฒญ์— ๋งž๋Š” ์ฒ˜๋ฆฌ๋ฅผ ํ•œ ๋’ค ๊ฒฐ๊ณผ ์ƒ์„ฑ
  4. ์ฒ˜๋ฆฌ ๊ฒฐ๊ณผ๋ฅผ HTTP ์‘๋‹ต์œผ๋กœ ํด๋ผ์ด์–ธํŠธ์—๊ฒŒ ์ „๋‹ฌ
  5. ์„œ๋ฒ„ ์‘๋‹ต์„ ๋ฐ›์•„ ํ™”๋ฉด์— ํ‘œ์‹œ

Note

์›น ํ†ต์‹ ์˜ ๊ธฐ๋ณธ ํ๋ฆ„์„ ์„ค๋ช…ํ•ด์ฃผ์„ธ์š”

์›น ํ†ต์‹ ์€ ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์š”์ฒญ์„ ๋ณด๋‚ด๊ณ  ์„œ๋ฒ„๊ฐ€ ์ด๋ฅผ ์ฒ˜๋ฆฌํ•ด ์‘๋‹ต์„ ๋ฐ˜ํ™˜ํ•˜๋Š” ๊ณผ์ •์ž…๋‹ˆ๋‹ค. ์‚ฌ์šฉ์ž๊ฐ€ url์„ ์ž…๋ ฅํ•˜๊ฑฐ๋‚˜ ์š”์ฒญ์„ ๋ฐœ์ƒ์‹œํ‚ค๋ฉด DNS๋ฅผ ํ†ตํ•ด ์„œ๋ฒ„ IP๋ฅผ ํ™•์ธํ•˜๊ณ  ์„œ๋ฒ„์— ์š”์ฒญ์„ ์ „์†กํ•ฉ๋‹ˆ๋‹ค. ์„œ๋ฒ„๊ฐ€ ์š”์ฒญ์„ ์ฒ˜๋ฆฌํ•˜๊ณ  ์‘๋‹ต ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ˜ํ™˜ํ•˜๊ณ  ํด๋ผ์ด์–ธํŠธ๋Š” ์‘๋‹ต์„ ๋ฐ›์•„ ํ™”๋ฉด์— ํ‘œ์‹œํ•ฉ๋‹ˆ๋‹ค.

DNS

  • ์‚ฌ์šฉ์ž์—๊ฒŒ ์นœ์ˆ™ํ•œ ๋„๋ฉ”์ธ ์ด๋ฆ„์„ ์ปดํ“จํ„ฐ๊ฐ€ ์ธํ„ฐ๋„ท ํ”„๋กœํ† ์ฝœ(IP)์ฃผ์†Œ๋กœ ๋ณ€ํ™˜ํ•˜๋Š” ์ธํ„ฐ๋„ท ํ‘œ์ค€ ํ”„๋กœํ† ์ฝœ

IP

  • ์ธํ„ฐ๋„ท ํ”„๋กœํ† ์ฝœ, ๋„คํŠธ์›Œํฌ์—์„œ ์ •๋ณด๋ฅผ ์ˆ˜์‹ ํ•˜๊ณ  ์†ก์‹ ํ•˜๋Š” ํ†ต์‹ ์— ๋Œ€ํ•œ ๊ทœ์•ฝ

NOTE

DNS์˜ ์—ญํ• ์€ ๋ฌด์—‡์ธ๊ฐ€์š”?

DNS๋Š” ๋„๋ฉ”์ธ ์ด๋ฆ„์„ IP ์ฃผ์†Œ๋กœ ๋ณ€ํ™˜ํ•˜๋Š” ์—ญํ• ์„ ํ•ฉ๋‹ˆ๋‹ค.

2. TCP UDP

TCP์™€ UDP์˜ ์ฐจ์ด์ 

  • ๋„คํŠธ์›Œํฌ์—์„œ ๋ฐ์ดํ„ฐ ์ „์†ก์„ ์œ„ํ•œ ํ”„๋กœํ† ์ฝœ

TCP(Transmission Control Protocol)

  • ์—ฐ๊ฒฐ ๊ธฐ๋ฐ˜ ํ”„๋กœํ† ์ฝœ
  • ๋ฐ์ดํ„ฐ์˜ ์‹ ๋ขฐ์„ฑ ๋ณด์žฅ
  • ๋„คํŠธ์›Œํฌ ์ƒํƒœ์— ๋”ฐ๋ผ ๋ฐ์ดํ„ฐ ์ „์†ก ์†๋„ ์กฐ์ ˆ
  • ๋ฐ์ดํ„ฐ ์ˆ˜์‹  ํ›„ ํ™•์ธ ์‘๋‹ต์„ ๋ฐ›์Œ
  • HTTP, FTP, SMTP

UDP(User Datagram Protocol)

  • ๋น„์—ฐ๊ฒฐ๊ธฐ๋ฐ˜ ํ”„๋กœํ† ์ฝœ
  • ์ „์†ก ์†๋„ ๋น ๋ฆ„
  • ์‹ ๋ขฐ์„ฑ์„ ๋ณด์žฅํ•˜์ง€ ์•Š์Œ
  • ๋‹จ์ˆœํ•œ ํ”„๋กœํ† ์ฝœ
  • ์‹ค์‹œ๊ฐ„ ์ŠคํŠธ๋ฆฌ๋ฐ, DNS ์กฐํšŒ

NOTE

TCP์™€ UDP์˜ ์ฐจ์ด์ ์„ ์„ค๋ช…ํ•ด์ฃผ์„ธ์š”

TCP๋Š” ์—ฐ๊ฒฐ ๊ธฐ๋ฐ˜ ํ”„๋กœํ† ์ฝœ๋กœ ์‹ ๋ขฐ์„ฑ๊ณผ ๋ฐ์ดํ„ฐ์˜ ์ˆœ์„œ๋ฅผ ๋ณด์žฅํ•˜๋ฉฐ ๋ฐ์ดํ„ฐ๋ฅผ ์ „์†กํ•ฉ๋‹ˆ๋‹ค. UDP๋Š” ๋น„์—ฐ๊ฒฐ๊ธฐ๋ฐ˜ ํ”„๋กœํ† ์ฝœ๋กœ ๋ฐ์ดํ„ฐ์˜ ๋น ๋ฅธ ์ „์†ก์„ ์ค‘์‹œํ•˜์ง€๋งŒ ์‹ ๋ขฐ์„ฑ์„ ๋ณด์žฅํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

NOTE

TCP์™€ UDP ์ค‘ ์–ด๋А ๊ฒƒ์„ ์„ ํƒํ• ์ง€ ์–ด๋–ป๊ฒŒ ๊ฒฐ์ •ํ•˜๋‚˜์š”?

ํŒŒ์ผ ์ „์†ก์ด๋‚˜ ์›น ๋ธŒ๋ผ์šฐ์ง• ๊ฐ™์ด ๋ฐ์ดํ„ฐ ์†์‹ค์ด ํ—ˆ์šฉ๋˜์ง€ ์•Š๋Š” ์‹ ๋ขฐ์„ฑ์ด ์ค‘์š”ํ•œ ๊ฒฝ์šฐ์—๋Š” TCP๋ฅผ ์‚ฌ์šฉํ•˜๊ณ , ์‹ค์‹œ๊ฐ„ ์ŠคํŠธ๋ฆฌ๋ฐ์ฒ˜๋Ÿผ ์†๋„๊ฐ€ ์ค‘์š”ํ•œ ๊ฒฝ์šฐ์—๋Š” UDP๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

NOTE

TCP๋Š” ์‹ ๋ขฐ์„ฑ์„ ์–ด๋–ป๊ฒŒ ๋ณด์žฅํ•˜๋‚˜์š”?

TCP๋Š” ๋ฐ์ดํ„ฐ ํ™•์ธ ์‘๋‹ต์„ ์‚ฌ์šฉํ•˜๊ณ , ๋ฐ์ดํ„ฐ ์†์‹ค์‹œ ์žฌ์ „์†ก์„ ์š”์ฒญํ•˜๊ณ , ์‹œํ€€์Šค๋ฅผ ํ†ตํ•ด ๋ฐ์ดํ„ฐ์˜ ์ˆœ์„œ๋ฅผ ๋ณด์žฅํ•˜๊ณ , ์†๋„์™€ ์ „์†ก๋Ÿ‰์„ ์กฐ์ ˆํ•ด ํ๋ฆ„๊ณผ ํ˜ผ์žก์„ ์ œ์–ดํ•˜์—ฌ ์‹ ๋ขฐ์„ฑ์„ ๋ณด์žฅํ•ฉ๋‹ˆ๋‹ค.

3. TCP 3,4 way handshake

TCP 3-Way Handshake

  • ์•ˆ์ •์ ์ธ ๋ฐ์ดํ„ฐ ์ „์†ก์„ ๋ณด์žฅํ•˜๊ธฐ ์œ„ํ•ด ํ•„์š”
  • ๋„คํŠธ์›Œํฌ ์ƒํƒœ๋ฅผ ํ™•์ธํ•˜์—ฌ ํŒจํ‚ท ์†์‹ค์ด๋‚˜ ์ค‘๋ณต ์—ฐ๊ฒฐ ๋ฐฉ์ง€
  • SYN, ACK ํ”Œ๋ž˜๊ทธ
  1. ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์„œ๋ฒ„์—๊ฒŒ ์—ฐ๊ฒฐ ์š”์ฒญ(SYN)์„ ๋ณด๋ƒ„
  2. ์„œ๋ฒ„๋Š” ์š”์ฒญ์„ ์ˆ˜๋ฝํ•˜๊ณ  ์‘๋‹ต(SYN-ACK)์„ ๋ณด๋ƒ„
  3. ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์‘๋‹ต ํ™•์ธ(ACK)์„ ๋ณด๋‚ด๋ฉฐ ์—ฐ๊ฒฐ ์™„๋ฃŒ
  • ์ค‘๊ฐ„์— ์‹คํŒจ์‹œ ์žฌ์ „์†ก ์‹œ๋„
  • ์„ค์ •๋œ ์‹œ๊ฐ„ ๋‚ด ์‘๋‹ต์ด ์—†์œผ๋ฉด ์—ฐ๊ฒฐ ์š”์ฒญ ์ข…๋ฃŒ

TCP 4-Way Handshake

  • TCP์—์„œ ์—ฐ๊ฒฐ์„ ์•ˆ์ „ํ•˜๊ฒŒ ์ข…๋ฃŒํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉ
  • ์–‘์ชฝ ๋ชจ๋‘ ์—ฐ๊ฒฐ ์ข…๋ฃŒ๋ฅผ ๋…๋ฆฝ์ ์œผ๋กœ ์ฒ˜๋ฆฌ
  • FIN, ACK ํ”Œ๋ž˜๊ทธ
  1. ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์—ฐ๊ฒฐ ์ข…๋ฃŒ ์š”์ฒญ(FIN)์„ ๋ณด๋ƒ„
  2. ์„œ๋ฒ„๊ฐ€ ์š”์ฒญ์„ ํ™•์ธํ•˜๊ณ (ACK)
  3. ์„œ๋ฒ„๊ฐ€ ์—ฐ๊ฒฐ ์ข…๋ฃŒ ์š”์ฒญ(FIN)๋ณด๋ƒ„
  4. ํด๋ผ์ธ์–ธํŠธ๊ฐ€ ํ™•์ธ ์‘๋‹ต(ACK)์„ ๋ณด๋‚ด๋ฉฐ ์—ฐ๊ฒฐ ์ข…๋ฃŒ

NOTE

TCP 4-Way Handshake๊ฐ€ 3๋ฒˆ์ด ์•„๋‹Œ 4๋ฒˆ์ธ ์ด์œ ๋Š” ๋ฌด์—‡์ธ๊ฐ€์š”?

์–‘์ธก์ด ๋…๋ฆฝ์ ์œผ๋กœ ์—ฐ๊ฒฐ ์ข…๋ฃŒ๋ฅผ ์ค€๋น„ํ•˜๊ธฐ ๋•Œ๋ฌธ์— 4๋‹จ๊ณ„๋ฅผ ๊ฑฐ์นฉ๋‹ˆ๋‹ค.

  • ํด๋ผ์ด์–ธํŠธ์™€ ์„œ๋ฒ„๊ฐ€ ๊ฐ๊ฐ FIN์„ ๋ณด๋‚ด๊ณ , ์ƒ๋Œ€๋ฐฉ์˜ ์ข…๋ฃŒ ์š”์ฒญ์„ ACK๋กœ ํ™•์ธ
  • ๋น„๋™๊ธฐ๋ฐฉ์‹์œผ๋กœ ์ข…๋ฃŒ๋ฅผ ์ฒ˜๋ฆฌํ•˜๊ธฐ ์œ„ํ•ด ํ•„์š”

SYN Flooding

  • ๊ณต๊ฒฉ์ž๊ฐ€ ๋‹ค์ˆ˜์˜ SYN ์š”์ฒญ์„ ๋ณด๋‚ด์ง€๋งŒ ACK ์‘๋‹ต์„ ๋ณด๋‚ด์ง€์•Š์•„ ์„œ๋ฒ„๊ฐ€ ๋ฆฌ์†Œ์Šค๋ฅผ ๊ณผ๋‹ค ์‚ฌ์šฉํ•˜๊ฒŒ ๋งŒ๋“ฌ
  • ์ƒˆ๋กœ์šด ์—ฐ๊ฒฐ์„ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์—†๊ฒŒ๋จ

NOTE

3-Way Handshake ๊ณผ์ •์—์„œ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋Š” ๋ฌธ์ œ๋Š” ๋ฌด์—‡์ธ๊ฐ€์š”?

  • ๋„คํŠธ์›Œํฌ ์ง€์—ฐ : SYN, SYN-ACK ํŒจํ‚ท์ด ์†์‹ค๋˜๋ฉด ์žฌ์ „์†ก์ด ๋ฐœ์ƒ
  • SYN Flooding : ์„œ๋ฒ„ ๋ฆฌ์†Œ์Šค ๊ณผ๋„ํ•œ ์‚ฌ์šฉ์œผ๋กœ ์ธํ•œ ์žฅ์• 
  • ์ค‘๋ณต ์—ฐ๊ฒฐ โ†’ ํƒ€์ž„์•„์›ƒ๊ณผ ์žฌ์ „์†ก ๋ฉ”์ปค๋‹ˆ์ฆ˜ ์ œ๊ณต

NOTE

TCP ์—ฐ๊ฒฐ์ด ๋Š์–ด์ง€์ง€ ์•Š๋Š”๋‹ค๋ฉด ์–ด๋–ค ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•˜๋‚˜์š”?

๋ฆฌ์†Œ์Šค ๋ˆ„์ˆ˜ ๋ฐœ์ƒ

  • ์„œ๋ฒ„๊ฐ€ ์—ด๋ฆฐ ์—ฐ๊ฒฐ์„ ์œ ์ง€ํ•˜๊ธฐ ์œ„ํ•ด ๋ฉ”๋ชจ๋ฆฌ์™€ CPU๋ฅผ ๊ณ„์† ์‚ฌ์šฉ
  • ๊ณ ์•„ ์—ฐ๊ฒฐ ๋ฐœ์ƒ

4. HTTP / HTTPS

HTTP์™€ HTTPS์˜ ์ฐจ์ด์ 

HTTP

  • ์›น ๋ธŒ๋ผ์šฐ์ €์™€ ์„œ๋ฒ„๊ฐ„์˜ ๋ฐ์ดํ„ฐ ์ „์†ก์„ ์œ„ํ•œ ํ”„๋กœํ† ์ฝœ
  • ์•”ํ˜ธํ™”๋˜์ง€ ์•Š์€ ๋ฐ์ดํ„ฐ๋ฅผ ์ฃผ๊ณ ๋ฐ›์Œ
  • ์•”ํ˜ธํ™” ๊ณผ์ •์ด ์—†์–ด ์†๋„๊ฐ€ ๋น ๋ฆ„
  • ๋ณด์•ˆ์— ์ทจ์•ฝ
  • ๊ธฐ๋ณธ ํฌํŠธ 80

HTTPS

  • HTTP์— ๋ณด์•ˆ ๊ณ„์ธต์„ ์ถ”๊ฐ€ํ•œ ํ”„๋กœํ† ์ฝœ
  • SSL/TLS๋ฅผ ํ†ตํ•ด ๋ฐ์ดํ„ฐ ์•”ํ˜ธํ™”
  • ๋ฐ์ดํ„ฐ ๋ฌด๊ฒฐ์„ฑ ๋ณด์žฅ
  • ๊ธฐ๋ณธ ํฌํŠธ 443

NOTE

HTTP์™€ HTTPS์˜ ์ฐจ์ด๋ฅผ ์„ค๋ช…ํ•ด๋ณด์„ธ์š”

HTTP๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์•”ํ˜ธํ™” ํ•˜์ง€ ์•Š๊ณ  ํ‰๋ฌธ์œผ๋กœ ์ „์†กํ•˜๋Š” ํ”„๋กœํ† ์ฝœ๋กœ, ๋ณด์•ˆ์— ์ทจ์•ฝํ•ฉ๋‹ˆ๋‹ค. HTTPS๋Š” SSL/TLS๋ฅผ ํ†ตํ•ด ๋ฐ์ดํ„ฐ๋ฅผ ์•”ํ˜ธํ™”ํ•˜์—ฌ ๊ธฐ๋ฐ€์„ฑ, ๋ฌด๊ฒฐ์„ฑ, ์ธ์ฆ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

NOTE

HTTPS์˜ ๋™์ž‘ ์›๋ฆฌ๋ฅผ ๊ฐ„๋‹จํžˆ ์„ค๋ช…ํ•ด๋ณด์„ธ์š”.

  1. ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์„œ๋ฒ„์— ์—ฐ๊ฒฐ ์š”์ฒญ์„ ๋ณด๋ƒ„
  2. ์„œ๋ฒ„๋Š” SSL/TLS ์ธ์ฆ์„œ๋ฅผ ํด๋ผ์ด์–ธํŠธ์—๊ฒŒ ๋ณด๋ƒ„
  3. ํด๋ผ์ด์–ธํŠธ๋Š” ์ธ์ฆ์„œ๋ฅผ ๊ฒ€์ฆํ•˜๊ณ , ์„œ๋ฒ„์™€ ๋Œ€์นญํ‚ค๋ฅผ ์ƒ์„ฑํ•˜์—ฌ ๋ฐ์ดํ„ฐ ์•”ํ˜ธํ™”
  4. ์•”ํ˜ธํ™”๋œ ๋ฐ์ดํ„ฐ ์ „์†ก

NOTE

HTTPS๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ ์„ฑ๋Šฅ ์ €ํ•˜๊ฐ€ ๋ฐœ์ƒํ•˜๋Š” ์ด์œ ๋Š” ๋ฌด์—‡์ธ๊ฐ€์š”?

SSL/TLS ๊ณผ์ •์—์„œ ๊ณต๊ฐœํ‚ค ์•”ํ˜ธํ™”์™€ ์ธ์ฆ์„œ ๊ฒ€์ฆ ์ž‘์—…์ด ํ•„์š”ํ•˜๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

5. ์›น ์†Œ์ผ“ (webSocket)

์›น ์†Œ์ผ“์ด๋ž€ ๋ฌด์—‡์ด๋ฉฐ, ์‹ค์‹œ๊ฐ„ ํ†ต์‹ ์—์„œ ์ด๋ฅผ ์–ด๋–ป๊ฒŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š”์ง€ ์„ค๋ช…ํ•ด์ฃผ์„ธ์š”

์›น ์†Œ์ผ“(WebSocket)

  • ์–‘๋ฐฉํ–ฅ ์‹ค์‹œ๊ฐ„ ํ†ต์‹ ์„ ์œ„ํ•œ ํ”„๋กœํ† ์ฝœ

  • ํด๋ผ์ด์–ธํŠธ์™€ ์„œ๋ฒ„ ๊ฐ„ ์ง€์†์ ์ธ ์—ฐ๊ฒฐ์„ ์œ ์ง€ํ•˜๋ฉฐ ๋ฐ์ดํ„ฐ๋ฅผ ๊ตํ™˜ํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์คŒ

  • HTTP๋Š” ๋‹จ๋ฐฉํ–ฅ ํ†ต์‹ , ์›น ์†Œ์ผ“์€ ์–‘๋ฐฉํ–ฅ ํ†ต์‹ 

  • ์–‘๋ฐฉํ–ฅ ํ†ต์‹  : ํด๋ผ์ด์–ธํŠธ์™€ ์„œ๋ฒ„๊ฐ€ ์ƒํ˜ธ ํ†ต์‹  ๊ฐ€๋Šฅ

  • ์ง€์†์ ์ธ ์—ฐ๊ฒฐ : ์ง€์†์ ์œผ๋กœ ์—ด๋ฆฐ ์ƒํƒœ์—์„œ ๋ฐ์ดํ„ฐ ์ „์†ก ๊ฐ€๋Šฅ

  • ๋‚ฎ์€ ์ง€์—ฐ ์‹œ๊ฐ„ : ์ƒ์‹œ ์—ฐ๊ฒฐ์ด ์œ ์ง€๋˜๋ฏ€๋กœ ์†ก์ˆ˜์‹ ์‹œ ์ง€์—ฐ์‹œ๊ฐ„ ์งง์Œ

  • ํšจ์œจ์„ฑ : ์—ฐ๊ฒฐ์ด ํ•œ๋ฒˆ๋งŒ ์ด๋ฃจ์–ด์ง€๋ฉด ๋ฐ์ดํ„ฐ ์ „์†ก์— ๋ถˆํ•„์š”ํ•œ ์˜ค๋ฒ„ํ—ค๋“œ๊ฐ€ ์ ์Œ

๋™์ž‘๋ฐฉ์‹

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

NOTE

์›น ์†Œ์ผ“์ด๋ž€ ๋ฌด์—‡์ธ๊ฐ€์š”?

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

NOTE

์›น ์†Œ์ผ“์€ ์–ด๋–ป๊ฒŒ ์‹ค์‹œ๊ฐ„ ํ†ต์‹ ์— ์‚ฌ์šฉ๋  ์ˆ˜ ์žˆ๋‚˜์š”?

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

NOTE

HTTP์™€ ์›น ์†Œ์ผ“์˜ ์ฐจ์ด์ ์€ ๋ฌด์—‡์ธ๊ฐ€์š”?

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

NOTE

์›น ์†Œ์ผ“์˜ ์ฃผ์š” ์žฅ์ ์€ ๋ฌด์—‡์ธ๊ฐ€์š”?

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

NOTE

์›น ์†Œ์ผ“์˜ ๋‹จ์ ์€ ๋ฌด์—‡์ธ๊ฐ€์š”?

์ง€์†์ ์ธ ์—ฐ๊ฒฐ ์œ ์ง€๋กœ ์ธํ•ด ๋ฆฌ์†Œ์Šค๋ฅผ ๋งŽ์ด ์‚ฌ์šฉํ•˜๊ณ , ์ผ๋ถ€ ๋„คํŠธ์›Œํฌ ํ™˜๊ฒฝ์—์„œ ๋ฐฉํ™”๋ฒฝ์ด๋‚˜ ํ”„๋ก์‹œ ์„œ๋ฒ„๊ฐ€ ์›น ์†Œ์ผ“ ์—ฐ๊ฒฐ์„ ์ฐจ๋‹จํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ ์›น ์†Œ์ผ“์€ ๊ธฐ๋ณธ์ ์œผ๋กœ ์•”ํ˜ธํ™”๋˜์ง€ ์•Š์€ ์ฑ„๋„๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์ฃผ๊ณ ๋ฐ›์•„ WSS๋ฅผ ์‚ฌ์šฉํ•ด์•ผ๋งŒ ์•”ํ˜ธํ™”๋œ ์—ฐ๊ฒฐ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.


NOTE

์›น์†Œ์ผ“์„ ์‚ฌ์šฉํ•˜๋Š” ๋Œ€๊ทœ๋ชจ ์‹œ์Šคํ…œ์—์„œ ์ˆ˜๋งŒ ๋˜๋Š” ์ˆ˜๋ฐฑ๋งŒ ๋ช…์˜ ๋™์‹œ ์—ฐ๊ฒฐ์„ ์ง€์›ํ•˜๋ ค๋ฉด ์–ด๋–ค ๋ฌธ์ œ๋“ค์ด ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ์ด๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•œ ๊ธฐ์ˆ ์  ์ ‘๊ทผ ๋ฐฉ์‹์€ ๋ฌด์—‡์ธ๊ฐ€์š”?

์„œ๋ฒ„ ๋ฆฌ์†Œ์Šค ํ•œ๊ณ„: ์ˆ˜๋งŽ์€ ์—ฐ๊ฒฐ์„ ์œ ์ง€ํ•˜๋ ค๋ฉด ๋ฉ”๋ชจ๋ฆฌ์™€ CPU ์‚ฌ์šฉ๋Ÿ‰์ด ๊ธ‰์ฆํ•ฉ๋‹ˆ๋‹ค. ํ•ด๊ฒฐ ๋ฐฉ์•ˆ: ์„œ๋ฒ„ ํด๋Ÿฌ์Šคํ„ฐ๋ง ๋ฐ ๋กœ๋“œ ๋ฐธ๋Ÿฐ์‹ฑ์„ ์‚ฌ์šฉํ•˜์—ฌ ์—ฐ๊ฒฐ์„ ์—ฌ๋Ÿฌ ์„œ๋ฒ„๋กœ ๋ถ„์‚ฐํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, Nginx์˜ Reverse Proxy ๋˜๋Š” AWS์˜ Application Load Balancer๋ฅผ ํ™œ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ƒํƒœ ๊ด€๋ฆฌ: ์›น์†Œ์ผ“ ์—ฐ๊ฒฐ์€ ์ƒํƒœ๋ฅผ ์œ ์ง€ํ•ด์•ผ ํ•˜๋ฏ€๋กœ, ์„œ๋ฒ„ ๊ฐ„ ์—ฐ๊ฒฐ ์ƒํƒœ๋ฅผ ๊ณต์œ ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ํ•ด๊ฒฐ ๋ฐฉ์•ˆ: Redis๋‚˜ Kafka ๊ฐ™์€ Pub/Sub ๋ฉ”์‹œ์ง€ ๋ธŒ๋กœ์ปค๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์„œ๋ฒ„ ๊ฐ„ ๋ฉ”์‹œ์ง€๋ฅผ ์ค‘๊ณ„ํ•˜๊ฑฐ๋‚˜, ์‚ฌ์šฉ์ž ์ƒํƒœ๋ฅผ ๊ณต์œ ํ•ฉ๋‹ˆ๋‹ค. ์—ฐ๊ฒฐ ์ œํ•œ: ๋‹จ์ผ ์„œ๋ฒ„์—์„œ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋Š” ์—ฐ๊ฒฐ ์ˆ˜์—๋Š” ํ•œ๊ณ„๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ํ•ด๊ฒฐ ๋ฐฉ์•ˆ: ์ด๋ฒคํŠธ ๊ธฐ๋ฐ˜ ๋„คํŠธ์›Œํฌ ํ”„๋กœ๊ทธ๋ž˜๋ฐ(์˜ˆ: Netty, Node.js)์„ ์‚ฌ์šฉํ•˜์—ฌ ๋น„๋™๊ธฐ์ ์œผ๋กœ ์—ฐ๊ฒฐ์„ ์ฒ˜๋ฆฌํ•˜๊ฑฐ๋‚˜, ์„œ๋ฒ„ ์ž์›์„ ํšจ์œจ์ ์œผ๋กœ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ๋Ÿ‰ ํ”„๋กœํ† ์ฝœ(์˜ˆ: MQTT)๋กœ ์ „ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

NOTE

์‹ค์‹œ๊ฐ„ ์›น์†Œ์ผ“ ์—ฐ๊ฒฐ์—์„œ ๋ฐ์ดํ„ฐ ๋„์ฒญ, ์œ„๋ณ€์กฐ, ๋˜๋Š” ์ธ์ฆ ์šฐํšŒ๋ฅผ ๋ฐฉ์ง€ํ•˜๊ธฐ ์œ„ํ•ด ์–ด๋–ค ๋ณด์•ˆ ๋ฉ”์ปค๋‹ˆ์ฆ˜์„ ์ ์šฉํ•  ์ˆ˜ ์žˆ๋‚˜์š”? ๋˜ํ•œ, ์—ฐ๊ฒฐ ์ˆ˜๋ฆฝ ํ›„ ์ธ์ฆ ํ† ํฐ์ด ๋งŒ๋ฃŒ๋˜์—ˆ์„ ๋•Œ ์ด๋ฅผ ์–ด๋–ป๊ฒŒ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ์„๊นŒ์š”?

๋ฐ์ดํ„ฐ ๋ณดํ˜ธ: TLS ์•”ํ˜ธํ™”(HTTPS)๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํด๋ผ์ด์–ธํŠธ์™€ ์„œ๋ฒ„ ๊ฐ„ ๋ฐ์ดํ„ฐ๋ฅผ ์•”ํ˜ธํ™”ํ•ฉ๋‹ˆ๋‹ค. wss://๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋ฐ์ดํ„ฐ ์ „์†ก ์ค‘ ๋„์ฒญ์„ ๋ฐฉ์ง€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฉ”์‹œ์ง€์˜ ๋ฌด๊ฒฐ์„ฑ์„ ๋ณด์žฅํ•˜๊ธฐ ์œ„ํ•ด HMAC(ํ•ด์‹œ ๊ธฐ๋ฐ˜ ๋ฉ”์‹œ์ง€ ์ธ์ฆ ์ฝ”๋“œ)๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ฐ ๋ฉ”์‹œ์ง€์— ์„œ๋ช…ํ•ฉ๋‹ˆ๋‹ค.

์ธ์ฆ ์ฒ˜๋ฆฌ: ์—ฐ๊ฒฐ ์„ค์ • ์‹œ JWT ํ† ํฐ์ด๋‚˜ OAuth ํ† ํฐ์„ ์‚ฌ์šฉํ•˜์—ฌ ํด๋ผ์ด์–ธํŠธ๋ฅผ ์ธ์ฆํ•ฉ๋‹ˆ๋‹ค. ์„œ๋ฒ„๋Š” ํ† ํฐ์˜ ์œ ํšจ์„ฑ์„ ํ™•์ธํ•˜๊ณ  ์—ฐ๊ฒฐ์„ ์Šน์ธํ•ฉ๋‹ˆ๋‹ค. ์—ฐ๊ฒฐ ํ›„ ํ† ํฐ์ด ๋งŒ๋ฃŒ๋  ๊ฒฝ์šฐ, **๋ฆฌํ”„๋ ˆ์‹œ ํ† ํฐ(refresh token)**์„ ํ†ตํ•ด ์ƒˆ ํ† ํฐ์„ ๋ฐœ๊ธ‰ํ•˜๊ฑฐ๋‚˜, ๋งŒ๋ฃŒ๋œ ์—ฐ๊ฒฐ์„ ๊ฐ•์ œ๋กœ ์ข…๋ฃŒํ•˜๊ณ  ์žฌ์—ฐ๊ฒฐ์„ ์š”์ฒญํ•ฉ๋‹ˆ๋‹ค. ์ถ”๊ฐ€ ๋ณด์•ˆ:

IP ๊ธฐ๋ฐ˜ ํ•„ํ„ฐ๋ง: ๋น„์ •์ƒ์ ์ธ ์—ฐ๊ฒฐ ์‹œ๋„๋ฅผ ์ฐจ๋‹จ. Rate Limiting: ํด๋ผ์ด์–ธํŠธ์˜ ์—ฐ๊ฒฐ ๋ฐ ๋ฉ”์‹œ์ง€ ์ „์†ก ๋นˆ๋„๋ฅผ ์ œํ•œํ•˜์—ฌ ์„œ๋น„์Šค ๊ฑฐ๋ถ€ ๊ณต๊ฒฉ(DoS) ๋ฐฉ์ง€. CORS ์ •์ฑ…: ํ—ˆ์šฉ๋œ ๋„๋ฉ”์ธ์—์„œ๋งŒ ์›น์†Œ์ผ“์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ์„ค์ •.