[CS] ๐Ÿ“• Network

๊น€์˜ํ•œยท2020๋…„ 11์›” 1์ผ
1

CS

๋ชฉ๋ก ๋ณด๊ธฐ
2/3

์ฐธ๊ณ ์ž๋ฃŒ : Tech Interview, Tech Interview


๐Ÿ“– OSI 7๊ณ„์ธต

7๊ณ„์ธต์„ ๋‚˜๋ˆ„๋Š” ์ด์œ 

ํ†ต์‹ ์ด ์ผ์–ด๋‚˜๋Š” ๊ณผ์ •์„ ๋‹จ๊ณ„๋ณ„๋กœ ์•Œ ์ˆ˜ ์žˆ๊ณ , ํŠน์ •ํ•œ ๊ณณ์— ์ด์ƒ์ด ์ƒ๊ธฐ๋ฉด ๊ทธ ๋‹จ๊ณ„๋งŒ ์ˆ˜์ •ํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ

  • ์ปดํ“จํ„ฐ ๋„คํŠธ์›Œํฌ ํ”„๋กœํ† ์ฝœ ๋””์ž์ธ๊ณผ ํ†ต์‹ ์„ ๊ณ„์ธต์œผ๋กœ ๋‚˜๋ˆ„์–ด ์„ค๋ช…ํ•œ ๊ฒƒ์ด๋‹ค.
  • ํ”„๋กœํ† ์ฝœ์„ ๊ธฐ๋Šฅ๋ณ„๋กœ ๋‚˜๋ˆˆ ๊ฒƒ
  • ๊ฐ ๊ณ„์ธต์€ ํ•˜์œ„ ๊ณ„์ธต์˜ ๊ธฐ๋Šฅ๋งŒ์„ ์ด์šฉํ•˜๊ณ , ์ƒ์œ„ ๊ณ„์ธต์—๊ฒŒ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•œ๋‹ค.
  • ์ผ๋ฐ˜์ ์œผ๋กœ ํ•˜์œ„ ๊ณ„์ธต๋“ค์€ ํ•˜๋“œ์›จ์–ด๋กœ, ์ƒ์œ„ ๊ณ„์ธต๋“ค์€ ์†Œํ”„ํŠธ์›จ์–ด๋กœ ๊ตฌํ˜„๋œ๋‹ค.
  1. ๋ฌผ๋ฆฌ ๊ณ„์ธต(Physical layer)
    • ๋„คํŠธ์›Œํฌ์˜ ๊ธฐ๋ณธ ๋„คํŠธ์›Œํฌ๋กœ ํ•˜๋“œ์›จ์–ด ์ „์†ก ๊ธฐ์ˆ ์„ ์ด๋ฃฌ๋‹ค.(๋ฆฌํ”ผํ„ฐ, ์ผ€์ด๋ธ”, ํ—ˆ๋ธŒ)
    • ๋‹จ์ง€ ๋ฐ์ดํ„ฐ๋ฅผ ์ „๊ธฐ์ ์ธ ์‹ ํ˜ธ๋กœ ๋ณ€ํ™˜ํ•ด์„œ ์ฃผ๊ณ ๋ฐ›๋Š” ๊ธฐ๋Šฅ์„ ์ง„ํ–‰(์ฆ‰, ๋ฐ์ดํ„ฐ๋ฅผ ์ „์†กํ•˜๋Š” ์—ญํ• ๋งŒ ํ•œ๋‹ค.)
    • ๋…ผ๋ฆฌ ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ(๋†’์€ ์ˆ˜์ค€์˜ ๊ธฐ๋Šฅ)๋ฅผ ๊ธฐ์ดˆ๋กœ ํ•˜๋Š” ํ•„์ˆ˜ ๊ณ„์ธต์ด๋‹ค.
    • ์ „์†ก ๋‹จ์œ„๋Š” Bit์ด๋‹ค.
  2. ๋ฐ์ดํ„ฐ ๋งํฌ ๊ณ„์ธต(Data link layer)
    • Point to Point ๊ฐ„ ์‹ ๋ขฐ์„ฑ์žˆ๋Š” ์ „์†ก์„ ๋ณด์žฅํ•˜๊ธฐ ์œ„ํ•œ ๊ณ„์ธต์œผ๋กœ CRC ๊ธฐ๋ฐ˜์˜ ์˜ค๋ฅ˜ ์ œ์–ด์™€ ํ๋ฆ„ ์ œ์–ด๊ฐ€ ํ•„์š”ํ•˜๋‹ค.
    • ๋ฌผ๋ฆฌ ๊ณ„์ธต์œผ๋กœ ์†ก์ˆ˜์‹ ๋˜๋Š” ์ •๋ณด๋ฅผ ๊ด€๋ฆฌํ•˜์—ฌ ์•ˆ์ „ํ•˜๊ฒŒ ์ „๋‹ฌ๋˜๋„๋ก ๋„์™€์ฃผ๋Š” ์—ญํ• (๋ธŒ๋ฆฟ์ง€, ์Šค์œ„์น˜)
    • ๋ฐ์ดํ„ฐ ๋งํฌ ๊ณ„์ธต์˜ ๊ฐ€์žฅ ์ž˜ ์•Œ๋ ค์ง„ ์˜ˆ๋Š” ์ด๋”๋„ท์ด๋‹ค.
    • ์ฃผ์†Œ ๊ฐ’์„ ๋ฌผ๋ฆฌ์ ์œผ๋กœ ํ• ๋‹น๋ฐ›๋Š”๋‹ค.
    • Mac ์ฃผ์†Œ๋ฅผ ํ†ตํ•ด ํ†ต์‹ ํ•œ๋‹ค.
    • ์ „์†ก ๋‹จ์œ„๋Š” Frame์ด๋‹ค.(ํ”„๋ ˆ์ž„์— Mac ์ฃผ์†Œ๋ฅผ ๋ถ€์—ฌํ•˜๊ณ  ์—๋Ÿฌ๊ฒ€์ถœ, ์žฌ์ „์†ก, ํ๋ฆ„์ œ์–ด ์ง„ํ–‰)
  3. ๋„คํŠธ์›Œํฌ ๊ณ„์ธต(Network layer)
    • ์—ฌ๋Ÿฌ ๊ฐœ์˜ ๋…ธ๋“œ๋ฅผ ๊ฑฐ์น  ๋•Œ๋งˆ๋‹ค ๊ฒฝ๋กœ๋ฅผ ์ฐพ์•„์ฃผ๋Š” ์—ญํ• ์„ ํ•˜๋Š” ๊ณ„์ธต์œผ๋กœ ๋‹ค์–‘ํ•œ ๊ธธ์ด์˜ ๋ฐ์ดํ„ฐ๋ฅผ ๋„คํŠธ์›Œํฌ๋“ค์„ ํ†ตํ•ด ์ „๋‹ฌํ•˜๊ณ , ๊ทธ ๊ณผ์ •์—์„œ ์ „์†ก ๊ณ„์ธต์ด ์š”๊ตฌํ•˜๋Š” ์„œ๋น„์Šค ํ’ˆ์งˆ(QoS)๋ฅผ ์ œ๊ณตํ•˜๊ธฐ ์œ„ํ•œ ๊ธฐ๋Šฅ์ , ์ ˆ์ฐจ์  ์ˆ˜๋‹จ์„ ์ œ๊ณตํ•œ๋‹ค.
    • ์ฆ‰, ๋ฐ์ดํ„ฐ๋ฅผ ๋ชฉ์ ์ง€๊นŒ์ง€ ๊ฐ€์žฅ ์•ˆ์ „ํ•˜๊ณ  ๋น ๋ฅด๊ฒŒ ์ „๋‹ฌํ•˜๋Š” ๊ธฐ๋Šฅ(๋ผ์šฐํ„ฐ, IP)
    • ๋ผ์šฐํŒ…, ํ๋ฆ„ ์ œ์–ด, ์˜ค๋ฅ˜ ์ œ์–ด, ์„ธ๊ทธ๋ฉ˜ํ…Œ์ด์…˜ ๋“ฑ์„ ์ˆ˜ํ–‰ํ•œ๋‹ค.
    • ๋ผ์šฐํ„ฐ๋ฅผ ํ†ตํ•ด ์ด๋™ํ•  ๊ฒฝ๋กœ๋ฅผ ์„ ํƒํ•˜์—ฌ IP ์ฃผ์†Œ๋ฅผ ์ง€์ •ํ•˜๊ณ , ํ•ด๋‹น ๊ฒฝ๋กœ์— ๋”ฐ๋ผ ํŒจํ‚ท์„ ์ „๋‹ฌ
    • ์ „์†ก ๋‹จ์œ„๋Š” Datagram(Packet)์ด๋‹ค.
  4. ์ „์†ก ๊ณ„์ธต(Transport layer)
    • ์–‘ ๋๋‹จ(end to end)์˜ ์‚ฌ์šฉ์ž๋“ค์ด ์‹ ๋ขฐ์„ฑ์žˆ๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์ฃผ๊ณ  ๋ฐ›์„ ์ˆ˜ ์žˆ๋„๋ก ํ•ด์ฃผ์–ด, ์ƒ์œ„ ๊ณ„์ธต๋“ค์ด ๋ฐ์ดํ„ฐ ์ „๋‹ฌ์˜ ์œ ํšจ์„ฑ์ด๋‚˜ ํšจ์œจ์„ฑ์„ ์ƒ๊ฐํ•˜์ง€ ์•Š๋„๋ก ํ•ด์ค€๋‹ค.
    • TCP(์‹ ๋ขฐ์„ฑ, ์—ฐ๊ฒฐ์ง€ํ–ฅ์ )์™€ UDP(๋น„์‹ ๋ขฐ์„ฑ, ๋น„์—ฐ๊ฒฐ์„ฑ, ์‹ค์‹œ๊ฐ„) ํ”„๋กœํ† ์ฝœ์„ ํ†ตํ•ด ํ†ต์‹ ์„ ํ™œ์„ฑํ™”ํ•œ๋‹ค.
    • ํฌํŠธ๋ฅผ ์—ด์–ด๋‘๊ณ , ํ”„๋กœ๊ทธ๋žจ๋“ค์ด ์ „์†ก์„ ํ•  ์ˆ˜ ์žˆ๋„๋ก ์ œ๊ณต
    • ์ „์†ก ๋‹จ์œ„๋Š” Segment์ด๋‹ค.
  5. ์„ธ์…˜ ๊ณ„์ธต(Session layer)
    • ๋ฐ์ดํ„ฐ๊ฐ€ ํ†ต์‹ ํ•˜๊ธฐ ์œ„ํ•œ ๋…ผ๋ฆฌ์  ์—ฐ๊ฒฐ์„ ๋‹ด๋‹นํ•œ๋‹ค.(API, Socket)
    • ์–‘ ๋๋‹จ์˜ ์‘์šฉ ํ”„๋กœ์„ธ์Šค๊ฐ€ ํ†ต์‹ ์„ ๊ด€๋ฆฌํ•˜๊ธฐ ์œ„ํ•œ ๋ฐฉ๋ฒ•์„ ์ œ๊ณตํ•œ๋‹ค.
    • ๋™์‹œ ์†ก์ˆ˜์‹  ๋ฐฉ์‹(duplex), ๋ฐ˜์ด์ค‘ ๋ฐฉ์‹(half-duplex), ์ „์ด์ค‘ ๋ฐฉ์‹(Full Duplex)์˜ ํ†ต์‹ ๊ณผ ํ•จ๊ป˜ ์ฒดํฌ ํฌ์ธํŒ…๊ณผ ์ข…๋ฃŒ, ๋‹ค์‹œ์‹œ์ž‘ ๊ณผ์ • ๋“ฑ์„ ์ˆ˜ํ–‰ํ•œ๋‹ค.
    • TCP/IP์„ธ์…˜์„ ๋งŒ๋“ค๊ณ  ์—†์• ๋Š” ์—ญํ• 
    • TCP/IP๋Š” ์ธํ„ฐ๋„ท ํ”„๋กœํ† ์ฝœ ์ค‘ ๊ฐ€์žฅ ์ค‘์š”ํ•œ ์—ญํ• ์„ ํ•˜๋Š” TCP์™€ IP์˜ ํ•ฉ์„ฑ์–ด๋กœ ๋ฐ์ดํ„ฐ์˜ ํ๋ฆ„ ๊ด€๋ฆฌ, ์ •ํ™•์„ฑ ํ™•์ธ, ํŒจํ‚ท์˜ ๋ชฉ์ ์ง€ ๋ณด์žฅ์„ ๋‹ด๋‹นํ•œ๋‹ค.
      • ๋ฐ์ดํ„ฐ์˜ ์ •ํ™•์„ฑ ํ™•์ธ์€ TCP๊ฐ€, ํŒจํ‚ท์„ ๋ชฉ์ ์ง€๊นŒ์ง€ ์ „์†กํ•˜๋Š” ์ผ์€ IP๊ฐ€ ๋‹ด๋‹นํ•œ๋‹ค.
  6. ํ‘œํ˜„ ๊ณ„์ธต(Presentation layer)
    • ๋ฐ์ดํ„ฐ ํ‘œํ˜„์— ๋Œ€ํ•œ ๋…๋ฆฝ์„ฑ์„ ์ œ๊ณตํ•˜๊ณ  ์•”ํ˜ธํ™”ํ•˜๋Š” ์—ญํ• ์„ ๋‹ด๋‹น(JPEG, MPEG ๋“ฑ)
    • ์ฝ”๋“œ ๊ฐ„์˜ ๋ฒˆ์—ญ์„ ๋‹ด๋‹นํ•˜์—ฌ ์‚ฌ์šฉ์ž ์‹œ์Šคํ…œ์—์„œ ๋ฐ์ดํ„ฐ์˜ ํ˜•์‹์ƒ ์ฐจ์ด๋ฅผ ๋‹ค๋ฃจ๋Š” ๋ถ€๋‹ด์„ ์‘์šฉ ๊ณ„์ธต์œผ๋กœ๋ถ€ํ„ฐ ๋œ์–ด์ค€๋‹ค.
    • MIME ์ธ์ฝ”๋”ฉ์ด๋‚˜ ์•”ํ˜ธํ™” ๋“ฑ์˜ ๋™์ž‘์ด ์ด๋ฃจ์–ด์ง„๋‹ค.
  7. ์‘์šฉ ๊ณ„์ธต(Application layer)
    • ์‘์šฉ ํ”„๋กœ์„ธ์Šค์™€ ์ง์ ‘ ๊ด€๊ณ„ํ•˜์—ฌ ์ผ๋ฐ˜์ ์ธ ์‘์šฉ ์„œ๋น„์Šค๋ฅผ ์ˆ˜ํ–‰ํ•œ๋‹ค.(HTTP, FTP, DNS ๋“ฑ)
    • ์‚ฌ์šฉ์ž ์ธํ„ฐํŽ˜์ด์Šค, ์ „์ž์šฐํŽธ, ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๊ด€๋ฆฌ ๋“ฑ์˜ ์„œ๋น„์Šค๋ฅผ ์ œ๊ณตํ•œ๋‹ค.


