ตอนนี้ คาดว่าไม่มีใครไม่รู้จัก Skype , โปรแกรม VoIP อันเลื่องชื่อ และสามารถใช้ได้ฟรี แต่เบื้องหลังการทำงาน สำหรับหลายคนที่เคยเขียนโปรแกรมเกี่ยวกับการส่ง mediastream อย่างเสียง ผ่านเครือข่ายที่มี NAT(Network Address Translation) คงพบปัญหาเดียวกัน คือ เมื่อเป็น private ip จะติดต่อ กับเครืองที่อยู่คนละเครือข่ายได้อย่างไร ผมก็พบปัญหานี้ ตอนนี้ก็หาคำตอบได้ โดยดูจาก Skype เป็นกรณีศึกษาเหลือแต่ implement ครับ เดี๋ยวเรามาดูกัน
ตัวอย่างที่จะนำมาเล่าถึงวันนี้ ก็คือ เทคนิคของ Skype ที่ได้อ่านมาจาก เว็บหน้านึงของskype ซึ่งมีรายละเอียดคร่าว ๆ ดังนี้ครับ
skype ใช้หลักการของ peer-to-peer มาใช้ช่วยในการจัดการการส่งข้อมูลเหล่านี้ อย่างเช่น โปรแกรม Kazaa เป็นต้น ซึ่งการทำงานจะเป็นลักษณะ decentralized คือ ให้ peer ที่มีการคิดต่อสือสารขณะนั้น ที่ไม่ได้อยู่หลัง NAT (IP จริง ) และมี resource เหลืออยู่ ช่วยในการคิดต่อระหว่างเครืองที่อยู่หลัง NAT ที่กำลังสร้าง Session ใหม่ โดย peer หรือ node นั้น จะเรียกว่า Supernede ซึ่งจะทำหน้าที่ Route SIP Message และข้อมูลต่าง ๆ อย่างเช่น เมื่อมีการ login node นั้นจะส่งข้อมูลไปยัง supernode หรือทำตัวเป็น supernode ซะเอง แล้วติดต่อไปยัง register server เพื่อ authenticate และยืนยันตัวตน เมื่อค้นหาข้อมูลเพิ่มเติม พบ งานวิจัยที่เกี่ยวข้องด้วย เชื่อว่า Skype Supernode ใช้ STUN (Simple Traversal of UDP through NAT) เป็น โปรโตคอลในการติดต่อ โดยทำตัวเป็น STUN Server ให้ node อื่น ๆ สามารถติดต่อ เพื่อค้นหาประเภทของ NAT และเมื่อติดต่อได้ ก็จะทำการ query ข้อมูลสร้างเป็นตารางคล้าย ๆ index กับ routing table เป็น host cache เพื่อให้ติดต่อกับคนอื่น ๆ ได้ และมีการ refresh เป็นระยะ
รูปการทำงานจาก งานวัจัย
นอกจากนี้ skype ยังเคลมว่าได้มี 3G P2P หรือ Global Index ที่สามารถ query ข้อมูล node อื่น ๆ ได้ทั้งหมด
นี่เป็นข้อมูลคร่าว ๆ รายละเอียดมีมาก คงต้องไปอ่านใน งานวัจัย เอาเองครับ