Skip to content

Latest commit

ย 

History

History
418 lines (305 loc) ยท 28.8 KB

File metadata and controls

418 lines (305 loc) ยท 28.8 KB

Application Layer

overview:

1. principles of network applications

Application architectures

Client-server architecture

์œ ์ €์˜ ์‹œ์Šคํ…œ(client)์ด ๋‚ด๋†“์€ ์š”๊ตฌ๋ฅผ ์‹œ์Šคํ…œ(server)์ด ์ฒ˜๋ฆฌํ•˜๋„๋ก ํ•œ ๋„คํŠธ์›Œํฌ ๊ตฌ์„ฑ

  • ์„œ๋ฒ„:
    • ํ•ญ์ƒ ์ผœ์ ธ ์žˆ๋Š” ํ˜ธ์ŠคํŠธ์ด๋‹ค.
    • ์˜๊ตฌ์ ์ธ ๊ณ ์ • IP ์ฃผ์†Œ๋ฅผ ๊ฐ€์ง„๋‹ค.
  • ํด๋ผ์ด์–ธํŠธ:
    • ์„œ๋ฒ„์™€ ํ†ต์‹ ํ•˜๋ฉฐ, ๊ฐ„ํ—์ ์œผ๋กœ ์—ฐ๊ฒฐ๋  ์ˆ˜ ์žˆ๋‹ค.
    • ํ†ต์ƒ์ ์œผ๋กœ ๋™์  IP ์ฃผ์†Œ๋ฅผ ๊ฐ€์ง„๋‹ค.
    • ํด๋ผ์ด์–ธํŠธ๋“ค๋ผ๋ฆฌ ์„œ๋กœ ์ง์ ‘ ์†Œํ†ตํ•˜์ง€ ์•Š๋Š”๋‹ค.

P2P architecture

  • P2P๋Š” Peer-to-Peer์˜ ์•ฝ์ž๋กœ, ์ž„์˜์˜ end system๋“ค๋ผ๋ฆฌ (peer๋“ค๋ผ๋ฆฌ) ์ง์ ‘ ํ†ต์‹ ํ•œ๋‹ค.
    • ์ค‘์•™ ์„œ๋ฒ„๋ฅผ ๊ฑฐ์น˜์ง€ ์•Š๊ณ  ํด๋ผ์ด์–ธํŠธ ์ปดํ“จํ„ฐ๋ผ๋ฆฌ ์ง์ ‘ ํ†ต์‹ ํ•˜๋Š” ๋ฐฉ์‹์ด๋‹ค.
    • P2P ๋„คํŠธ์›Œํฌ์—์„œ "ํ”ผ์–ด"๋Š” ์˜ˆ๋ฅผ ๋“ค์–ด ์ธํ„ฐ๋„ท์„ ํ†ตํ•ด ์„œ๋กœ ์—ฐ๊ฒฐ๋œ ์ปดํ“จํ„ฐ ์‹œ์Šคํ…œ ๋ฐ ๊ธฐํƒ€ ์žฅ์น˜์ด๋‹ค.
  • ํ”ผ์–ด๋Š” ๋‹ค๋ฅธ ํ”ผ์–ด์—๊ฒŒ ์„œ๋น„์Šค๋ฅผ ์š”์ฒญํ•˜๊ณ  ์ œ๊ณตํ•œ๋‹ค.
  • Client-server architecture์™€ ๋‹ค๋ฅด๊ฒŒ, ํ•ญ์ƒ ์ผœ์ ธ ์žˆ๋Š” ์„œ๋ฒ„๊ฐ€ ์—†๋‹ค.
    • self scalability (์ž์ฒด ํ™•์žฅ์„ฑ) : ์ƒˆ๋กœ์šด peer๋Š” ์ƒˆ๋กœ์šด ์„œ๋น„์Šค๋ฅผ ์š”๊ตฌํ•˜๊ณ  ์ƒˆ๋กœ์šด ์„œ๋น„์Šค๋ฅผ ๊ฐ€์ ธ๋‹ค ์ค€๋‹ค.
  • ํ”ผ์–ด๊ฐ€ ๊ฐ„ํ—์ ์œผ๋กœ ์—ฐ๊ฒฐ๋˜๊ณ , IP ์ฃผ์†Œ๊ฐ€ ๋ณ€๊ฒฝ๋œ๋‹ค.

Addressing processes

  • Process๋Š” ํ˜ธ์ŠคํŠธ ๋‚ด์—์„œ ๋Œ์•„๊ฐ€๋Š” ํ”„๋กœ๊ทธ๋žจ์ด๋‹ค.
    • ๊ฐ™์€ ํ˜ธ์ŠคํŠธ ๋‚ด์—์„œ ๋ณต์ˆ˜๊ฐœ์˜ processes๊ฐ€ ๋Œ์•„๊ฐˆ ์ˆ˜ ์žˆ๋‹ค.
    • ๋˜ํ•œ, ๋‘ ๊ฐœ์˜ processes๊ฐ€ ๋‚ด๋ถ€์ ์œผ๋กœ communicationํ•  ์ˆ˜ ์žˆ๋‹ค.
  • ์ด๋Ÿฌํ•œ ํ”„๋กœ์„ธ์Šค๋Š” ๋ฉ”์‹œ์ง€๋ฅผ ๋ฐ›๊ธฐ ์œ„ํ•ด ID๊ฐ€ ํ•„์š”ํ•˜๋‹ค. ์ด ID ์—ญํ• ์„ ํ•˜๋Š” ๊ฒƒ์ด IP ์ฃผ์†Œ์™€ ํ˜ธ์ŠคํŠธ์˜ ํ”„๋กœ์„ธ์Šค์™€ ๊ด€๋ จ๋œ ํฌํŠธ ๋ฒˆํ˜ธ์ด๋‹ค.
    • ํ˜ธ์ŠคํŠธ ์žฅ์น˜๋Š” ๊ณ ์œ ํ•œ 32bit IP ์ฃผ์†Œ๋ฅผ ๊ฐ€์ง„๋‹ค.
  • ์˜ˆ๋ฅผ ๋“ค์–ด, ํ•œ ์ง‘์— ๋„ค ์‹๊ตฌ๊ฐ€ ์‚ฐ๋‹ค๊ณ  ํ•ด๋ณด์ž.
    • ๊ทธ ์ง‘์— ๊ฐ ์‚ฌ๋žŒ๋“ค์„ ์–ด๋–ป๊ฒŒ ๊ตฌ๋ณ„ํ• ๊นŒ? ์ง‘์ฃผ์†Œ๋Š” ํ•˜๋‚˜๋งŒ ์“ฐ๊ณ  ๊ฐ ์‹๊ตฌ๋งˆ๋‹ค ์ด๋ฆ„์„ ๋ถ™์ธ๋‹ค.
    • ์ด ๋•Œ ์ง‘์ฃผ์†Œ๊ฐ€ 'IP ์ฃผ์†Œ'์ด๊ณ , ๊ทธ ์ง‘์˜ ๊ฐ ์‚ฌ๋žŒ๋“ค์—๊ฒŒ ๋ถ™ํžŒ ์ด๋ฆ„์ด 'ํฌํŠธ ๋ฒˆํ˜ธ'๋‹ค.
  • ํŠน์ •ํ•œ ์“ฐ์ž„์ƒˆ๋ฅผ ์œ„ํ•ด์„œ 0๋ฒˆ๋ถ€ํ„ฐ 1023๋ฒˆ๊นŒ์ง€ ๋ฏธ๋ฆฌ ํ• ๋‹นํ•œ ํฌํŠธ ๋ฒˆํ˜ธ๋ฅผ Well-known port number๋ผ๊ณ  ํ•œ๋‹ค.
    • e.g.,
      • HTTP ์„œ๋ฒ„: 80
      • ๋ฉ”์ผ ์„œ๋ฒ„: 25
    • ํด๋ผ์ด์–ธํŠธ๋Š” well-known port number๋ฅผ ์‚ฌ์šฉํ•˜์ง€(๊ฐ€์ง€์ง€) ์•Š์•„๋„ ๋œ๋‹ค.
      • ์ผ๋ฐ˜์ ์œผ๋กœ, ํด๋ผ์ด์–ธํŠธ๊ฐ€ ๋จผ์ € ํ†ต์‹ ์„ ์š”์ฒญ๋ฐ›๋Š” ๊ฒฝ์šฐ๋Š” ์—†๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.
  • IP ์ฃผ์†Œ๊ฐ€ 128.119.245.12์ธ ํ˜ธ์ŠคํŠธ์—์„œ HTTP ๋ฉ”์‹œ์ง€๋ฅผ ๋ณด๋‚ธ๋‹คํ•˜๋ฉด, ํฌํŠธ ๋ฒˆํ˜ธ๋Š” 80์œผ๋กœ ๋ณด๋‚ด๋Š” ๊ฒƒ์ด๋‹ค.
    • IP ์ฃผ์†Œ๋Š” ํ˜ธ์ŠคํŠธ๋ฅผ ์ง€์นญํ•˜๊ณ , ํฌํŠธ ๋ฒˆํ˜ธ๋Š” processes๋ฅผ ์ง€์นญํ•œ๋‹ค.

App-layer protocol defines

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

  • ๊ตํ™˜ ๋ฉ”์‹œ์ง€ ํƒ€์ž… (์š”์ฒญ ๋ฉ”์‹œ์ง€, ์‘๋‹ต ๋ฉ”์‹œ์ง€)
  • ์—ฌ๋Ÿฌ ๋ฉ”์‹œ์ง€ ํƒ€์ž…์˜ ๋ฌธ๋ฒ• (๋ฉ”์‹œ์ง€ ๋‚ด๋ถ€์˜ ํ•„๋“œ์™€ ํ•„๋“œ ๊ฐ„์˜ ๊ตฌ๋ณ„ ๋ฐฉ๋ฒ•)
  • ๋ฐ์ดํ„ฐ์˜ ํ—ค๋” ์† ํ•„๋“œ(field)์˜ ์˜๋ฏธ, ์ฆ‰ ํ•„๋“œ์— ์žˆ๋Š” ์ •๋ณด์˜ ์˜๋ฏธ
  • ์–ธ์ œ, ์–ด๋–ป๊ฒŒ ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋ฉ”์‹œ์ง€๋ฅผ ์ „์†กํ•˜๊ณ  ๋ฉ”์‹œ์ง€์— ์‘๋‹ตํ•˜๋Š”์ง€ ๊ฒฐ์ •