๐Ÿ“– TCP์™€ UDP

๐Ÿ“Œ ๋„คํŠธ์›Œํฌ ๊ณ„์ธต ์ค‘ ์ „์†ก ๊ณ„์ธต์—์„œ ์‚ฌ์šฉํ•˜๋Š” ํ”„๋กœํ† ์ฝœ์ด๋‹ค.

๐Ÿ“š TCP

  • ์ธํ„ฐ๋„ท ์ƒ์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฉ”์„ธ์ง€์˜ ํ˜•ํƒœ(์„ธ๊ทธ๋จผํŠธ๋ผ๋Š” ๋ธ”๋ก ๋‹จ์œ„)๋กœ ๋ณด๋‚ด๊ธฐ ์œ„ํ•ด IP์™€ ํ•จ๊ป˜ ์‚ฌ์šฉํ•˜๋Š” ํ”„๋กœํ† ์ฝœ์ด๋‹ค.
  • TCP์™€ IP๋ฅผ ํ•จ๊ป˜ ์‚ฌ์šฉํ•˜๋Š”๋ฐ, IP๊ฐ€ ๋ฐ์ดํ„ฐ์˜ ๋ฐฐ๋‹ฌ์„ ์ฒ˜๋ฆฌํ•œ๋‹ค๋ฉด TCP๋Š” ํŒจํ‚ท์„ ์ถ”์  ๋ฐ ๊ด€๋ฆฌํ•œ๋‹ค.

๐Ÿ“ TCP์˜ ํŠน์ง•

  • ์—ฐ๊ฒฐํ˜• ์„œ๋น„์Šค๋กœ ๊ฐ€์ƒ ํšŒ์„  ๋ฐฉ์‹์„ ์ œ๊ณตํ•œ๋‹ค.
  • ํ๋ฆ„ ์ œ์–ด ๋ฐ ํ˜ผ์žก ์ œ์–ด๋ฅผ ์ œ๊ณตํ•œ๋‹ค.
    • ํ๋ฆ„ ์ œ์–ด : ๋ฐ์ดํ„ฐ๋ฅผ ์†ก์‹ ํ•˜๋Š” ๊ณณ๊ณผ ์ˆ˜์‹ ํ•˜๋Š” ๊ณณ์˜ ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ ์†๋„๋ฅผ ์กฐ์ ˆํ•˜์—ฌ ์ˆ˜์‹ ์ž์˜ ๋ฒ„ํผ ์˜ค๋ฒ„ํ”Œ๋กœ์šฐ๋ฅผ ๋ฐฉ์ง€ํ•˜๋Š” ๊ฒƒ(์ „์†ก์†๋„๋ฅผ ๋‹ค๋ฃธ)
      • ์ˆ˜์‹ ์ธก์ด ์†ก์‹ ์ธก๋ณด๋‹ค ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ ์†๋„๊ฐ€ ๋น ๋ฅด๋ฉด ๋ฌธ์ œ์—†์ง€๋งŒ, ์†ก์‹ ์ธก์˜ ์†๋„๊ฐ€ ๋น ๋ฅผ ๊ฒฝ์šฐ ๋ฌธ์ œ
      • ์ˆ˜์‹ ์ธก์—์„œ ์ œํ•œ๋œ ์ €์žฅ ์šฉ๋Ÿ‰์„ ์ดˆ๊ณผํ•œ ์ดํ›„์— ๋„์ฐฉํ•œ ๋ฐ์ดํ„ฐ๋Š” ์†์‹ค๋  ์ˆ˜ ์žˆ๋‹ค.
      • ํ•ด๊ฒฐ๋ฐฉ๋ฒ•
        • Stop and Wait : ๋งค๋ฒˆ ์ „์†กํ•œ ํŒจํ‚ท์— ๋Œ€ํ•ด ํ™•์ธ ์‘๋‹ต์„ ๋ฐ›์•„์•ผ๋งŒ ๊ทธ ๋‹ค์Œ ํŒจํ‚ท์„ ์ „์†กํ•˜๋Š” ๋ฐฉ๋ฒ•
        • Sliding Window : ์ˆ˜์‹ ์ธก์—์„œ ์„ค์ •ํ•œ ์œˆ๋„์šฐ ํฌ๊ธฐ๋งŒํผ ์†ก์‹ ์ธก์—์„œ ํ™•์ธ์‘๋‹ต์—†์ด ์„ธ๊ทธ๋จผํŠธ๋ฅผ ์ „์†กํ•  ์ˆ˜ ์žˆ๊ฒŒํ•˜์—ฌ ๋ฐ์ดํ„ฐ ํ๋ฆ„์„ ๋™์ ์œผ๋กœ ์กฐ์ ˆํ•˜๋Š” ์ œ์–ด๊ธฐ๋ฒ•
    • ํ˜ผ์žก ์ œ์–ด : ๋„คํŠธ์›Œํฌ ๋‚ด์˜ ํŒจํ‚ท ์ˆ˜๊ฐ€ ๋„˜์น˜๊ฒŒ ์ฆ๊ฐ€ํ•˜์ง€ ์•Š๋„๋ก ๋ฐฉ์ง€ํ•˜๋Š” ๊ฒƒ(ํ˜ผ์žก ๋ถ•๊ดด ํ˜„์ƒ์„ ๋ง‰์Œ)
      • ๋„คํŠธ์›Œํฌ์˜ ํ˜ผ์žก์„ ํ”ผํ•˜๊ธฐ ์œ„ํ•ด ์†ก์‹ ์ธก์—์„œ ๋ณด๋‚ด๋Š” ๋ฐ์ดํ„ฐ์˜ ์ „์†ก์†๋„๋ฅผ ๊ฐ•์ œ๋กœ ์ค„์ธ๋‹ค.
      • ํ•ด๊ฒฐ๋ฐฉ๋ฒ•
        • AIMD : ์ฒ˜์Œ์— ํŒจํ‚ท์„ ํ•˜๋‚˜์”ฉ ๋ณด๋‚ด๊ณ  ์ด๊ฒƒ์ด ๋ฌธ์ œ์—†์ด ๋„์ฐฉํ•˜๋ฉด window ํฌ๊ธฐ๋ฅผ 1์”ฉ ์ฆ๊ฐ€์‹œ์ผœ๊ฐ€๋ฉฐ ์ „์†กํ•˜๋Š” ๋ฐฉ๋ฒ•(์‹คํŒจํ•˜๋ฉด ํŒจํ‚ท์˜ ๋ณด๋‚ด๋Š” ์†๋„๋ฅผ ์ ˆ๋ฐ˜์œผ๋กœ ์ค„์ธ๋‹ค.)
        • Slow Start : AIMD ๋ฐฉ์‹์˜ ์ฒ˜์Œ ์ „์†ก ์†๋„๋ฅผ ์˜ฌ๋ฆฌ๋Š”๋ฐ ์‹œ๊ฐ„์ด ์˜ค๋ž˜ ๊ฑธ๋ฆฌ๋Š” ๋‹จ์ ์„ ๋ณด์™„ํ•˜์—ฌ ์ง€์ˆ˜ ํ•จ์ˆ˜ ๊ผด๋กœ ์ฆ๊ฐ€ํ•œ๋‹ค.
        • Fast Retransmit, Fast Recovery
  • ๋†’์€ ์‹ ๋ขฐ์„ฑ์„ ๋ณด์žฅํ•œ๋‹ค.
  • UDP๋ณด๋‹ค ์†๋„๊ฐ€ ๋Š๋ฆฌ๋‹ค.
  • ์ „์ด์ค‘(Full-Duplex), ์ ๋Œ€์ (Point to Point) ๋ฐฉ์‹์ด๋‹ค.
    - ์ „์ด์ค‘ : ์ „์†ก์ด ์–‘๋ฐฉํ–ฅ์œผ๋กœ ๋™์‹œ์— ์ผ์–ด๋‚  ์ˆ˜ ์žˆ๋‹ค.
    - ์ ๋Œ€์  : ๊ฐ ์—ฐ๊ฒฐ์ด ์ •ํ™•ํžˆ 2๊ฐœ์˜ ์ข…๋‹จ์ ์„ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค.

    ์—ฐ์†์„ฑ๋ณด๋‹ค ์‹ ๋ขฐ์„ฑ์ด ์ค‘์š”ํ•œ ์„œ๋น„์Šค์— ์‚ฌ์šฉํ•˜๋Š” ํ”„๋กœํ† ์ฝœ
    ex) ํŒŒ์ผ ์ „์†ก

๐Ÿ“š UDP

  • ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ์ดํ„ฐ๊ทธ๋žจ(๋…๋ฆฝ์ ์ธ ๊ด€๊ณ„๋ฅผ ์ง€๋‹ˆ๋Š” ํŒจํ‚ท)๋‹จ์œ„๋กœ ์ฒ˜๋ฆฌํ•˜๋Š” ํ”„๋กœํ† ์ฝœ์ด๋‹ค.
  • ์ „์†ก ๊ณ„์ธต์ด๋‹ค.

๐Ÿ“ UDP์˜ ํŠน์ง•

  • ๋น„์—ฐ๊ฒฐํ˜• ์„œ๋น„์Šค๋กœ ๋ฐ์ดํ„ฐ๊ทธ๋žจ ๋ฐฉ์‹์„ ์ œ๊ณตํ•œ๋‹ค.
    • ๋…ผ๋ฆฌ์ ์ธ ๊ฒฝ๋กœ๊ฐ€ ์—†๊ธฐ ๋•Œ๋ฌธ์— ๊ฐ๊ฐ์˜ ํŒจํ‚ท์€ ๋‹ค๋ฅธ ๊ฒฝ๋กœ๋กœ ์ „์†ก๋˜๊ณ  ๋…๋ฆฝ์ ์ธ ๊ด€๊ณ„๋ฅผ ์ง€๋‹ˆ๊ฒŒ ๋œ๋‹ค.
  • ์ •๋ณด๋ฅผ ์ฃผ๊ณ  ๋ฐ›์„ ๋•Œ ์‹ ํ˜ธ ์ ˆ์ฐจ๋ฅผ ๊ฑฐ์น˜์ง€ ์•Š๋Š”๋‹ค.
  • UDPํ—ค๋”์˜ checksum ํ•„๋“œ๋ฅผ ํ†ตํ•ด ์ตœ์†Œํ•œ์˜ ์˜ค๋ฅ˜๋งŒ ๊ฒ€์ถœํ•œ๋‹ค.
  • ์‹ ๋ขฐ์„ฑ์ด ๋‚ฎ๋‹ค.
  • TCP๋ณด๋‹ค ์†๋„๊ฐ€ ๋น ๋ฅด๋‹ค.

    ์‹ ๋ขฐ์„ฑ๋ณด๋‹ค๋Š” ์—ฐ์†์„ฑ์ด ์ค‘์š”ํ•œ ์„œ๋น„์Šค์— ์‚ฌ์šฉํ•˜๋Š” ํ”„๋กœํ† ์ฝœ
    ex) ์‹ค์‹œ๊ฐ„ ์„œ๋น„์Šค

