[๋„คํŠธ์›Œํฌ] P2P

์ฐธ๊ณ ๋„์„œ: ์ปดํ“จํ„ฐ ๋„คํŠธ์›Œํ‚น : ํ•˜ํ–ฅ์‹ ์ ‘๊ทผ. 7ํŒ. James F. Kurose , Keith W.Ross ์ง€์Œ

P2P ๊ฐœ์š”

  • P2P๋Š” ์ผ๋ฐ˜์ ์ธ ํด๋ผ์ธ์–ธํŠธ-์„œ๋ฒ„ ๊ตฌ์กฐ์™€๋Š” ๋‹ฌ๋ฆฌ ์„œ๋กœ ํ”ผ์–ด ๋ผ๊ณ  ๋ถ€๋ฅด๋Š” ํ˜ธ์ŠคํŠธ๋“ค์ด ํด๋ผ์ด์–ธํŠธ๋„ ๋˜๊ณ , ์„œ๋ฒ„์˜ ์—ญํ• ์„ ํ•˜๊ธฐ๋„ ํ•œ๋‹ค.
  • ์ด๋Ÿฐ ๊ตฌ์กฐ๋Š” P2P ๋„คํŠธ์›Œํฌ์— ์ž๊ฐ€ ํ™•์žฅ์„ฑ(Self-Scalability) ๋ฅผ ์ œ๊ณตํ•˜๋Š”๋ฐ, P2P๋Š” ์–ด๋–ค ํ˜ธ์ŠคํŠธ๊ฐ€ ํŒŒ์ผ์„ ๋‚ด๋ ค๋ฐ›๋Š” ๊ฒƒ๊ณผ ๋™์‹œ์— ๋‹ค๋ฅธ ํ”ผ์–ด๋“ค์—๊ฒŒ ์—…๋กœ๋“œ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋„คํŠธ์›Œํฌ์˜ ์„ฑ๋Šฅ์„ ํ–ฅ์ƒ์‹œํ‚ฌ ์ˆ˜ ์žˆ๊ฒŒ๋œ๋‹ค.
  • ์˜ˆ๋ฅผ ๋“ค์–ด, N๊ฐœ์˜ ํ”ผ์–ด๋“ค์ด ์–ด๋–ค ํŒŒ์ผ์„ ๋‚ด๋ ค๋ฐ›์œผ๋ ค๊ณ  ํ•  ๋•Œ, ํด๋ผ์ด์–ธํŠธ-์„œ๋ฒ„ ๊ตฌ์กฐ์˜ ๋„คํŠธ์›Œํฌ์—์„œ๋Š” NF/์„œ๋ฒ„์˜ ์—…๋กœ๋“œ ์†๋„ ์™€ ํ”ผ์–ด๋“ค ์ค‘ ๊ฐ€์žฅ ๋‹ค์šด๋กœ๋“œ ์†๋„๊ฐ€ ๋А๋ฆฐ ํ”ผ์–ด์˜ ์†๋„์— ๋”ฐ๋ผ ์žฌ๋ถ„๋ฐฐ์‹œ๊ฐ„์ด ๊ฒฐ์ •๋˜์ง€๋งŒ, P2P ๊ตฌ์กฐ์—์„œ๋Š” NF/์„œ๋ฒ„์˜ ์—…๋กœ๋“œ ์†๋„ + ์—…๋กœ๋“œ๋ฅผ ํ•˜๋Š” ๋ชจ๋“  ํ”ผ์–ด๋“ค์˜ ์—…๋กœ๋“œ ์†๋„์˜ ํ•ฉ ๊ณผ ํ”ผ์–ด๋“ค ์ค‘ ๊ฐ€์žฅ ๋‹ค์šด๋กœ๋“œ ์†๋„๊ฐ€ ๋А๋ฆฐ ํ”ผ์–ด์˜ ์†๋„ ์— ๋”ฐ๋ผ ์žฌ๋ถ„๋ฐฐ ์‹œ๊ฐ„์ด ๊ฒฐ์ •๋œ๋‹ค.
  • ๋”ฐ๋ผ์„œ N์ด ์ถฉ๋ถ„์ด ์ปค์กŒ์„ ๋•Œ, ํด๋ผ์ด์–ธํŠธ-์„œ๋ฒ„ ๊ตฌ์กฐ๋Š” ์„ ํ˜•์ ์œผ๋กœ ์žฌ๋ถ„๋ฐฐ์‹œ๊ฐ„์ด ์ฆ๊ฐ€ํ•˜์ง€๋งŒ, P2P ๊ตฌ์กฐ๋Š” ๋ถ„๋ชจ๊ฐ€ N๊ณผ ํ•จ๊ป˜ ์ฆ๊ฐ€ํ•˜๋ฉด์„œ ์žฌ๋ถ„๋ฐฐ ์‹œ๊ฐ„์ด ๋А๋ฆฌ๊ฒŒ ์ฆ๊ฐ€ํ•˜๋Š” ๊ฒƒ์„ ์•Œ ์ˆ˜ ์žˆ๋‹ค.
  • ํ•˜์ง€๋งŒ ๋™์‹œ์— ํ”ผ์–ด๋“ค์ด ์ต๋ช…์œผ๋กœ ์ฐธ์—ฌํ•˜๊ธฐ ๋•Œ๋ฌธ์— ํ”ผ์–ด์— ๋Œ€ํ•œ ์‹ ๋ขฐ์„ฑ๊ณผ ๋ณด์•ˆ์˜ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค.

