โฮสต์สั่งซื้อแพ็กเก็ต IP ที่กระจัดกระจายได้รับอีกครั้งหรือไม่


1

Host A ส่งแพ็กเก็ต IP 1400 ไบต์ไปยัง Host B ผ่านลิงก์ Ethernet และ PPP ลิงก์ PPP มี MTU 532 ไบต์ซึ่งหมายความว่าแพ็กเก็ต IP จะถูกแยกส่วนเป็น 3 แพ็คเก็ตขนาดเล็ก

ได้รับชิ้นส่วน 1 ก่อน มันมี ident ที่ไม่ซ้ำกันและมีการตั้งค่าสถานะบิต M ระบุว่ามีชิ้นส่วนมากขึ้นที่จะมา อย่างไรก็ตามจะได้รับแฟรกเมนต์ 3 ถัดไปเนื่องจากมีการสั่งซื้อซ้ำในเครือข่าย แฟรกเมนต์นี้มี ident เดียวกันกับแฟรกเมนต์ 1 แต่ไม่ได้ตั้งค่าบิต M เนื่องจากเป็นแฟรกเมนต์สุดท้าย ส่วนที่ 2 ได้รับหลังจากนั้นไม่นาน

โฮสต์ที่รับจะทำอะไร

  1. โฮสต์ที่รับจะทราบว่าความยาวออฟเซ็ตและแพ็คเก็ตไม่ตรงกันหรือไม่และสมมติว่าแพ็กเก็ตกลางได้รับการตกหรือสั่งซื้อใหม่ในเครือข่ายแล้วรอหรือไม่

  2. โฮสต์ที่รับจะรวมกันอีกแพ็กเก็ต (ทั้งส่วนหัว checksums ตรงกัน) และส่งไปยังชั้นที่สูงกว่า

  3. โฮสต์ที่รับจะส่งแฟรกเมนต์ทั้งหมดสำหรับ ident นี้

คำตอบ:


1

โฮสต์ที่รับรู้ว่ามี สูญหาย ชิ้นส่วนและรอจนกว่า หมดเวลาการประกอบซ้ำ หมดอายุ นอกเสียจาก สูญหาย แฟรกเมนต์มาถึง

RFC 791 ในส่วน 3.2 กำหนดว่า:

If the timer runs out, the all reassembly resources for this buffer identifier are released. The initial setting of the timer is a lower bound on the reassembly waiting time. This is because the waiting time will be increased if the Time to Live in the arriving fragment is greater than the current timer value but will not be decreased if it is less. The maximum this timer value could reach is the maximum time to live (approximately 4.25 minutes). The current recommendation for the initial timer setting is 15 seconds.

การหมดเวลาประกอบใหม่สำหรับ IPv4 และ IPv6 บน ลินุกซ์ คือ 30 วินาทีและสำหรับ ของ windows (Vista, 2008, 7 และ 2008 R2) คือ 60 วินาทีตามมาตรา 4.5 ของ RFC 2460 :

If insufficient fragments are received to complete reassembly of a packet within 60 seconds of the reception of the first-arriving fragment of that packet, reassembly of that packet must be abandoned and all the fragments that have been received for that packet must be discarded.


คุณรู้หรือไม่ว่า RFC 2460 กำหนด IPv6 ใช่ไหม ในการใช้งานปกติ IP == IPv4 IPv6 นั้นแตกต่างกัน
a CVn

@ MichaelKjörlingแพ็กเก็ตใน TCP จะใช้เวลานานก่อนที่จะถูกต้องมันจะถูกต้องหรือไม่ที่จะคิดว่าการหมดเวลาการประกอบซ้ำจะต้องนำหน้าด้วยโปรโตคอลเลเยอร์สูง

@ GeorgeRobinson ถ้าฉันเข้าใจคำถามของคุณถูกต้องใช่การหมดเวลาที่สูงกว่าอยู่ในโปรโตคอลสแต็คยิ่งการหมดเวลาสั้นลงต้องเป็นเพราะถ้าหากเลเยอร์ที่ต่ำกว่าเกิดขึ้นก่อนเลเยอร์ที่สูงกว่าจะไม่มีโอกาสจัดการ มัน. ฉันมีเว็บเซอร์ที่เข้าถึงฐานข้อมูลและต้องส่งคืนเท็จอย่างแน่นอนหากเกิดความล้มเหลวใด ๆ แต่เนื่องจากปัญหาที่ปลาย hoster ในช่วงเวลาที่มีการใช้งานสูงการเชื่อมต่อฐานข้อมูลจะหมดเวลา ฉันต้องจัดเรียงไทม์เอาต์เพื่อให้มีการสันนิษฐานว่าหมดเวลา DB ก่อนที่จะหมดเวลาการทำงานของ SOAP ดังนั้นผู้โทรจะได้รับ False
Frank Thomas
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.