ดูเหมือนว่าส่วนหนึ่งของเครือข่ายไม่อนุญาตให้เฟรมอีเธอร์เน็ตมีขนาดใหญ่กว่า 1510 ไบต์ (ไม่รวมการตรวจสอบ) ทำให้ MTU ที่อนุญาตคือ 1496 ไบต์แทนที่จะเป็นมาตรฐาน 1500 ไบต์ ดังนั้นเฟรมที่เดิมมีเพย์โหลด 1500 ไบต์จึงถูกทิ้ง
เหตุผลที่แน่นอนสำหรับ MTU ที่ลดลงไม่เกี่ยวข้องกับคำถามนี้ คำถามคือเหตุใด Windows Server 2019 จึงสามารถกู้คืนจากแพ็กเก็ตที่ดร็อปเหล่านี้ได้ บาง การเชื่อมต่อ แต่ไม่ใช่อื่น ๆ ตามที่ฉันเข้าใจ สิ่งที่ฉันเห็นที่นี่ดูเหมือนจะเป็น "การตรวจจับหลุมดำ PMTU" แต่ เหตุใดการตรวจจับหลุมดำ PMTU จึงเกิดขึ้นสำหรับการเชื่อมต่อบางอย่าง แต่ไม่ใช่สำหรับการเชื่อมต่ออื่น?
ไคลเอ็นต์ 10.246.54.143 และ 10.246.54.157 ทั้งคู่อยู่ในกลุ่ม LAN เดียวกันที่ไซต์ระยะไกล ซึ่งมีปัญหา MTU อยู่ ทั้งคู่เริ่มต้นการเชื่อมต่อกับเซิร์ฟเวอร์ 10.8.4.45
ในทั้งสองกรณี การจับมือ TCP เริ่มต้นนั้นใช้ได้ จากนั้นปัญหา MTU จะถูกโจมตีเมื่อเซิร์ฟเวอร์ส่งแพ็กเก็ตขนาดใหญ่สองสามแพ็กเก็ต
เมื่อสิ่งนี้เกิดขึ้นในการเชื่อมต่อจาก 10.246.54.157 หลังจากส่งแพ็กเก็ตขนาดใหญ่ซ้ำสองสามครั้ง เซิร์ฟเวอร์ดูเหมือนจะยอมแพ้และลองโหลด IP เพียง 576 ไบต์แทน ซึ่งใช้งานได้และทุกอย่างจะได้จากที่นั่น:
(ที่น่าสนใจคือแพ็กเก็ตขนาดใหญ่ที่ส่งโดยไคลเอ็นต์จะผ่านมาได้)
จากนั้นเมื่อ 10.246.54.143 พยายามเชื่อมต่อ แพ็กเก็ตขนาดใหญ่จะหลุดและเกิดการส่งสัญญาณซ้ำ แต่ในกรณีนี้ เซิร์ฟเวอร์จะไม่พยายามด้วยแพ็กเก็ตขนาดเล็ก ดังนั้นการเชื่อมต่อจึงไม่สามารถเกิดขึ้นได้อย่างสมบูรณ์:
แอปพลิเคชันเซิร์ฟเวอร์ (ฟังที่พอร์ต 5002) จะเหมือนกันในทั้งสองกรณี มันเขียนด้วยภาษาจาวา
เหตุใดเซิร์ฟเวอร์จึงไม่ลองแพ็กเก็ตขนาดเล็กสำหรับการเชื่อมต่อจาก 10.246.54.143
มันถูกกำหนดเส้นทางทั้งหมดผ่านอินเทอร์เฟซและเราเตอร์เดียวกัน ยกเว้นบิตที่ใกล้กับไคลเอ็นต์มากที่สุด ซึ่งพวกมันจะเชื่อมต่อกับสวิตช์ต่างๆ