๋งŒ์•ฝ ๋ธŒ๋ผ์šฐ์ € ๊ฐœ๋ฐœ์ž๊ฐ€ HTTP RFC์˜ ๊ทœ์น™์„ ๋”ฐ๋ฅธ๋‹ค๋ฉด, ๋ธŒ๋ผ์šฐ์ €๋Š” HTTP RFC์˜ ๊ทœ์น™์„ ๋”ฐ๋ฅธ ์–ด๋– ํ•œ ์›น ์„œ๋ฒ„๋กœ๋ถ€ํ„ฐ๋„ ์›น ํŽ˜์ด์ง€๋ฅผ ๊ฐ€์ ธ์˜ฌ ์ˆ˜ ์žˆ๋‹ค.

  • ๋„คํŠธ์›Œํฌ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜๊ณผ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ณ„์ธต ํ”„๋กœํ† ์ฝœ์€ ๊ฐ™์€ ๊ฐœ๋…์ด ์•„๋‹ˆ๋‹ค. ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ณ„์ธต ํ”„๋กœํ† ์ฝœ์€ ๋„คํŠธ์›Œํฌ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ํ•œ ์š”์†Œ์ผ ๋ฟ์ด๋‹ค.
    • ์˜ˆ๋ฅผ ๋“ค์–ด, ์›น์€ ์‚ฌ์šฉ์ž๊ฐ€ ํ•„์š”์— ๋”ฐ๋ผ ์›น ์„œ๋ฒ„๋กœ๋ถ€ํ„ฐ ๋ฌธ์„œ๋ฅผ ์–ป๊ฒŒ ํ•ด์ฃผ๋Š” ๋„คํŠธ์›Œํฌ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด๋‹ค. ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์€ ๋ฌธ์„œ ํฌ๋งท ํ‘œ์ค€(HTML), ์›น ๋ธŒ๋ผ์šฐ์ €(ํฌ๋กฌ, ํŒŒ์ด์–ดํญ์Šค ๋“ฑ), ์›น ์„œ๋ฒ„(์•„ํŒŒ์น˜, ms ์„œ๋ฒ„), ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ณ„์ธต ํ”„๋กœํ† ์ฝœ์„ ํฌํ•จํ•˜๋Š” ์—ฌ๋Ÿฌ ์š”์†Œ๋“ค๋กœ ๊ตฌ์„ฑ๋œ๋‹ค.
    • ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ณ„์ธต ํ”„๋กœํ† ์ฝœ(HTTP)์€ ๋ธŒ๋ผ์šฐ์ €์™€ ์›น ์„œ๋ฒ„ ์‚ฌ์ด์—์„œ ๊ตํ™˜๋˜๋Š” ๋ฉ”์‹œ์ง€์˜ ํฌ๋งท๊ณผ ์ˆœ์„œ๋ฅผ ์ •์˜ํ•œ๋‹ค. ๋”ฐ๋ผ์„œ HTTP๋Š” ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ํ•œ ์š”์†Œ๋‹ค.

transport service์˜ ์š”๊ตฌ์‚ฌํ•ญ

  • data integrity (๋ฐ์ดํ„ฐ ๋ฌด๊ฒฐ์„ฑ) : loss-sensitive
    • ๋ฐ์ดํ„ฐ ์†ก์ˆ˜์‹  ์‹œ, ๋งํฌ์˜ ์—๋Ÿฌ ํ˜น์€ ๋ผ์šฐํ„ฐ ๋ฒ„ํผ ์—๋Ÿฌ๋กœ ์ธํ•œ bit ๋ณ€ํ˜• ํ˜น์€ ์†์‹ค์ด ์ผ์–ด๋‚  ์ˆ˜ ์žˆ๋‹ค.
    • ์ด๋กœ ์ธํ•ด source๊ฐ€ ๋ณด๋‚ธ ์ •๋ณด์™€ destination์—์„œ ๋ฐ›์€ ์ •๋ณด๊ฐ€ ์ผ์น˜ํ•˜์ง€ ์•Š์„ ์ˆ˜ ์žˆ๋‹ค.
    • ์ด๋ฉ”์ผ, ์€ํ–‰ ์‹œ์Šคํ…œ, ํŒŒ์ผ ์ „์†ก, Web transactions ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋“ฑ์€ 100% ์‹ ๋ขฐ ๊ฐ€๋Šฅํ•œ ๋ฐ์ดํ„ฐ ์ „์†ก์„ ์š”๊ตฌํ•œ๋‹ค.
    • ์˜ค๋””์˜ค๋‚˜ ๋น„๋””์˜ค ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์€ ์•ฝ๊ฐ„์˜ ์†์‹ค์„ ํ—ˆ์šฉํ•˜๊ธฐ๋„ ํ•œ๋‹ค.
  • timing : delay-sensitive
    • ์ธํ„ฐ๋„ท ์ „ํ™”, ์ธํ„ฐ๋ž™ํ‹ฐ๋ธŒ ๊ฒŒ์ž„ ๋“ฑ์€ ์ง€์—ฐ ์‹œ๊ฐ„์ด ์งง์•„์•ผ ํ•œ๋‹ค.
  • throughput : bandwidth-sensitive
    • ๋ฉ€ํ‹ฐ๋ฏธ๋””์–ด๊ฐ€ ํšจ๊ณผ์ ์ด๊ธฐ ์œ„ํ•ด์„œ ์ตœ์†Œํ•œ์˜ throughput์„ ์š”๊ตฌํ•œ๋‹ค.
    • ์ด๋ฉ”์ผ, FTP, ์›น ์ „์†ก ๊ฐ™์€ ํƒ„๋ ฅ์ ์ธ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์€ ๋งŽ์€ throughput์„ ์š”๊ตฌํ•˜์ง€ ์•Š๋Š”๋‹ค.
  • security
    • encryption, data integrity (์ค‘๊ฐ„์— ์˜๋„์ ์ธ ๊ฐœ์ž…์ด ์—†์ด ์ „์†ก๋˜์–ด ์ˆ˜์‹ ์ž๊ฐ€ ๋ฐ›์€ ์ •๋ณด๊ฐ€ ์†ก์‹ ์ž๊ฐ€ ๋ณด๋‚ธ ์ •๋ณด์™€ ์ผ์น˜ํ•œ๋‹ค๋Š” ํ™•์‹ ์„ ์ฃผ๋Š” ๊ฒƒ)

์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋ณ„ ์š”๊ตฌ์‚ฌํ•ญ์˜ ์˜ˆ์‹œ

application data loss throughput time sensitive
file transfer no loss elastic no
e-mail no loss elastic no
Web documents no loss elastic no
real-time audio/video loss-tolerant audio: 5kbps-1Mbps
video: 10kbps-5Mbps
yes, 100's msec
stored audio/video loss-tolerant audio: 5kbps-1Mbps
video: 10kbps-5Mbps
yes, few secs
interactive games loss-tolerant few kbps up yes, 100's msec
text messaging no loss elastic yes and no

์ธํ„ฐ๋„ท ์ „์†ก ํ”„๋กœํ† ์ฝœ์ด ์ œ๊ณตํ•˜๋Š” ์„œ๋น„์Šค (Internet transport protocols services)

transport layer์—์„œ application layer protocol์— ์ œ๊ณตํ•ด์ฃผ์–ด์•ผ ํ•˜๋Š” ๊ฒƒ

TCP service (for loss-sensitive application)

Transport Layer ๋ถ€๋ถ„์—์„œ ์ž์„ธํžˆ ๋‹ค๋ฃจ์—ˆ์œผ๋‹ˆ ๋งํฌ ์ฐธ์กฐ

UDP service (for delay-sensitive application)

Transport Layer ๋ถ€๋ถ„์—์„œ ์ž์„ธํžˆ ๋‹ค๋ฃจ์—ˆ์œผ๋‹ˆ ๋งํฌ ์ฐธ์กฐ

2. Web and HTTP

Web

  • ์›น ํŽ˜์ด์ง€๋Š” HTML file + referenced object ๋กœ ์ด๋ฃจ์–ด์ ธ ์žˆ๋Š”๋ฐ, ์ด ๋•Œ ๊ฐ object๋“ค์€ URL์„ ํ†ตํ•ด reference ๋˜๋Š” ๊ตฌ์กฐ์ด๋‹ค.
    • ์—ฌ๊ธฐ์„œ URL์ด๋ž€, Uniform Resource Locator์˜ ์•ฝ์ž๋กœ ์•„๋ž˜ ๊ทธ๋ฆผ๊ณผ ๊ฐ™์€ ๊ตฌ์กฐ๋กœ ์ด๋ฃจ์–ด์ ธ ์žˆ๋‹ค.

HTTP(Hyper Text Transfer Protocol)

  • HTTP๋Š” Application layer์˜ ์—ฌ๋Ÿฌ ํ”„๋กœํ† ์ฝœ ์ค‘ ํ•˜๋‚˜๋กœ ์ฃผ๋กœ ์›น์—์„œ ๋งŽ์ด ์“ฐ์ด๋Š” ํ”„๋กœํ† ์ฝœ์ด๋‹ค.
  • HTTP ํ”„๋กœํ† ์ฝœ์„ ํ†ตํ•ด ์šฐ๋ฆฌ๋Š” ์›น์‚ฌ์ดํŠธ์—์„œ ๋‹ค์–‘ํ•œ ํ™œ๋™์„ ํ•  ์ˆ˜ ์žˆ๋‹ค.