๐Ÿ“ DNS(Domain Name Service)์—์„œ UDP๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์ด์œ 

  • DNS๋ž€?
    • TCP/IP ๋„คํŠธ์›Œํฌ ์ƒ์—์„œ ์‚ฌ๋žŒ์ด ๊ธฐ์–ตํ•˜๊ธฐ ์‰ฝ๊ฒŒ ๋ฌธ์ž๋กœ ๋งŒ๋“ค์–ด์ง„ ๋„๋ฉ”์ธ์„ ์ปดํ“จํ„ฐ๊ฐ€ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋Š” ์ˆซ์ž๋กœ ๋œ ์ธํ„ฐ๋„ท ์ฃผ์†Œ(IP)๋กœ ๋ฐ”๊พธ๋Š” ์‹œ์Šคํ…œ
  • DNS๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ๊ตํ™˜ํ•˜๋Š” ๊ฒฝ์šฐ์ธ๋ฐ TCP๋ฅผ ์‚ฌ์šฉํ•˜๊ฒŒ ๋˜๋ฉด ๋ฐ์ดํ„ฐ๋ฅผ ์†ก์‹ ํ•  ๋•Œ๊นŒ์ง€ ์„ธ์…˜ ํ™•๋ฆฝ์„ ์œ„ํ•œ ์ฒ˜๋ฆฌ๋ฅผ ํ•˜๊ณ , ์†ก์‹ ํ•œ ๋ฐ์ดํ„ฐ๊ฐ€ ์ˆ˜์‹ ๋˜์—ˆ๋Š”์ง€ ์ ๊ฒ€ํ•˜๋Š” ๊ณผ์ •์ด ํ•„์š”ํ•˜๋ฏ€๋กœ, Protocol overhead๊ฐ€ UDP์— ๋น„ํ•ด์„œ ํฌ๋‹ค.
  • DNS๋Š” ์‘์šฉ ๊ณ„์ธต ํ”„๋กœํ† ์ฝœ์ด๋‹ค.
  • ๋ชจ๋“  ์‘์šฉ ๊ณ„์ธต ํ”„๋กœํ† ์ฝœ์€ TCP, UDP ์ค‘ ํ•˜๋‚˜์˜ ์ „์†ก ๊ณ„์ธต ํ”„๋กœํ† ์ฝœ์„ ์‚ฌ์šฉํ•ด์•ผํ•œ๋‹ค.
  • ์ด์œ 
    • DNS request๋Š” UDP segment์— ๋“ค์–ด๊ฐˆ ์ •๋„๋กœ ์ž‘๋‹ค.
    • 3 way handshaking์œผ๋กœ ์—ฐ๊ฒฐ์„ ์œ ์ง€ํ•  ํ•„์š”๊ฐ€ ์—†๋‹ค.
    • UDP๋Š” not reliable์ด์ง€๋งŒ reliability๋Š” Timeout ์ถ”๊ฐ€๋‚˜, resend ์ž‘์—…์„ ํ†ตํ•ด ์‘์šฉ ๊ณ„์ธต์— ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ๋‹ค.
  • DNS๋Š” UDP๋ฅผ 53๋ฒˆ port์—์„œ ์‚ฌ์šฉํ•œ๋‹ค.

โšก๏ธ ๋งŒ์•ฝ ๋ฐ์ดํ„ฐ๊ฐ€ 512 ๋ฐ”์ดํŠธ๋ฅผ ๋„˜๊ฑฐ๋‚˜ ์‘๋‹ต์„ ๋ชป๋ฐ›๋Š” ๊ฒฝ์šฐ TCP๋กœ ํ•œ๋‹ค.

๐Ÿ“ข TCP์™€ UDP ๋น„๊ต

TCP์™€ UDP์˜ ์ฐจ์ด๋ฅผ ์ž์„ธํžˆ ์•Œ์•„๋ณด์ž

โ—๏ธ TCP์™€ UDP๋Š” ์™œ ๋‚˜์˜ค๊ฒŒ ๋˜์—ˆ๋Š”๊ฐ€?

  1. IP์˜ ์—ญํ• ์€ Host to Host๋งŒ์„ ์ง€์›ํ•œ๋‹ค. ์žฅ์น˜์—์„œ ์žฅ์น˜๋กœ ์ด๋™์€ IP๋กœ ํ•ด๊ฒฐ๋˜์ง€๋งŒ, ํ•˜๋‚˜์˜ ์žฅ๋น„์•ˆ์—์„œ ์ˆ˜๋งŽ์€ ํ”„๋กœ๊ทธ๋žจ๋“ค์˜ ํ†ต์‹ ์„ ํ•  ๊ฒฝ์šฐ์—๋Š” IP๋งŒ์œผ๋กœ๋Š” ํ•œ๊ณ„๊ฐ€ ์žˆ๋‹ค.
  2. IP์—์„œ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค๋ฉด ICMP์—์„œ ์•Œ๋ ค์ฃผ๊ธฐ๋งŒ ํ•  ๋ฟ ๋Œ€์ฒ˜ํ•˜์ง€ ๋ชปํ•˜๊ธฐ ๋•Œ๋ฌธ์— IP๋ณด๋‹ค ์œ„์—์„œ ์ฒ˜๋ฆฌ๋ฅผ ํ•ด์•ผํ•œ๋‹ค.
  • ICMP : ์ธํ„ฐ๋„ท ์ œ์–ด ๋ฉ”์‹œ์ง€ ํ”„๋กœํ† ์ฝœ๋กœ ์˜ค๋ฅ˜ ๋ฉ”์‹œ์ง€๋ฅผ ์ „์†ก๋ฐ›๋Š”๋ฐ ์ฃผ๋กœ ์“ฐ์ธ๋‹ค.

โญ๏ธ ๋”ฐ๋ผ์„œ 1๋ฒˆ์„ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•˜์—ฌ ํฌํŠธ ๋ฒˆํ˜ธ๊ฐ€ ๋‚˜์˜ค๊ฒŒ ๋˜์—ˆ๊ณ , 2๋ฒˆ์„ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•˜์—ฌ ์ƒ์œ„ ํ”„๋กœํ† ์ฝœ์ธ TCP์™€ UDP๊ฐ€ ๋‚˜์˜ค๊ฒŒ ๋˜์—ˆ๋‹ค.

โ—๏ธ TCP์™€ UDP๊ฐ€ ์–ด๋–ป๊ฒŒ ์˜ค๋ฅ˜๋ฅผ ํ•ด๊ฒฐํ•˜๋Š”๊ฐ€?

  • TCP
    - ๋ฐ์ดํ„ฐ์˜ ๋ถ„์‹ค, ์ค‘๋ณต, ์ˆœ์„œ๊ฐ€ ๋’ค๋ฐ”๋€œ ๋“ฑ์„ ์ž๋™์œผ๋กœ ๋ณด์ •ํ•ด์ค˜์„œ ์†ก์ˆ˜์‹  ๋ฐ์ดํ„ฐ์˜ ์ •ํ™•ํ•œ ์ „๋‹ฌ์„ ํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•ด์ค€๋‹ค.
  • UDP
    - IP๊ฐ€ ์ œ๊ณตํ•˜๋Š” ์ •๋„์˜ ์ˆ˜์ค€๋งŒ์„ ์ œ๊ณตํ•˜๋Š” ๊ฐ„๋‹จํ•œ IP์ƒ์œ„ ๊ณ„์ธต์˜ ํ”„๋กœํ† ์ฝœ๋กœ TCP์™€๋Š” ๋‹ค๋ฅด๊ฒŒ ์—๋Ÿฌ๊ฐ€ ๋‚  ์ˆ˜๋„ ์žˆ๊ณ , ์žฌ์ „์†ก์ด๋‚˜ ์ˆœ์„œ๊ฐ€ ๋’ค๋ฐ”๋€” ์ˆ˜๋„ ์žˆ์–ด์„œ ์ด ๊ฒฝ์šฐ, ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ ์ฒ˜๋ฆฌํ•˜๋Š” ๋ฒˆ๊ฑฐ๋กœ์›€์ด ์กด์žฌํ•œ๋‹ค.

TCP์˜ 3 way handshake์™€ 4 way handshake

๐Ÿ“Œ TCP๋Š” ์žฅ์น˜๋“ค ์‚ฌ์ด์— ๋…ผ๋ฆฌ์ ์ธ ์ ‘์†์„ ์„ฑ๋ฆฝํ•˜๊ธฐ ์œ„ํ•˜์—ฌ ์—ฐ๊ฒฐ์„ ์„ค์ •ํ•˜์—ฌ ์‹ ๋ขฐ์„ฑ์„ ๋ณด์žฅํ•˜๋Š” ์—ฐ๊ฒฐํ˜• ์„œ๋น„์Šค์ด๋‹ค.

๐Ÿ“ 3-way handshake๋ž€?

  • TCP ํ†ต์‹ ์„ ์ด์šฉํ•˜์—ฌ ๋ฐ์ดํ„ฐ๋ฅผ ์ „์†กํ•˜๊ธฐ ์œ„ํ•ด ๋„คํŠธ์›Œํฌ ์—ฐ๊ฒฐ์„ ์„ค์ •ํ•˜๋Š” ๊ณผ์ •์ด๋‹ค.
  • ์–‘์ชฝ ๋ชจ๋‘ ๋ฐ์ดํ„ฐ๋ฅผ ์ „์†กํ•  ์ค€๋น„๊ฐ€ ๋˜์—ˆ๋‹ค๋Š” ๊ฒƒ์„ ๋ณด์žฅํ•˜๊ณ , ์‹ค์ œ๋กœ ๋ฐ์ดํ„ฐ ์ „๋‹ฌ์ด ์‹œ์ž‘ํ•˜๊ธฐ ์ „์— ํ•œ ์ชฝ์ด ๋‹ค๋ฅธ ์ชฝ์ด ์ค€๋น„๋˜์—ˆ๋‹ค๋Š” ๊ฒƒ์„ ์•Œ ์ˆ˜ ์žˆ๋„๋ก ํ•œ๋‹ค.
  • ์ฆ‰, TCP/IP ํ”„๋กœํ† ์ฝœ์„ ์ด์šฉํ•ด์„œ ํ†ต์‹ ์„ ํ•˜๋Š” ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์ด ๋ฐ์ดํ„ฐ๋ฅผ ์ „์†กํ•˜๊ธฐ ์ „์— ๋จผ์ € ์ •ํ™•ํ•œ ์ „์†ก์„ ๋ณด์žฅํ•˜๊ธฐ ์œ„ํ•ด ์ƒ๋Œ€๋ฐฉ ์ปดํ“จํ„ฐ์™€ ์‚ฌ์ „์— ์„ธ์…˜์„ ์ˆ˜๋ฆฝํ•˜๋Š” ๊ณผ์ •์„ ์˜๋ฏธํ•œ๋‹ค.
    • A ํ”„๋กœ์„ธ์Šค(Client)๊ฐ€ B ํ”„๋กœ์„ธ์Šค(Server)์— ์—ฐ๊ฒฐ์„ ์š”์ฒญ
      1. A -> B : SYN
        • ํด๋ผ์ด์–ธํŠธ ํ”„๋กœ์„ธ์Šค A๊ฐ€ ์„œ๋ฒ„ ํ”„๋กœ์„ธ์Šค B์—๊ฒŒ ์—ฐ๊ฒฐ ์š”์ฒญ ๋ฉ”์‹œ์ง€ ์ „์†ก(SYN)
        • ์†ก์‹ ์ž๊ฐ€ ์ตœ์ดˆ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์ „์†กํ•  ๋•Œ Sequence Number๋ฅผ ์ž„์˜์˜ ๋žœ๋ค ์ˆซ์ž๋กœ ์ง€์ •ํ•˜๊ณ , SYN ํ”Œ๋ž˜๊ทธ ๋น„ํŠธ๋ฅผ 1๋กœ ์„ค์ •ํ•œ ์„ธ๊ทธ๋จผํŠธ๋ฅผ ์ „์†กํ•œ๋‹ค.
        • PORT ์ƒํƒœ - B : LISTEN, A : CLOSED
      2. B -> A : SYN + ACK
        • ์„œ๋ฒ„ ํ”„๋กœ์„ธ์Šค B๊ฐ€ SYN์„ ๋ฐ›๊ณ , ํด๋ผ์ด์–ธํŠธ ํ”„๋กœ์„ธ์Šค A๋กœ ๋ฐ›์•˜๋‹ค๋Š” ์‹ ํ˜ธ์ธ ACK์™€ ํฌํŠธ๋ฅผ ์—ด์–ด๋‹ฌ๋ผ๋Š” SYN ํŒจํ‚ท์„ ์ „์†ก
        • ์ˆ˜์‹ ์ž๋Š” Acknowledgement Number ํ•„๋“œ๋ฅผ (Sequence Number +1)๋กœ ์ง€์ •ํ•˜๊ณ , SYN๊ณผ ACK ํ”Œ๋ž˜๊ทธ ๋น„ํŠธ๋ฅผ 1๋กœ ์„ค์ •ํ•œ ์„ธ๊ทธ๋จผํŠธ๋ฅผ ์ „์†กํ•œ๋‹ค.
        • PORT ์ƒํƒœ - B : SYN_RCV, A : CLOSED
      3. A -> B : ACK
        • PORT ์ƒํƒœ - B ; SYN_RCV, A : ESTABLISHED
        • ํด๋ผ์ด์–ธํŠธ ํ”„๋กœ์„ธ์Šค A๋Š” ์„œ๋ฒ„ ํ”„๋กœ์„ธ์Šค B์˜ ์‘๋‹ต์ธ ACK์™€ SYN ํŒจํ‚ท์„ ๋ฐ›๊ณ , ์ˆ˜๋ฝ ํ™•์ธ ์‹ ํ˜ธ์ธ ACK๋ฅผ ์„œ๋ฒ„ ํ”„๋กœ์„ธ์Šค B๋กœ ๋ณด๋‚ธ๋‹ค.
        • ์ด๋•Œ, ์ „์†กํ•  ๋ฐ์ดํ„ฐ๊ฐ€ ์žˆ์œผ๋ฉด ์ด ๋‹จ๊ณ„์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์ „์†กํ•  ์ˆ˜ ์žˆ๋‹ค.
        • PORT ์ƒํƒœ - B : ESTABLISHED, A : ESTABLISHED

