2009-06-24 3 views
2

Ich suche nach dem Grund Warum Fragmentierung auf IP-Ebene erfolgt, aber warum nicht für TCP/UDP.Warum Fragmentierung bei IP ausgeführt wird Warum nicht für TCP/UDP

Angenommen, mein Frame sieht so aus | MAC | IP | TCP | Payload | FCS. die ganze Größe, wenn sagen für zB: 1600. PathMTU passiert hier, warum Fragmentierung implementiert wird @ IP-Ebene ist meine Frage und warum nicht implementiert @ TCP/UDP-Ebene/Code.

Vielen Dank im Voraus.

Antwort

11

Genau das sind mehrere Schichten im TCP/IP-Stack und im ISO/OSI-Modell. TCP/UDP sind Transportprotokolle und sie sollten sich nicht um Fragmentierung kümmern - das ist nicht ihr Problem. Die IP-Ebene behandelt das Netzwerk und befasst sich mit der Fragmentierung, da die Größe des Fragments von den Netzwerkeigenschaften abhängt. Die Schicht, die die besten Bedingungen zur Lösung des Problems hat, löst sie.

+0

Angenommen, mein Frame sieht so aus | MAC | IP | TCP | Payload | FCS.die ganze Größe, wenn sagen für zB: 1600. PathMTU passiert hier, warum Fragmentierung implementiert wird @ IP-Ebene ist meine Frage und warum nicht implementiert @ TCP/UDP-Ebene/Code. – mahesh

+0

@mahesh - Sie können Ihre Frage bearbeiten, um dies zu reflektieren –

+1

@Brian Agnew, es könnte super voll sein, wenn Sie die Frage bearbeiten könnten, wie Sie mich bearbeiten möchten. :). Danke im Voraus. – mahesh

3

Einige TCP-Implementierungen bestimmen auch die MTU und Größe ihrer Segmente, um eine Fragmentierung zu vermeiden. Dies verbessert die Zuverlässigkeit unter verlustreichen Bedingungen, da jedes TCP-Segment, das empfangen wird, bestätigt und nicht erneut übertragen werden kann. Nur verlorene TCP-Segmente werden erneut übertragen. Wenn im Gegensatz dazu ein IP-Datagrammfragment verloren geht, werden keine nützlichen Informationen empfangen.

0

Es ist weniger sinnvoll, TCP zu fragmentieren als zur Fragmentierung von UDP. Da TCP einen zuverlässigen Segmentierungs-/Reassemblierungs-/Neuübertragungsmechanismus bietet, kann man nur kleinere TCP-Segmente senden und die gesamte Notwendigkeit der Fragmentierung vermeiden (worüber d3jones spricht).

In UDP macht jedoch Fragmentierung immer noch Sinn. Sie können ein einzelnes UDP-Segment senden, das länger ist als die MTU. Die IP-Ebene wird es korrekt und unsichtbar fragmentieren. Der Anwendungsentwickler muss die MTU oder irgendetwas über das Netzwerk nicht bestimmen, um das Protokoll der Anwendungsschicht zu codieren.

2

Wenn die Fragmentierung auf höheren Schichten (TCP, UDP usw.) durchgeführt würde, würde dies die Fragmentierung/Neuanordnung redundant implementieren (einmal pro Protokoll); Wenn eine Fragmentierung auf einer unteren Schicht (Ethernet, ATM, etc.) durchgeführt würde, würde dies erfordern, dass eine Fragmentierung/erneute Zusammenfügung an jedem Sprung (könnte ziemlich teuer sein) und redundant implementiert werden (einmal pro Verbindungsschichtprotokoll). Daher ist die IP-Schicht die effizienteste für die Fragmentierung.

3

Layer-4 (TCP/UDP) kommt nur an den Endpunkten (Sender/Empfänger) ins Bild. Layer-3 (IP) kommt in Bild pro Hop-Basis.

MTU eine Eigenschaft der Verbindung, aber die Fragmentierung auf der Grundlage dieser Link-Eigenschaft (MTU) immer auf IP-Schicht auf einem Router (Hops) getan

Nun ist die Verbindung zwischen jedem Hop kann unterschiedlicher Bandbreite sein Daher muss bei jedem Sprung entschieden werden, wie das Paket an das Ziel weitergeleitet wird. Da MTU die maximale Datenmenge ist, die auf die Verbindung gepusht werden kann, und wenn sie kleiner ist als die Größe des zu sendenden Pakets, muss man sie in kleinere Stücke zerlegen, um sie auf der Verbindung unterzubringen.

Wie Fragmentierung und Reassemblierung hat viele Nachteile, wie 1. kleine Zunahme der CPU und Speicher-Overhead 2. mehr Overhead pro Paket aufgrund der Zugabe von Fragment-Header 3. Wenn ein Fragment verloren Sender das gesamte Paket zu übertragen hat

Zum Lösen der obigen Probleme 1. Path MTU Discovery kann verwendet werden. 2. In Layer 4 kann TCP MSS-Clamping verwendet werden.

Verwandte Themen