เหตุใดจึงมีเพียง 65,535 พอร์ตและเราจะมีมากกว่านี้หรือไม่ [ปิด]


20

ฉันเข้าใจว่าเหตุผลดั้งเดิมที่อยู่เบื้องหลังมี 65,535 พอร์ตต่อที่อยู่ IP: นี่เป็นจำนวนสูงสุดที่สามารถแสดงด้วย 16 บิตหรือ 2 ไบต์จำนวนและมันก็เป็นไปไม่ได้ที่คอมพิวเตอร์จะสามารถสำรองเพิ่มเติมได้ กว่านั้นสำหรับสิ่งที่เล็กน้อยเป็นพอร์ตหรืออะไรแบบนั้น ในความเป็นจริงแล้วพอร์ตอาจต้องการมากกว่า 1 บิตในแต่ละพอร์ตเนื่องจากแต่ละพอร์ตสามารถเปิดบล็อก "ลักลอบ" หรืออื่น ๆ ได้ แต่ด้วยเหตุผลบางอย่างผู้คนมักบอกว่าพอร์ตทำงานด้วยหมายเลข 16 บิต หากฉันมีส่วนใดส่วนหนึ่งของความผิดนี้โดยทั้งหมดบอกฉัน

อย่างไรก็ตามในโลกที่คอมพิวเตอร์ส่วนใหญ่เป็นแบบ 32 บิตและมีหน่วยความจำ / พื้นที่ว่างเพียงพอสำหรับพอร์ตเพิ่มเติมสองสามทำไมเรายังคงมีหลายพอร์ตนี้ เรากำลังอยู่ระหว่างการย้ายไปที่ HTML5, HTTP2.0, IPv6 และรุ่นอื่น ๆ อย่างแน่นอนดังนั้นทำไมจึงไม่เหมือนกันกับพอร์ต หลายเหล่านี้อนุญาตให้มากกว่า 16 บิต; ในความเป็นจริง IPv6 อนุญาตให้ 16 ไบต์ ! ฉันเข้าใจว่าสิ่งเหล่านี้หลายปีหรือหลายทศวรรษ แต่ทำไมพูดพล่อยทั้งหมดในการอัพเกรดเหล่านี้และไม่ได้มองลอดพอร์ตเพิ่มเติม (ที่ฉันมือสมัครเล่นเคยได้ยิน)?

เหตุผลสองข้อที่ฉันเห็นได้จากการรักษาพอร์ต 65,535 แห่งคือการปล่อยให้ธุรกิจขนาดใหญ่รักษาระบบเดิมซึ่งแทบจะเป็นเหตุผลที่ดีและการเพิ่มขึ้นของระบบฝังตัวส่วนใหญ่มีขนาดเล็กโดยมีพื้นที่หน่วยความจำน้อยเป็นต้น เข้ามาในอินเทอร์เน็ตในไม่ช้าส่วนมากเป็นส่วนหนึ่งของอินเทอร์เน็ตทุกอย่าง ด้วยระบบฝังตัวเหล่านี้บางทีเราสามารถให้พวกเขามีพอร์ตน้อยลงและเมื่อคอมพิวเตอร์เดสก์ท็อปขนาดใหญ่พยายามเชื่อมต่อกับหนึ่งมันอาจบอกว่าอ่อนโยนเพราะระบบฝังตัวของทารกสามารถใช้พอร์ต ~ 65,000 เท่านั้น

ในทางตรงกันข้ามฉันคิดว่าเหตุผลที่ดีที่มีพอร์ตมากกว่านั้นส่วนใหญ่เกี่ยวข้องกับ NAT และระบบอื่น ๆ ที่มีที่อยู่ IP ส่วนตัวมากกว่า 1 แห่งเพื่อสื่อสารกับส่วนที่เหลือของอินเทอร์เน็ตโดยใช้ที่อยู่ IP สาธารณะเดียวกัน เช่นเดียวกับการเพิ่มขึ้นของ VM บนคอมพิวเตอร์เครื่องเดียวกันทุกคนใช้ที่อยู่ IP เดียวกัน ในทางเทคนิคที่อยู่ IP ของ VM แต่ละรายการมีพอร์ต 65,535 พอร์ต แต่ในความเป็นจริงพวกเขาทั้งหมดใช้พอร์ตของโฮสต์ ในกรณีเช่นนี้ระบบเหล่านี้อาจหมดพอร์ตอย่างรวดเร็ว อีกกรณีหนึ่งคือ NAT ระดับผู้ให้บริการที่หนึ่งที่อยู่ IP สาธารณะจะถูกแปลเป็นที่อยู่ IP ส่วนตัวหลายแห่งและอย่างน้อยหนึ่งที่อยู่ส่วนตัวเหล่านี้ได้รับการแปลเป็นชุดที่อยู่ส่วนตัวอีกชุดหนึ่ง อีกครั้งที่อยู่ IP ส่วนตัวแต่ละแห่งจะมีพอร์ต 65,535 พอร์ต แต่เป็นภาพลวงตา เมื่อข้อมูลออกสู่อินเทอร์เน็ตสาธารณะพวกเขากำลังใช้พอร์ตของ IP สาธารณะ ฉันไม่แน่ใจว่าเราจำเป็นต้องใช้ NAT แต่อย่างใด แต่เราต้องการบางสิ่งเช่นนั้นเพื่อการอนุรักษ์ที่อยู่แม้จะมี IPv6 จำนวนมหาศาลก็จะให้เรา เมื่อเรามีกรณีเช่นนี้เราสามารถจ่ายได้มากกว่า 65,535 พอร์ตหรือไม่