โญ๏ธ ์ด๋ ‡๊ฒŒ ์ด 3๋ฒˆ์˜ ํ†ต์‹ ์ด ์™„๋ฃŒ๋˜๋ฉด ์—ฐ๊ฒฐ์ด ์„ฑ๋ฆฝ๋œ๋‹ค.

๐Ÿ“ 4-way handshake๋ž€?

  • TCP์˜ ์—ฐ๊ฒฐ์„ ํ•ด์ œํ•˜๋Š” ๊ณผ์ •
    • A ํ”„๋กœ์„ธ์Šค(Client)๊ฐ€ B ํ”„๋กœ์„ธ์Šค(Server)์— ์—ฐ๊ฒฐ ํ•ด์ œ๋ฅผ ์š”์ฒญ
      1. A -> B : FIN
        • ํด๋ผ์ด์–ธํŠธ ํ”„๋กœ์„ธ์Šค A๊ฐ€ ์—ฐ๊ฒฐ์„ ์ข…๋ฃŒํ•˜๊ฒ ๋‹ค๋Š” FIN ํ”Œ๋ž˜๊ทธ๋ฅผ ์ „์†ก
        • ์„œ๋ฒ„ ํ”„๋กœ์„ธ์Šค B๊ฐ€ FIN ํ”Œ๋ž˜๊ทธ๋กœ ์‘๋‹ตํ•˜๊ธฐ ์ „๊นŒ์ง€ ์—ฐ๊ฒฐ์„ ๊ณ„์† ์œ ์ง€
      2. B -> A : ACK
        • ์„œ๋ฒ„ ํ”„๋กœ์„ธ์Šค B๋Š” FIN์„ ๋ฐ›๊ณ , ํ™•์ธํ–ˆ๋‹ค๋Š” ACK๋ฅผ ํด๋ผ์ด์–ธํŠธ ํ”„๋กœ์„ธ์Šค A๋กœ ๋ณด๋‚ด๊ณ  ์ž์‹ ์˜ ํ†ต์‹ ์ด ๋๋‚  ๋•Œ๊นŒ์ง€ ๊ธฐ๋‹ค๋ฆฐ๋‹ค. (์ด ์ƒํƒœ๊ฐ€ TIME_WAIT ์ƒํƒœ)
        • ์ˆ˜์‹ ์ž๋Š” Acknowledgement Number ํ•„๋“œ๋ฅผ (Sequence Number + 1)๋กœ ์ง€์ •ํ•˜๊ณ , ACK ํ”Œ๋ž˜๊ทธ ๋น„ํŠธ๋ฅผ 1๋กœ ์„ค์ •ํ•œ ์„ธ๊ทธ๋จผํŠธ๋ฅผ ์ „์†กํ•œ๋‹ค.
        • ๊ทธ๋ฆฌ๊ณ  ์ž์‹ ์ด ์ „์†กํ•  ๋ฐ์ดํ„ฐ๊ฐ€ ๋‚จ์•„์žˆ๋‹ค๋ฉด ์ด์–ด์„œ ๊ณ„์† ์ „์†กํ•œ๋‹ค.
      3. B -> A : FIN
        • ์„œ๋ฒ„ ํ”„๋กœ์„ธ์Šค B๊ฐ€ ํ†ต์‹ ์ด ๋๋‚ฌ์œผ๋ฉด(๋ฐ์ดํ„ฐ๋ฅผ ๋ชจ๋‘ ๋ณด๋ƒˆ๋‹ค๋ฉด) ์—ฐ๊ฒฐ์ด ์ข…๋ฃŒ๋˜์—ˆ๋‹ค๋Š” ์˜๋ฏธ๋กœ ํด๋ผ์ด์–ธํŠธ ํ”„๋กœ์„ธ์Šค A์—๊ฒŒ FIN ํ”Œ๋ž˜๊ทธ๋ฅผ ์ „์†ก
      4. A -> B : ACK
        • ํด๋ผ์ด์–ธํŠธ ํ”„๋กœ์„ธ์Šค A๋Š” FIN์„ ๋ฐ›๊ณ , ํ™•์ธํ–ˆ๋‹ค๋Š” ACK๋ฅผ ์„œ๋ฒ„ ํ”„๋กœ์„ธ์Šค B์— ์ „์†ก
        • ์•„์ง ์„œ๋ฒ„๋กœ๋ถ€ํ„ฐ ๋ฐ›์ง€ ๋ชปํ•œ ๋ฐ์ดํ„ฐ๊ฐ€ ์žˆ์„ ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ TIME_WAIT์„ ํ†ตํ•ด ๊ธฐ๋‹ค๋ฆฐ๋‹ค.
          • ์„œ๋ฒ„ B๋Š” ACK๋ฅผ ๋ฐ›์€ ์ดํ›„ ์†Œ์ผ“์„ ๋‹ซ๋Š”๋‹ค.(CLOSED)
          • TIME_WAIT ์‹œ๊ฐ„์ด ๋๋‚˜๋ฉด ํด๋ผ์ด์–ธํŠธ A๋„ ๋‹ซ๋Š”๋‹ค.(CLOSED)

โญ๏ธ ์ด๋ ‡๊ฒŒ ์ด 4๋ฒˆ์˜ ํ†ต์‹ ์ด ์™„๋ฃŒ๋˜๋ฉด ์—ฐ๊ฒฐ์ด ํ•ด์ œ๋œ๋‹ค.


โšก ์ฐธ๊ณ  - ํฌํŠธ(PORT) ์ƒํƒœ ์ •๋ณด

  • CLOSED: ํฌํŠธ๊ฐ€ ๋‹ซํžŒ ์ƒํƒœ
  • LISTEN: ํฌํŠธ๊ฐ€ ์—ด๋ฆฐ ์ƒํƒœ๋กœ ์—ฐ๊ฒฐ ์š”์ฒญ ๋Œ€๊ธฐ ์ค‘
  • SYN_RCV: SYNC ์š”์ฒญ์„ ๋ฐ›๊ณ  ์ƒ๋Œ€๋ฐฉ์˜ ์‘๋‹ต์„ ๊ธฐ๋‹ค๋ฆฌ๋Š” ์ค‘
  • ESTABLISHED: ํฌํŠธ ์—ฐ๊ฒฐ ์ƒํƒœ

โšก ์ฐธ๊ณ  - ํ”Œ๋ž˜๊ทธ ์ •๋ณด

  • TCP Header์—๋Š” CONTROL BIT(ํ”Œ๋ž˜๊ทธ ๋น„ํŠธ, 6bit)๊ฐ€ ์กด์žฌํ•˜๋ฉฐ, ๊ฐ๊ฐ์˜ bit๋Š” "URG-ACK-PSH-RST-SYN-FIN"์˜ ์˜๋ฏธ๋ฅผ ๊ฐ€์ง„๋‹ค.
    • ์ฆ‰, ํ•ด๋‹น ์œ„์น˜์˜ bit๊ฐ€ 1์ด๋ฉด ํ•ด๋‹น ํŒจํ‚ท์ด ์–ด๋– ํ•œ ๋‚ด์šฉ์„ ๋‹ด๊ณ  ์žˆ๋Š” ํŒจํ‚ท์ธ์ง€๋ฅผ ๋‚˜ํƒ€๋‚ธ๋‹ค.
  • SYN(Synchronize Sequence Number) / 000010
    • ์—ฐ๊ฒฐ ์„ค์ •. Sequence Number๋ฅผ ๋žœ๋ค์œผ๋กœ ์„ค์ •ํ•˜์—ฌ ์„ธ์…˜์„ ์—ฐ๊ฒฐํ•˜๋Š” ๋ฐ ์‚ฌ์šฉํ•˜๋ฉฐ, ์ดˆ๊ธฐ์— Sequence Number๋ฅผ ์ „์†กํ•œ๋‹ค.
  • ACK(Acknowledgement) / 010000
    • ์‘๋‹ต ํ™•์ธ. ํŒจํ‚ท์„ ๋ฐ›์•˜๋‹ค๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•œ๋‹ค.
    • Acknowledgement Number ํ•„๋“œ๊ฐ€ ์œ ํšจํ•œ์ง€๋ฅผ ๋‚˜ํƒ€๋‚ธ๋‹ค.
    • ์–‘๋‹จ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์‰ฌ์ง€ ์•Š๊ณ  ๋ฐ์ดํ„ฐ๋ฅผ ์ „์†กํ•œ๋‹ค๊ณ  ๊ฐ€์ •ํ•˜๋ฉด ์ตœ์ดˆ ์—ฐ๊ฒฐ ์„ค์ • ๊ณผ์ •์—์„œ ์ „์†ก๋˜๋Š” ์ฒซ ๋ฒˆ์งธ ์„ธ๊ทธ๋จผํŠธ๋ฅผ ์ œ์™ธํ•œ ๋ชจ๋“  ์„ธ๊ทธ๋จผํŠธ์˜ ACK ๋น„ํŠธ๋Š” 1๋กœ ์ง€์ •๋œ๋‹ค๊ณ  ์ƒ๊ฐํ•  ์ˆ˜ ์žˆ๋‹ค.
  • FIN(Finish) / 000001
    • ์—ฐ๊ฒฐ ํ•ด์ œ. ์„ธ์…˜ ์—ฐ๊ฒฐ์„ ์ข…๋ฃŒ์‹œํ‚ฌ ๋•Œ ์‚ฌ์šฉ๋˜๋ฉฐ, ๋” ์ด์ƒ ์ „์†กํ•  ๋ฐ์ดํ„ฐ๊ฐ€ ์—†์Œ์„ ์˜๋ฏธํ•œ๋‹ค.

๐Ÿ”ฅ TCP ๊ด€๋ จ ์งˆ๋ฌธ 1

  • Q. TCP์˜ ์—ฐ๊ฒฐ ์„ค์ • ๊ณผ์ •(3๋‹จ๊ณ„)๊ณผ ์—ฐ๊ฒฐ ์ข…๋ฃŒ ๊ณผ์ •(4๋‹จ๊ณ„)์ด ๋‹จ๊ณ„๊ฐ€ ์ฐจ์ด๋‚˜๋Š” ์ด์œ ?
    • A. Client๊ฐ€ ๋ฐ์ดํ„ฐ ์ „์†ก์„ ๋งˆ์ณค๋‹ค๊ณ  ํ•˜๋”๋ผ๋„ Server๋Š” ์•„์ง ๋ณด๋‚ผ ๋ฐ์ดํ„ฐ๊ฐ€ ๋‚จ์•„์žˆ์„ ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์ผ๋‹จ FIN์— ๋Œ€ํ•œ ACK๋งŒ ๋ณด๋‚ด๊ณ , ๋ฐ์ดํ„ฐ๋ฅผ ๋ชจ๋‘ ์ „์†กํ•œ ํ›„์— ์ž์‹ ๋„ FIN ๋ฉ”์‹œ์ง€๋ฅผ ๋ณด๋‚ด๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.
    • ๊ด€๋ จ Reference


๐Ÿ“– ๋Œ€์นญํ‚ค์™€ ๊ณต๊ฐœํ‚ค

๐Ÿ“š ๋Œ€์นญํ‚ค(Symmetric Key)

