MSS และ MTU ต่างกันอย่างไร


33

ฉันสับสนเกี่ยวกับความแตกต่างระหว่างขนาดเซ็กเมนต์สูงสุดและหน่วยการส่งข้อมูลสูงสุด

มีใครช่วยอธิบายเกี่ยวกับเลเยอร์ 2 และ 3 ได้ไหม?

ถ้าฉันมีแพ็คเก็ต 800 ไบต์ในส่วนของข้อมูล มันจะถูกต้องหรือไม่ที่จะบอกว่า MSS จะเป็น 800 ไบต์ (ถ้าฉันตั้งให้เป็นอย่างนั้น) และ MTU จะเป็น 840 TCP 20 และ IP 20 ไบต์ มันจะแตกต่างกันไหมถ้าฉันทำ PPPoE


แม้ว่าสิ่งนี้จะไม่ได้พูดคำตอบที่ซ้ำซ้อนกับคำถามนี้ก็อาจตอบคำถามของคุณได้เช่นกัน
YLearn

คำตอบ:


19

นอกจากนี้ ค่าMSS นั้นมาจากค่าMTUถ้าคุณมีแพ็กเก็ต 800- ไบต์ก็สามารถบอกได้ว่าแพ็กเก็ตนั้นมีความยาวตั้งแต่ 2260 ไบต์และเขาแบ่งเป็น 2 แพ็คเก็ต 1460 + 800 ไบต์ถ้าเราใช้ MTU = 1500
คุณ บอกว่าเป็นจริงถ้าคุณ MSS = 800, MTU ควรมีอย่างน้อย 840 เนื่องจาก PPPoE โอเวอร์เฮดคือ 8 ไบต์ดังนั้น MTU = 1492 ไบต์และ MSS = 1492-40 = 1452 ไบต์


28

MTU คือขนาดแพ็กเก็ต IP สูงสุดสำหรับลิงก์ที่กำหนด แพ็คเก็ตที่ใหญ่กว่า MTU จะแยกส่วน ณ จุดที่พบว่า MTU ที่ต่ำกว่าและประกอบขึ้นอีกครั้งลงที่โซ่

หากไม่ต้องการการแตกแฟรกเมนต์คุณต้องตรวจสอบ MTU ที่แต่ละ hop หรือใช้โปรโตคอลตัวช่วยสำหรับ ( Path MTU Discovery )

โปรดทราบว่า IPv6 ไม่สนับสนุนการกระจายตัวของแพ็กเก็ตโดยเราเตอร์ดังนั้น PMTUD กับ ICMPv6 จึงเป็นสิ่งจำเป็นหากคุณไม่ต้องการที่จะสูญเสียแพ็กเก็ตเนื่องจาก MTU ขนาดเล็ก ปลายทางสามารถแตกแฟรกเมนต์ได้ แต่ไม่ใช่เราเตอร์นอกจากนี้ IPv6 ยังมี MTU ขั้นต่ำที่สูงกว่ามาก

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

เมื่อใช้ PPPoE ค่าใช้จ่ายทั้งหมดหมายความว่าคุณต้องลด MSS ระหว่างทางโดยปกติจะระบุไว้ในเราเตอร์ที่พบ chokepoint ซึ่งจะแทนที่ MSS ของการผ่านการจับมือ threeway ด้วยค่าที่ถูกต้องถ้าสูงกว่า PPPoE เพียงเพิ่ม 8 ไบต์ (6 ไบต์ PPPoE + 2 ไบต์ PPP) ที่ด้านบนของทุกอย่าง (IP + TCP) และตั้งใจให้รันผ่านอีเทอร์เน็ตที่ 1500 ไบต์ MTU ดังนั้น 1492 MSS จะกำหนดค่าเพื่อให้ผ่านได้

IP สแต็คของคุณจะตัดข้อมูลที่จะส่งไปยัง MSS วางไว้ในเซ็กเมนต์ TCP จากนั้นวางในแพ็กเก็ต IP หนึ่งแพ็กเกจ (ขึ้นอยู่กับว่าใหญ่กว่าการตั้งค่า MTU ในระบบ) ก่อนที่จะส่ง เราเตอร์ระดับกลางสามารถตัดทิ้งได้หากมี MTU ที่ต่ำกว่า แต่พวกมันมีผลกับ IP Packet เท่านั้นไม่เล่นในเซ็กเมนต์ / ส่วนหัว TCP


4
การแบ่งส่วนข้อมูล: IPv6 ไม่รองรับการกระจายตัวของเราเตอร์อย่างไรก็ตามสถานีปลายทางอาจแยกส่วนแพ็คเก็ต IPv6
Mike Pennington

1
แก้ไขคำตอบของฉันให้เจาะจงยิ่งขึ้น
Remi Letourneau

0

MTU คือขนาดแพ็กเก็ต IP สูงสุดของลิงก์ที่กำหนด MSS คือขนาดเซ็กเมนต์ TCP สูงสุด

MTU ใช้สำหรับการแยกส่วนคือแพ็คเก็ตที่ใหญ่กว่า MTU จะแยกส่วน แต่ในกรณีของ MSS แพ็กเก็ตที่ใหญ่กว่า MSS จะถูกทิ้ง

MSS จะถูกระบุในระหว่างการจับมือ TCP โดยทั่วไปใน SYN และไม่สามารถเปลี่ยนค่าได้หลังจากทำการเชื่อมต่อแล้ว

MSS = MTU-40 (ส่วนหัว IP (20 ไบต์) + ส่วนหัว TCP (20 ไบต์))


ฉันคิดว่าส่วนหัวของ TCP ไม่จำเป็นต้องมี 20 ไบต์นั่นเป็นเพียงความยาวน้อยที่สุด?
Sajuuk

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