8 votes

Quelle est la taille d'une trame de paquet IP, y compris les en-têtes ?

Un peu d'histoire.

J'écris une application qui utilise UDP. L'application fonctionnera sur un réseau local (pas sur Internet). J'ai supposé que si mon MTU est de 1500, c'est la taille maximale d'une charge utile UDP, mais je ne suis pas sûr que l'en-tête UDP soit censé tenir dans ce cadre. mais je ne suis pas sûr que l'en-tête UDP soit censé tenir dans cette limite.

Je soupçonne que si j'envoie un paquet UDP avec une charge utile de 1500 octets et que le MTU de la machine est de 1500 octets, il finira par envoyer deux paquets ?

Chercher une réponse claire sur Internet semble plus difficile qu'il n'y paraît, j'ai vu des informations contradictoires.

9voto

nos Points 102226
------------------------------------------------------------------------------
|Ethernet  | IPv4         |UDP    | Data                   |Ethernet checksum|
------------------------------------------------------------------------------
  14 bytes    20 bytes     8 bytes    x bytes                4 bytes
           \ (w/o options)                               /
            \___________________________________________/
                              |
                             MTU

Si votre MTU est de 1500, vous avez 1500-20-8 = 1472 octets pour vos données.

  • Si vous dépassez ce seuil, les paquets seront fragmentés, c'est-à-dire divisés en plusieurs paquets.
  • Il peut y avoir plus de couches impliquées, par exemple un en-tête vlan de 4 octets si vous êtes au-dessus d'un vlan ethernet.
  • Certains routeurs situés entre vous et la destination peuvent ajouter des couches supplémentaires.

3voto

teambob Points 954

Oui, votre exemple ne tiendrait pas dans un cadre.

La charge utile des données Ethernet est de 1500 octets. IPv4 exige un minimum de 20 octets pour son en-tête. En revanche, IPv6 exige un minimum de 40 octets. UDP requiert 8 octets pour son en-tête. Cela laisse 1472 octets (ipv4) ou 1452 (ipv6) pour vos données.

Plus d'informations :

-1voto

Biswajit Jena Points 1

Alors, voici comment ça marche. Ethernet limite votre flux de données à 1500 octets par trame même si vous avez un gros tuyau de 100 méga. Pour utiliser réellement le débit de la ligne, par le biais de votre application UDP, vous devrez utiliser/modifier les trames jumbo Ethernet qui peuvent supporter jusqu'à 9000 octets par trame. De plus, si vous regardez Netflix/Youtube et d'autres protocoles de streaming, ils testent votre lien avant de commencer le streaming. Ce qu'ils font essentiellement, c'est qu'ils vous envoient des données et calculent/moyennent la vitesse du lien avant de lancer le flux. Ils utilisent essentiellement UDP, mais avec des paquets de très grande taille. Plus de 1500 octets, c'est sûr.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X