์•”ํ˜ธํ™”์™€ ๋ณตํ˜ธํ™”์— ๊ฐ™์€ ์•”ํ˜ธํ‚ค(๋Œ€์นญํ‚ค)๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜

  • ๋™์ผํ•œ ํ‚ค๋ฅผ ์ฃผ๊ณ ๋ฐ›๊ธฐ ๋•Œ๋ฌธ์—, ๋งค์šฐ ๋น ๋ฅด๋‹ค๋Š” ์žฅ์ ์ด ์žˆ๋‹ค.
  • ๊ทธ๋Ÿฌ๋‚˜ ๋Œ€์นญํ‚ค ์ „๋‹ฌ๊ณผ์ •์—์„œ ํ•ดํ‚น ์œ„ํ—˜์— ๋…ธ์ถœ๋œ๋‹ค.

๐Ÿ“š ๊ณต๊ฐœํ‚ค(Public Key)

์•”ํ˜ธํ™”์™€ ๋ณตํ˜ธํ™”์— ์‚ฌ์šฉํ•˜๋Š” ์•”ํ˜ธํ‚ค๋ฅผ ๋ถ„๋ฆฌํ•œ ์•Œ๊ณ ๋ฆฌ์ฆ˜

  • ์ž์‹ ์ด ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ๊ณ ์œ ํ•œ ์•”ํ˜ธํ‚ค(๋น„๋ฐ€ํ‚ค)๋กœ๋งŒ ๋ณตํ˜ธํ™”ํ•  ์ˆ˜ ์žˆ๋Š” ์•”ํ˜ธํ‚ค(๊ณต๊ฐœํ‚ค)๋ฅผ ๋Œ€์ค‘์— ๊ณต๊ฐœํ•œ๋‹ค.

๐Ÿ“ ๊ณต๊ฐœํ‚ค ์•”ํ˜ธํ™” ๋ฐฉ์‹ ๊ณผ์ •

  1. A๊ฐ€ ์›น ์ƒ์— ๊ณต๊ฐœ๋œ 'B์˜ ๊ณต๊ฐœํ‚ค'๋ฅผ ์ด์šฉํ•ด ํ‰๋ฌธ์„ ์•”ํ˜ธํ™”ํ•˜์—ฌ B์—๊ฒŒ ๋ณด๋ƒ„
  2. B๋Š” ์ž์‹ ์˜ ๋น„๋ฐ€ํ‚ค๋กœ ๋ณตํ˜ธํ™”ํ•œ ํ‰๋ฌธ์„ ํ™•์ธ, A์˜ ๊ณต๊ฐœํ‚ค๋กœ ์‘๋‹ต์„ ์•”ํ˜ธํ™”ํ•˜์—ฌ A์—๊ฒŒ ๋ณด๋ƒ„
  3. A๋Š” ์ž์‹ ์˜ ๋น„๋ฐ€ํ‚ค๋กœ ์•”ํ˜ธํ™”๋œ ์‘๋‹ต๋ฌธ์„ ๋ณตํ˜ธํ™”ํ•จ


๐Ÿ“– HTTP์™€ HTTPS

๐Ÿ“š HTTP ํ”„๋กœํ† ์ฝœ

  • HyperText Transfer Protocol
  • ์›น ์ƒ์—์„œ ํด๋ผ์ด์–ธํŠธ์™€ ์„œ๋ฒ„ ๊ฐ„์— ์š”์ฒญ/์‘๋‹ต์œผ๋กœ ์ •๋ณด๋ฅผ ์ฃผ๊ณ  ๋ฐ›์„ ์ˆ˜ ์žˆ๋Š” ํ”„๋กœํ† ์ฝœ

๐Ÿ“ HTTP์˜ ํŠน์ง•

  • ์ฃผ๋กœ HTML ๋ฌธ์„œ๋ฅผ ์ฃผ๊ณ ๋ฐ›๋Š” ๋ฐ์— ์“ฐ์ธ๋‹ค.
  • TCP์™€ UDP๋ฅผ ์‚ฌ์šฉํ•˜๋ฉฐ, 80๋ฒˆ ํฌํŠธ๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.
  • ๋น„์—ฐ๊ฒฐ(Connectionless) : ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์š”์ฒญ์„ ์„œ๋ฒ„์— ๋ณด๋‚ด๊ณ  ์„œ๋ฒ„๊ฐ€ ์ ์ ˆํ•œ ์‘๋‹ต์„ ํด๋ผ์ด์–ธํŠธ์— ๋ณด๋‚ด๋ฉด ๋ฐ”๋กœ ์—ฐ๊ฒฐ์ด ๋Š๊ธด๋‹ค.
  • ๋ฌด์ƒํƒœ(Stateless) : ์—ฐ๊ฒฐ์„ ๋Š๋Š” ์ˆœ๊ฐ„ ํด๋ผ์ด์–ธํŠธ์™€ ์„œ๋ฒ„์˜ ํ†ต์‹ ์€ ๋๋‚˜๋ฉฐ ์ƒํƒœ ์ •๋ณด๋ฅผ ์œ ์ง€ํ•˜์ง€ ์•Š๋Š”๋‹ค.

๐Ÿ“š HTTPS ํ”„๋กœํ† ์ฝœ

  • HyperText Transfer Protocol over Secure Socket Layer
    • ๋˜๋Š” HTTP over TLS, HTTP over SSL, HTTP Secure
  • ์ธํ„ฐ๋„ท ์ƒ์—์„œ ์ •๋ณด๋ฅผ ์•”ํ˜ธํ™”ํ•˜๋Š” SSL ํ”„๋กœํ† ์ฝœ์„ ์‚ฌ์šฉ(๊ณต๊ฐœํ‚ค ์•”ํ˜ธํ™” ๋ฐฉ์‹)
  • ์›น ํ†ต์‹  ํ”„๋กœํ† ์ฝœ์ธ HTTP์˜ ๋ณด์•ˆ์ด ๊ฐ•ํ™”๋œ ๋ฒ„์ „์˜ ํ”„๋กœํ† ์ฝœ(HTTP๋Š” ํ…์ŠคํŠธ ๊ตํ™˜์ด๋ฏ€๋กœ, ๋ˆ„๊ตฐ๊ฐ€ ๋„คํŠธ์›Œํฌ์—์„œ ์‹ ํ˜ธ๋ฅผ ๊ฐ€๋กœ์ฑ„๋ฉด ๋‚ด์šฉ์ด ๋…ธ์ถœ๋œ๋‹ค.)

๐Ÿ“ HTTPS์˜ ํŠน์ง•

  • HTTPS์˜ ๊ธฐ๋ณธ TCP/IP ํฌํŠธ๋กœ 443๋ฒˆ ํฌํŠธ๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.
  • HTTPS๋Š” ์†Œ์ผ“ ํ†ต์‹ ์—์„œ ์ผ๋ฐ˜ ํ…์ŠคํŠธ๋ฅผ ์ด์šฉํ•˜๋Š” ๋Œ€์‹ ์—, ์›น ์ƒ์—์„œ ์ •๋ณด๋ฅผ ์•”ํ˜ธํ™”ํ•˜๋Š” SSL์ด๋‚˜ TLS ํ”„๋กœํ† ์ฝœ์„ ํ†ตํ•ด ์„ธ์…˜ ๋ฐ์ดํ„ฐ๋ฅผ ์•”ํ˜ธํ™”ํ•œ๋‹ค.
    • ๋‘ ํ”„๋กœํ† ์ฝœ์€ ๊ธฐ๋ฐ€์„ฑ, ๋ฐ์ดํ„ฐ ๋ฌด๊ฒฐ์„ฑ์„ ์‚ฌ์šฉํ•œ ์ธ์ฆ์„ ์ œ๊ณต
  • ์ ์ ˆํ•œ ๋ณดํ˜ธ๋ฅผ ๋ณด์žฅํ•œ๋‹ค.(์ค‘๊ฐ„์—์„œ ์ •๋ณด๋ฅผ ๋ณผ ์ˆ˜ ์—†๋‹ค.)

๊ธˆ์œต์ •๋ณด๋‚˜ ๋ฉ”์ผ ๋“ฑ ์ค‘์š”ํ•œ ์ •๋ณด๋ฅผ ์ฃผ๊ณ  ๋ฐ›๋Š” ๊ฒƒ์€ HTTPS๋ฅผ, ์•„๋ฌด๋‚˜ ๋ด๋„ ์ƒ๊ด€ ์—†๋Š” ํŽ˜์ด์ง€๋Š” HTTP๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.

โšก HTTPS์˜ ์›๋ฆฌ

  • ๊ณต๊ฐœํ‚ค ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋ฐฉ์‹
  • ์•”ํ˜ธํ™”, ๋ณตํ˜ธํ™”์‹œํ‚ฌ ์ˆ˜ ์žˆ๋Š” ์„œ๋กœ ๋‹ค๋ฅธ ํ‚ค(๊ณต๊ฐœํ‚ค, ๊ฐœ์ธํ‚ค)๋ฅผ ์ด์šฉํ•œ ์•”ํ˜ธํ™” ๋ฐฉ๋ฒ•
    • ๊ณต๊ฐœํ‚ค: ๋ชจ๋‘์—๊ฒŒ ๊ณต๊ฐœ. ๊ณต์บํ‚ค ์ €์žฅ์†Œ์— ๋“ฑ๋ก
    • ๊ฐœ์ธํ‚ค(๋น„๊ณต๊ฐœํ‚ค): ๊ฐœ์ธ์—๊ฒŒ๋งŒ ๊ณต๊ฐœ. ํด๋ผ์ด์–ธํŠธ-์„œ๋ฒ„ ๊ตฌ์กฐ์—์„œ๋Š” ์„œ๋ฒ„๊ฐ€ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ๋น„๊ณต๊ฐœํ‚ค
  • ํด๋ผ์ด์–ธํŠธ -> ์„œ๋ฒ„
    • ์‚ฌ์šฉ์ž์˜ ๋ฐ์ดํ„ฐ๋ฅผ ๊ณต๊ฐœํ‚ค๋กœ ์•”ํ˜ธํ™” (๊ณต๊ฐœํ‚ค๋ฅผ ์–ป์€ ์ธ์ฆ๋œ ์‚ฌ์šฉ์ž)
    • ์„œ๋ฒ„๋กœ ์ „์†ก (๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€๋กœ์ฑ„๋„ ๊ฐœ์ธํ‚ค๊ฐ€ ์—†์œผ๋ฏ€๋กœ ๋ณตํ˜ธํ™”ํ•  ์ˆ˜ ์—†์Œ)
    • ์„œ๋ฒ„์˜ ๊ฐœ์ธํ‚ค๋ฅผ ํ†ตํ•ด ๋ณตํ˜ธํ™”ํ•˜์—ฌ ์š”์ฒญ ์ฒ˜๋ฆฌ

๐Ÿ“Œ HTTPS์˜ ์žฅ๋‹จ์ 

  • ์žฅ์ 
    • ๋„คํŠธ์›Œํฌ ์ƒ์—์„œ ์—ด๋žŒ, ์ˆ˜์ •์ด ๋ถˆ๊ฐ€๋Šฅํ•˜๋ฏ€๋กœ ์•ˆ์ „ํ•˜๋‹ค.
  • ๋‹จ์ 
    • ์•”ํ˜ธํ™”๋ฅผ ํ•˜๋Š” ๊ณผ์ •์ด ์›น ์„œ๋ฒ„์— ๋ถ€ํ•˜๋ฅผ ์ค€๋‹ค.
    • HTTPS๋Š” ์„ค์น˜ ๋ฐ ์ธ์ฆ์„œ๋ฅผ ์œ ์ง€ํ•˜๋Š”๋ฐ ์ถ”๊ฐ€ ๋น„์šฉ์ด ๋ฐœ์ƒํ•œ๋‹ค.
    • HTTP์— ๋น„ํ•ด ๋Š๋ฆฌ๋‹ค.


๐Ÿ“– GET ๋ฉ”์†Œ๋“œ์™€ POST ๋ฉ”์†Œ๋“œ

๐Ÿ“Œ HTTP ํ”„๋กœํ† ์ฝœ์„ ์ด์šฉํ•ด์„œ ์„œ๋ฒ„์— ๋ฐ์ดํ„ฐ(์š”์ฒญ ์ •๋ณด)๋ฅผ ์ „๋‹ฌํ•  ๋•Œ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ์‹

๐Ÿ“š GET ๋ฉ”์†Œ๋“œ

  • ์ •๋ณด๋ฅผ ์กฐํšŒํ•˜๊ธฐ ์œ„ํ•œ ๋ฉ”์†Œ๋“œ
  • ๊ฐ€์ ธ์˜ค๋Š” ๊ฒƒ(Select)

