Selon l'ordre des gros octets endiens ou l'ordre des octets du réseau, les bits sont transmis dans cet ordre: les bits 0-7 en premier, puis les bits 8-15, puis 16-23 et les bits 24-31 en dernier. Cela signifie-t-il que les bits de la version, de l'identification, du TTL, etc. vont d'abord, puis les bits des champs suivants?
Il y a une confusion ici. L'ordre des octets du réseau ne spécifie pas comment les bits sont transmis sur le réseau. Il spécifie comment les valeurs sont stockées dans des champs multi-octets.
Exemple :
Le champ Longueur totale est composé de deux octets. Il spécifie en octets la taille du paquet.
Disons que nous avons la valeur 500 pour ce champ. En utilisant l'ordre des octets du réseau, il sera vu sur le fil comme celui-ci, étant transmis par transmission de gauche à droite:
00000001 11110100
Si nous utilisions le petit format endian, il aurait été vu sur le fil comme ceci:
11110100 00000001
Une fois le paquet entier construit, les bits seront envoyés en commençant par le bit adressé le plus bas de l'en-tête (bit 0), de sorte que la transmission commencera avec le champ Version .
Un dernier point à souligner ici est que l'ordre des octets réseau est, comme vous l'avez mentionné, l'ordre Big Endian. Il a été choisi arbitrairement pour avoir un format commun pour tous les protocoles et implémentations de réseau.
Donc, dans le cas où le premier champ qui ira sur le fil est la version, puis HL, puis Type, puis Longueur totale, puis Identification, etc. Big endian et little endian déterminent uniquement la façon dont les bits sont stockés dans les champs d'en-tête.
MUSR
Oui, vous l'avez compris :)
dragosb
@MUSR: non, ils déterminent l'ordre dans lequel les octets d'un champ multi-octets sont transmis.
EML
3
Il est très facile de penser que les paquets Internet vont sur le fil d'une manière très simple de "port série". Dans la pratique, il n'y a rien de intrinsèquement sériel à ce sujet.
Si vous pensez à certains détails de l'interface, cela pourrait être plus clair:
Le 100baseTX réel brouille les blocs de 4 bits et les envoie en série de 5 bits, mais les données d'origine ne sont pas visibles dans la sortie, donc la question sur l'ordre dans lequel ils vont n'a pas de réponse. https://en.wikipedia.org/wiki/4B5B
Lorsque vous envoyez un paquet via une interface de bouclage, il peut être copié à l'intérieur du bus 64 bits de l'ordinateur à la fois; ou bien simplement par remappage de la mémoire qui serait vraiment un paquet entier en parallèle.
Bien sûr, le port parallèle IP n'est pas commun, mais il illustre le point; les deux autres sont omniprésents.
D'autres protocoles peuvent être différents, mais Ethernet transmet d'abord l' octet / octet le plus significatif et d'abord dans chaque octet le bit le moins significatif . Ainsi, un champ de 16 bits est transmis 8-9-10-11-12-13-14-15-0-1-2-3-4-5-6-7 (0 = bit le moins significatif, 15 = le plus peu significatif). Vérifiez les clauses 3.1.1, 3.2.6 et 3.3 de l'IEEE 802.3.
(Il s'agit d'un Ethernet purement série - selon la couche physique, jusqu'à huit bits peuvent être transférés simultanément. De plus, l'ordre des bits ne s'applique qu'à la couche 1 non codée.)
IPv4 utilise également l'octet le plus significatif en premier, vérifiez RFC 791. Cependant, la numérotation dans les RFC IETF est dans l'ordre de transmission avec la numérotation des bits en sens inverse vers Ethernet : Bit 0 = bit le plus significatif = transmis en premier (là où cela n'est pas défini autrement).
Vous avez confondu les octets et l'ordre des bits, il devrait être: 7-6-5-4-3-2-1 15-14-13-12-11-10-9-8 le premier octet est 0-7, le 7e bit étant le moins important.
Gopoi
@Gopoi Si vous numérotez les bits de cette façon, vous avez raison. Cependant, "0" est généralement le bit le moins significatif (dernier sous forme écrite humaine) et "15" est le bit le plus significatif (premier sous forme écrite humaine) - selon leur puissance de deux valeurs.
Zac67
J'ai toujours pensé à la numérotation des bits comme l'ordre de transmission, car les en-têtes RFC sont affichés ainsi. Plus vous en savez!
Il est très facile de penser que les paquets Internet vont sur le fil d'une manière très simple de "port série". Dans la pratique, il n'y a rien de intrinsèquement sériel à ce sujet.
Si vous pensez à certains détails de l'interface, cela pourrait être plus clair:
Bien sûr, le port parallèle IP n'est pas commun, mais il illustre le point; les deux autres sont omniprésents.
J'espère que cela pourra aider
Jonathan.
la source
D'autres protocoles peuvent être différents, mais Ethernet transmet d'abord l' octet / octet le plus significatif et d'abord dans chaque octet le bit le moins significatif . Ainsi, un champ de 16 bits est transmis 8-9-10-11-12-13-14-15-0-1-2-3-4-5-6-7 (0 = bit le moins significatif, 15 = le plus peu significatif). Vérifiez les clauses 3.1.1, 3.2.6 et 3.3 de l'IEEE 802.3.
(Il s'agit d'un Ethernet purement série - selon la couche physique, jusqu'à huit bits peuvent être transférés simultanément. De plus, l'ordre des bits ne s'applique qu'à la couche 1 non codée.)
IPv4 utilise également l'octet le plus significatif en premier, vérifiez RFC 791. Cependant, la numérotation dans les RFC IETF est dans l'ordre de transmission avec la numérotation des bits en sens inverse vers Ethernet : Bit 0 = bit le plus significatif = transmis en premier (là où cela n'est pas défini autrement).
la source