เหตุใดเราจึงยังมีพอร์ตเพียง 65,535 พอร์ตและมีแผนจะอนุญาตเพิ่มเติมอีกหรือไม่

ป.ล. ฉันรู้ว่ามีเทคนิค 65,536 พอร์ตต่อที่อยู่ IP แต่พอร์ต 0 มักไม่ได้ใช้เพื่ออะไร


ฉันคิดว่าคุณต้องถามคำถามเหล่านี้กับ IANA ว่าพวกเขาควบคุมทรัพยากรอย่างไร ฉันคิดว่าคุณต้องอ่านคู่มือTCP / IPด้วยเนื่องจากความเข้าใจบางอย่างของคุณดูเหมือนว่ามีข้อบกพร่อง
user9517 รองรับ GoFundMonica

1
ใช่ฉันคิด ฉันพยายามพูดให้มากที่สุดเท่าที่ฉันเข้าใจ แต่อย่างที่คุณเห็นฉันไม่เข้าใจทุกสิ่ง
trysis

7
ปิดหัวข้อเกี่ยวกับคำถามนี้คืออะไร? เพียงแค่สงสัย.
trysis

1
ฉันก็เลิกถามคำถามในเว็บไซต์เหล่านี้ ทุกอย่างดูเหมือนจะไม่เป็นหัวข้อในวันนี้ ...
Nuno

IPv6 ทำให้ข้อ จำกัด ของพอร์ตที่สงสัยโดยเสนอคอมพิวเตอร์ a / 64 ของที่อยู่ที่จะใช้
J.Money

คำตอบ:


28

พอร์ตเป็นส่วนหนึ่งของโปรโตคอลเลเยอร์ 4 ที่ใช้งาน - TCPหรือUDPส่วนใหญ่แล้ว มันไม่เกี่ยวข้องกับการกำหนดแอดเดรสหน่วยความจำของคอมพิวเตอร์จริงดังนั้นอย่าสับสนกับการกำหนดแอดเดรสหน่วยความจำ 32 หรือ 64 บิตของระบบปฏิบัติการที่ทันสมัย

ส่วนหัวของโปรโตคอลเลเยอร์ 4 เหล่านี้มีโครงสร้างที่กำหนดไว้เฉพาะซึ่งมีการใช้ 16 บิตสำหรับพอร์ตต้นทางและพอร์ตปลายทาง หากไม่มีการเปลี่ยนแปลงความเข้ากันได้ของโพรโทคอลเลเยอร์ 4 ที่ขึ้นอยู่กับอินเทอร์เน็ตทั้งหมดจำนวนพอร์ตไม่สามารถเปลี่ยนแปลงได้ แม้แต่SCTP ที่ใหม่กว่าก็มีข้อ จำกัด 16 บิตบนพอร์ต

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


3
มันเข้ากันได้กับความล้าหลังเสมอไปใช่ไหม? ทำไมเราสามารถเปลี่ยนเป็น IPv6 ซึ่งอนุญาตให้ที่อยู่ IP อีกมากมายนั้นไร้สาระ แต่เราไม่สามารถเพิ่มพอร์ตได้อีกสองเท่า นั่นเป็นความรำคาญหลักของฉัน
trysis

2
@trysis Right - การย้ายจาก IPv4 เป็น IPv6 เป็นการเปรียบเทียบที่ดีกับสิ่งที่ต้องใช้เพื่อย้ายไปยังเวอร์ชันของ TCP และเวอร์ชันของ UDP ที่มีบิตเพิ่มเติมในส่วนหัวของพอร์ต และหากคุณไม่ได้สังเกตเห็นมันเป็นกระบวนการที่ช้าและเจ็บปวดที่จะได้รับการติดตั้ง IPv6 ทั่วโลกไปยังที่ที่มันอยู่ตอนนี้ (ด้วยปริมาณการใช้งานทั่วโลก 1-2% ของการใช้งาน) สำหรับ IPv4 มีความจำเป็นที่จะต้องย้ายที่อยู่ - อ่อนเพลียที่อยู่ ในทางตรงกันข้ามการใช้พื้นที่พอร์ตในโปรโตคอลเหล่านี้ไม่ได้เป็นปัญหาทั่วไปดังนั้นจึงไม่จำเป็นต้องมีการเปลี่ยนแปลงขนาดใหญ่ที่จะทำให้เกิดขึ้น
เชนหัวเสีย

โอ้นั่นดูสมเหตุสมผลกว่า ขอบคุณ บางทีสักวันเราจะรู้สึกถึงความต้องการ แต่ฉันคิดว่าคุณพูดถูกที่ความต้องการไม่ได้อยู่ที่นั่นตอนนี้
trysis

ฉันหวังว่าถ้าเราประสบปัญหาทั้งหมดนี้เราสามารถหาสิ่งที่ดีกว่าการระบุที่อยู่บนพอร์ตจำนวนเต็ม บางอย่างเช่นพอร์ตที่ใช้ UUID นั้นยอดเยี่ยม หรือเนมสเปซที่แท้จริงจะยิ่งสื่อความหมายได้มากขึ้นและกำจัดโอกาสที่จะเกิดความขัดแย้งระหว่างแอพพลิเคชัน ลองนึกภาพการตั้งค่าพอร์ตไปข้างหน้าสำหรับเนมสเปซ "com.windows.local.yourdomain.server001" หรืออะไรทำนองนั้น
njbair

ดังนั้นหากพีซีสองเครื่องรวมกันทำการเชื่อมต่อ 65,535 หรือคล้ายกับรัฐประหารของพีซีที่อยู่นอก NAT ไม่มีพีซีเครื่องอื่นใดที่สามารถเข้าถึงเครือข่ายนี้ได้ ฉันถูกไหม?
เดนิส
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.