2
1
Host A sends a 1400 byte IP packet to Host B over an Ethernet and PPP link. The PPP link has an MTU of 532 bytes, which means that the IP packet will be fragmented into 3 smaller packets.
Fragment 1 is received first. It has a unique ident and the M bit flag is set, indicating there are more fragments to come. However, fragment 3 is received next, due to some re-ordering in the network. This fragment has the same ident as fragment 1, but the M bit is not set, because it's the last fragment. Fragment 2 is received shortly after.
What will the receiving host do?
Will the receiving host know that the offset and packet length do not match up, and assume an intermediate packet has been either dropped or re-ordered in the network, and wait for it?
Will the receiving host reassemble the packet (both the header checksums match) and pass it to the higher layer (where it will fail an IP checkum over the data if using UDP/TCP).
Will the receiving host drop all fragments for this ident.
You do realize that RFC 2460 defines IPv6, right? In normal usage, IP == IPv4. IPv6 is different. – a CVn – 2015-04-09T14:00:07.367
@MichaelKjörling a packet in TCP will timeout long before then, would it be correct to think that the reassembly timeout must be preceded by high layer protocols? – None – 2015-04-09T14:03:51.743
@GeorgeRobinson, if I'm understanding your question correctly, yes, the higher the timeout is in the protocol stack, the shorter the timeout must be, because if a lower layer timeout occurs first, the higher layer will never get the opportunity to handle it. I had a webservice which accesses a database and absolutely MUST return false if any failure occurs, but due to issues on the hoster end, during times of high usage, the DB connection would time out. I had to arrange the timeouts such that the DB timeout was assumed before the SOAP timeout window occured so that the caller would get False – Frank Thomas – 2015-04-09T14:08:58.730