๐Ÿ“ ํŠน์ง•

  • URL์— ์š”์ฒญ ์ •๋ณด๋ฅผ ๋ถ™์—ฌ์„œ ์ „์†กํ•œ๋‹ค.
    • URL์˜ ๋์— '?'๊ฐ€ ๋ถ™๊ณ , ์š”์ฒญ ์ •๋ณด๊ฐ€ ํ•ด์‰ฌ ํ˜•ํƒœ์˜ ์Œ์„ ์ด๋ฃฌ๋‹ค.
    • ์š”์ฒญ ์ •๋ณด๊ฐ€ ์—ฌ๋Ÿฌ ๊ฐœ์ผ ๊ฒฝ์šฐ์—๋Š” '&'๋กœ ๊ตฌ๋ถ„ํ•œ๋‹ค.
      ex) www.urladdress.xyz?name1=value1&name2=value2
  • Body๋Š” ๋น„์–ด์žˆ๋Š” ์ƒํƒœ๋กœ ์ „์†กํ•˜๊ณ  ๊ธธ์ด ์ œํ•œ์ด ์žˆ์–ด์„œ ๋Œ€์šฉ๋Ÿ‰์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์ „์†กํ•˜๊ธฐ ์–ด๋ ต๋‹ค.
  • ์‚ฌ์šฉ์ž๊ฐ€ ์‰ฝ๊ฒŒ ๋ˆˆ์œผ๋กœ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.
    • POST ๋ฐฉ์‹๋ณด๋‹ค ๋น ๋ฅด๋‹ค.
    • ๊ทธ๋Ÿฌ๋‚˜, POST ๋ฐฉ์‹๋ณด๋‹ค ๋ณด์•ˆ์ƒ ์ทจ์•ฝํ•จ

๐Ÿ“š POST ๋ฉ”์†Œ๋“œ

  • ์„œ๋ฒ„์˜ ๊ฐ’์ด๋‚˜ ์ƒํƒœ๋ฅผ ๋ฐ”๊พธ๊ธฐ ์œ„ํ•œ ์šฉ๋„์˜ ๋ฉ”์†Œ๋“œ
  • ์ˆ˜ํ–‰ํ•˜๋Š” ๊ฒƒ(Insert, Update, Delete)

๐Ÿ“ ํŠน์ง•

  • Body ์•ˆ์— ์ˆจ๊ฒจ์„œ ์š”์ฒญ ์ •๋ณด๋ฅผ ์ „์†กํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋Œ€์šฉ๋Ÿ‰์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์ „์†กํ•˜๊ธฐ์— ์ ํ•ฉํ•˜๋‹ค.
  • ํด๋ผ์ด์–ธํŠธ ์ชฝ์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์ธ์ฝ”๋”ฉํ•˜์—ฌ ์„œ๋ฒ„๋กœ ์ „์†กํ•˜๊ณ , ์ด๋ฅผ ๋ฐ›์€ ์„œ๋ฒ„ ์ชฝ์ด ํ•ด๋‹น ๋ฐ์ดํ„ฐ๋ฅผ ๋””์ฝ”๋”ฉํ•œ๋‹ค.
  • GET ๋ฐฉ์‹๋ณด๋‹ค ๋ณด์•ˆ์ƒ ์•ˆ์ „ํ•˜๋‹ค.


๐Ÿ“– ์ฟ ํ‚ค์™€ ์„ธ์…˜

๐Ÿ“ข ์ฟ ํ‚ค์™€ ์„ธ์…˜์˜ ํ•„์š”์„ฑ

  • HTTP ํ”„๋กœํ† ์ฝœ์€ ๋น„์—ฐ๊ฒฐ ์ง€ํ–ฅ(Connectionless)๊ณผ ์ƒํƒœ์ •๋ณด๋ฅผ ์œ ์ง€ํ•˜์ง€ ์•Š๋Š”(Stateless) ํŠน์ง•๋•Œ๋ฌธ์— ๋ชจ๋“  ์š”์ฒญ ๊ฐ„ ์˜์กด๊ด€๊ณ„๊ฐ€ ์—†๋‹ค.
  • ์ฆ‰, ํ˜„์žฌ ์ ‘์†ํ•œ ์‚ฌ์šฉ์ž๊ฐ€ ์ด์ „์— ์ ‘์†ํ–ˆ๋˜ ์‚ฌ์šฉ์ž์™€ ๊ฐ™์€ ์‚ฌ์šฉ์ž์ธ์ง€ ์•Œ ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•์ด ์—†๋‹ค.
  • ๊ณ„์† ์—ฐ๊ฒฐ์„ ์œ ์ง€ํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ๋ฆฌ์†Œ์Šค ๋‚ญ๋น„๊ฐ€ ์ค„์–ด๋“œ๋Š” ๊ฒƒ์ด ํฐ ์žฅ์ ์ด์ง€๋งŒ, ํ†ต์‹ ํ•  ๋•Œ๋งˆ๋‹ค ์ƒˆ๋กœ ์—ฐ๊ฒฐํ•ด์•ผํ•˜๊ธฐ ๋•Œ๋ฌธ์— ํด๋ผ์ด์–ธํŠธ๋Š” ๋งค ์š”์ฒญ๋งˆ๋‹ค ์ธ์ฆํ•ด์•ผ ํ•œ๋‹ค๋Š” ๋‹จ์ ์ด ์žˆ๋‹ค.
  • ๊ทธ๋ž˜์„œ ์ƒํƒœ๋ฅผ ์œ ์ง€ํ•˜๊ธฐ ์œ„ํ•œ ๊ธฐ์ˆ ๋กœ ์ฟ ํ‚ค์™€ ์„ธ์…˜์ด ์žˆ๋‹ค.

๐Ÿ“š ์ฟ ํ‚ค(Cookie)๋ž€?

  • ํด๋ผ์ด์–ธํŠธ ๋กœ์ปฌ์— ์ €์žฅ๋˜๋Š” ํ‚ค์™€ ๊ฐ’์ด ๋“ค์–ด์žˆ๋Š” ํŒŒ์ผ์ด๋‹ค.
  • ํด๋ผ์ด์–ธํŠธ์˜ ์ƒํƒœ ์ •๋ณด(์ด๋ฆ„, ๊ฐ’, ๊ฒฝ๋กœ ๋“ฑ)๋ฅผ ๋ธŒ๋ผ์šฐ์ €์— ์ €์žฅํ•˜์—ฌ ์ฐธ์กฐํ•œ๋‹ค.
  • ๐ŸŽ ๊ตฌ์„ฑ์š”์†Œ : ์ด๋ฆ„(name), ๊ฐ’(value), ๋งŒ๋ฃŒ์‹œ๊ฐ„(Expires), ๋„๋ฉ”์ธ(Domain), ๊ฒฝ๋กœ(Path), ๋ณด์•ˆ ์—ฌ๋ถ€(Secure) ๋“ฑ

๐Ÿ“ ๋™์ž‘ ๋ฐฉ์‹

  1. ์›น๋ธŒ๋ผ์šฐ์ €๊ฐ€ ์„œ๋ฒ„์— ์š”์ฒญ
  2. ์ƒํƒœ๋ฅผ ์œ ์ง€ํ•˜๊ณ  ์‹ถ์€ ๊ฐ’์„ ์ฟ ํ‚ค(cookie)๋กœ ์ƒ์„ฑ
  3. ์„œ๋ฒ„๊ฐ€ ์‘๋‹ตํ•  ๋•Œ HTTP ํ—ค๋”(Set-Cookie)์— ์ฟ ํ‚ค๋ฅผ ํฌํ•จํ•ด์„œ ์ „์†ก
   Setโˆ’Cookie: id=doy
  1. ์ „๋‹ฌ๋ฐ›์€ ์ฟ ํ‚ค๋Š” ์›น๋ธŒ๋ผ์šฐ์ €์—์„œ ๊ด€๋ฆฌํ•˜๊ณ  ์žˆ๋‹ค๊ฐ€, ๋‹ค์Œ ์š”์ฒญ ๋•Œ ์ฟ ํ‚ค๋ฅผ HTTP ํ—ค๋”์— ๋„ฃ์–ด์„œ ์ „์†ก
   cookie: id=doy
  1. ์„œ๋ฒ„์—์„œ๋Š” ์ฟ ํ‚ค ์ •๋ณด๋ฅผ ์ฝ์–ด ์ด์ „ ์ƒํƒœ ์ •๋ณด๋ฅผ ํ™•์ธํ•œ ํ›„ ์‘๋‹ต
  • ์ฟ ํ‚ค ์‚ฌ์šฉ ์˜ˆ
    • ์•„์ด๋””, ๋น„๋ฐ€๋ฒˆํ˜ธ ์ €์žฅ
    • ์‡ผํ•‘๋ชฐ ์žฅ๋ฐ”๊ตฌ๋‹ˆ

๐Ÿ“š ์„ธ์…˜(Session)์ด๋ž€?

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

๐Ÿ“ ๋™์ž‘ ๋ฐฉ์‹

  1. ์›น๋ธŒ๋ผ์šฐ์ €๊ฐ€ ์„œ๋ฒ„์— ์š”์ฒญ
  2. ์„œ๋ฒ„๊ฐ€ ํ•ด๋‹น ์›น๋ธŒ๋ผ์šฐ์ €(ํด๋ผ์ด์–ธํŠธ)์— ์œ ์ผํ•œ ID(Session ID)๋ฅผ ๋ถ€์—ฌํ•จ
  3. ์„œ๋ฒ„๊ฐ€ ์‘๋‹ตํ•  ๋•Œ HTTP ํ—ค๋”(Set-Cookie)์— Session ID๋ฅผ ํฌํ•จํ•ด์„œ ์ „์†ก,
    ์ฟ ํ‚ค์— Session ID๋ฅผ JSESSIONID ๋ผ๋Š” ์ด๋ฆ„์œผ๋กœ ์ €์žฅ
   Setโˆ’Cookie: JSESSIONID=xslei13f
  1. ์›น๋ธŒ๋ผ์šฐ์ €๋Š” ์ดํ›„ ์›น๋ธŒ๋ผ์šฐ์ €๋ฅผ ๋‹ซ๊ธฐ๊นŒ์ง€ ๋‹ค์Œ ์š”์ฒญ ๋•Œ ๋ถ€์—ฌ๋œ Session ID๊ฐ€ ๋‹ด๊ฒจ์žˆ๋Š” ์ฟ ํ‚ค๋ฅผ HTTP ํ—ค๋”์— ๋„ฃ์–ด์„œ ์ „์†ก
   Cookie: JSESSIONID=xslei13f
  1. ์„œ๋ฒ„๋Š” ์„ธ์…˜ ID๋ฅผ ํ™•์ธํ•˜๊ณ , ํ•ด๋‹น ์„ธ์…˜์— ๊ด€๋ จ๋œ ์ •๋ณด๋ฅผ ํ™•์ธํ•œ ํ›„ ์‘๋‹ต
  • ์„ธ์…˜ ์‚ฌ์šฉ ์˜ˆ
    • ๋กœ๊ทธ์ธ

์„ธ์…˜๋„ ์ฟ ํ‚ค๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ฐ’์„ ์ฃผ๊ณ ๋ฐ›์œผ๋ฉฐ ํด๋ผ์ด์–ธํŠธ์˜ ์ƒํƒœ ์ •๋ณด๋ฅผ ์œ ์ง€ํ•œ๋‹ค.
์ฆ‰, ์ƒํƒœ ์ •๋ณด๋ฅผ ์œ ์ง€ํ•˜๋Š” ์ˆ˜๋‹จ์€ ์ฟ ํ‚ค ์ด๋‹ค.

๐Ÿ“ข ์ฟ ํ‚ค์™€ ์„ธ์…˜์˜ ์ฐจ์ด์ 

  • ์ €์žฅ ์œ„์น˜
    • ์ฟ ํ‚ค : ํด๋ผ์ด์–ธํŠธ
    • ์„ธ์…˜ : ์„œ๋ฒ„
  • ๋ณด์•ˆ
    • ์ฟ ํ‚ค : ํด๋ผ์ด์–ธํŠธ์— ์ €์žฅ๋˜๋ฏ€๋กœ ๋ณด์•ˆ์— ์ทจ์•ฝํ•˜๋‹ค.
    • ์„ธ์…˜ : ์ฟ ํ‚ค๋ฅผ ์ด์šฉํ•ด Session ID๋งŒ ์ €์žฅํ•˜๊ณ  ์ด ๊ฐ’์œผ๋กœ ๊ตฌ๋ถ„ํ•ด์„œ ์„œ๋ฒ„์—์„œ ์ฒ˜๋ฆฌํ•˜๋ฏ€๋กœ ๋น„๊ต์  ๋ณด์•ˆ์„ฑ์ด ์ข‹๋‹ค.
  • ๋ผ์ดํ”„์‚ฌ์ดํด
    • ์ฟ ํ‚ค : ๋งŒ๋ฃŒ์‹œ๊ฐ„์— ๋”ฐ๋ผ ๋ธŒ๋ผ์šฐ์ €๋ฅผ ์ข…๋ฃŒํ•ด๋„ ๊ณ„์†ํ•ด์„œ ๋‚จ์•„ ์žˆ์„ ์ˆ˜ ์žˆ๋‹ค.
    • ์„ธ์…˜ : ๋งŒ๋ฃŒ์‹œ๊ฐ„์„ ์ •ํ•  ์ˆ˜ ์žˆ์ง€๋งŒ ๋ธŒ๋ผ์šฐ์ €๊ฐ€ ์ข…๋ฃŒ๋˜๋ฉด ๋งŒ๋ฃŒ์‹œ๊ฐ„์— ์ƒ๊ด€์—†์ด ์‚ญ์ œ๋œ๋‹ค.
  • ์†๋„
    • ์ฟ ํ‚ค : ํด๋ผ์ด์–ธํŠธ์— ์ €์žฅ๋˜์–ด์„œ ์„œ๋ฒ„์— ์š”์ฒญ ์‹œ ๋น ๋ฅด๋‹ค.
    • ์„ธ์…˜ : ์‹ค์ œ ์ €์žฅ๋œ ์ •๋ณด๊ฐ€ ์„œ๋ฒ„์— ์žˆ์œผ๋ฏ€๋กœ ์„œ๋ฒ„์˜ ์ฒ˜๋ฆฌ๊ฐ€ ํ•„์š”ํ•ด ์ฟ ํ‚ค๋ณด๋‹ค ๋Š๋ฆฌ๋‹ค.