(1) HTTP์˜ ํŠน์ง•

    1. HTTP๋Š” TCP์™€ ์ง์ง€์–ด์ ธ ์žˆ๋‹ค.
    • ์ฒ˜์Œ์— TCP๊ฐ€ ์—ฐ๊ฒฐ์„ ๋งบ์œผ๋ฉด ์ดํ›„ HTTP ๋ฉ”์‹œ์ง€๊ฐ€ ๊ตํ™˜๋˜๋Š” ๊ตฌ์กฐ์ด๋‹ค.
    • TCP๋ฅผ ํ†ตํ•ด ํ†ต์‹ ์„ ํ•˜๋ฏ€๋กœ ์‹ ๋ขฐ์„ฑ ์žˆ๋Š” ํ†ต์‹ ์„ ํ•  ์ˆ˜ ์žˆ๋‹ค.
    1. HTTP๋Š” 'stateless' ํ•˜๋‹ค.
    • ํด๋ผ์ด์–ธํŠธ์˜ ์ƒํƒœ๋‚˜ ๊ณผ๊ฑฐ ์—ฐ๊ฒฐํ–ˆ๋˜ ๊ธฐ๋ก ๋“ฑ์„ ์‹ ๊ฒฝ์“ฐ์ง€ ์•Š๊ณ , ๊ทธ๋ƒฅ ๊ทธ ์ˆœ๊ฐ„ ์š”๊ตฌํ•˜๋Š” ๊ฒƒ๋งŒ์„ ์ฒ˜๋ฆฌํ•œ๋‹ค.
    • ์ด๋Ÿฌํ•œ ํŠน์ง• ๋•๋ถ„์— ๊ฐ„๋‹จํ•˜๊ณ  ๋น ๋ฅด๊ฒŒ ํ”„๋กœํ† ์ฝœ์ด ๋™์ž‘ํ•  ์ˆ˜ ์žˆ๋‹ค.

(2) HTTP ์—ฐ๊ฒฐ ์ข…๋ฅ˜

HTTP๋Š” ์–ด๋–ป๊ฒŒ ์—ฐ๊ฒฐ์„ ํ•˜๋Š๋ƒ์— ๋”ฐ๋ผ์„œ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๋ถ„๋ฅ˜ํ•  ์ˆ˜ ์žˆ๋‹ค.

    1. non-persistent HTTP
    • HTTP์˜ ์ดˆ๊ธฐ ๋ชจ๋ธ๋กœ, ํ•œ๋ฒˆ์˜ ์—ฐ๊ฒฐ์— 1๊ฐœ์˜ ์ปจํ…์ธ ๋ฅผ ์ฒ˜๋ฆฌํ•˜๋Š” ํ˜•์‹์ด๋‹ค.
    1. persistent HTTP
    • ํ•œ ๋ฒˆ ์—ฐ๊ฒฐํ•˜๋Š” ๋™์•ˆ์— ์ปจํ…์ธ ๋ฅผ ๊ณ„์†ํ•ด์„œ ๊ตํ™˜ํ•˜๋Š” ํ˜•์‹์ด๋‹ค.
    • TCP๋กœ ์ฒ˜์Œ ์—ฐ๊ฒฐํ•˜๋Š”๋ฐ RTT(Round Trip Time)์ด ๋„ˆ๋ฌด ์˜ค๋ž˜ ๊ฑธ๋ ค์„œ ๊ณ ์•ˆ๋œ ์—ฐ๊ฒฐ ๋ฐฉ์‹์ด๋‹ค.
    • RTT๋Š” ํ•œ ํŒจํ‚ท์ด end to end๋กœ one-round-trip ํ•˜๋Š”๋ฐ(๋‹ค์‹œ ๋˜๋Œ์•„์˜ค๋Š”๋ฐ) ์†Œ์š”๋˜๋Š” delay ์‹œ๊ฐ„์„ ๋‚˜ํƒ€๋‚ธ๋‹ค.

(3) HTTP request/response messages

HTTP ํ”„๋กœํ† ์ฝœ์— ์‚ฌ์šฉ๋˜๋Š” ๋ฉ”์‹œ์ง€๋“ค์€ ASCII๋กœ ์ž‘์„ฑ๋˜์–ด ์ผ๋ฐ˜ ์‚ฌ์šฉ์ž๋“ค์ด ์ฝ์„ ์ˆ˜ ์žˆ๋Š” ํ˜•ํƒœ์ด๋‹ค. HTTP ํ”„๋กœํ† ์ฝœ ๋ฉ”์„ธ์ง€๋Š” ํฌ๊ฒŒ HTTP request์™€ HTTP response๋กœ ๊ตฌ๋ถ„ํ•  ์ˆ˜ ์žˆ๋‹ค.

HTTP request message

์ด๋ฆ„ ๊ทธ๋Œ€๋กœ ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์„œ๋ฒ„์—๊ฒŒ ์ปจํ…์ธ ๋ฅผ ์š”๊ตฌํ•  ๋•Œ ์‚ฌ์šฉ๋˜๋Š” ๋ฉ”์‹œ์ง€๋กœ, ์•„๋ž˜์™€ ๊ฐ™์€ ๊ตฌ์กฐ๋กœ ๋˜์–ด ์žˆ๋‹ค.

    1. request line
    • HTTP request ๋ฉ”์‹œ์ง€์˜ ๊ฐ€์žฅ ์ฒซ๋ฒˆ์งธ ์ค„์— ์œ„์น˜ํ•œ๋‹ค.
    • GET, POST, PUT, DELETE์™€ ๊ฐ™์€ ๋ฉ”์†Œ๋“œ + ์š”์ฒญํ•˜๋Š” object + ํ”„๋กœํ† ์ฝœ ๋ฒ„์ „ ์ •๋ณด ๋“ฑ์œผ๋กœ ์ด๋ฃจ์–ด์ ธ ์žˆ๋‹ค.
    1. header line
    • ์ฃผ์š” ๋‚ด์šฉ๋“ค์„ ๋‹ด๊ณ  ์žˆ๋‹ค.
    • ์„œ๋ฒ„ ํ˜ธ์ŠคํŠธ ์ฃผ์†Œ, ํด๋ผ์ด์–ธํŠธ ์‚ฌ์šฉ์ž ์ •๋ณด, ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์ง€์›ํ•˜๋Š” ์–ธ์–ด / ํ˜•์‹ / ํŒŒ์ผ ๋“ฑ์„ ๋‚˜ํƒ€๋‚ธ๋‹ค.

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

๊ฐ™์€ ๋งฅ๋ฝ์œผ๋กœ ์‚ฌ์šฉ์ž๊ฐ€ ๊ตฌ๊ธ€ ๊ฒ€์ƒ‰์„ ํ• ๋•Œ, ์‚ฌ์šฉ์ž๊ฐ€ ์ž…๋ ฅํ•œ ๊ฒ€์ƒ‰์–ด๋ฅผ POST ๋ฉ”์†Œ๋“œ๋ฅผ ํ†ตํ•ด ์„œ๋ฒ„์—๊ฒŒ ๋„˜๊ฒจ์ฃผ๋Š”๊ฒŒ ์ผ๋ฐ˜์ ์ด๋‹ค. ํ•˜์ง€๋งŒ, POST ๋ฉ”์†Œ๋“œ๋ณด๋‹ค GET ๋ฉ”์†Œ๋“œ๊ฐ€ ๋” ๊ฐ„๋‹จํ•˜๋ฏ€๋กœ, GET ๋ฉ”์†Œ๋“œ์— ๊ฒ€์ƒ‰์–ด๋ฅผ parameter๋กœ ๋„˜๊ฒจ์ฃผ๋Š” ํ˜•ํƒœ๋กœ ์ด์šฉํ•˜๊ธฐ๋„ ํ•œ๋‹ค.

HTTP response message

์„œ๋ฒ„๊ฐ€ ํด๋ผ์ด์–ธํŠธ์—๊ฒŒ ๋ณด๋‚ผ ๋•Œ ์‚ฌ์šฉ๋˜๋Š” ๋ฉ”์‹œ์ง€๋กœ, ์•„๋ž˜์™€ ๊ฐ™์€ ๊ตฌ์กฐ๋กœ ๋˜์–ด ์žˆ๋‹ค.

Cookies, Web caches (Proxy server)

Cookie

์ฟ ํ‚ค๋Š” ๋ฌธ์ž์™€ ์ˆซ์ž์˜ ์กฐํ•ฉ์œผ๋กœ ๋œ ์ž‘์€ ํŒŒ์ผ์ด๋‹ค. ์‰ฝ๊ฒŒ ๋งํ•ด, ์„œ๋ฒ„๊ฐ€ ์ฃผ๋Š” ์ผ์ข…์˜ ์ธ๋ฑ์Šค์ด๋‹ค.

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

์‚ฌ์šฉ์ž๊ฐ€ ํŠน์ • ์‚ฌ์ดํŠธ์— ์ฒ˜์Œ ์ ‘์†ํ•˜๋ฉด, ๊ทธ ์‚ฌ์ดํŠธ ์„œ๋ฒ„๋Š” ์‚ฌ์šฉ์ž์—๊ฒŒ Cookie header๋ผ๋Š” ์ˆซ์ž๋ฅผ ๋ถ€์—ฌํ•ด์ค€๋‹ค. ๋ธŒ๋ผ์šฐ์ €๋Š” ๋ถ€์—ฌ๋ฐ›์€ Cookie header์™€ ์‚ฌ์ดํŠธ ์ด๋ฆ„์„ ์กฐํ•ฉํ•˜์—ฌ ๋งŒ๋“ค์–ด์ง„ ์ฟ ํ‚ค ํŒŒ์ผ์„ ์‚ฌ์šฉ์ž์˜ ์ปดํ“จํ„ฐ์— ์ €์žฅํ•œ๋‹ค.

์ดํ›„ ์‚ฌ์šฉ์ž๊ฐ€ ๊ทธ ์‚ฌ์ดํŠธ์— ์ ‘์†ํ•  ๋•Œ๋งˆ๋‹ค ํ•ด๋‹น ์ฟ ํ‚คํŒŒ์ผ์„ ๋ณด๋‚ด์ฃผ๋ฉด ์„œ๋ฒ„๋Š” ์ด๋ฅผ ํ†ตํ•ด ์‚ฌ์šฉ์ž๋ฅผ ์‹๋ณ„ํ•  ์ˆ˜ ์žˆ๋‹ค.

์ด์ฒ˜๋Ÿผ ์ฟ ํ‚ค๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด HTTP์˜ statelessํ•œ ํŠน์„ฑ์„ stateํ•˜๊ฒŒ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋‹ค.

