มี65536 พอร์ตสำหรับทุกระบบในเครือข่ายและทุกการเชื่อมต่อหรือส่ง / รับจะใช้หนึ่งในนั้น
คำถามของฉันคือ: จะเกิดอะไรขึ้นถ้าเรามีคนรู้จัก 65536 คน + 1 คน !
ฉันรู้ว่ามันไม่ได้เกิดขึ้นตามปกติ แต่ฉันอยากรู้ว่าระบบปฏิบัติการจัดการกับมันอย่างไร
มี65536 พอร์ตสำหรับทุกระบบในเครือข่ายและทุกการเชื่อมต่อหรือส่ง / รับจะใช้หนึ่งในนั้น
คำถามของฉันคือ: จะเกิดอะไรขึ้นถ้าเรามีคนรู้จัก 65536 คน + 1 คน !
ฉันรู้ว่ามันไม่ได้เกิดขึ้นตามปกติ แต่ฉันอยากรู้ว่าระบบปฏิบัติการจัดการกับมันอย่างไร
คำตอบ:
โปรดทราบว่าระบบสามารถรองรับการเชื่อมต่อพร้อมกันมากกว่า 65536 รายการเนื่องจากไม่จำเป็นต้องใช้แต่ละพอร์ตแยกต่างหาก
การเชื่อมต่อ TCP หรือ UDP flow ถูกกำหนดโดย 4-tuple:
(source IP address, source port, destination IP address, destination port)
ดังนั้นแม้ว่าคุณจะมีเครื่องเว็บเซิร์ฟเวอร์ที่มีเพียงที่อยู่ IP เดียวและแพคเกจซอฟต์แวร์เซิร์ฟเวอร์ HTTP เดียวฟังเฉพาะในพอร์ต 80 ก็ในทางทฤษฎีสามารถจัดการการเชื่อมต่อ 65536 ต่อลูกค้าที่อยู่ IP การเชื่อมต่อ ดังนั้นการเชื่อมต่อ 64Ki จากที่อยู่ IP ของลูกค้า 1 รวมถึงการเชื่อมต่อ 64Ki จากที่อยู่ IP ของลูกค้า 2 เป็นต้น
ดังนั้นโปรโตคอลจึงสนับสนุนการประมาณแรกคือ 2 48การเชื่อมต่อ / การไหลไปยังพอร์ต TCP หรือ UDP เดียวบนที่อยู่ IPv4 เดียว พิจารณาทั้ง TCP และ UDP ด้วยกันและทั้งพื้นที่ที่อยู่ของ IPv4 และพื้นที่แอดเดรสขนาดใหญ่ของ com / comically และ IPv6 ของ IPv6 และคุณสามารถเห็นว่าโปรโตคอลเองนั้นไม่น่าจะเป็นแหล่งที่มาของจำนวน จำกัด ของจำนวนการเชื่อมต่อพร้อมกันที่โฮสต์ สามารถจัดการ
ในทำนองเดียวกันไม่มีอะไรในโปรโตคอล TCP หรือ UDP ที่ป้องกันไม่ให้เครื่องไคลเอนต์ใช้พอร์ตแหล่งเดียวบนที่อยู่ IP เดียวเพื่อทำการเชื่อมต่อขาออกหลายครั้งไปยังที่อยู่เซิร์ฟเวอร์และพอร์ตต่างๆ บางครั้ง API เครือข่ายของระบบปฏิบัติการที่ระบุอาจไม่ง่าย แต่สิ่งสำคัญคือต้องจำไว้ว่า API "[BSD] Sockets" ที่เก่าแก่ที่น่านับถือคือ API เพียงหนึ่งเดียวกับ TCP และ UDP TCP และ UDP อาจมีความสามารถที่ไม่ได้เปิดเผยโดย Sockets API แบบดั้งเดิม
ดังนั้นจำนวนของการเชื่อมต่อ TCP หรือ UDP ที่เกิดขึ้นพร้อมกันนั้นโฮสต์ที่สามารถจัดการได้จะถูก จำกัด ไม่มากตามหมายเลขพอร์ต แต่โดยทรัพยากรระบบเช่นพื้นที่ RAM และเวลา CPU ที่ใช้ในการติดตามการเชื่อมต่อเหล่านั้นทั้งหมดและให้บริการทั้งหมด นอกจากนี้รายละเอียดเฉพาะของการนำไปใช้งานของระบบปฏิบัติการสามารถกำหนดข้อ จำกัด ทางประดิษฐ์ได้ ตัวอย่างเช่นในปรัชญา Unix "ทุกอย่างเป็นไฟล์" อาจมีตัวให้คำอธิบายไฟล์สำหรับทุกการเชื่อมต่อ TCP หรือการไหลของ UDP หากเคอร์เนล Unix ของคุณมีข้อ จำกัด จำนวนไฟล์ descriptor ที่สามารถติดตามได้ขีด จำกัด ตัวให้คำอธิบายไฟล์นั้นเป็นข้อ จำกัด ที่เทียมขึ้นกับจำนวนการเชื่อมต่อ TCP ที่เกิดขึ้นพร้อมกันหรือ UDP ทำให้เคอร์เนลของคุณสามารถจัดการได้