เทคโนโลยี

ระบบที่ไม่ต้องมีศูนย์กลาง P2P (Peer to Peer)

9 03 2561 001

P2P (Peer to Peer) คืออะไร

     ระบบที่ไม่ต้องมีศูนย์กลาง นับว่ามีการตื่นตัวกันเป็นอย่างมาก ทำไมถึงต้องไม่มีศูนย์กลาง เพราะนับวันประชากรยิ่งเพิ่มทวีคูณขึ้นเรื่อยๆ และแน่นอนการกระจายการให้บริการเป็นอีกหนึ่งทางแก้ปัญหา แน่นอนว่าเมื่อเราไม่มีศูนย์กลาง ตัวกลางที่เกิดในตอนนี้หลายๆคนคงได้ยินคำว่า "Bitcoin" ฯลฯ จากที่อื่นๆ และก็คงสงสัยว่า ไอเจ้าพวกนี้มันคืออะไรทำงานอย่างไร และมันวิเศษวิโสอย่างไร ทำไมถึงมีการพูดถึงกันนักหนา วันนี้เราจึงจะมาทำความรู้จักมันกันครับแต่ที่สำคัญก่อนอื่นเลยเราต้องมารู้จักกับคำว่า "P2P" กันก่อนครับ P2P หรือเต็มๆ Peer to Peer อาจจะมีคำอื่นอีกเช่น People to People ,Point to Point ซึ่งมีความหายคล้ายคลึงกัน Peer to Peer คือ

  • ระบบที่อนุญาติให้ผู้ใช้สามารถแลกเปลี่ยนไฟล์ระหว่างกันหรือใช้ทรัพยากรร่วมกันผ่านระบบเครือข่าย
  • ระบบการสื่อสารจากคอมพิวเตอร์เครื่องหนึ่งไปยังอีกเครื่องหนึ่งโดยตรง
  • ฯลฯ

     หนังสือเล่มหนึ่งของ Oreilly ให้คำนิยามไว้ว่า “Peer-to-Peer เป็นระบบ Self organizing โดยปราศจากการควบคุมจากศูนย์กลาง และประกอบไปด้วยเพียร์ (Peer) ที่สามารถแชร์ทรัพยากร (resource) ให้กับเพียร์อื่นๆเข้ามาใช้งานได้” เรามาดูนิยามอีกนิดว่าอะไรคือ Peer, Resource, Self organizing

PEER
     Peer คือ สรรพสิ่งใดๆที่ไม่ได้ดีหรือเลวกว่าสรรพสิ่งอื่นๆที่เป็น Peer เหมือนกัน ถ้ามองว่าคนเป็น Peer คนทุกคนก็มีความเท่าเทียมกัน ไม่มีสูงต่ำรวยจน ไม่มีชนชั้น และถ้าหากมองคอมพิวเตอร์หรือโปรแกรมว่าเป็น Peer คอมพิวเตอร์หรือโปรแกรมก็มีความเท่าเทียมกัน ไม่มีคำว่าฉันเป็น Client เธอเป็น Server ถึงแม้ว่าทางกายภาพ (ที่มองเห็นได้) อาจจะเป็นไปได้ว่า Peer หนึ่งมีอะไรที่ดีกว่า Peer อื่นๆ เช่น คนนี้รวยกว่าคนอื่น หรือว่าคอมเครื่องนี้เร็วกว่าเครื่องอื่น เป็นต้น แต่ทว่าเมื่อไหร่ก็ตามที่ Peer ใดๆเข้ามาเป็นส่วนหนึ่งของระบบ Peer-to-Peer แล้ว นับว่า ทุกๆ Peer มีความเท่าเทียมกัน ทั้งบทบาทและหน้าที่การงาน

RESOURCE
     ทรัพยากรหรือ Resource คือ สรรพสิ่งที่สามารถให้บริการและถูกใช้งานโดย Peer อื่นๆได้ ตัวอย่างของ resource ได้แก่ ไฟล์ พื้นที่จัดเก็บข้อมูล ฐานข้อมูล หน่วยความจำหลัก หน่วยประมวลผล แบนด์วิธของเครือข่าย เป็นต้น