์ „์ฒด์ ์ธ ๋™์ž‘ ๊ณผ์ •์€ ์•„๋ž˜์™€ ๊ฐ™๋‹ค.

  • (1) ์„œ๋ฒ„๊ฐ€ cookie๋ฅผ initiate ํ•ด set-cookie ๋ผ๋Š” ํ•„๋“œ๋กœ ๋„ฃ์–ด response
  • (2) ๋‹ค์Œ์— ๋‹ค์‹œ ์š”์ฒญํ•  ๋•Œ cookie ๊ฐ’์„ ๋‹ด์•„์„œ ์š”์ฒญ
    • ์„œ๋ฒ„๋Š” ํ•ด๋‹น ํด๋ผ์ด์–ธํŠธ๋ฅผ cookie๋กœ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ์Œ
  • ํด๋ผ์ด์–ธํŠธ๋Š” ์ปดํ“จํ„ฐ๋ฅผ ๊ป๋‹ค ์ผœ๋”๋ผ๋„ cookie๊ฐ’์œผ๋กœ ๋‹ค์‹œ ์š”์ฒญํ•  ์ˆ˜ ์žˆ์Œ

์œ„์˜ ๋‚ด์šฉ๋“ค์„ ์ข…ํ•ฉํ•ด๋ณด์•˜์„ ๋•Œ, ์ฟ ํ‚ค๋ฅผ ์‚ฌ์šฉํ•˜๋ ค๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์€ 4๊ฐ€์ง€ ๊ตฌ์„ฑ์š”์†Œ๊ฐ€ ํ•„์š”ํ•˜๋‹ค.

  • HTTP response ๋ฉ”์‹œ์ง€์˜ Cookie header line
  • HTTP request ๋ฉ”์‹œ์ง€์˜ Cookie header line (HTTP response ๋ฉ”์‹œ์ง€ ๋ฐ”๋กœ ๋‹ค์Œ์— ๋“ฑ์žฅ)
  • ํด๋ผ์ด์–ธํŠธ์˜ ์ปดํ“จํ„ฐ์— ์ €์žฅ๋˜๋Š” ์ฟ ํ‚คํŒŒ์ผ๊ณผ ์ด๋ฅผ ๊ด€๋ฆฌํ•ด์ฃผ๋Š” ๋ธŒ๋ผ์šฐ์ €
  • ์›น์‚ฌ์ดํŠธ์—์„œ ์‚ฌ์šฉ์ž๋“ค์˜ ์ฟ ํ‚คํŒŒ์ผ์„ ๊ด€๋ฆฌํ•  ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค

Cookie๊ฐ€ ์‚ฌ์šฉ๋˜๋Š” ๊ณณ์€ ์•„๋ž˜์™€ ๊ฐ™๋‹ค.

  • ์›น๋ธŒ๋ผ์šฐ์ €์— ๋Œ€ํ•œ ๋กœ๊ทธ์ธ ์ •๋ณด ๊ธฐ์–ต (๋กœ๊ทธ์ธํ–ˆ๋˜ ์›นํŽ˜์ด์ง€์— ๋‹ค์‹œ ์ ‘์†ํ•ด๋ณด๋ฉด ๋กœ๊ทธ์ธ ์ •๋ณด๊ฐ€ ๊ธฐ์–ต๋ผ ์žˆ๋Š” ๊ฒƒ)
  • ์˜จ๋ผ์ธ ๋ชฐ์—์„œ์˜ ๊ตฌ๋งค๋ชฉ๋ก ๊ธฐ๋Šฅ
  • email ์ •๋ณด ๊ธฐ์–ต

๋“ฑ๋“ฑ state๊ฐ€ ํ•„์š”ํ•œ ๊ณณ์—์„œ ์‚ฌ์šฉ๋œ๋‹ค.

ํ•˜์ง€๋งŒ, ์ฟ ํ‚ค๋Š” ์‚ฌ์šฉ์ž ์ •๋ณด๋ฅผ ๋‹ด๊ณ  ์žˆ๊ธฐ ๋•Œ๋ฌธ์— privacy ์ด์Šˆ๊ฐ€ ์žˆ๋‹ค. ๊ทธ๋ž˜์„œ ๋ณดํ†ต ์„œ๋ฒ„์ชฝ์—์„œ๋Š” ์ฟ ํ‚ค๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ, ๊ฐœ์ธ์ •๋ณดํ™œ์šฉ ๋™์˜๊ฐ€ ์ˆ˜๋ฐ˜๋œ๋‹ค.

Web caches (Proxy server)

์บ์‹œ๋ผ๋Š” ๋ง์€ ์ปดํ“จํ„ฐ์˜ ๋‹ค์–‘ํ•œ ๋ถ„์•ผ์—์„œ ์ž์ฃผ ์“ฐ์ธ๋‹ค. CPU์—์„œ์˜ ์บ์‹œ ๋ฉ”๋ชจ๋ฆฌ, ์šด์˜์ฒด์ œ์—์„œ์˜ ํŽ˜์ด์ง€ ์บ์‹œ, ํŒŒ์ผ ์‹œ์Šคํ…œ์—์„œ๋„ ์บ์‹œ๋ผ๋Š” ๋ง์ด ๋“ฑ์žฅํ•  ์ •๋„๋กœ ๋‹ค์–‘ํ•œ ๋ถ„์•ผ์—์„œ ์“ฐ์ธ๋‹ค.

๊ทธ ์ค‘์—์„œ๋„ ์›น์—์„œ ์“ฐ์ด๋Š” ์›น ์บ์‹œ๋Š” ์„œ๋ฒ„์™€ ํด๋ผ์ด์–ธํŠธ ์‚ฌ์ด์—์„œ ์„œ๋ฒ„๋กœ๋ถ€ํ„ฐ ์ปจํ…์ธ ๋ฅผ ๋” ๋นจ๋ฆฌ ๋ฐ›์•„, ํด๋ผ์ด์–ธํŠธ์—๊ฒŒ ๋” ๋น ๋ฅด๊ฒŒ ์ปจํ…์ธ ๋ฅผ ์ œ๊ณตํ•˜๊ธฐ ์œ„ํ•ด์„œ ์‚ฌ์šฉํ•œ๋‹ค.

์›น ์บ์‹œ๋Š” ํ”„๋ก์‹œ ์„œ๋ฒ„(Proxy server)๋ฅผ ํ†ตํ•ด ๊ตฌํ˜„ํ•˜๋ฉฐ, ํด๋ผ์ด์–ธํŠธ์™€ ์„œ๋ฒ„ ์‚ฌ์ด์— ์œ„์น˜ํ•œ๋‹ค.

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

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

  • ์›น ์บ์‹œ์˜ ์žฅ์ 
    • (1) ์š”์ฒญ-์‘๋‹ต ์‹œ๊ฐ„(response time)์„ ์ค„์ผ ์ˆ˜ ์žˆ๋‹ค.
      • ์›น ์บ์‹œ๋Š” ๊ตณ์ด ๋ฉ€๋ฆฌ ์žˆ๋Š” ์˜ค๋ฆฌ์ง€๋„ ์„œ๋ฒ„๋กœ ๊ฐ€์ง€ ์•Š๊ณ , ๊ฐ€๊นŒ์ด ์žˆ๋Š” ํ”„๋ก์‹œ ์„œ๋ฒ„๋กœ ๊ฐ€์„œ ์ •๋ณด๋ฅผ ๊ฐ€์ ธ์˜ค๊ธฐ ๋•Œ๋ฌธ์— ์š”์ฒญ-์‘๋‹ต ์‹œ๊ฐ„์„ ์ค„์ผ ์ˆ˜ ์žˆ๋‹ค.
    • (2) ์„œ๋ฒ„์˜ ํŠธ๋ž˜ํ”ฝ(traffic)์„ ์ค„์ผ ์ˆ˜ ์žˆ๋‹ค.
      • ์›น ์บ์‹œ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ํด๋ผ์ด์–ธํŠธ์˜ ์š”์ฒญ์ด ๋ชจ๋‘ ์„œ๋ฒ„๋กœ ๊ฐ€๋Š” ๊ฒƒ์ด ์•„๋‹Œ, ํ”„๋ก์‹œ ์„œ๋ฒ„๋กœ ํŠธ๋ž˜ํ”ฝ์ด ๋ถ„์‚ฐ๋˜๊ธฐ ๋•Œ๋ฌธ์—, ๊ทธ๋งŒํผ์˜ ์š”์ฒญ์— ๋Œ€ํ•œ ํŠธ๋ž˜ํ”ฝ์„ ์•„๋‚„ ์ˆ˜ ์žˆ๋‹ค.
      • ๋งŒ์•ฝ 40%๊ฐ€ hit๋˜์–ด ์˜ค๋ฆฌ์ง€๋„ ์„œ๋ฒ„๋กœ ์˜ค์ง€ ์•Š๋Š”๋‹ค๋ฉด, 40%๋งŒํผ ํŠธ๋ž˜ํ”ฝ์„ ์•„๋‚„ ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์ด๋‹ค.
  • ์›น ์บ์‹œ์˜ ๋‹จ์ 
    • ํ”„๋ก์‹œ ์„œ๋ฒ„๊ฐ€ ์ œ๊ณตํ•˜๋Š” ์ปจํ…์ธ ๋Š” ์ตœ์‹  ์ปจํ…์ธ ๊ฐ€ ์•„๋‹ ์ˆ˜ ์žˆ๋‹ค.
      • ๋งŒ์•ฝ ์˜ค๋ฆฌ์ง€๋„ ์„œ๋ฒ„์—์„œ ์ปจํ…์ธ ๋ฅผ ๊ณ„์†ํ•ด์„œ ์—…๋ฐ์ดํŠธ ํ•˜๊ณ  ์žˆ์ง€๋งŒ, ํ”„๋ก์‹œ ์„œ๋ฒ„๋Š” ์˜ค๋ž˜๋œ ์ปจํ…์ธ ๋ฅผ ์ œ๊ณตํ•  ์ˆ˜ ์žˆ๋‹ค.

3. DNS: domain name system

