Frage

Ich muß wissen, was das größte UDP-Paket ich auf einem anderen Computer ist ohne Fragmentierung senden.

Diese Größe wird als die MTU (Maximum Transmission Unit) bekannt. Angeblich soll zwischen zwei Computern, werden viele Router und Modems sein, die verschiedene MTUs haben.

habe ich gelesen, dass die TCP-Implementierung in Windows automatisch die maximale MTU in einem Pfad befindet.

Ich war auch zu experimentieren, und ich fand heraus, dass die maximale MTU von meinem Computer auf einen Server 57712 Bytes + Header war. Alles darüber wurde verworfen. Mein Computer ist auf einem LAN, ist nicht die MTU sollte um 1500 Bytes sein?

War es hilfreich?

Lösung

Die folgenden Ihre Frage nicht direkt beantworten, aber man könnte es interessant finden; es sagt, dass können IP-Pakete zerlegt / zusammengesetzt werden und damit größer als Grenzwert für die Untergebener Medien (zB 1500-Byte-Ethernet): Resolve IP-Fragmentation, MTU, MSS und PMTUD Probleme mit GRE und IPSEC


Mehr zu diesem Thema:

Ich weiß nicht, über ICMP auf Windows über eine API zu erzeugen: einmal eine solche API vorgeschlagen wurde, und war umstritten, weil Menschen, die argumentiert, wäre es einfach, Software zu schreiben, die implementiert Denial-of-Service-Funktionalität durch das Erzeugen eine Flut von ICMP-Nachrichten.

Nein, es sieht aus wie es ist implementiert: siehe zum Beispiel Winsock Programmierer FAQ Beispiele: Ping:. Raw Sockets Methode

Also, um MTU zu entdecken, Ping-Pakete mit der Erzeugung 'nicht fragmentieren' Flagge.

Vielleicht gibt es eine einfachere API als diese, weiß ich nicht; aber ich hoffe, ich habe euch gegeben das zugrunde liegende Protokoll zu verstehen [s].

Andere Tipps

Zusätzlich zu allen bisherigen Antworten, unter Angabe des klassische :

IPv4 und IPv6 definieren Mindest Neumontage Puffergröße , die minimale Größe Datagramm, die wir jede Implementierung garantiert unterstützen muss. Für IPv4 ist diese 576 Bytes. IPv6 stellt sich auf 1.280 Bytes.


Diese ziemlich viel bedeutet, dass Sie wollen unter 576 Ihre Datagramm-Größe zu begrenzen, wenn Sie über öffentliches Internet arbeiten und steuern Sie nur eine Seite des Austausches - das ist, was die meisten der Standard-UDP-basierten Protokolle tun.
Beachten Sie auch, dass PMTU eine dynamische Eigenschaft des Pfades ist. Dies ist eines der Dinge, TCP befasst sich mit für Sie. Es sei denn, Sie bereit, neu zu implementieren viele Sequenzierung, Timing und Neuübertragung Logik, verwenden TCP für jede kritische Vernetzung. Benchmark, Test, Profil, das heißt beweisen , dass TCP Ihre Engpass ist, nur dann UDP betrachten.

Dies ist ein interessantes Thema für mich. Vielleicht haben einige praktische Ergebnisse von Interesse sein könnten, wenn sie um die reale Welt Internet über UDP klobig UDP-Daten liefern, und mit einer Übertragungsrate von 1 Päckchen eine zweite, Daten weiterhin bis zu etwa 2K mit minimalem Paketverlust aufzudrehen. Über diese und starten Sie in Probleme laufen, aber regelmäßig lieferten wir 1600+ Bytes Pakete ohne Not - das ist über GPRS Mobilfunknetze sowie WAN weltweit. Bei ~ 1 K das Signal unter der Annahme stabil ist (es ist nicht!) Sie niedrigen Paketverlust erhalten.

Interessanterweise ist es nicht das ungeradee Paket, aber oft eine Bö von Paketen für ein paar Sekunden -., Die vermutlich ist, warum VoIP-Anrufe gelegentlich nur kollabieren

Ihre eigene MTU ist im Registrierung , aber die MTU in der Praxis auf die kleinste MTU auf dem Weg zwischen Ihrem Rechner und dem Ziel wird. Seine beiden variabel und kann nur empirisch ermittelt werden. Es gibt eine Reihe von RFCs zeigen, wie es zu bestimmen.

LANs kann intern hat sehr große MTU-Werte, da die Netzwerk-Hardware typischerweise homogen oder zumindest zentral administriert ist.

Für UDP-Anwendungen müssen Sie End-to-End-MTU selbst behandeln, wenn Sie IP-Fragmentierung vermeiden möchten oder verworfenen Pakete. Die empfohlene Vorgehensweise für jede Anwendung ist Ihr Bestes zu tun PMTU zu benutzen, um Ihren maximalen Datagramm zu holen, oder senden Datagramme

https://tools.ietf.org/html/rfc5405#section-3.2

  

Unicast UDP Nutzungsrichtlinien für Anwendungsentwickler „sollte NICHT-Datagramme senden, die die PMTU überschreiten, sollten Sie PMTU entdecken oder Datagramme senden

Fenster erscheinen, um die Einstellungen und den Zugang zu Informationen über PMTU es grundlegende Socket-Optionen Schnittstelle ist:

Sie können sicherstellen, dass PMTU entdecken, ist auf über IP_MTU_DISCOVER, und Sie können die MTU über IP_MTU lesen.

https://docs.microsoft .com / en-us / windows / Desktop / winsock / ipproto-ip-Socket-Optionen

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top