๐Ÿ“– DNS



๐Ÿ“– REST์™€ RESTful์˜ ๊ฐœ๋…

๐Ÿ“š REST๋ž€

  • REST์˜ ์ •์˜
    • ์›”๋“œ ์™€์ด๋“œ ์›น(www)๊ณผ ๊ฐ™์€ ๋ถ„์‚ฐ ํ•˜์ดํผ ๋ฏธ๋””์–ด ์‹œ์Šคํ…œ์„ ์œ„ํ•œ ์†Œํ”„ํŠธ์›จ์–ด ๊ฐœ๋ฐœ ์•„ํ‚คํ…์ฒ˜์˜ ํ˜•์‹
    • ๊ธฐ๋ณธ์ ์œผ๋กœ ์›น์˜ ๊ธฐ์กด ๊ธฐ์ˆ ๊ณผ HTTP ํ”Œํ† ์ฝœ์„ ๊ทธ๋Œ€๋กœ ํ™œ์šฉํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์›น์˜ ์žฅ์ ์„ ์ตœ๋Œ€ํ•œ ํ™œ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.
  • ๊ตฌ์ œ์ฒ™์ธ ๊ฐœ๋…
    • HTTP URI๋ฅผ ํ†ตํ•ด ์ž์›์„ ๋ช…์‹œํ•˜๊ณ  HTTP Method(POST, GET, PUT, DELETE)๋ฅผ ํ†ตํ•ด ํ•ด๋‹น ์ž์›์— ๋Œ€ํ•œ CRUD๋ฅผ ์ ์šฉํ•˜๋Š” ๊ฒƒ
  • ์žฅ๋‹จ์ 
    • ์žฅ์ 
      • ์—ฌ๋Ÿฌ ๊ฐ€์ง€ ์„œ๋น„์Šค ๋””์ž์ธ์—์„œ ์ƒ๊ธธ ์ˆ˜ ์žˆ๋Š” ๋ฌธ์ œ๋ฅผ ์ตœ์†Œํ™”
      • API์˜ ๊ธฐ๋ณธ์„ ์ถฉ์‹คํžˆ ์ง€ํ‚ค๋ฉด์„œ ๋ฒ”์šฉ์„ฑ์„ ๋ณด์žฅ
    • ๋‹จ์ 
      • ๋ธŒ๋ผ์šฐ์ €๋ฅผ ํ†ตํ•ด ํ…Œ์ŠคํŠธํ•  ์ผ์ด ๋งŽ์€ ์„œ๋น„์Šค๋ฉด ์‰ฝ๊ฒŒ ๊ณ ์น  ์ˆ˜ ์žˆ๋Š” URL๋ณด๋‹ค ๋” ์–ด๋ ต๊ฒŒ ๋Š๊ปด์ง„๋‹ค.
      • ๊ตฌํ˜• ๋ธŒ๋ผ์šฐ์ €๊ฐ€ ์žฌ๋Œ€๋กœ ์ง€์›ํ•ด์ฃผ์ง€ ๋ชปํ•œ๋‹ค.
  • ํ•„์š”ํ•œ ์ด์œ 
    • ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋ถ„๋ฆฌ ๋ฐ ํ†ตํ•ฉ
    • ๋‹ค์–‘ํ•œ ํด๋ผ์ด์–ธํŠธ์˜ ๋“ฑ์žฅ
    • ์ฆ‰, ์ตœ๊ทผ์˜ ์„œ๋ฒ„ ํ”„๋กœ๊ทธ๋žจ์€ ๋‹ค์–‘ํ•œ ๋ธŒ๋ผ์šฐ์ €์™€ ์•ˆ๋“œ๋กœ์ด๋“œํฐ, ์•„์ดํฐ๊ณผ ๊ฐ™์€ ๋ชจ๋ฐ”์ผ ๋””๋ฐ”์ด์Šค์—์„œ๋„ ํ†ต์‹ ํ•  ์ˆ˜ ์žˆ์–ด์•ผ ํ•œ๋‹ค.
  • ๊ตฌ์„ฑ์š”์†Œ
    1. ์ž์›(Resource) : URI
      • ๋ชจ๋“  ์ž์›์— ๊ณ ์œ ํ•œ ID๊ฐ€ ์กด์žฌํ•˜๊ณ , ์ด ์ž์›์€ Server์— ์กด์žฌํ•œ๋‹ค.
      • ID๋Š” '/groups/:group_id'์™€ ๊ฐ™์€ HTTP URI์ด๋‹ค.
    2. ํ–‰์œ„(Verb) : HTTP Method
      • HTTP ํ”„๋กœํ† ์ฝœ์˜ Method๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.
      • HTTP ํ”„๋กœํ† ์ฝœ์€ GET, POST, PUT, DELETE, HEAD์™€ ๊ฐ™์€ ๋ฉ”์†Œ๋“œ๋ฅผ ์ œ๊ณตํ•œ๋‹ค.
    3. ํ‘œํ˜„
      • Client๋Š” URI๋ฅผ ์ด์šฉํ•ด ์ž์›์„ ์ง€์ •ํ•˜๊ณ  ํ•ด๋‹น ์ž์›์˜ ์ƒํƒœ์— ๋Œ€ํ•œ ์กฐ์ž‘์„ ์š”์ฒญํ•˜๋ฉด Server๋Š” ์ด์— ์ ์ ˆํ•œ ์‘๋‹ต์„ ๋ณด๋‚ธ๋‹ค.
      • REST์—์„œ ํ•˜๋‚˜์˜ ์ž์›์€ JSON, NML, TEST, RSS ๋“ฑ ์—ฌ๋Ÿฌ ํ˜•ํƒœ์˜ ์‘๋‹ต์œผ๋กœ ๋‚˜ํƒ€๋‚ด์–ด์ง„๋‹ค.
      • ์ผ๋ฐ˜์ ์œผ๋กœ JSON์ด๋‚˜ XML์„ ํ†ตํ•ด ๋ฐ์ดํ„ฐ๋ฅผ ์ฃผ๊ณ  ๋ฐ›๋Š”๋‹ค.
  • ํŠน์ง•
    1. Server-Client(์„œ๋ฒ„ - ํด๋ผ์ด์–ธํŠธ ๊ตฌ์กฐ)
    2. Stateless(๋ฌด์ƒํƒœ)
    3. Cacheable(์บ์‹œ ์ฒ˜๋ฆฌ ๊ฐ€๋Šฅ)
    4. Layered System(๊ณ„์ธตํ™”)
    5. Code-On-Demand
    6. Uniform Interface(์ธํ„ฐํŽ˜์ด์Šค ์ผ๊ด€์„ฑ)

๐Ÿ“š REST API

  • REST API์˜ ์ •์˜ : REST ๊ธฐ๋ฐ˜์œผ๋กœ ์„œ๋น„์Šค API๋ฅผ ๊ตฌํ˜„ํ•œ ๊ฒƒ
  • ํŠน์ง•
    • ์‚ฌ๋‚ด ์‹œ์Šคํ…œ๋“ค์„ REST ๊ธฐ๋ฐ˜์œผ๋กœ ์‹œ์Šคํ…œ์„ ๋ถ„์‚ฐํ•ด ์œ ์ง€๋ณด์ˆ˜ ๋ฐ ์šด์šฉ์„ ํŽธํ•˜๊ฒŒ ํ•  ์ˆ˜ ์žˆ๋‹ค.
    • REST๋Š” HTTP ํ‘œ์ค€์„ ๊ธฐ๋ฐ˜์œผ๋กœ ๊ตฌํ˜„ํ•˜๋ฏ€๋กœ ,HTTP๋ฅผ ์ง€์›ํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ ์–ธ์–ด๋กœ ํด๋ผ์ด์–ธํŠธ, ์„œ๋ฒ„๋ฅผ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ๋‹ค.
  • ์„ค๊ณ„ ๊ทœ์น™
    1. URI๋Š” ์ •๋ณด์˜ ์ž์›์„ ํ‘œํ˜„ํ•ด์•ผ ํ•œ๋‹ค.
      • ๋ช…์‚ฌ๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์˜์–ด ์†Œ๋ฌธ์ž ๋ณต์ˆ˜ํ˜•์„ ์‚ฌ์šฉํ•œ๋‹ค.
      • ex) GET /members/1
    2. ์ž์›์— ๋Œ€ํ•œ ํ–‰์œ„๋Š” HTTP Method(GET, PUT, POST, DELETE ๋“ฑ)๋กœ ํ‘œํ˜„ํ•œ๋‹ค.
      • ์œ„ ์˜ˆ์‹œ์™€ ๋™์ผ
    3. ์Šฌ๋ž˜์‹œ ๊ตฌ๋ถ„์ž(/)๋Š” ๊ณ„์ธต ๊ด€๊ณ„๋ฅผ ๋‚˜ํƒ€๋‚ธ๋‹ค.
      • ex) http://restapi.example.com/houses/apartments
    4. URI ๋งˆ์ง€๋ง‰ ๋ฌธ์ž๋กœ ์Šฌ๋ž˜์‹œ(/)๋ฅผ ํฌํ•จํ•˜์ง€ ์•Š๋Š”๋‹ค.
    5. ๊ธด URI์…ฉ๋กœ๋ฅผ ์‚ฌ์šฉํ•ด์•ผํ•˜๋ฉด ํ•˜์ดํ”ˆ(-)์„ ์ด์šฉํ•ด ๊ฐ€๋…์„ฑ์„ ๋†’์ธ๋‹ค.
    6. ๋ฐ‘์ค„(_)์€ URI์— ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š”๋‹ค.
    7. URI ๊ฒฝ๋กœ์—๋Š” ์†Œ๋ฌธ์ž๊ฐ€ ์ ํ•ฉํ•˜๋‹ค.
    8. ํŒŒ์ผํ™•์žฅ์ž๋Š” URI์— ํฌํ•จํ•˜์ง€ ์•Š๋Š”๋‹ค.
      • Accept header๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.
      • ex) http://restapi.example.com/members/soccer/345/photo.jpg (x)
      • ex) GET / members/soccer/345/photo HTTP/1.1 Host: restapi.example.com Accept: image/jpg (o)

๐Ÿ“š RESTful

  • RESTful์˜ ๊ฐœ๋…
    • ์ผ๋ฐ˜์ ์œผ๋กœ REST๋ผ๋Š” ์•„ํ‚คํ…์ฒ˜๋ฅผ ๊ตฌํ˜„ํ•˜๋Š” ์›น ์„œ๋น„์Šค๋ฅผ ๋‚˜ํƒ€๋‚ด๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉ๋˜๋Š” ์šฉ์–ด
      • ์ฆ‰, REST ์›๋ฆฌ๋ฅผ ๋”ฐ๋ฅด๋Š” ์‹œ์Šคํ…œ์€ RESTful์ด๋ž€ ์šฉ์–ด๋กœ ์ง€์นญ๋œ๋‹ค.
    • ๊ณต์‹์ ์œผ๋กœ ๋ฐœํ‘œํ•œ ๊ฒƒ์€ ์•„๋‹ˆ๋‹ค.(์•”๋ฌต์ )
  • ๋ชฉ์ 
    • ์ดํ•ดํ•˜๊ธฐ ์‰ฝ๊ณ  ์‚ฌ์šฉํ•˜๊ธฐ ์‰ฌ์šด REST API๋ฅผ ๋งŒ๋“œ๋Š” ๊ฒƒ
    • ์„ฑ๋Šฅ ํ–ฅ์ƒ์— ํฌ์ปค์Šค๊ฐ€ ์žˆ๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ, ์ดํ•ด๋„ ๋ฐ ํ˜ธํ™˜์„ฑ์„ ๋†’์—ฌ์ฃผ๋Š”๊ฒŒ ๋ชฉ์ ์ด๋ฏ€๋กœ, ์„ฑ๋Šฅ์ด ์ค‘์š”ํ•œ ์ƒํ™ฉ์—์„œ๋Š” ๊ตณ์ด RESTful API๋ฅผ ๊ตฌํ˜„ํ•  ํ•„์š”๋Š” ์—†๋‹ค.