Napster

  • Napster๋Š” ์ค‘์•™์ง‘์ค‘๋œ ๋ฐฉ์‹์„ ์ผ๋ถ€ ์ฑ„ํƒํ•œ P2P ๊ตฌ์กฐ์ด๋‹ค.
  • Napster์˜ ์šด์˜๋ฐฉ์‹์€ ๋Œ€๋žต์ ์œผ๋กœ ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

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

Gnutella

  • Gnutella ๋Š” Query Flooding ์ด๋ผ๋Š” ๋ฐฉ์‹์„ ์‚ฌ์šฉํ•˜๋Š” ์™„์ „ํ•œ P2P ๋„คํŠธ์›Œํฌ ์‹œ์Šคํ…œ์ด๋‹ค. ์—ฌ๊ธฐ์„œ ์™„์ „ํ•˜๋‹ค๋Š” ๊ฒƒ์€ ์ค‘๊ฐ„์— ๋‹ค๋ฅธ ์ค‘์•™ ์„œ๋ฒ„์˜ ๋„์›€์ด ์—†์ด ํ”ผ์–ด๋ผ๋ฆฌ ๊ณง๋ฐ”๋กœ ํ†ต์‹ ์„ ํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•œ๋‹ค.
  • Gnutella ๋Š” ๋„คํŠธ์›Œํฌ ์œ„์— ์ƒˆ๋กœ์šด ๋„คํŠธ์›Œํฌ ์ธต์„ ์˜ฌ๋ ค์„œ ํŠน์ •ํ•œ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•˜๋Š” ๋„คํŠธ์›Œํฌ ๋…ธ๋“œ๋“ค์ด logical link ๋ฅผ ๊ฐ€์งˆ ์ˆ˜ ์žˆ๊ฒŒ ํ•˜๋Š” Overlay Network ๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.
  • ์ด overlay network ์œ„์—์„œ ๊ฐ ๋…ธ๋“œ๋“ค์€ flooding ์ด๋ผ๊ณ  ๋ถ€๋ฅด๋Š” ์งˆ์˜๋ฅผ ๋ณด๋‚ด๊ณ  back propagation ์ด๋ผ๊ณ  ๋ถ€๋ฅด๋Š” ์‘๋‹ต์„ ์ฃผ๊ณ ๋ฐ›๋Š”๋‹ค.
  • Gnutella ์— ์ฐธ์—ฌํ•˜๋Š” ํ”ผ์–ด๋“ค์„ ๋‹ค๋ฅธ ๋ง๋กœ Servents(Server + Client) ๋ผ๊ณ ๋„ ๋ถ€๋ฅธ๋‹ค.
  • Gnutella ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ณผ์ •์œผ๋กœ ํ˜ธ์ŠคํŠธ๋ฅผ ๋„คํŠธ์›Œํฌ์— ํ”ผ์–ด๋กœ ์ฐธ์—ฌ์‹œํ‚จ๋‹ค.

    1. ์ƒˆ๋กญ๊ฒŒ ์ฐธ์—ฌํ•  ํ˜ธ์ŠคํŠธ๋Š” ๋จผ์ € GnuCache ์„œ๋ฒ„์— ์ ‘์†ํ•ด์„œ ํ˜„์žฌ ๋„คํŠธ์›Œํฌ์— ์ฐธ์—ฌ ์ค‘์ธ ๋‹ค๋ฅธ ํ”ผ์–ด๋“ค์˜ ๋ฆฌ์ŠคํŠธ๋ฅผ ๋ฐ›์•„์˜จ๋‹ค.
    2. ์‘๋‹ต๋ฉ”์„ธ์ง€๋กœ ๋ฆฌ์ŠคํŠธ๋ฅผ ๋ฐ›์€ ํ˜ธ์ŠคํŠธ๋Š” ๋ฆฌ์ŠคํŠธ ์ค‘์— ์žˆ๋Š” ํ•˜๋‚˜์˜ ํ”ผ์–ด ํ˜ธ์ŠคํŠธ์—๊ฒŒ Gnutellan Connect์š”์ฒญ์„ ๋ณด๋‚ธ๋‹ค.
    3. ์š”์ฒญ์„ ๋ฐ›์€ ํ”ผ์–ด ํ˜ธ์ŠคํŠธ๋Š” ์ฐธ์—ฌ๋ฅผ ํ—ˆ๊ฐ€ํ•˜๋Š” ์˜๋ฏธ๋กœ Gnutella OK ์‘๋‹ต์„ ๋ณด๋‚ธ๋‹ค.
    4. ์ด์ œ ์ƒˆ๋กœ์šด ํ˜ธ์ŠคํŠธ๋Š” Gnutella ์˜ ํ”ผ์–ด๊ฐ€ ๋˜๊ณ  ์ฒ˜์Œ ์š”์ฒญ์„ ๋ณด๋ƒˆ๋˜ ํ”ผ์–ด์™€ ์—ฐ๊ฒฐ๋˜์–ด ์žˆ๋‹ค.
    5. Gnutella์˜ ํ”ผ์–ด๋“ค์€ ์ฃผ๊ธฐ์ ์œผ๋กœ ping ๋ฉ”์„ธ์ง€๋ฅผ ์ด์›ƒ ํ”ผ์–ด๋“ค์—๊ฒŒ ๋ณด๋‚ด๋Š”๋ฐ, ์ด ๋ฉ”์„ธ์ง€๋ฅผ ๋ฐ›์€ ํ”ผ์–ด๋“ค์€ pong ๋ฉ”์„ธ์ง€๋กœ ์‘๋‹ตํ•˜๊ณ , ์ž์‹ ์ด ๋ฐ›์€ ping ๋ฉ”์„ธ์ง€๋ฅผ ์ž์‹ ์˜ ์ด์›ƒ ํ”ผ์–ด๋“ค์—๊ฒŒ ๋‹ค์‹œ ๋ณด๋‚ธ๋‹ค.
    6. ์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ์ฒ˜์Œ์—๋Š” ํ•˜๋‚˜์˜ ํ”ผ์–ด์™€๋งŒ ์—ฐ๊ฒฐ๋˜์–ด ์žˆ๋˜ ์ƒˆ๋กœ ์ฐธ์—ฌํ•œ ํ˜ธ์ŠคํŠธ๋Š” ๋Œ๊ณ  ๋Œ์•„์„œ ์ „๋‹ฌ๋œ ping ๋ฉ”์„ธ์ง€๋ฅผ ๋ฐ›๊ฒŒ ๋˜๊ณ , ์ด ๋ฉ”์„ธ์ง€์—์„œ ping ๋ฉ”์„ธ์ง€๋ฅผ ๋ณด๋‚ธ ํ”ผ์–ด์˜ IP ์ฃผ์†Œ๋ฅผ ์•Œ๊ฒŒ๋œ๋‹ค.
    7. ์ƒˆ๋กœ ์ฐธ์—ฌํ•œ ํ˜ธ์ŠคํŠธ๋Š” ์•Œ์•„๋‚ธ IP ์ฃผ์†Œ์™€ ์—ฐ๊ฒฐ์„ ์„ค์ •ํ•œ๋‹ค.
  • Gnutella ๊ฐ€ ์–ด๋–ค ์ •๋ณด๋ฅผ ํ”ผ์–ด๋“ค๋กœ๋ถ€ํ„ฐ ์ฐพ์„ ๋•Œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ณผ์ •์„ ๊ฑฐ์นœ๋‹ค.

    1. ํ•œ ํ”ผ์–ด๊ฐ€ ํ˜„์žฌ ์ž์‹ ๊ณผ ์—ฐ๊ฒฐ๋œ ๋ชจ๋“  ํ”ผ์–ด๋“ค์—๊ฒŒ ์ฟผ๋ฆฌ ๋ฉ”์„ธ์ง€๋ฅผ ๋ณด๋‚ธ๋‹ค.
    2. ๋ฉ”์„ธ์ง€๋ฅผ ์ „๋‹ฌ๋ฐ›์€ ํ”ผ์–ด๋“ค์€ ๋˜ ์ž์‹ ๊ณผ ์—ฐ๊ฒฐ๋œ ๋ชจ๋“  ํ”ผ์–ด๋“ค์—๊ฒŒ ์ฟผ๋ฆฌ ๋ฉ”์„ธ์ง€๋ฅผ ๋ณด๋‚ธ๋””.
    3. ์œ„ ์ž‘์—…์„ ์ตœ์ดˆ ํ”ผ์–ด๊ฐ€ ์ „์†กํ•œ ์›ํ•˜๋Š” ์ •๋ณด๋ฅผ ์–ป์„ ๋•Œ๊นŒ์ง€ ๋ฐ˜๋ณตํ•œ๋‹ค.
  • ์ •๋ณด๋ฅผ ์ฐพ์„ ๋•Œ ์ฟผ๋ฆฌ๋ฅผ ๊ณ„์†ํ•ด์„œ ์ด์›ƒ ๋…ธ๋“œ๋“ค์—๊ฒŒ ์ „์†กํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ด๋Ÿฐ ๋ฐฉ๋ฒ•์„ Query Flooding์ด๋ผ๊ณ  ๋ถ€๋ฅธ๋‹ค.
  • Gnutella ๋Š” ๋‹จ์ˆœํ•œ ๊ตฌ์กฐ๋กœ ์ด๋ฃจ์–ด์ ธ ์žˆ๋‹ค๋Š” ์žฅ์ ์ด ์žˆ์ง€๋งŒ, query flooding ์„ ๊ณ„์† ๋ฐ˜๋ณตํ•ด์•ผํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์›ํ•˜๋Š” ์ •๋ณด๋ฅผ ์ฐพ๋Š”๋ฐ ์‹œ๊ฐ„์ด ์˜ค๋ž˜ ๊ฑธ๋ฆด ๊ฐ€๋Šฅ์„ฑ์ด ๋†’๋‹ค. ๋˜ํ•œ ์›ํ•˜๋Š” ์ •๋ณด๋ฅผ ์–ป์ง€ ๋ชปํ•˜๋ฉด ๊ณ„์†ํ•ด์„œ ์ฟผ๋ฆฌ๋ฅผ ์ „ํŒŒํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ž˜๋ชปํ•˜๋ฉด broadcast storm์„ ๋งŒ๋“ค์–ด ์ „์ฒด ํŠธ๋ž˜ํ”ฝ์—๋„ ํฐ ์˜ํ–ฅ์„ ์ค„ ์ˆ˜ ์žˆ๋‹ค.

    • ์ด ๋ฌธ์ œ๋ฅผ ์œ„ํ•ด ์ผ์ • TTL ์ด์ƒ๋ถ€ํ„ฐ๋Š” query๋ฅผ ๋”์ด์ƒ ์ „์†กํ•˜์ง€ ์•Š๊ฒŒ ํ•˜๋Š” limited-scope query flooding์„ ์ƒ๊ฐํ•  ์ˆ˜๋„ ์žˆ์ง€๋งŒ, ์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ํ”ผ์–ด๋“ค์„ ๋งŽ์ด ์œ ์ง€ํ•˜๋Š” ๊ฒƒ์ด ์˜๋ฏธ๊ฐ€ ์—†์–ด์ง€๊ฒŒ ๋œ๋‹ค.
  • ๋”๋ถˆ์–ด์„œ Overlay network๋Š” ๊ฐ€์ƒ์˜ ๋„คํŠธ์›Œํฌ์ด๊ธฐ ๋•Œ๋ฌธ์— ๊ฐ ๋…ธ๋“œ๋“ค์ด ์š”์ฒญ์ด ์—†๋”๋ผ๋„ ํ•ญ์ƒ ์„œ๋กœ TCP ์—ฐ๊ฒฐ์„ ์„ค์ •ํ•˜๊ณ  ์žˆ์–ด์•ผ ๊ทธ ๊ตฌ์กฐ๊ฐ€ ์œ ์ง€๋œ๋‹ค๋Š” ๋‹จ์ ๋„ ์žˆ๋‹ค.
  • ๋‹จ์ ์ด ์ฐธ ๋งŽ์€๋ฐ, ๋งˆ์ง€๋ง‰์œผ๋กœ ๋Œ€๋ถ€๋ถ„์˜ Gnutella ํ”ผ์–ด๋“ค์€ ๋‹ค๋ฅธ ํ”ผ์–ด๋“ค์ด ์›ํ•˜๋Š” ํŒŒ์ผ์„ ๊ฐ€์ง€๊ณ  ์žˆ์ง€ ์•Š์€ ๊ฒฝ์šฐ๊ฐ€ ๋งŽ๋‹ค. ๋Œ€๋ถ€๋ถ„์˜ ์ค‘์š”ํ•œ ํŒŒ์ผ๋“ค์„ ์ผ๋ถ€ ํ”ผ์–ด๋“ค์ด ๊ฐ€์ง€๊ณ  ์žˆ๊ฒŒ ๋•Œ๋ฌธ์— ๋„คํŠธ์›Œํฌ์— ๊ธฐ์—ฌํ•˜๋Š” ๋ฐ”๊ฐ€ ์—†์ด ์›ํ•˜๋Š” ๊ฒƒ์„ ์–ป๊ธฐ๋งŒ ํ•˜๋Š” Free Riding ํ˜„์‚ด์ด ๋ฐœ์ƒํ•œ๋‹ค.

