มีขีด จำกัด อย่างหนักของการเชื่อมต่อ TCP แบบเปิด 65536 ต่อที่อยู่ IP บน linux หรือไม่


23

มีขีด จำกัด อย่างหนักของการเชื่อมต่อ TCP แบบเปิด 65536 ต่อที่อยู่ IP บน linux หรือไม่ ฉันอ่านบางที่ว่ามี แต่มีคนขอให้ยืนยันและฉันก็หาไม่พบ

ฉันดูเหมือนจะจำได้ว่ามันเป็นอะไรบางอย่างเกี่ยวกับตัวอธิบายไฟล์ว่าเป็นจำนวนเต็ม 16 บิตซึ่ง จำกัด ไว้อย่างใด?

หรือโฮคุมนี้และไม่มีข้อ จำกัด อื่นนอกจากเซิร์ฟเวอร์ที่มีความอ้วน?

คำตอบ:


35

คุณอาจคิดถึงจำนวนพอร์ต มีพอร์ต 65536 อยู่ใน TCP ใน IPv4 เวอร์ชันปัจจุบัน นี่ไม่ใช่แค่ข้อ จำกัด ของ Linux ส่วนหนึ่งของโปรโตคอล ที่อยู่ IP ของคุณระบุเครื่องของคุณและพอร์ตจะระบุโปรแกรมในเครื่องของคุณ

แต่จำนวนการเชื่อมต่อไม่ได้ถูก จำกัด การเชื่อมต่อประกอบด้วยข้อมูล 5 ชิ้นพูดเกินจริงแบบ 5-tuple มันถูกกำหนดโดยโปรโตคอล (TCP, UDP), ที่อยู่ IP ภายในและพอร์ตและที่อยู่ IP ระยะไกลและพอร์ต ดังนั้นใช้เว็บเซิร์ฟเวอร์ สามารถให้บริการการเชื่อมต่อจำนวนมากในพอร์ตเดียวกัน (ส่วนใหญ่ 80) เว็บเซิร์ฟเวอร์ของคุณสามารถรองรับการเชื่อมต่อได้หลายเครื่องกับเครื่องลูกข่ายเดียวกัน สมมติว่าคุณกำลังเชื่อมต่อกับ google.com จากหน้าต่างสองบาน เครื่องของคุณจะเลือกพอร์ตที่ไม่ได้ใช้สำหรับการเชื่อมต่อแต่ละครั้ง ดังนั้นเซิร์ฟเวอร์ของ Google จะต้องติดตาม (TCP, google.com, 80, yourmachine, someport1) และ (TCP, google.com, 80, yourmachine, someport2) เมื่อถึงจุดหนึ่งคุณจะชนกับขีด จำกัด แต่ก็ไม่ได้เป็นขีด จำกัด และขึ้นอยู่กับระบบเป็นอย่างมาก

และใช่ซ็อกเก็ตแต่ละตัวเป็นตัวอธิบายไฟล์ แต่ไม่ใช่ทุกเครื่องที่ใช้กางเกงขาสั้นสำหรับตาราง fd ในระบบของฉันไม่ได้ปรับระบบเลยcat /proc/sys/fs/file-maxให้ 323,997 ฉันแน่ใจว่าฉันสามารถเพิ่มได้ถ้าฉันต้องการ

ดังนั้นจึงมีข้อ จำกัด 65336 แต่เกี่ยวข้องกับการจัดการไม่ใช่จำนวนการเชื่อมต่อ จำนวนการเชื่อมต่อถูก จำกัด แต่เพิ่มเติมตามการกำหนดค่าระบบและจำนวนหน่วยความจำที่มี


2
ดังนั้นอีก 5-tuple: ถึงแม้ว่าฉันจะ จำกัด เพียง 65536 พอร์ตเท่านั้นที่ จำกัด การเชื่อมต่อ 64k ต่อที่อยู่ IP ที่เข้ามาเท่านั้นใช่ไหม ดังนั้นข้อ จำกัด เพียงอย่างเดียวคือตัวอธิบายไฟล์ แต่พวกเขาไม่จำเป็นต้องเป็น 16 บิต? ดังนั้นโดยทั่วไปสิ่งที่คุณกำลังพูดคือไม่มีข้อ จำกัด ?
Chris

1
ใช่. ดูเพิ่มเติมที่: en.wikipedia.org/wiki/Transmission_Control_Protocolส่วน "การใช้ทรัพยากร"
user12889

3
@Chris: การเชื่อมต่อ 64k ต่อที่อยู่ IP ขาเข้าบนพอร์ตในเครื่องเดียวใช่
grawity

@ Chris สิ่งที่ grawity พูด 5-tuple จะมีมากถึง (แต่ไม่เคยเข้าถึง) 65536 รวมกับเครื่องอื่น ๆ ในความเป็นจริงคุณจะไม่มีวันไปถึงที่นั่นเพราะเครื่องไม่สามารถใช้พอร์ตเก่าสำหรับการเชื่อมต่อได้ - บางเครื่องสงวนไว้สำหรับเหตุผลเฉพาะ
Rich Homolka
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.