DNS๋Š” ํ•œ๋งˆ๋””๋กœ ๋งํ•ด์„œ ์‚ฌ๋žŒ๋“ค์ด ์“ฐ๊ธฐ ํŽธํ•œ ํ˜ธ์ŠคํŠธ ๋„ค์ž„(www.naver.com)์„ ์ปดํ“จํ„ฐ๊ฐ€ ์•Œ์•„๋“ค์„ ์ˆ˜ ์žˆ๋Š” ์•„์ดํ”ผ ์ฃผ์†Œ(125.209.222.141)๋กœ ๋ฐ”๊ฟ”์ฃผ๋Š” ์‹œ์Šคํ…œ์ด๋‹ค.

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

๊ทธ๋ž˜์„œ DNS ๋ผ๋Š” ์„œ๋น„์Šค๋ฅผ ์ด์šฉํ•ด ์˜๋ฌธ ์ฃผ์†Œ์™€ IP ์ฃผ์†Œ๋ฅผ ์‰ฝ๊ฒŒ ๋งคํ•‘(mapping)ํ•˜์—ฌ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์ด๋‹ค.

DNS๊ฐ€ ์ œ๊ณตํ•˜๋Š” ์„œ๋น„์Šค

    1. Hostname์„ IP ์ฃผ์†Œ๋กœ ๋ฐ”๊ฟ”์ฃผ๋Š” ์„œ๋น„์Šค (hostname to IP address translation)
    • DNS์˜ ๊ฐ€์žฅ ๊ธฐ๋ณธ์ ์ธ ์„œ๋น„์Šค์ด๋‹ค.
    1. Host aliasing
    • ํ˜ธ์ŠคํŠธ ์ด๋ฆ„์ด ๋„ˆ๋ฌด ๊ธธ ๊ฒฝ์šฐ, ์ค„์—ฌ์„œ ๋ถ€๋ฅผ ์ˆ˜ ์žˆ๋„๋ก ๋งคํ•‘ ์ •๋ณด๋ฅผ ์ œ๊ณตํ•  ์ˆ˜ ์žˆ๋‹ค.
    • ์˜ˆ๋ฅผ ๋“ค์–ด ์šฐ๋ฆฌ๊ฐ€ ์ž˜ ์•Œ๊ณ ์žˆ๋Š” www.naver.com์˜ ์‹ค์ œ ํ˜ธ์ŠคํŠธ ์ด๋ฆ„์€ www.naver.com.nheos.com์ด๋‹ค. ์ด๊ฒŒ ๋„ˆ๋ฌด ๊ธฐ๋‹ˆ๊นŒ ์ „์ž์™€ ๊ฐ™์ด ์ค„์—ฌ์„œ ๋ถ€๋ฅด๋Š” ๊ฒƒ์ด ํŽธํ•˜๋‹ค.
    1. ๋„๋ฉ”์ธ ์ด๋ฆ„์œผ๋กœ ๋ฉ”์ผ ์„œ๋ฒ„์˜ ํ˜ธ์ŠคํŠธ ์ด๋ฆ„ ์ฐพ๊ธฐ (Mail server aliasing)
    • ์‚ฌ์šฉ์ž๋“ค์ด ์“ฐ๋Š” ๋ฉ”์ผ ์ฃผ์†Œ๋ฅผ ์‹ค์ œ ๋ฉ”์ผ ์„œ๋น„์Šค๋ฅผ ์ œ๊ณตํ•˜๋Š” ์„œ๋ฒ„์™€ ๋งคํ•‘์‹œ์ผœ์ฃผ๋Š” ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•  ์ˆ˜ ์žˆ๋‹ค.
    • ์˜ˆ๋ฅผ ๋“ค์–ด ~~~@naver.com ์ด๋ผ๋Š” ์ด๋ฆ„์œผ๋กœ ๋ฉ”์ผ ์„œ๋น„์Šค๋ฅผ ์ด์šฉ ํ–ˆ์„ ๋•Œ, ํ•ด๋‹น ๋ฉ”์ผ ์„œ๋น„์Šค๋ฅผ ๋‹ด๋‹นํ•˜๋Š” ๋ฉ”์ผ ์„œ๋ฒ„์˜ ํ˜ธ์ŠคํŠธ๋ช…์€ mx1.naver.com ์ด๋‹ค.
    1. ๋™์ผ ๋„๋ฉ”์ธ ์ฃผ์†Œ์— ์ ‘๊ทผํ•˜๋Š” ํด๋ผ์ด์–ธํŠธ๋“ค์—๊ฒŒ IP ์ฃผ์†Œ ๋ถ„์‚ฐ ์‹œ์ผœ ์ฃผ๊ธฐ (Load distribution)
    • ์„œ๋ฒ„์— ์—ฌ๋Ÿฌ๊ฐœ์˜ IP ์ฃผ์†Œ๋ฅผ ๋Œ€์‘ํ•˜๊ฒŒ ํ•ด์คŒ์œผ๋กœ์จ ์„œ๋ฒ„์˜ ๋ถ€๋‹ด์„ ๋ถ„์‚ฐํ•ด์ฃผ๋Š” ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•  ์ˆ˜ ์žˆ๋‹ค.
    • ์˜ˆ๋ฅผ ๋“ค์–ด ๋„ค์ด๋ฒ„ ์„œ๋ฒ„์˜ IP ์ฃผ์†Œ๋Š” 125.209.222.141๊ณผ 223.130.195.95 ๋‘ ๊ฐœ์ด๋‹ค.
    • ์ด์ฒ˜๋Ÿผ IP ์ฃผ์†Œ๋ฅผ ์—ฌ๋Ÿฌ๊ฐœ๋กœ ๋Œ€์‘์‹œํ‚ด์œผ๋กœ์จ ๋„ค์ด๋ฒ„ ์„œ๋ฒ„์˜ ๋ถ€๋‹ด์„ ๋ถ„์‚ฐํ•ด์ค„ ์ˆ˜ ์žˆ๋‹ค.
    • ํ•˜์ง€๋งŒ, ๊ทธ๋ ‡๋‹ค๊ณ  ํ•ด์„œ ๋„ค์ด๋ฒ„ ์„œ๋ฒ„๋ฅผ ๋‘๊ฐœ์˜ ์ปดํ“จํ„ฐ๊ฐ€ ๋‹ด๋‹นํ•˜๊ณ  ์žˆ๋‹ค๋Š” ๊ฒƒ์€ ์•„๋‹ˆ๋‹ค.

DNS ๊ตฌ์กฐ

  • DNS๋Š” ๊ณ„์ธต์ ์ธ ๊ตฌ์กฐ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค.
    • ์œ„์˜ ๊ทธ๋ฆผ์—์„œ ๊ฐ€์žฅ ์ตœ์ƒ์œ„์— ์œ„์น˜ํ•œ DNS ์„œ๋ฒ„๋ฅผ ๋ฃจํŠธ ๋„ค์ž„ ์„œ๋ฒ„๋ผ ํ•˜๊ณ ,
    • ๊ทธ ๋ฐ”๋กœ ์•„๋ž˜์— ์žˆ๋Š” DNS ์„œ๋ฒ„๋ฅผ TLD ๋„ค์ž„ ์„œ๋ฒ„๋ผ๊ณ  ํ•œ๋‹ค. (Top Level Domain name)
    • ๊ทธ๋ฆฌ๊ณ  ์‹ค์ œ IP ์ฃผ์†Œ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” DNS ์„œ๋ฒ„๋ฅผ Authoritative name server๋ผ๊ณ  ํ•œ๋‹ค.

  • ๋”ฐ๋ผ์„œ ๋งŒ์•ฝ ์‚ฌ์šฉ์ž๊ฐ€ www.amazon.com ๋ผ๊ณ  ์ฃผ์†Œ์ฐฝ์— ์ž…๋ ฅํ•˜๋ฉด,
    • ๋ฃจํŠธ ๋„ค์ž„ ์„œ๋ฒ„๊ฐ€ .com์„ ๋‹ด๋‹นํ•˜๋Š” TLD ๋„ค์ž„ ์„œ๋ฒ„๋ฅผ ์ฐพ์•„์ค€๋‹ค.
    • .com ์„ ๋‹ด๋‹นํ•˜๋Š” TLD ๋„ค์ž„์„œ๋ฒ„๋Š” amazon.com์„ ๋‹ด๋‹นํ•˜๋Š” DNS ์„œ๋ฒ„๋ฅผ ์ฐพ์•„์ค„ ๊ฒƒ์ด๊ณ ,
    • ๊ฒฐ๊ตญ ์›ํ•˜๋Š” ์›น์‚ฌ์ดํŠธ์˜ IP ์ฃผ์†Œ๋ฅผ ์ฐพ์„ ์ˆ˜ ์žˆ๊ฒŒ ๋œ๋‹ค.

๋ฃจํŠธ ๋„ค์ž„ ์„œ๋ฒ„๋Š” ์ดˆ๊ธฐ์— 13๊ฐœ๋งŒ ์กด์žฌํ–ˆ๋‹ค. ๋Œ€๋ถ€๋ถ„์ด ๋ฏธ๊ตญ์— ์กด์žฌํ–ˆ์œผ๋ฏ€๋กœ, ๊ฐ Local DNS ์„œ๋ฒ„๊ฐ€ ๋ฃจํŠธ ๋„ค์ž„ ์„œ๋ฒ„์— ์ฟผ๋ฆฌ๋ฅผ ๋‚ ๋ฆฌ๊ธฐ ์œ„ํ•ด์„œ๋Š” ํ•ด์™ธ์— ์กด์žฌํ•˜๋Š” ๋ฃจํŠธ ๋„ค์ž„ ์„œ๋ฒ„์— ์ ‘๊ทผํ•ด์•ผ๋งŒ ํ–ˆ๋‹ค.
ํ•˜์ง€๋งŒ, ํ˜„์žฌ๋Š” 13๊ฐœ์˜ ๋ฃจํŠธ ๋„ค์ž„ ์„œ๋ฒ„๋ฅผ ๋ฏธ๋Ÿฌ๋งํ•˜๋Š” ์„œ๋ฒ„๊ฐ€ ์ „์„ธ๊ณ„์— ์žˆ์œผ๋ฏ€๋กœ ๊ทธ๊ฑธ ์ด์šฉํ•˜๋ฉด ๋œ๋‹ค. ํ˜„์žฌ, ์šฐ๋ฆฌ๋‚˜๋ผ์—์„œ ๊ฐ€์žฅ ๊ฐ€๊นŒ์šด ๊ฑด ๋„์ฟ„์— ์žˆ๋Š” ์„œ๋ฒ„์ด๋‹ค.

  • ๋งŒ์ผ DNS ์„œ๋ฒ„๋ฅผ ํ•˜๋‚˜๋กœ ๋‘”๋‹ค๋ฉด?
    • ์‹œ๊ฐ„์ด ์˜ค๋ž˜ ๊ฑธ๋ฆผ (traffic volume / distant centralized database)
    • Single Point of Failure (ํ•˜๋‚˜์˜ centralized server die > ์„œ๋น„์Šค ์ค‘๋‹จ)
    • maintenance

