Pour Windows 7, Windows Vista et Windows XP, le MTU pour diverses interfaces est disponible à partir de Windows lui-même en utilisant netsh
.
Windows 7, Windows Vista
Pour afficher le MTU actuel sur Windows 7 ou Windows Vista, à partir d'une invite de commande:
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
Et pour les interfaces IPv4:
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
Remarque: Dans cet exemple , ma connexion au réseau local IPv6 interface a un faible MTU (1280) parce que je suis sur un tunnel de service pour obtenir une connectivité IPv6 .
Vous pouvez également modifier votre MTU (Windows 7, Windows Vista). À partir d'une invite de commande élevée :
>netsh interface ipv4 set subinterface "Local Area Connection" mtu=1492 store=persistent
Ok.
Testé avec Windows 7 Service Pack 1
Windows XP
La netsh
syntaxe pour Windows XP est légèrement différente:
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
Remarque: Windows XP nécessite que le service de routage et d'accès distant soit démarré avant de pouvoir voir les détails d'une interface (y compris MTU):
C:\Users\Ian>net start remoteaccesss
Windows XP ne permet pas de modifier le paramètre MTU de l'intérieur netsh
. Pour cela vous pouvez:
Testé avec Windows XP Service Pack 3
Voir également
Brève discussion sur ce qu'est MTU, d'où viennent les 28 octets.
Votre carte réseau (Ethernet) a une taille de paquet maximale de 1,500 bytes
:
+---------+
| 1500 |
| byte |
| payload |
| |
| |
| |
+---------+
La partie IP de TCP / IP nécessite un en-tête de 20 octets (12 octets d'indicateurs, 4 octets pour l'adresse IP source, 4 octets pour l'adresse IP de destination). Cela laisse moins d'espace disponible dans le paquet:
+------------------------+
| 12 bytes control flags | \
| 4 byte from address | |- IP header: 20 bytes
| 4 byte to address | /
|------------------------|
| 1480 byte payload |
| |
| |
| |
+------------------------+
Maintenant, un paquet ICMP (ping) a un en-tête de 8 octets (1 octet type
, 1 octet code
, 2 octets checksum
, 4 octets de données supplémentaires):
+------------------------+
| 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 |
| |
| |
| |
+------------------------+
C'est là que se trouvent les 28 octets "manquants" - c'est la taille des en-têtes nécessaires pour envoyer un paquet ping.
Lorsque vous envoyez un paquet ping, vous pouvez spécifier la quantité de données utiles supplémentaires que vous souhaitez inclure. Dans ce cas, si vous incluez tous les 1472 octets:
>ping -l 1472 obsidian
Ensuite, le paquet Ethernet résultant sera plein jusqu'aux branchies. Chaque dernier octet du paquet de 1500 octets sera rempli:
+------------------------+
| 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....|
|........................|
|........................|
|........................|
|........................|
+------------------------+
Si vous essayez d'envoyer un octet de plus
>ping -l 1473 obsidian
le réseau devra fragmenter ce paquet de 1501 octets en plusieurs paquets:
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 |
| |
| |
| |
| |
| |
+------------------------+
Cette fragmentation se produira dans les coulisses, idéalement à votre insu.
Mais vous pouvez être méchant et dire au réseau que le paquet n'est pas autorisé à être fragmenté:
>ping -l 1473 -f obsidian
L' indicateur -f signifie ne pas fragmenter . Maintenant, lorsque vous essayez d'envoyer un paquet qui ne tient pas sur le réseau, vous obtenez l'erreur:
>ping -l 1473 -f obsidian
Packet needs to be fragmented but DF set.
Le paquet doit être fragmenté, mais l' indicateur Ne pas fragmenter a été défini.
Si, le long de la ligne, un paquet devait être fragmenté, le réseau envoie en fait un paquet ICMP vous indiquant qu'une fragmentation s'est produite. Votre ordinateur reçoit ce paquet ICMP, est informé de la taille maximale et est censé arrêter d'envoyer des paquets trop volumineux. Malheureusement, la plupart des pare-feu bloquent ces paquets ICMP "Path MTU discovery", de sorte que votre machine ne se rend jamais compte que les paquets sont fragmentés (ou pire: abandonnés car ils ne pouvaient pas être fragmentés).
C'est ce qui empêche le serveur Web de fonctionner. Vous pouvez obtenir les réponses initiales petites (<1280 octets), mais les paquets plus gros ne peuvent pas passer. Et les pare-feu du serveur Web sont mal configurés, bloquant les paquets ICMP. Ainsi, le serveur Web ne se rend pas compte que vous n'avez jamais reçu le paquet.
La fragmentation des paquets n'est pas autorisée dans IPv6, tout le monde est tenu d'autoriser (correctement) les paquets de découverte ICMP mtu.