← กลับไปยังบทความทั้งหมด

โปรโตคอลควบคุมพอร์ต (Port Control Protocol)

สรุปใจความสำคัญ

  • PCP ช่วยให้โฮสต์สร้างกฎการส่งต่อพอร์ต (Port Forwarding) ได้โดยอัตโนมัติโดยไม่ต้องตั้งค่าเราเตอร์ด้วยตนเอง
  • พัฒนาต่อยอดมาจาก NAT-PMP เพื่อให้รองรับทั้ง IPv4 และ IPv6
  • ช่วยลดการใช้พลังงานในอุปกรณ์พกพาโดยการลดความจำเป็นในการส่งข้อความ Keepalive เพื่อรักษาการเชื่อมต่อ NAT
  • รองรับการทำงานร่วมกับ UPnP IGD และการกำหนดค่าผ่าน DHCP

โปรโตคอลควบคุมพอร์ต (Port Control Protocol หรือ PCP) คือโปรโตคอลเครือข่ายคอมพิวเตอร์ที่ออกแบบมาเพื่อให้โฮสต์ (Host) บนเครือข่าย IPv4 หรือ IPv6 สามารถควบคุมวิธีการที่แพ็กเก็ตข้อมูลขาเข้าถูกแปลที่อยู่และส่งต่อโดยเราเตอร์ต้นทาง (Upstream Router) ที่ทำหน้าที่แปลที่อยู่เครือข่าย (Network Address Translation - NAT) หรือทำหน้าที่กรองแพ็กเก็ต (Packet Filtering)

จุดประสงค์หลักของ PCP คือการอนุญาตให้โฮสต์สร้างกฎการส่งต่อพอร์ต (Port Forwarding) ได้ด้วยตนเอง ซึ่งช่วยให้โฮสต์ที่อยู่เบื้องหลัง NAT หรือไฟร์วอลล์สามารถถูกเข้าถึงได้จากอินเทอร์เน็ตภายนอก ทำให้โฮสต์เหล่านั้นสามารถทำหน้าที่เป็นเซิร์ฟเวอร์เครือข่ายได้ ซึ่งเป็นความต้องการพื้นฐานของแอปพลิเคชันจำนวนมากในปัจจุบัน

ความสำคัญและปัญหาที่ PCP เข้ามาแก้ไข

โดยปกติแล้ว อุปกรณ์เครือข่ายมักถูกติดตั้งไว้เบื้องหลังเราเตอร์หรือไฟร์วอลล์ที่ใช้ NAT เพื่อแบ่งปันที่อยู่ IPv4 หรือเพื่อความปลอดภัย ซึ่งการทำงานนี้จะตัดขาดการเชื่อมต่อแบบปลายทางถึงปลายทาง (End-to-End Connectivity) ทำให้บุคคลภายนอกไม่สามารถเชื่อมต่อเข้ามายังอุปกรณ์ภายในเครือข่ายได้โดยตรง

ปัญหาของการเชื่อมต่อแบบเดิม

  • การกำหนดค่าด้วยตนเอง: การทำให้เครื่องภายในเข้าถึงได้จากภายนอกมักต้องอาศัยการเข้าไปตั้งค่า Port Forwarding ในเราเตอร์ด้วยตนเอง ซึ่งยุ่งยากและผู้ใช้ทั่วไปอาจทำไม่ได้
  • การใช้เซิร์ฟเวอร์กลาง: บางแอปพลิเคชันใช้เทคนิค "Firewall Punching" หรือเซิร์ฟเวอร์ตัวกลางเพื่อช่วยในการเชื่อมต่อ ซึ่งเพิ่มความซับซ้อนและค่าใช้จ่าย
  • การใช้ข้อความ Keepalive: เพื่อป้องกันไม่ให้ NAT ปิดการเชื่อมต่อที่ไม่มีการส่งข้อมูล (Idle) แอปพลิเคชันต้องส่งข้อความ Keepalive ขนาดเล็กเป็นระยะ ซึ่งทำให้เกิดทราฟฟิกส่วนเกิน เปลืองแบนด์วิดท์ และลดอายุการใช้งานแบตเตอรี่ของอุปกรณ์พกพา