Local DNS ์„œ๋ฒ„

Local DNS ์„œ๋ฒ„๋Š” DNS ์„œ๋น„์Šค๋ฅผ ์ด์šฉํ•  ๋•Œ, ๋„์™€์ฃผ๋Š” ์—ญํ• ์„ ํ•œ๋‹ค.

์ฃผ๋กœ KT๋‚˜ SKT ๊ฐ™์€ ISP๊ฐ€ ๊ฐ€์ง€๊ณ  ์žˆ์œผ๋ฉฐ, ์‚ฌ์šฉ์ž๊ฐ€ DNS ์ฟผ๋ฆฌ๋ฅผ ๋‚ ๋ฆฌ๋ฉด local DNS ์„œ๋ฒ„๊ฐ€ ๊ฐ€์žฅ ๋จผ์ € ๋ฐ›๊ฒŒ ๋œ๋‹ค.

DNS ์ฟผ๋ฆฌ๋ฅผ ์ฒ˜๋ฆฌํ•˜๋Š” ๋ฐฉ์‹์— ๋”ฐ๋ผ Iterative query์™€ recursive query๋กœ ๋ถ„๋ฅ˜ํ•  ์ˆ˜ ์žˆ๋‹ค.

Iterative query

  1. ์‚ฌ์šฉ์ž๊ฐ€ ํŠน์ • ํ˜ธ์ŠคํŠธ ์ด๋ฆ„์˜ IP ์ฃผ์†Œ๋ฅผ ์š”์ฒญํ•˜๋Š” ์ฟผ๋ฆฌ๋ฅผ ๋‚ ๋ฆฌ๋ฉด, Local DNS ์„œ๋ฒ„๊ฐ€ ๋จผ์ € ๋ฐ›๋Š”๋‹ค.
  2. Local DNS ์„œ๋ฒ„๋Š” ๋ฃจํŠธ ๋„ค์ž„ ์„œ๋ฒ„์—๊ฒŒ ์ฟผ๋ฆฌ๋ฅผ ๋‚ ๋ฆฌ๊ณ , ๋ฃจํŠธ ๋„ค์ž„ ์„œ๋ฒ„๋Š” .edu์— ํ•ด๋‹นํ•˜๋Š” TLD๋ฅผ ์•Œ๋ ค์ค€๋‹ค.
  3. Local DNS ์„œ๋ฒ„๋Š” edu์— ํ•ด๋‹นํ•˜๋Š” TLD์—๊ฒŒ ์ฟผ๋ฆฌ๋ฅผ ๋‚ ๋ฆฌ๊ณ , TLD๋Š” umass.edu์— ํ•ด๋‹นํ•˜๋Š” DNS ์„œ๋ฒ„๋ฅผ ์•Œ๋ ค์ค€๋‹ค.
  4. Local DNS ์„œ๋ฒ„๋Š” umass.edu์— ํ•ด๋‹นํ•˜๋Š” DNS ์„œ๋ฒ„์—๊ฒŒ ์ฟผ๋ฆฌ๋ฅผ ๋‚ ๋ฆฌ๊ณ , ํ•ด๋‹น DNS ์„œ๋ฒ„๋Š” gaia.cs.umass.edu์— ํ•ด๋‹นํ•˜๋Š” IP ์ฃผ์†Œ๋ฅผ ์•Œ๋ ค์ค€๋‹ค. ์ฆ‰, umass.edu๋ฅผ ์ฑ…์ž„์ง€๋Š” DNS ์„œ๋ฒ„๊ฐ€ authoritative name ์„œ๋ฒ„์ธ ๊ฒƒ์ด๋‹ค.
  5. ๋งˆ์ง€๋ง‰์œผ๋กœ Local DNS ์„œ๋ฒ„๊ฐ€ ์‚ฌ์šฉ์ž์—๊ฒŒ IP ์ฃผ์†Œ๋ฅผ ์ „๋‹ฌํ•œ๋‹ค.

Recursive query

  1. ์‚ฌ์šฉ์ž๊ฐ€ ํŠน์ • ํ˜ธ์ŠคํŠธ ์ด๋ฆ„์˜ IP ์ฃผ์†Œ๋ฅผ ์š”์ฒญํ•˜๋Š” ์ฟผ๋ฆฌ๋ฅผ ๋‚ ๋ฆฌ๋ฉด, Local DNS ์„œ๋ฒ„๊ฐ€ ๋จผ์ € ๋ฐ›๋Š”๋‹ค.
  2. Local DNS ์„œ๋ฒ„๋Š” ๋ฃจํŠธ ๋„ค์ž„ ์„œ๋ฒ„์—๊ฒŒ ์ฟผ๋ฆฌ๋ฅผ ๋‚ ๋ฆฌ๊ณ , ๋ฃจํŠธ ๋„ค์ž„ ์„œ๋ฒ„๋Š” .edu์— ํ•ด๋‹นํ•˜๋Š” TLD ์„œ๋ฒ„์—๊ฒŒ ์ฟผ๋ฆฌ๋ฅผ ๋‚ ๋ฆฐ๋‹ค.
  3. edu์— ํ•ด๋‹นํ•˜๋Š” TLD ์„œ๋ฒ„๋Š” umass.edu์— ํ•ด๋‹นํ•˜๋Š” DNS ์„œ๋ฒ„์—๊ฒŒ ์ฟผ๋ฆฌ๋ฅผ ๋‚ ๋ฆฐ๋‹ค.
  4. umass.edu์— ํ•ด๋‹นํ•˜๋Š” DNS ์„œ๋ฒ„๋Š” gaia.cs.umass.edu์— ํ•ด๋‹นํ•˜๋Š” IP ์ฃผ์†Œ๋ฅผ TLD ์„œ๋ฒ„์—๊ฒŒ ์•Œ๋ ค์ค€๋‹ค. ์ฆ‰, umass.edu๋ฅผ ์ฑ…์ž„์ง€๋Š” DNS ์„œ๋ฒ„๊ฐ€ authoritative name ์„œ๋ฒ„์ธ ๊ฒƒ์ด๋‹ค.
  5. TLD ์„œ๋ฒ„๋Š” ๋ฃจํŠธ ๋„ค์ž„ ์„œ๋ฒ„์—๊ฒŒ IP ์ฃผ์†Œ๋ฅผ ์•Œ๋ ค์ค€๋‹ค.
  6. ๋ฃจํŠธ ๋„ค์ž„ ์„œ๋ฒ„๋Š” Local DNS ์„œ๋ฒ„์—๊ฒŒ IP ์ฃผ์†Œ๋ฅผ ์•Œ๋ ค์ค€๋‹ค.
  7. ๋งˆ์ง€๋ง‰์œผ๋กœ Local DNS ์„œ๋ฒ„๊ฐ€ ์‚ฌ์šฉ์ž์—๊ฒŒ IP ์ฃผ์†Œ๋ฅผ ์ „๋‹ฌํ•œ๋‹ค.

DNS caching

DNS๋„ Local DNS ์„œ๋ฒ„๋ฅผ ํ†ตํ•ด caching์„ ํ•œ๋‹ค.

Local DNS ์„œ๋ฒ„์— ์ด์ „์— ์‚ฌ์šฉํ–ˆ๋˜ DNS ๋งคํ•‘ ์ •๋ณด๋ฅผ ์ €์žฅํ•ด ๋†“๊ณ , ๊ฐ™์€ ์งˆ์˜๊ฐ€ ์˜ค๋ฉด ๋น ๋ฅด๊ฒŒ ์ฒ˜๋ฆฌํ•˜๋Š” ๋ฐฉ์‹์ด๋‹ค. TTL(Time To Live) ๊ฐœ๋…์„ ์‚ฌ์šฉํ•˜์—ฌ, ํŠน์ • ๊ธฐ๊ฐ„๋™์•ˆ ์‚ฌ์šฉ๋˜์ง€ ์•Š์œผ๋ฉด ์ž๋™์œผ๋กœ ์‚ญ์ œ๋œ๋‹ค.

ํŠนํžˆ TLD ๋„ค์ž„ ์„œ๋ฒ„๋Š” Local DNS ์„œ๋ฒ„์— ์บ์‹ฑ๋˜์–ด ์žˆ๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋งŽ์œผ๋ฏ€๋กœ, ๋ฃจํŠธ ๋„ค์ž„ ์„œ๋ฒ„์—๊ฒŒ TLD ๋„ค์ž„ ์„œ๋ฒ„๋ฅผ ๋ฌผ์–ด๋ณด์ง€ ์•Š๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋Œ€๋‹ค์ˆ˜์ด๋‹ค.

4. P2P applications

Pure P2P architecture์— ๊ด€ํ•œ ๋‚ด์šฉ์€ ์ด ๊ณณ ์ฐธ์กฐ

(1) "Napster"