โอเค ณ ที่นี่ Peer ของเราก็คือโปรแกรมบนคอมพิวเตอร์นั่นเอง ขอเรียกโปรแกรมนี้ว่า โปรแกรม P2P ดังนั้น คอมเครื่องหนึ่งอาจจะรันโปรแกรมเพื่อสร้าง Peer ได้มากกว่า 1 Peer และบางตำราอาจจะบอกไปเลยว่า Peer ก็คือคอมพิวเตอร์หรืออุปกรณ์อิเล็กทรอนิกส์ที่รันโปรแกรม P2P อยู่ และ Peer ก็สามารถแชร์ resource ให้กับ Peer อื่นได้ ทั้งนี้ทั้งนั้น ทุกๆ Peer จะประสานงานกันเพื่อก่อสร้างระบบแบบ Self Organizing และอะไรคือ Self organizing ล่ะ ?

SELF ORGANIZING SYSTEM
     Self organizating คือระบบที่ไม่ต้องพึ่งพาผู้ดูแลระบบ (administrator), ไม่พึ่งพาคอมพิวเตอร์ศูนย์กลางหรือ Server, และไม่พึ่งพาโปรแกรมกลุ่มใดกลุ่มหนึ่งที่อยู่ศูนย์กลางเพื่อก่อสร้างและบริหารระบบ แต่ระบบก็ยังก็สามารถทำงานต่อไปได้ โดยอาศัย Peer ที่มีอยู่ในระบบเป็นผู้จัดการระบบ        กันเอง แล้วเมื่อ P2P เป็น Self Organizing ทำให้ P2P มีคุณสมบัติที่เด่นชัด ดังนี้

     ความคงทน (Robust) กล่าวคือ หากมี Peer ใดๆหนึ่ง Peer หรือกลุ่มของ Peer ออกจากระบบอันเนื่องจากสาเหตุใดๆก็ตาม เช่น ออกโดยสมัครใจ (หยุดการทำงานโปรแกรม P2P โดยผู้ใช้), โปรแกรม P2P ทำงานผิดพลาดและปิดตัวเอง, คอม hang, คอมดับ, คอมเสีย, เน็ตหลุด เป็นต้น ระบบก็สามารถดำเนินงานต่อไปได้ กล่าวคือ Peer อื่นๆที่ยังอยู่ในระบบก็ยังทำงานต่อไปได้ และก็สามารถดำเนินกิจกรรมที่เคยได้ทำในระบบ Peer-to-Peer ต่อไปได้ เหมือนว่าไม่มีเหตุการณ์ที่ต้องสูญเสียพรรคพวกเกิดขึ้น (นั่นคือ มี Peer ใดๆออกจากระบบ)
     ความคงอยู่ยาวนาน (High Availability) หมายถึง ระบบสามารถรักษา resource ในระบบให้คงอยู่ยาวนานเพื่อบริการ Peer ต่างๆได้ แม้มี Peer หนึ่งที่เคยเก็บ resource อย่างหนึ่งไว้ หาก Peer นี้ออกจากระบบ ระบบก็สามารถจัดเตรียม resource เดียวกันนี้จากที่อื่นมาทดแทนได้ ตัวอย่างเช่น หากมี Peer ใดๆ สมมติชื่อ A หลุดออกจากระบบ และถ้า A แชร์ resource อันเป็นที่ต้องการของ Peer อื่นๆ เช่น A แชร์ไฟล์วิดีโอคลิปชื่อ “น้อง Pepper” ที่มีคนหลายคนกำลังดาวน์โหลดหรือค้นหาอยู่ เมื่อ A หายไปจากระบบ แน่นอน “น้อง Pepper” ก็ควรจะหายไปด้วย แต่ระบบจะต้องสามารถจัดหา “น้อง Pepper” จาก Peer อื่นมาทดแทนได้ คำถามคือ P2P ทำได้อย่างไร ตอบคร่าวๆก่อนว่า P2P ใช้วิธีที่เรียกว่าการทำซ้ำซ้อน (Redundancy) โดยการคัดลอก resource ไปยังที่อื่นๆให้มีจำนวน copy มากขึ้น และโดยทั่วไปแล้ว โปรแกรม P2P ไม่ได้คัดลอก resource โดยอัตโนมัติ แต่อาศัยผู้ใช้เป็นคนช่วยทำให้ โดยเมื่อไหร่ก็ตามที่ผู้ใช้ต้องการเข้าถึง resource จาก peer อื่นๆ โปรแกรม P2P ทางฝั่งผู้ใช้คนนี้จะคัดลอก resource เหล่านั้นมาเก็บไว้ที่เครื่องของผู้ใช้ด้วย และหากมีคนเข้าถึง resource เดียวกันเยอะๆ โอกาสที่ resource จะถูกทำซ้ำซ้อนก็มากขึ้นไปด้วย และ resource เดียวกันก็จะกระจายไปตามที่ต่างๆในขอบเขตที่กว้างขวางมากขึ้น หากมีผู้คนจากหลากหลายภูมิภาคเข้าถึง resource นี้
     ความสามารถแบ่งเบาภาระ (Load Balancing) จริงๆเป็นคุณสมบัติทางอ้อมจากการทำ redundancy เพราะเมื่อ resource กระจายไปที่ต่างๆแล้ว นั่นเหมือนว่ามี Peer ให้บริการ resource เดียวกันมากกว่า 1 ที่ ดังนั้น Peer เหล่านี้จึงสามารถแบ่งเบาภาระในการให้บริการ resource เดียวกันในกรณีที่ resource นี้เป็นที่ต้องการจำนวนมาก
     ความยืดขยายได้อย่างมหาศาล (Massively Scalability) อืม คำว่า Scalability เนี่ยแปลเป็นไทยแบบตรงๆยากมาก บางทีเราเรียกสั้นๆว่า Scale ระบบที่ Scale มีความหมายได้ว่าระบบรองรับจำนวนผู้ใช้จำนวนมากๆได้เรื่อยๆแต่ประสิทธิภาพของระบบไม่ได้ด้อยลงหรือด้อยลงเพียงเล็กน้อย เช่น ถ้าหากเดิมระบบรองรับผู้ใช้ 1 พันคนพร้อมๆกันอย่างสบายๆ และเมื่อมีผู้ใช้ติดต่อระบบ 1 หมื่นคนพร้อมๆกัน ระบบก็ยังสามารถตอบสนองต่อความต้องการของผู้ใช้ได้เหมือนกับว่าจำนวนที่เพิ่มมา 10 เท่าไม่ได้กระทบกับประสิทธิภาพโดยรวม และหากต่อไประบบมีคนเข้ามาพร้อมกันเป็นหลักล้าน ระบบก็ยังทำงานต่อไปได้ โดยประสิทธิภาพต้องไม่ด้อยลงมากไปด้วย เป็นต้น นอกจากนี้ Scale ยังหมายถึงการขยายอาณาบริเวณของเครือข่ายในวงที่กว้างขึ้น เช่น เดิมทีระบบทำงานอยู่ในวงแลน (LAN) และเวลาต่อมาระบบก็สามารถขยายอาณาเขตไปเชื่อมต่อเพียร์อื่นในวงแวน (WAN) และสามารถขยายต่อไปถึงเครือข่ายอินเตอร์เน็ต ทำให้เชื่อมต่อ Peer ที่อยู่กระจายได้ทั่วโลก เป็นต้น โอเค P2P นั้น Scale มากๆครับ บางระบบรองรับจำนวน Peer ได้เป็นหลักล้านถึงสิบล้านเลยเชียว
     ความเป็นอิสภาพสูง (High Freedom) เนื่องจาก P2P ไม่มีศูนย์กลางควบคุมอย่างนิยามของมัน ทุกๆ Peer จึงมีอิสระในการใช้ระบบ เช่น อิสระในการแชร์ไฟล์, อิสระในการเข้าออกจากระบบตามใจชอบ โดยไม่ต้องคำนึงว่า ถ้าออกไปแล้วจะทำให้ระบบทั้งหมดเสียหาย, อิสระในการเข้าถึง resource โดยไม่ ต้องขออนุญาต เป็นต้น และเมื่อไม่มีผู้ดูแลระบบหรือ admin มาควบคุม ผู้ใช้แต่ละคนในระบบ P2P จึงมีหน้าที่เป็น admin เพื่อดูแล Peer ของตัวเอง ทำให้มีอิสระในการเลือกว่าจะแชร์ resource อะไรบ้างหรือจะยกเลิกการแชร์ resource อะไรบ้างได้ตามใจชอบ

     แต่เดิมนั้นเมื่อเราต้องการดาวน์โหลดไฟล์จากแม่ข่ายโดยใช้ FTP*,HTTP** นั้น หากมีคนที่ต้องการไฟล์เดียวกับเรา 500คนมาดาวน์โหลดบนแม่ข่ายเดียวกันพร้อมๆ กันโดยแต่ละคนมี Bandwidth คนละ 256kbps ถ้าจะให้ทุกคนนั้นได้ความเร็วในการดาวน์โหลดสูงสุดตัวแม่ข่ายจะต้องมี Bandwidth เท่ากับ 256kbps * 500 (125mbit)เลยทีเดียว
     ซึ่งไม่ใช่เพียงแต่จะเปลือง Bandwidth เท่านั้นแต่ยังจะต้องใช้แม่ข่ายที่มีความเร็วในการประมวลผลสูงเพื่อรองรับความต้องการที่เพิ่มขึ้นอีกด้วย จากปัญหาดังกล่าวนี้เองทำให้โปรแกรมแชร์ไฟล์ P2Pถูกพัฒนาขึ้นมารองรับความต้องการที่เพิ่มขึ้นโดยใช้ทรัพยากรของแม่ข่ายให้น้อยลงนั้นเอง ระบบ P2P นั้นถูกพัฒนาเพื่อใช้ในการแลกเปลี่ยนไฟล์ระหว่างกันโดยที่ไม่พึ่งแม่ข่ายใน การแจกจ่ายไฟล์และทำให้สามารถหาไฟล์ที่ต้องการได้ง่ายขึ้น
