Für Windows 7, Windows Vista und Windows XP ist die MTU für verschiedene Schnittstellen über Windows selbst verfügbar netsh
.
Windows 7, Windows Vista
So zeigen Sie die aktuelle MTU unter Windows 7 oder Windows Vista an einer Eingabeaufforderung an:
C:\Users\Ian>netsh interface ipv6 show subinterfaces
MTU MediaSenseState Bytes In Bytes Out Interface
---------- --------------- --------- --------- -------------
1280 1 24321220 6455865 Local Area Connection
4294967295 1 0 1060111 Loopback Pseudo-Interface 1
1280 5 0 0 isatap.newland.com
1280 5 0 0 6TO4 Adapter
Und für IPv4-Schnittstellen:
C:\Users\Ian>netsh interface ipv4 show subinterfaces
MTU MediaSenseState Bytes In Bytes Out Interface
---------- --------------- --------- --------- -------------
1500 1 146289608 29200474 Local Area Connection
4294967295 1 0 54933 Loopback Pseudo-Interface 1
Hinweis: In diesem Beispiel hat meine IPv6- Schnittstelle für LAN- Verbindungen eine so niedrige MTU (1280), weil ich einen Tunneldienst verwende, um IPv6-Konnektivität zu erhalten .
Sie können auch Ihre MTU ändern (Windows 7, Windows Vista). An einer Eingabeaufforderung mit erhöhten Rechten:
>netsh interface ipv4 set subinterface "Local Area Connection" mtu=1492 store=persistent
Ok.
Getestet mit Windows 7 Service Pack 1
Windows XP
Die netsh
Syntax für Windows XP unterscheidet sich geringfügig:
C:\Users\Ian>netsh interface ip show interface
Index: 1
User-friendly Name: Loopback
Type: Loopback
MTU: 32767
Physical Address:
Index: 2
User-friendly Name: Local Area Connection
Type: Etherenet
MTU: 1500
Physical Address: 00-03-FF-D9-28-B7
Hinweis: Windows XP erfordert, dass der Routing- und RAS- Dienst gestartet wird, bevor Sie Details zu einer Schnittstelle (einschließlich MTU) anzeigen können:
C:\Users\Ian>net start remoteaccesss
Windows XP bietet keine Möglichkeit, die MTU-Einstellung von innen zu ändern netsh
. Dafür können Sie:
Getestet mit Windows XP Service Pack 3
Siehe auch
Kurze Diskussion darüber, was MTU ist, wo die 28 Bytes herkommen.
Ihre Netzwerkkarte (Ethernet) hat eine maximale Paketgröße von 1,500 bytes
:
+---------+
| 1500 |
| byte |
| payload |
| |
| |
| |
+---------+
Der IP-Teil von TCP / IP erfordert einen 20-Byte-Header (12 Byte Flags, 4 Byte für die Quell-IP-Adresse, 4 Byte für die Ziel-IP-Adresse). Dadurch bleibt weniger Speicherplatz im Paket verfügbar:
+------------------------+
| 12 bytes control flags | \
| 4 byte from address | |- IP header: 20 bytes
| 4 byte to address | /
|------------------------|
| 1480 byte payload |
| |
| |
| |
+------------------------+
Jetzt hat ein ICMP-Paket (Ping) einen 8-Byte-Header (1 Byte type
, 1 Byte code
, 2 Byte checksum
, 4 Byte zusätzliche Daten):
+------------------------+
| 12 bytes control flags | \
| 4 byte from address | |
| 4 byte to address | |- IP and ICMP header: 28 bytes
|------------------------| |
| 8 byte ICMP header | /
|------------------------|
| 1472 byte payload |
| |
| |
| |
+------------------------+
Hier sind die "fehlenden" 28 Bytes - es ist die Größe der Header, die zum Senden eines Ping-Pakets erforderlich sind.
Wenn Sie ein Ping-Paket senden, können Sie angeben, wie viele zusätzliche Nutzdaten Sie einschließen möchten. In diesem Fall, wenn Sie alle 1472 Bytes einschließen:
>ping -l 1472 obsidian
Dann ist das resultierende Ethernet- Paket bis zum Anschlag voll. Jedes letzte Byte des 1500-Byte-Pakets wird gefüllt:
+------------------------+
| 12 bytes control flags | \
| 4 byte from address | |
| 4 byte to address | |- IP and ICMP header: 28 bytes
|------------------------| |
| 8 byte ICMP header | /
|------------------------|
|........................|
|........................|
|. 1472 bytes of junk....|
|........................|
|........................|
|........................|
|........................|
+------------------------+
Wenn Sie versuchen, ein weiteres Byte zu senden
>ping -l 1473 obsidian
Das Netzwerk muss dieses 1501-Byte-Paket in mehrere Pakete fragmentieren:
Packet 1 of 2
+------------------------+
| 20 bytes control flags | \
| 4 byte from address | |
| 4 byte to address | |- IP and ICMP header: 28 bytes
|------------------------| |
| 8 byte ICMP header | /
|------------------------|
|........................|
|........................|
|..1472 bytes of payload.|
|........................|
|........................|
|........................|
|........................|
+------------------------+
Packet 2 of 2
+------------------------+
| 20 bytes control flags | \
| 4 byte from address | |
| 4 byte to address | |- IP and ICMP header: 28 bytes
|------------------------| |
| 8 byte ICMP header | /
|------------------------|
|. |
| 1 byte of payload |
| |
| |
| |
| |
| |
+------------------------+
Diese Fragmentierung geschieht im Hintergrund, idealerweise ohne dass Sie es merken.
Aber Sie können gemein sein und dem Netzwerk mitteilen, dass das Paket nicht fragmentiert werden darf:
>ping -l 1473 -f obsidian
Das Flag -f bedeutet , nicht fragmentieren . Wenn Sie nun versuchen, ein Paket zu senden, das nicht in das Netzwerk passt, erhalten Sie den Fehler:
>ping -l 1473 -f obsidian
Packet needs to be fragmented but DF set.
Das Paket muss fragmentiert werden, aber das Flag Nicht fragmentieren wurde gesetzt.
Wenn irgendwo entlang der Linie ein Paket fragmentiert werden musste, sendet das Netzwerk tatsächlich ein ICMP-Paket, das Ihnen mitteilt, dass eine Fragmentierung stattgefunden hat. Ihr Computer erhält dieses ICMP-Paket, erhält Informationen zur größten Größe und soll das Senden von zu großen Paketen einstellen. Leider blockieren die meisten Firewalls diese ICMP-Pakete für die "Pfad-MTU-Erkennung", sodass Ihr Computer nie merkt, dass die Pakete fragmentiert werden (oder schlimmer: fallengelassen, weil sie nicht fragmentiert werden konnten).
Dies führt dazu, dass der Webserver nicht funktioniert. Sie können die ersten kleinen (<1280 Byte) Antworten erhalten, aber größere Pakete können nicht durchkommen. Die Firewalls des Webservers sind falsch konfiguriert und blockieren ICMP-Pakete. Der Webserver merkt also nicht, dass Sie das Paket nie bekommen haben.
Die Fragmentierung von Paketen ist in IPv6 nicht zulässig. Jeder muss ICMP mtu-Erkennungspakete (korrekt) zulassen.