Napster๋Š” ์ž ๊พธ๋Ÿฌ๊ธฐ๋ผ๋Š” ๋œป์œผ๋กœ, ์˜จ๋ผ์ธ ์Œ์•… ํŒŒ์ผ ๊ณต์œ  ์„œ๋น„์Šค์˜€๋‹ค. (๊ฐœ๋ฐœ์ž ์ˆ€ ํŒจ๋‹์˜ ๋Œ€ํ•™์ƒ ์‹œ์ ˆ, ๊ทธ์˜ ๋ฃธ๋ฉ”์ดํŠธ๊ฐ€ ์Œ์•…์„ ๋‹ค์šด๋ฐ›๋Š๋ผ ์ƒˆ๋ฒฝ์— ๋งค์ผ ๊ฐ™์ด ์›น ํŽ˜์ด์ง€๋ฅผ ๋’ค์ ธ์„œ ์ˆ€ ํŒจ๋‹์ด ์ž ์„ ๋ชป ์žค๋‹ค๊ณ  ํ•œ๋‹ค. ๊ทธ๋ž˜์„œ ๋‹ต๋‹ตํ•œ ์ˆ€ ํŒจ๋‹์€ ์Œ์•… ํŒŒ์ผ ๊ณต์œ  ์„œ๋น„์Šค๋ฅผ ์ง์ ‘ ๋งŒ๋“ค์–ด๋ฒ„๋ ธ๊ณ , '์ž  ์ข€ ์ž์ž'๋ผ๋Š” ์˜๋ฏธ๊ฐ€ ๋งŒ๋“  "Napster"์— ๋‹ด๊ฒจ์žˆ๋‹ค๊ณ  ํ•œ๋‹ค.) (ํ˜„์žฌ๋Š” ์ €์ž‘๊ถŒ ๊ด€๋ จ ์†Œ์†ก ๋“ฑ์˜ ๋ฌธ์ œ ๋•Œ๋ฌธ์— ์„œ๋น„์Šค๊ฐ€ ์ค‘๋‹จ๋˜์—ˆ๋‹ค.)

  • Napster๋Š” ์ดˆ์ฐฝ๊ธฐ P2P ๋ชจ๋ธ๋กœ, **์ค‘์•™ํ™”๋œ ์„œ๋ฒ„(centralized server)**๋ฅผ ๊ฐ€์ง„๋‹ค.
    • (1) ํ”ผ์–ด(A)๋Š” ์„œ๋ฒ„์— ์—ฐ๊ฒฐํ•˜์—ฌ ์›ํ•˜๋Š” ํŒŒ์ผ์„ ์งˆ๋ฌธ(query)ํ•œ๋‹ค.
    • (2) ์„œ๋ฒ„๋Š” ํ”ผ์–ด(A)์—๊ฒŒ ํ•ด๋‹น ํŒŒ์ผ์„ ๊ฐ–๊ณ  ์žˆ๋Š” ๋‹ค๋ฅธ ํ”ผ์–ด(B)๋ฅผ ์•Œ๋ ค์ค€๋‹ค.
    • (3) ํ”ผ์–ด(A)๋Š” ํŒŒ์ผ์„ ๊ฐ€์ง„ ํ”ผ์–ด(B)์™€ ์—ฐ๊ฒฐํ•˜์—ฌ ํŒŒ์ผ์„ ์š”์ฒญํ•˜๊ณ , ์„œ๋ฒ„๋ฅผ ๊ฑฐ์น˜์ง€ ์•Š๊ณ  ํ”ผ์–ด๋“ค๋ผ๋ฆฌ ํŒŒ์ผ์„ ๊ณต์œ ํ•œ๋‹ค.

์ด์ฒ˜๋Ÿผ, P2P ๋ชจ๋ธ์€ ํŒŒ์ผ์˜ ๊ณต์œ  ์‹œ, ์ค‘์•™ ์„œ๋ฒ„๋ฅผ ๊ฑฐ์น˜์ง€ ์•Š๊ณ  ํด๋ผ์ด์–ธํŠธ ์ปดํ“จํ„ฐ๋ผ๋ฆฌ ์ง์ ‘ ํ†ต์‹ ํ•˜๋Š” ๋ฐฉ์‹์ด๋‹ค.

ํ•˜์ง€๋งŒ, Napster๋Š” ์ค‘์•™ ์ง‘์ค‘์‹ ๋””๋ ‰ํ† ๋ฆฌ(centralized directory)๋ฅผ ๊ฐ€์ง€๋Š”๋ฐ, ์ด ๊ฐ™์€ ๊ตฌ์กฐ๋Š” ์•„๋ž˜์™€ ๊ฐ™์€ ๋ฌธ์ œ๋ฅผ ๊ฐ€์ง„๋‹ค.

  • Robustness : single point of failure
    • centralized server๊ฐ€ fail๋˜๋ฉด ์„œ๋น„์Šค๋Š” ๋๋‚œ๋‹ค! (centralized service์˜ ๋‹จ์ )
  • Scalability : Performance bottleneck

(2) "Gnutella"

Gnutella๋Š” GNU ํšŒ์‚ฌ์— ๋‹ค๋‹ˆ๋˜ ๊ฐœ๋ฐœ์ž๋“ค์ด ๋งŒ๋“  ์„œ๋น„์Šค์ด๋‹ค. (๊ฐœ๋ฐœ์ž ์ค‘ ํ•œ ๋ช…์˜ ์™€์ดํ”„๊ฐ€ ๋ˆ„ํ…”๋ผ๋ฅผ ์ข‹์•„ํ•ด์„œ ์ด๋ฆ„์„ ์ด๋ ‡๊ฒŒ ๋งŒ๋“ค์—ˆ๋‹ค๊ณ  ํ•œ๋‹ค.)

  • Gnutella๋Š” ์ค‘์•™ ์„œ๋ฒ„๋ฅผ ๋‘์ง€ ์•Š๋Š” ๋ถ„์‚ฐํ˜• ์„œ๋น„์Šค์ด๋‹ค.
  • ํ•˜๋‚˜์˜ ์„œ๋ฒ„๊ฐ€ ๋ชจ๋“  ๊ฒƒ์„ ์•Œ๊ธฐ๋ณด๋‹ค, ํ•˜๋‚˜์˜ ํ”ผ์–ด๊ฐ€ ๋ช‡๊ฐœ์˜ ํ”ผ์–ด๋“ค์ด ๊ฐ€์ง„ ํŒŒ์ผ์„ ์•Œ๊ณ  ์žˆ๊ณ , ๊ทธ ํ”ผ์–ด๋“ค๋„ ๋ช‡ ๊ฐœ์˜ ํ”ผ์–ด๋“ค์ด ๊ฐ€์ง„ ํŒŒ์ผ์„ ์•„๋Š” ๊ตฌ์กฐ์ด๋‹ค.
  • ์ฆ‰ ๋‹ค๋‹จ๊ณ„์ฒ˜๋Ÿผ ๋ป—์–ด๋‚˜๊ฐ€ ๊ฒฐ๊ตญ ๋ชจ๋“  ํ”ผ์–ด๋“ค์ด ์—ฐ๊ฒฐ๋˜๋Š” ํ˜•ํƒœ์ด๋‹ค.
  • ์ž‘๋™ ๋ฐฉ์‹
    • (1) ์–ด๋Š ํ”ผ์–ด๊ฐ€ ์–ด๋–ค ํŒŒ์ผ์„ ์›ํ•˜๋ฉด ์ž์‹ ์ด ์•Œ๊ณ ์žˆ๋Š” ํ”ผ์–ด์—๊ฒŒ ์ฟผ๋ฆฌ๋ฅผ ๋‚ ๋ฆฐ๋‹ค.
    • (2) ์ฟผ๋ฆฌ๋ฅผ ๋ฐ›์€ ํ”ผ์–ด๋Š” ์ž๊ธฐ๊ฐ€ ํ•ด๋‹น ํŒŒ์ผ์„ ๊ฐ€์ง€๊ณ  ์žˆ์œผ๋ฉด ์ฟผ๋ฆฌ๋ฅผ ๋‚ ๋ฆฐ ํ”ผ์–ด์—๊ฒŒ ์•Œ๋ ค์ฃผ๊ณ , ์ž๊ธฐ๊ฐ€ ํ•ด๋‹น ํŒŒ์ผ์ด ์—†์œผ๋ฉด ์ž์‹ ์ด ์•Œ๊ณ ์žˆ๋Š” ํ”ผ์–ด์—๊ฒŒ ๋˜๋‹ค์‹œ ์ฟผ๋ฆฌ๋ฅผ ๋‚ ๋ฆฐ๋‹ค.
    • (3) ๊ทธ๋ ‡๊ฒŒ ์–ด๋Š ํ”ผ์–ด๊ฐ€ ํŒŒ์ผ์„ ๊ฐ€์ง€๊ณ  ์žˆ๋Š”์ง€ ์•Œ๊ฒŒ๋˜๋ฉด, ๊ทธ ์ค‘ ํ•˜๋‚˜์˜ ํ”ผ์–ด๋ฅผ ์„ ํƒํ•ด ํŒŒ์ผ์„ ๋ฐ›๋Š”๋‹ค.
    • (4) ํŒŒ์ผ ์ „์†ก์—๋Š” HTTP ํ”„๋กœํ† ์ฝœ์ด ์‚ฌ์šฉ๋œ๋‹ค. (GET ๋ฉ”์†Œ๋“œ ์‚ฌ์šฉ)

  • Gnutella๋Š” ๋ชจ๋“  ํ”ผ์–ด๋“ค์ด ์—ฐ๊ฒฐ๋˜์–ด ์žˆ๊ธฐ์— ์ƒ๊ธฐ๋Š” ๋‹จ์ ๋„ ์กด์žฌํ•œ๋‹ค.
    • ์ด ๋ฐฉ์‹์€ ์ค‘์•™ ์„œ๋ฒ„๊ฐ€ ์—†์œผ๋ฏ€๋กœ, ์„œ๋ฒ„๊ฐ€ ๊ณ ์žฅ๋‚˜ ์ „์ฒด ์„œ๋น„์Šค๊ฐ€ ๋‹ค์šด๋˜๋Š” ๋ฌธ์ œ๋Š” ์—†์ง€๋งŒ ํ”ผ์–ด๊ฐ€ ๋„ˆ๋ฌด ๋งŽ์œผ๋ฉด ์†๋„๊ฐ€ ๋Š๋ ค์ง„๋‹ค๋Š” ๋‹จ์ ์ด ์žˆ๋‹ค.
    • ๋ณด์•ˆ์— ์ทจ์•ฝํ•˜๊ณ , ์•…์˜์ ์ธ ํ”ผ์–ด๊ฐ€ ๋งˆ์Œ์„ ๋จน์œผ๋ฉด, ๋‹ค๋ฅธ ํ”ผ์–ด๋“ค์„ ์กฐ์ข…ํ•˜์—ฌ DDoS ๊ณต๊ฒฉ์„ ๊ฐํ–‰ํ•  ์ˆ˜ ์žˆ๋‹ค.