*FTP = File Transfer Protocal
**HTTP = Hypertext Transfer Protocal
     จากความหมายนี้เองทำให้เราเรียกโปรแกรมที่ใช้ในการแลกเปลี่ยนไฟล์ระหว่างกันโดยไม่ได้ร้องขอไฟล์จากแม่ข่ายว่า "P2P File Sharing" โปรแกรมประเภทนี้มีอยู่มากมายหลายตัวด้วยกัน เช่น Emule, Kazaa, Edonkey ฯลฯ หลักการทำงานคร่าวๆของโปรแกรมก็คือ

  1. เชื่อมต่อไปยังแม่ข่ายเพื่อยืนยันตัวตนและส่งสารบัญไฟล์ที่เราแชร์ไว้ไปด้วย
  2. หากเราต้องการหาไฟล์สักไฟล์หนึ่งเมื่อเราระบุ Keyword** โปรแกรมจะส่งคำร้องไปยังแม่ข่าย จากนั้นแม่ข่ายจะส่งรายชื่อไฟล์พร้อมข้อมูลตัวตนของคนที่มีไฟล์ที่ตรงกับ Keyword ที่เราระบุกลับมา
  3. เมื่อเราพบไฟล์ที่ต้องการแล้วตัวโปรแกรมจะใช้ข้อมูลที่ได้จากแม่ข่ายติดต่อไปยังคนนั้นๆโดยตรงเพื่อร้องขอไฟล์ จากการทำงานจะเห็นได้ว่าตัวแม่ข่ายนั้นไม่ได้เป็นคนเก็บไฟล์จริงๆไว้เพียงแต่เก็บเป็นสารบัญไว้เท่านั้น