๐Ÿ“– Socket.io์™€ WebSocket์˜ ์ฐจ์ด

๐Ÿ“š WebSocket

  • ๊ฐœ๋… : ์›น ํŽ˜์ด์ง€์˜ ํ•œ๊ณ„์—์„œ ๋ฒ—์–ด๋‚˜ ์‹ค์‹œ๊ฐ„์œผ๋กœ ์ƒํ˜ธ์ž‘์šฉํ•˜๋Š” ์›น ์„œ๋น„์Šค๋ฅผ ๋งŒ๋“œ๋Š” ํ‘œ์ค€ ๊ธฐ์ˆ 
  • ๋ฐฐ๊ฒฝ
    • ์‹ค์‹œ๊ฐ„ ์›น์„ ๊ตฌํ˜„ํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ์–‘๋ฐฉํ–ฅ ํ†ต์‹ ์ด ๊ฐ€๋Šฅํ•ด์•ผํ•˜๋Š”๋ฐ HTTP ํ”„๋กœํ† ์ฝœ์€ ํด๋ผ์ด์–ธํŠธ์—์„œ ์„œ๋ฒ„๋กœ์˜ ๋‹จ๋ฐฉํ–ฅ ํ†ต์‹ ์„ ์œ„ํ•ด ๋งŒ๋“ค์–ด์ง„ ๋ฐฉ๋ฒ•์ด๋‹ค.
    • ์–‘๋ฐฉํ–ฅ ํ†ต์‹ ์„ ๊ตฌํ˜„ํ•  ๋•Œ๋Š” Polling, Streaming ๋ฐฉ์‹์˜ ์ฝ”๋“œ๋ฅผ ์ด์šฉํ•ด ๊ตฌํ˜„ํ–ˆ๋‹ค.
    • ํ•˜์ง€๋งŒ ์ด ๋ฐฉ๋ฒ•๋“ค์€ ๊ฐ ๋ธŒ๋ผ์šฐ์ €๋งˆ๋‹ค ๊ตฌํ˜„ ๋ฐฉ๋ฒ•์ด ๋‹ฌ๋ผ ๊ฐœ๋ฐœ์ด ์–ด๋ ต๋‹ค๋Š” ๋ฌธ์ œ์ ์ด ์žˆ์—ˆ๋Š”๋ฐ ์ด๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด ๋งŒ๋“ค์–ด์ง€๊ฒŒ ๋˜์—ˆ๋‹ค.
  • ํŠน์ง•
    • ์†Œ์ผ“์„ ์ด์šฉํ•ด ์ž์œ ๋กญ๊ฒŒ ๋ฐ์ดํ„ฐ๋ฅผ ์ฃผ๊ณ  ๋ฐ›์„ ์ˆ˜ ์žˆ๋‹ค.
    • HTTP์™€ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ 80ํฌํŠธ๋ฅผ ํ†ตํ•ด ์›น ์„œ๋ฒ„์— ์—ฐ๊ฒฐํ•œ๋‹ค.
    • http:// ๋Œ€์‹  ws://๋กœ ์‹œ์ž‘ํ•œ๋‹ค.
    • ์›น ์„œ๋ฒ„๋„ WebSocket ๊ธฐ๋Šฅ์„ ์ง€์›ํ•ด์•ผ ํ•œ๋‹ค.(Node.js, Jetty ๋“ฑ)
    • ํ”„๋กœํ† ์ฝœ์ด ํ™•์ •๋œ ์ƒํƒœ๊ฐ€ ์•„๋‹ˆ์—ฌ์„œ ๋ธŒ๋ผ์šฐ์ € ๋ณ„๋กœ ์ง€์›ํ•˜๋Š” WebSocket ๋ฒ„์ „์ด ๋‹ค๋ฅด๋‹ค.
    • ์ฆ‰, ๋ฏธ๋ž˜์˜ ๊ธฐ์ˆ ์ด์ง€ ์•„์ง ์ธํ„ฐ๋„ท ๊ธฐ์—…์—์„œ ์‹œ๋ฒ”์ ์œผ๋กœ๋ผ๋„ ์จ ๋ณผ ์ˆ˜ ์žˆ๋Š” ๊ธฐ์ˆ ์ด ์•„๋‹ˆ๋‹ค.(???)
  • ์žฅ์ 
    • HTTP Request๋ฅผ ๊ทธ๋Œ€๋กœ ์‚ฌ์šฉํ•˜๋ฏ€๋กœ ๊ธฐ์กด์˜ 80, 443 ํฌํŠธ๋กœ ์ ‘์†ํ•˜์—ฌ ์ถ”๊ฐ€๋กœ ๋ฐฉํ™”๋ฒฝ์„ ์—ด์ง€ ์•Š๊ณ ๋„ ์–‘๋ฐฉํ–ฅ ํ†ต์‹ ์ด ๊ฐ€๋Šฅํ•˜๋‹ค.
    • HTTP ๊ทœ๊ฒฉ์ธ CORS ์ ์šฉ์ด๋‚˜ ์ธ์ฆ ๋“ฑ์„ ๊ธฐ์กด๊ณผ ๋™์ผํ•˜๊ฒŒ ์‚ฌ์šฉ

๐Ÿ“š Socket.io

  • ๊ฐœ๋…
    • WebSocket, AJAX Long Polling, Streaming ๋“ฑ ๋‹ค์–‘ํ•œ ๋ฐฉ๋ฒ•์„ ํ•˜๋‚˜์˜ API๋กœ ์ถ”์ƒํ™”ํ•œ ๊ฒƒ์ด๋‹ค.
    • ์ฆ‰, JavaScript๋ฅผ ์ด์šฉํ•˜์—ฌ ๋ธŒ๋ผ์šฐ์ € ์ข…๋ฅ˜์— ์ƒ๊ด€์—†์ด ์‹ค์‹œ๊ฐ„ ์›น์„ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ๋‹ค.
  • ํŠน์ง•
    • ํ˜„์žฌ ๋ฐ”๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๊ธฐ์ˆ ์ด๋‹ค.(WebSocket๋Š” ๋ฏธ๋ž˜์˜ ๊ธฐ์ˆ )
    • WebSocket์€ ์ง€์›ํ•˜๋Š” ์—ฌ๋Ÿฌ ์„œ๋ฒ„ ๊ตฌํ˜„์ฒด๊ฐ€ ๋งŽ์ง€๋งŒ Socket.io๋Š” Node.js ํ•˜๋‚˜ ๋ฐ–์— ์—†๋‹ค.
  • ์žฅ์ 
    • Socket.io๋กœ ๊ฐœ๋ฐœํ•˜์—ฌ ํด๋ผ์ด์–ธํŠธ๋กœ ํ‘ธ์‰ฌํ•˜๋ฉด WebSocket์„ ์ง€์›ํ•˜์ง€ ์•Š๋Š” ๋ธŒ๋ผ์šฐ์ €์˜ ๊ฒฝ์šฐ์—๋„ ๋‹ค์–‘ํ•œ ๋ฐฉ๋ฒ•์œผ๋กœ ๋‚ด๋ถ€์ ์œผ๋กœ ํ‘ธ์‰ฌ ๋ฉ”์‹œ์ง€๋ฅผ ๋ณด๋‚ด์ค€๋‹ค.
    • ์ฆ‰, WebSocket์„ ์ง€์›ํ•˜์ง€ ์•Š๋Š” ๋ธŒ๋ผ์šฐ์ €๋ผ๋„ ํ‘ธ์‰ฌ ๋ฉ”์‹œ์ง€๋ฅผ ์ผ๊ด€๋œ ๋ชจ๋“ˆ๋กœ ๋ณด๋‚ผ ์ˆ˜ ์žˆ๋‹ค.


๐Ÿ“– ๋กœ๋“œ๋ฐธ๋Ÿฐ์‹ฑ

์š”์ฆ˜ ์‹œ๋Œ€์— ์›น์‚ฌ์ดํŠธ์— ์ ‘์†ํ•˜๋Š” ์ธ์›์ด ๊ธ‰๊ฒฉํžˆ ๋Š˜์–ด๋‚˜๊ฒŒ ๋˜์–ด์„œ ๋ชจ๋“  ํŠธ๋ž˜ํ”ฝ์„ ๊ฐ๋‹นํ•˜๊ธฐ์—” 1๋Œ€์˜ ์„œ๋ฒ„๋กœ ๋ถ€์กฑํ•˜๋‹ค. ๋”ฐ๋ผ์„œ ํ•˜๋“œ์›จ์–ด์˜ ์„ฑ๋Šฅ์„ ์˜ฌ๋ฆฌ๊ฑฐ๋‚˜(Scale-up) ์—ฌ๋Ÿฌ๋Œ€์˜ ์„œ๋ฒ„๊ฐ€ ๋‚˜๋ˆ ์„œ ์ผํ•ด์•ผํ•˜๋Š”๋ฐ(Scale-out) Scale-out๋ฐฉ์‹์ด ํšจ๊ณผ์ ์ด๋‹ค. ์ด ๋•Œ ์—ฌ๋Ÿฌ ์„œ๋ฒ„์—๊ฒŒ ๊ท ๋“ฑํ•˜๊ฒŒ ํŠธ๋ž˜ํ”ฝ์„ ๋ถ„์‚ฐ์‹œ์ผœ์ฃผ๋Š” ๊ฒƒ์ด ๋กœ๋“œ ๋ฐธ๋Ÿฐ์‹ฑ์ด๋‹ค.

  • ๋ถ„์‚ฐ์‹ ์›น ์„œ๋น„์Šค๋กœ, Load Balancer๋ฅผ ํด๋ผ์ด์–ธํŠธ์™€ ์„œ๋ฒ„ ์‚ฌ์ด์— ๋‘๊ณ , ๋ถ€ํ•˜๊ฐ€ ์ผ์–ด๋‚˜์ง€ ์•Š๋„๋ก ์—ฌ๋Ÿฌ ์„œ๋ฒ„์— ๋ถ„์‚ฐ์‹œ์ผœ์ฃผ๋Š” ๋ฐฉ์‹์ด๋‹ค.

๐Ÿ“š ์„œ๋ฒ„ ์„ ํƒ ๋ฐฉ์‹

  • ๋ผ์šด๋“œ ๋กœ๋นˆ : CPU ์Šค์ผ€์ค„๋ง์˜ ๋ผ์šด๋“œ ๋กœ๋นˆ ๋ฐฉ์‹
    • ๋ผ์šด๋“œ ๋กœ๋นˆ์ด๋ž€? : ์šฐ์„ ์ˆœ์œ„๋ฅผ ๋‘์ง€ ์•Š๊ณ  ์ˆœ์„œ๋Œ€๋กœ ์ฆ‰, ์‹œ๊ฐ„๋‹จ์œ„๋กœ ํ• ๋‹นํ•˜๋Š” ๋ฐฉ์‹
  • Least Connections : ์—ฐ๊ฒฐ ๊ฐœ์ˆ˜๊ฐ€ ๊ฐ€์žฅ ์ ์€ ์„œ๋ฒ„ ์„ ํƒ(ํŠธ๋ž˜ํ”ฝ์œผ๋กœ ์ธํ•ด ์„ธ์…˜์ด ๊ธธ์–ด์ง€๋Š” ๊ฒฝ์šฐ ๊ถŒ์žฅ)
  • Source : ์‚ฌ์šฉ์ž IP๋ฅผ ํ•ด์‹ฑํ•˜์—ฌ ๋ถ„๋ฐฐ(ํŠน์ • ์‚ฌ์šฉ์ž๊ฐ€ ํ•ญ์ƒ ๊ฐ™์€ ์„œ๋ฒ„๋กœ ์—ฐ๊ฒฐ๋˜๋Š” ๊ฒƒ ๋ณด์žฅ)

๐Ÿ“ ์žฅ์•  ๋Œ€๋น„ : ์„œ๋ฒ„๋ฅผ ๋ถ„๋ฐฐํ•˜๋Š” ๋กœ๋“œ ๋ฐธ๋Ÿฐ์„œ์— ๋ฌธ์ œ๊ฐ€ ์ƒ๊ธธ ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ๋กœ๋“œ ๋ฐธ๋Ÿฐ์„œ๋ฅผ ์ด์ค‘ํ™”ํ•˜์—ฌ ๋Œ€๋น„ํ•œ๋‹ค.(Active ์ƒํƒœ์™€ Passive ์ƒํƒœ)

0๊ฐœ์˜ ๋Œ“๊ธ€