(3) "BitTorrent"

  • Piece: ๊ณต์œ  ํŒŒ์ผ์˜ ํ•œ ์กฐ๊ฐ (256 kb)
    • ํ”ผ์–ด๋“ค์€ ํŒŒ์ผ์„ 256kb๋กœ ์ชผ๊ฐœ์–ด ๊ณต์œ ํ•œ๋‹ค. (์‚ฌ์‹ค, ๊ณต์œ ํ•˜๋Š” ํŒŒ์ผ์˜ ํฌ๊ธฐ๊ฐ€ ํฌ๋ฉด, ์ชผ๊ฐœ๋Š” ํŒŒ์ผ์˜ ํฌ๊ธฐ๋ฅผ 256kb๋กœ ๊ณ ์ •ํ•˜์ง€ ์•Š๊ณ , ๋Š˜๋ฆฌ๋Š” ๊ฒฝ์šฐ๋„ ์žˆ๋‹ค.)
  • Peer: Piece๋“ค์„ upload/download ํ•˜๋Š” ์ฃผ์ฒด.
  • Seeder: ๋ชจ๋“  piece๋ฅผ ์ „๋ถ€ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ํ”ผ์–ด๋ฅผ ์ง€์นญ
  • Leecher: ์ผ๋ถ€ piece๋งŒ์„ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ํ”ผ์–ด๋ฅผ ์ง€์นญ
  • Tracker: ํด๋ผ์ด์–ธํŠธ(ํ”ผ์–ด)์—๊ฒŒ peer list๋ฅผ ์ „๋‹ฌํ•˜๋Š” ์ค‘์•™ ์ปดํ“จํ„ฐ (๊ณต๊ฐœ/๋น„๊ณต๊ฐœ)
  • Swarm: Tracker ์•ˆ์— ์žˆ์œผ๋ฉฐ, peer list๋ฅผ ๋‹ด๊ณ  ์žˆ๋Š” DB

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

Torrent์˜ ์•Œ๊ณ ๋ฆฌ์ฆ˜๊ณผ ์ „๋žต

    1. ์กฐ๊ฐ ์„ ํƒ ์•Œ๊ณ ๋ฆฌ์ฆ˜ (Piece Selection Algorithm)
    • (1) Strict Priority (์ „ ๊ณผ์ •)
      • ์กฐ๊ฐ์„ ๋ฐ›๊ธฐ ์‹œ์ž‘ํ•˜๋ฉด, ๋‹ค๋ฅธ ์กฐ๊ฐ์— ์‹ ๊ฒฝ ์“ฐ์ง€ ๋ง๊ณ , ํ•ด๋‹น ์กฐ๊ฐ์„ ๋‹ค์šด ๋ฐ›๋Š”๋ฐ ์ตœ์„ ์„ ๋‹คํ•˜๋ผ.
    • (2) Random First Piece (์ฒ˜์Œ)
      • Client๊ฐ€ ์–ด๋–ค ์กฐ๊ฐ๋„ ๊ฐ–๊ณ  ์žˆ์ง€ ์•Š์„ ๊ฒฝ์šฐ, random์œผ๋กœ piece๋ฅผ ์„ ํƒํ•ด์„œ download๋ฅผ ์‹œ์ž‘ํ•œ๋‹ค.
    • (3) Rarest First (์ค‘๊ฐ„)
      • download ์‹œ, ์ž์‹ ์ด download ํ•ด์•ผํ•˜๋Š” ์กฐ๊ฐ ์ค‘์—์„œ ํ•ด๋‹น ์กฐ๊ฐ์„ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” peer์˜ ์ˆ˜๊ฐ€ ๊ฐ€์žฅ ์ ์€ ์กฐ๊ฐ์œผ๋กœ ๊ฒฐ์ •ํ•œ๋‹ค.
      • ๋”ฐ๋ผ์„œ ๊ฐ€์žฅ ๋งŽ์€ peer๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ์กฐ๊ฐ์ด ๋‹ค์šด๋กœ๋“œ์˜ ๋งˆ์ง€๋ง‰์— ๋‚จ๊ฒŒ ๋œ๋‹ค.
      • ์ฒซ ์กฐ๊ฐ์€ Random First Piece ์ „๋žต์„ ์‚ฌ์šฉํ•˜๋ฉฐ, ๊ทธ ๋‹ค์Œ ์กฐ๊ฐ๋ถ€ํ„ฐ Rarest First ์ „๋žต์„ ์‚ฌ์šฉํ•œ๋‹ค.
    • (4) End Game Mode (๋งˆ์ง€๋ง‰)
      • ๋งˆ์ง€๋ง‰ ํ•œ ๊ฐœ์˜ ์กฐ๊ฐ์„ download ํ•  ๋•Œ๋Š”, peer ์ „์ฒด์—๊ฒŒ download request๋ฅผ ํ•œ๋‹ค.
      • download๊ฐ€ ๋๋‚˜๋ฉด ๋‹ค๋ฅธ peer๋“ค์—๊ฒŒ๋Š” cancel ์š”์ฒญ์„ ํ•œ๋‹ค.
    1. ํ”ผ์–ด ์„ ํƒ ์•Œ๊ณ ๋ฆฌ์ฆ˜ (Peer Selection Algorithm)
    • Choking
      • upload๋ฅผ ํ•˜์ง€ ์•Š๊ณ , download๋งŒ ํ•˜๋Š” peer๋ฅผ ๋ฐฉ์ง€ํ•˜๋Š” ๋ฐฉ๋ฒ•.
      • "์ผ์‹œ์ ์œผ๋กœ ํŠน์ •ํ•œ client์—๊ฒŒ uploading์„ ๊ฑฐ๋ถ€ํ•˜๋Š” ๊ฒƒ."
      • 10์ดˆ๋งˆ๋‹ค ๊ฐฑ์‹ ๋˜๋Š” ๊ฐ๊ฐ์˜ peer๋กœ๋ถ€ํ„ฐ์˜ download ์†๋„๋ฅผ ๊ณ„์‚ฐํ•˜์—ฌ choke๋ฅผ ํ• ์ง€ unchoke๋ฅผ ํ• ์ง€ ๊ณ„์‚ฐํ•œ๋‹ค.
      • BitTorrent์—์„œ๋Š” uploading ํ•˜๋Š” peer๊ฐ€ downloading ํ•˜๋Š” peer์—๊ฒŒ โ€œunchokeโ€๋ฅผ ๋ณด๋ƒ„์œผ๋กœ์„œ download๊ฐ€ ์‹œ์ž‘๋œ๋‹ค.
      • โ€œunchokeโ€ ๋˜๋Š” peer์˜ ์ˆ˜๋Š” 4๊ฐœ
    • "optimistic unchocking"
      • ์ž์‹ ์œผ๋กœ uploadingํ•˜๋Š” ์†๋„๊ฐ€ ๋น ๋ฅธ peer์— ๋Œ€ํ•ด unchoke๋ฅผ ์‹คํ–‰
      • (20์ดˆ ๋‹จ์œ„๋กœ ๊ด€์ธกํ•˜๊ณ , 10์ดˆ๋งˆ๋‹ค unchoke peer๋ฅผ ๋ณ€๊ฒฝ)
    • 30์ดˆ๋งˆ๋‹ค optimistic unchocking ํ•˜์ง€ ์•Š๊ณ , "random selection" ํ•œ๋‹ค.
      • ๋ฐฉ๊ธˆ ์ ‘์†ํ•œ ์ƒˆ๋กœ์šด peer๋“ค์—๊ฒŒ ๊ธฐํšŒ๋ฅผ ์ฃผ๋Š” ์—ญํ• ์„ ํ•œ๋‹ค.
  • ๋ฒˆ์™ธ) torrent ์šด์˜ ํšŒ์‚ฌ์˜ ์ˆ˜์ต ๋ชจ๋ธ์€ ๋ฌด์—‡์ธ๊ฐ€?
    • SW์˜ ์—…๋ฐ์ดํŠธ, ์‹ ๊ทœ ๋ฐฐํฌ ๋“ฑ์„ torrent๋ฅผ ํ†ตํ•ด ๋ฐฐํฌ๋ฅผ ํ•˜๊ธฐ ๋Œ€๋ฌธ์— ์ˆ˜์ต์ด ๋ฐœ์ƒํ•œ๋‹ค.

Source

  1. Computer Networking: A Top Down Approach 6th edition - Jim Kurose, Keith Ross Addison-Wesley March 2012
  2. https://en.dict.naver.com/#/entry/enko/3365d85cadaf4ba19c6e2bb70cd4cd1f
  3. https://ko.itpedia.nl/2019/01/11/wat-is-p2p-peer-to-peer-en-wat-kan-je-er-mee/
  4. https://velog.io/@wjs4199/%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%81%AC-P2P
  5. https://inyongs.tistory.com/56
  6. https://heo-seongil.tistory.com/103
  7. https://ko.wikipedia.org/wiki/TCP/UDP%EC%9D%98_%ED%8F%AC%ED%8A%B8_%EB%AA%A9%EB%A1%9D
  8. https://velog.io/@jeanbaek/%EC%BB%B4%ED%93%A8%ED%84%B0-%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%82%B9-2-%EC%95%A0%ED%94%8C%EB%A6%AC%EC%BC%80%EC%9D%B4%EC%85%98-%EA%B3%84%EC%B8%B5-1-%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%81%AC-%EC%95%A0%ED%94%8C%EB%A6%AC%EC%BC%80%EC%9D%B4%EC%85%98%EC%9D%98-%EC%9B%90%EB%A6%AC
  9. https://velog.io/@lychee/%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%81%AC-2.1-Application-layer
  10. https://hwanine.github.io/network/UDP/
  11. https://namu.wiki/w/P2P
  12. https://ddongwon.tistory.com/m/72
  13. https://inyongs.tistory.com/m/57
  14. https://ddongwon.tistory.com/m/73
  15. https://inyongs.tistory.com/m/58
  16. https://inyongs.tistory.com/m/59
  17. https://ddongwon.tistory.com/m/74
  18. https://velog.io/@lychee/%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%81%AC-2.4#iterated-query
  19. https://ddongwon.tistory.com/m/75