**Keyword = คำหรือประโยคหรือที่ระบุเพื่ออ้างอิงในระบบการค้นหา

หลายๆท่านเมื่ออ่านมาถึงตรงนี้ น้ำ ใ ส ด อ ท ค อ ม คิดว่าคงจะเป็นประโยชน์ของระบบที่ไม่มีศูนย์กลางกัน ไม่ว่าจะเป็นการเงินที่ทุกวันนี้มีการกล่าวถึงกันเป็นอย่างมากนั้นก็คือ cryptocurrency โดยเฉพาะเงินตระกุล bitcoin และอีกหลายตระกุลซึ่งตอนนี้มีมากกว่า 1,000 ตระกุลเงินดิจิตอล และในงานเกี่ยวกับทะเบียนราษฎร์ซึ่งจำเป็นต้องมีการจัดเก็บที่ปลอดภัยและเป็นส่วนตัว และท้ายนี้น้ำ ใ ส ด อ ท ค อ ม หวังเป็นอย่างยิ่งว่า บทความนี้จะเป็นประโยชน์สำหรับท่านผู้อ่านทุกๆท่าน 

อ้างอิง

  • Manaing Peer-To-Peer Traffic With Cisco Control Technology, Cisco’s White Paper,
  • Standalone, Client-server, P2P Systems and Applications link