Wo ist das Don ' T Fragment-Bit des IP-Flags verwendet?
Ich bin neugierig zu wissen, wo die "Don' T Fragment" [DF] Bit der IP-Fahnen verwendet wird. Als Fragmentierung wird unsichtbaren höheren Ebenen, und Sie kümmern sich nicht zu.
Ich bin auch auf der Suche für ein Beispiel.
Vielen Dank im Voraus.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Fragmentierung ist nicht immer unsichtbar für alle oberen Schichten. Einige frühe (und wohl auch aktuell) Mikro-controller-TCP/IP-stacks nicht implementieren die vollen Fähigkeiten, wie die Fragmentierung der Handhabung. Die Verwendung der Flagge in dieser situation würde sicherstellen, dass das Paket angekommen ist in seiner ursprünglichen form, statt eine Menge von Fragmenten, die das andere Ende nicht bewältigen konnte.
Darüber hinaus, wenn die UDP verwenden, ist es nicht notwendig, für alle Fragmente, um anzukommen am Ziel, also die Verhinderung der Fragmentierung bedeutet, dass die Nachricht ankommt oder nicht ankommt - gibt es keine Möglichkeit, dass nur ein bit des UDP-Datagramm wird das Ziel erreichen. Ich kann mich nicht erinnern, wie lange das TCP/IP-stack statt in Einzelteilen IP-Pakete warten auf fehlende Fragmente, aber die Nutzung des DF-flag bedeutete, es gab keine unnötigen Ressourcen gebunden, während dieser Zeit.
Endlich, Sie können es verwenden, für die Prüfung Verhalten der Netzwerk-Infrastruktur, wie zum Beispiel, was passiert, wenn Sie bekommen ein Paket, das größer als die maximum transmission unit (DF verhindert, dass Paket wird fragmentiert, um 'squeeze-durch' das Loch).
Neben @Pax ' s Antwort (oder vielleicht als Teil der Tests, die er erwähnt), das DP-flag wird auch in Pfad-MTU-Erkennung. Dies ist, wenn Sie versuchen, herauszufinden, was das größte Paket, dass gesendet werden kann, ohne fragmentiert ist, für einen bestimmten link.
Es ist oft nützlich, um eine Zersplitterung zu vermeiden, auch wenn höhere Protokolle sind in der Theorie isoliert von der mechanik ist, Sie kann immer noch "fühlen" sind die Folgen. Wenn eine einzelne Anwendung-Ebene
write()
an die Netzwerk-Buchse endet als fragmentiert, weil es zu groß ist, und eines der Fragmente verloren im Netz, die gesamte IP-Paket verloren. Dies wirkt sich natürlich auch der Durchsatz.Aus diesem Grund ist es oft wünschenswert zu wissen, die maximum transmission unit, d.h. des größten Pakets, das gesendet werden kann, zu einem Ziel, ohne fragmentiert. Path MTU discovery wird verwendet, um zu finden, diese Größe, indem Sie einfach die Einstellung das DF-bit und senden sukzessive größere Pakete, bis die Netzwerk-Berichte (über ICMP) ein Misserfolg.
Tun, beachten Sie, dass es gibt keine standard-Weg, um set DF in C unter Linux, dieser code funktioniert:
aber nicht auf FreeBSD 6
Auch, "Path MTU discovery" ist extrem unzuverlässig auf dem echten Internet. Zu viele kaputte firewalls und middleboxes filtern ICMP "Packet too big" - Nachrichten (hier ist eine gute Möglichkeit zu testen, einen Kandidaten-Netzwerk-administrator in einem interview: Fragen Sie ihn/Sie zu stoppen, ping und er/Sie wird wahrscheinlich blocken ICMP komplett.) Finden Sie in RFC 2923: "TCP-Probleme, die mit Path-MTU-Discovery"
Das ist der Grund, warum die IETF schlägt nun einen neuen Weg, um zu testen, MTU, ohne sich auf Path MTU Discovery RFC 4821: "Packetization Layer Path MTU Discovery"