Hierarchical Overlay

  • Hierarchical Overlay๋Š” ํ”ผ์–ด๋“ค์„ ๊ทธ๋ฃน์œผ๋กœ ๋‚˜๋ˆ„๊ณ  ๊ทธ ๊ทธ๋ฃน์„ ๋‹ด๋‹นํ•˜๋Š” super-peer๋ฅผ ๋งŒ๋“ค์–ด ์šด์˜ํ•˜๋Š” ๋ฐฉ์‹์ด๋‹ค.
  • ์‹ค์ œ๋กœ ๋„คํŠธ์›Œํฌ์— ์ฐธ์—ฌํ•˜๋Š” ๊ฒƒ์€ super-peer ๋ฟ์ด๊ณ  ๋‹ค๋ฅธ ํ”ผ์–ด๋“ค์€ super-peer์— TCP ์—ฐ๊ฒฐ๋กœ ์—ฐ๊ฒฐ๋˜์–ด ์žˆ๋Š” ํ˜•ํƒœ์ด๋‹ค.
  • super-peer ๋“ค์€ ์ž์‹ ์˜ ๊ทธ๋ฃน ์•ˆ์— ์žˆ๋Š” ํ”ผ์–ด๋“ค์ด ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ํŒŒ์ผ๋“ค์˜ ์ •๋ณด๋ฅผ ๋ชจ๋‘ ์•Œ๊ณ  ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ๋‹ค๋ฅธ super-peer ๋กœ ๋ถ€ํ„ฐ ์š”์ฒญ์ด ๋“ค์–ด์˜ค๋ฉด ๊ทธ๋ฃน ๋‚ด ํ”ผ์–ด๋“ค์„ ๊ฒ€์‚ฌํ•ด์„œ ์‘๋‹ต์„ ๋ณด๋‚ด์ฃผ๊ฒŒ ๋˜๋Š” ๊ตฌ์กฐ์ด๋‹ค.