PCP ในฐานะทางออก

PCP ช่วยให้แอปพลิเคชันสามารถสร้างการจับคู่ (Mapping) ระหว่างที่อยู่ IP และพอร์ตภายนอก กับที่อยู่ IP และพอร์ตภายในได้อย่างชัดเจน การจับคู่นี้มีระยะเวลาการใช้งาน (Lifetime) ที่กำหนดไว้และสามารถต่ออายุได้ คล้ายกับการทำงานของ DHCP ทำให้ไม่จำเป็นต้องส่งข้อความ Keepalive ในระดับแอปพลิเคชันเพื่อรักษาการเชื่อมต่อ ส่งผลให้ลดการใช้พลังงานและทรัพยากรเครือข่าย

วิวัฒนาการและการทำงานร่วมกัน

PCP ถูกกำหนดเป็นมาตรฐานในปี 2013 โดยพัฒนาต่อยอดมาจาก NAT Port Mapping Protocol (NAT-PMP) โดย PCP ได้เพิ่มการรองรับ IPv6 และรองรับสถานการณ์การใช้งาน NAT ที่หลากหลายขึ้น

การทำงานร่วมกับมาตรฐานอื่น

  • UPnP IGD: ในสภาพแวดล้อมที่มีการใช้ UPnP IGD (Universal Plug and Play Internet Gateway Device) จำเป็นต้องมีฟังก์ชันการทำงานร่วมกัน (Interworking Function) ระหว่าง UPnP IGD และ PCP ตามข้อกำหนดใน RFC 6970
  • DHCP: มีการกำหนดตัวเลือก (Options) ใน DHCP ทั้ง IPv4 และ IPv6 เพื่อให้โฮสต์สามารถทราบที่อยู่ IP ของเซิร์ฟเวอร์ PCP ได้ ตาม RFC 7291 และมีขั้นตอนการเลือกเซิร์ฟเวอร์ใน RFC 7488
  • NAT64: ในสภาพแวดล้อมที่ใช้ NAT64 โปรโตคอล PCP ช่วยให้โฮสต์สามารถเรียนรู้ IPv6 prefix ที่ใช้โดยอุปกรณ์ NAT64 เพื่อสร้างที่อยู่ IPv6 ที่แปลงมาจาก IPv4 (RFC 7225)

คำถามที่พบบ่อย

Port Control Protocol (PCP) คืออะไร?

คือโปรโตคอลที่ช่วยให้อุปกรณ์ภายในเครือข่ายสามารถขอให้เราเตอร์ที่ทำ NAT ส่งต่อข้อมูลจากพอร์ตที่ระบุจากภายนอกเข้ามายังตัวอุปกรณ์ได้โดยตรง

PCP แตกต่างจาก NAT-PMP อย่างไร?

PCP เป็นรุ่นที่พัฒนาต่อยอดจาก NAT-PMP โดยเพิ่มการรองรับ IPv6 และรองรับสถานการณ์การใช้งาน NAT ที่ซับซ้อนมากขึ้น

PCP ช่วยประหยัดแบตเตอรี่ได้อย่างไร?

เพราะ PCP มีการกำหนดระยะเวลาการใช้งาน (Lifetime) ของการจับคู่พอร์ตที่ชัดเจน ทำให้แอปพลิเคชันไม่ต้องส่งข้อความ Keepalive บ่อยๆ เพื่อป้องกันไม่ให้เราเตอร์ปิดการเชื่อมต่อ

ใครเป็นผู้ได้รับประโยชน์จาก PCP?

แอปพลิเคชันที่ต้องการเป็นเซิร์ฟเวอร์ เช่น กล้อง IP, เกมออนไลน์ หรือโปรแกรมสื่อสารแบบ Peer-to-Peer (P2P)