BitTorrent

  • ๋น„ํŠธํ† ๋ ŒํŠธ๋Š” ํŒŒ์ผ ๋ถ„๋ฐฐ์— ์ฐธ์—ฌํ•˜๋Š” ๋ชจ๋“  ํ”ผ์–ด๋“ค์˜ ๊ทธ๋ฃน์„ torrent ๋ผ๊ณ  ๋ถ€๋ฅด๊ณ  tracker ๋ผ๋Š” ๋ฆฌ์ŠคํŠธ๋ฅผ ๊ด€๋ฆฌํ•ด์„œ ํ˜„์žฌ ์–ด๋–ค ํ”ผ์–ด๊ฐ€ ๋„คํŠธ์›Œํฌ์— ์ฐธ์—ฌํ•˜๊ณ  ์žˆ๋Š”์ง€ ๊ธฐ๋กํ•œ๋‹ค. ๊ทธ๋ฆฌ๊ณ  torrent ์— ์ฐธ์—ฌํ•˜๊ณ  ์žˆ๋Š” ํ”ผ์–ด๋“ค์€ ์ฃผ๊ธฐ์ ์œผ๋กœ ์ž์‹ ์˜ ํ™œ๋™์ƒํƒœ๋ฅผ tracker์— ์•Œ๋ ค์„œ ํ•ด๋‹น ๋ฆฌ์ŠคํŠธ์— ์ž์‹ ์„ ์œ ์ง€์‹œํ‚จ๋‹ค.
  • ๋น„ํŠธํ† ๋ ŒํŠธ ํ”„๋กœํ† ์ฝœ์—์„œ ๋ชจ๋“  ํŒŒ์ผ์€ 256KB์˜ ์กฐ๊ฐ์œผ๋กœ ๋‚˜๋‰˜์–ด์ง€๊ณ  ์ด ์กฐ๊ฐ์„ chunk ๋ผ๊ณ  ํ•œ๋‹ค.
  • ๊ฐ ํ”ผ์–ด๋“ค์€ ์ด chunk ๋ฅผ ๋‹ค๋ฅธ ํ”ผ์–ด๋“ค์—๊ฒŒ ์—…๋กœ๋“œํ•˜๊ฒŒ ๋œ๋‹ค.
  • ๋น„ํŠธํ† ๋ ŒํŠธ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ณผ์ •์œผ๋กœ ํ”ผ์–ด๋“ค๊ณผ ํŒŒ์ผ๋ถ„๋ฐฐ๋ฅผ ๊ด€๋ฆฌํ•œ๋‹ค.

    • ์ƒˆ๋กœ์šด ํ”ผ์–ด๊ฐ€ ํ† ๋ ŒํŠธ์— ์ฐธ์—ฌํ•˜๋ฉด, ์ด ํ”ผ์–ด๋Š” tracker์— ์žˆ๋Š” 50๊ฐœ์˜ ์ž„์˜์˜ ํ”ผ์–ด๋“ค๊ณผ TCP ์—ฐ๊ฒฐ์„ ์„ค์ •ํ•œ๋‹ค.
    • ์ด ํ”ผ์–ด๋Š” ์ž์‹ ๊ณผ ์—ฐ๊ฒฐ๋œ ๋‹ค๋ฅธ ํ”ผ์–ด๋“ค์—๊ฒŒ ์ฃผ๊ธฐ์ ์œผ๋กœ ๊ทธ๋“ค์ด ๊ฐ€์ง€๊ณ  ์žˆ๋Š” chunk์˜ ๋ฆฌ์ŠคํŠธ๋ฅผ ๋ฐ›์•„์˜จ๋‹ค.
    • ๋ฐ›์•„์˜จ ๋ฆฌ์ŠคํŠธ์—์„œ ํ˜„์žฌ ์ž์‹ ์ด ๊ฐ€์ง€๊ณ  ์žˆ์ง€ ์•Š์€ chunk๋ฅผ ๊ฐ€์ง„ ํ”ผ์–ด๊ฐ€ ์žˆ๋‹ค๋ฉด ํ•ด๋‹น ํ”ผ์–ด์—๊ฒŒ chunk์— ๋Œ€ํ•œ ์š”์ฒญ๋ฉ”์„ธ์ง€๋ฅผ ๋ณด๋‚ธ๋‹ค.
    • ์ด๋–„, ์„ ํƒ๋˜๋Š” chunk๋Š” ์ž์‹ ์ด ๊ฐ€์ง€๊ณ  ์žˆ์ง€ ์•Š๊ณ  ๋‹ค๋ฅธ ํ”ผ์–ด๋“ค์ด ๋“œ๋ฌผ๊ฒŒ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” chunk๋ฅผ ์„ ํƒํ•˜๋Š” rarest first ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ํ†ตํ•ด ๊ฒฐ์ •๋œ๋‹ค. ์ด ๋ฐฉ๋ฒ•์„ ์‚ฌ์šฉํ•˜๋ฉด, ํ”ผ์–ด๋“ค์ด ์ž˜ ๊ฐ€์ง€๊ณ  ์žˆ์ง€ ์•Š์€ chunk๋“ค์ด ๋จผ์ € ๋ถ„๋ฐฐ๋˜๊ธฐ ๋•Œ๋ฌธ์— chunk์˜ ์ข…๋ฅ˜๊ฐ€ ํ”ผ์–ด๋“ค์—๊ฒŒ ๊ท ๋“ฑํ•˜๊ฒŒ ๋ถ„๋ฐฐ๋  ์ˆ˜ ์žˆ๋‹ค.
  • ์ด์›ƒ ํ”ผ์–ด๋“ค๋กœ๋ถ€ํ„ฐ ์–ด๋–ค ์š”์ฒญ์ด ๋“ค์–ด์˜ค๋ฉด, ํ”ผ์–ด๋Š” ์ž์‹ ์—๊ฒŒ ๊ฐ€์žฅ ๋น ๋ฅธ ์†๋„๋กœ chunk๋ฅผ ๋ณด๋‚ด๋Š” 4๊ฐœ์˜ ํ”ผ์–ด๋ฅผ ์„ ํƒํ•ด์„œ ์ž์‹ ์˜ ํŒŒ์ผ์„ ์ œ๊ณตํ•œ๋‹ค. ์ด๋ ‡๊ฒŒ ์„ ์ •๋œ 4๊ฐœ์˜ ํ”ผ์–ด๋ฅผ Unchoked ํ”ผ์–ด๋ผ๊ณ  ๋ถ€๋ฅธ๋‹ค.

    • ์ด ์ƒ์œ„ 4๊ฐœ์˜ ํ”ผ์–ด๋Š” ๋งค 10์ดˆ๋งˆ๋‹ค ๊ฐฑ์‹ ๋œ๋‹ค.
  • ๊ทธ๋ฆฌ๊ณ  ๋งค 30์ดˆ๋งˆ๋‹ค ๋žœ๋คํ•˜๊ฒŒ ํ•˜๋‚˜์˜ ํ”ผ์–ด๋ฅผ ์„ ํƒํ•ด์„œ chunk๋ฅผ ์ „์†กํ•œ๋‹ค. ์ด๋ ‡๊ฒŒ ๋žœ๋คํ•˜๊ฒŒ ์„ ์ •๋œ ํ”ผ์–ด๋ฅผ Optimistically Unchoked ํ”ผ์–ด๋ผ๊ณ  ํ•œ๋‹ค.

    • ํ† ๋ ŒํŠธ์— ์ฒ˜์Œ ์ฐธ์—ฌํ•œ ํ”ผ์–ด๋Š” chunk๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์—, ๋žœ๋คํ•˜๊ฒŒ ์„ ํƒํ•˜๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด ์—†๋‹ค๋ฉด, ์ ˆ๋Œ€ ์ƒ์œ„ 4๊ฐœ์˜ ํ”ผ์–ด์— ๋“ฑ๋ก๋  ์ˆ˜๊ฐ€ ์—†๋‹ค.
  • ์ด๋ ‡๊ฒŒ ๋น„ํŠธํ† ๋ ŒํŠธ์—์„œ ์ž˜ ์ œ๊ณตํ•ด์ฃผ๋Š” ์‚ฌ๋žŒ์—๊ฒŒ ์ข‹์€ ๋ณด์ƒ์„ ์ œ๊ณตํ•˜๋Š” ๋ฐฉ์‹์„ tit-for-tat(TFT) ๋ฐฉ์‹์ด๋ผ๊ณ  ๋ถ€๋ฅธ๋‹ค. ์ด ๋ฐฉ์‹์ด ์‚ฌ์šฉ๋˜์—ˆ๊ธฐ ๋•Œ๋ฌธ์— ๋น„ํŠธํ† ๋ ŒํŠธ๋Š” Free-Riding ๋ฌธ์ œ๋ฅผ ์ตœ์†Œํ™”ํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋œ๋‹ค.

Distributed Hash Table(DHT)

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

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

Written by@์ „์—ฌํ›ˆ (Click Me!)
๊ณ ๋ฏผ์ด ๋‹ด๊ธด ์ฝ”๋“œ๋ฅผ ๋งŒ๋“ค์ž, ๊ณ ๋ฏผํ•˜๊ธฐ ์œ„ํ•ด ๊ณต๋ถ€ํ•˜์ž.