2010-09-03 7 views
2

Les bits dans Ethernet sont transférés en mode LSB d'abord, mais le datagramme IPv4 doit être transmis dans l'ordre des octets de gros caractères.Transférer des bits dans un datagramme IP (IPv4)

par exemple. supposez une trame ethernet avec l'adresse de destination comme 12-34-56-78-9A-BC portant un datagramme IP dans le champ de données. Comme je comprends suivant sera l'ordre dans lequel les bits seront transmis:

adr préambule-SFD-destination ---- (reste-tête Ethernet) ---- (données ethernet)

preamble- SFr-destination addr ---- (reste de l'en-tête ethernet) ---- version ---- longueur de l'en-tête ---- (reste du datagramme IP)

préambule-SFD-12-34-56-78 -9A-BC ---- (reste de l'en-tête Ethernet) ---- 4 ---- 15 ---- (reste du datagramme IP)

Question 1: Laquelle des transmissions suivantes est correcte?

transmission de trame Ethernet sur le fil de bit de poids faible dans chaque octet premier

préambule-SFD-01001000 00101100 01101010 00011110 01011001 00111101 ---- (reste en-tête Ethernet) ---- - - (reste du datagramme IP)

de transmission

de trame Ethernet sur le fil de bit de poids faible dans chaque octet tête première mais IP est transféré en tant que MSB de chaque octet premier

préambule-SFD-01001000 00101100 01101010 00011110 01011001 00111101 ---- (reste de l'en-tête Ethernet) ---- ---- (reste du datagramme IP)

Question 2: Comme la trame ethernet est transmise avec LSB dans chaque octet en premier, les bits de la partie de données seront également (le datagramme IPv4) transférés comme LSB dans chaque octet en premier?

Si oui, pourquoi disons-nous que datagrammes IPv4 est transféré dans le grand ordre endian

Répondre

2

ordre des octets Big-endian dans le datagrammes IPv4 n'a rien à voir avec l'ordre de bits sur le fil.

Logiquement, pensez à une trame Ethernet en tant que série d'octets, jusqu'à ce que vous atteigniez la couche physique.

Certaines technologies de couche physique Ethernet (les plus anciennes et les plus lentes) convertissent directement chaque octet en 8 bits sur le réseau, le bit le moins significatif en premier. (Une fois que vous aurez atteint les vitesses 1G/10G, rien de tel ...)

Dans votre exemple, avec la version = 4 et la longueur de l'en-tête = 15, le premier octet du datagramme IP sera 0x4F. être transmis comme 11110010.


"l'ordre des octets Big-endian" se réfère à l'ordre des octets dans les champs multi-octets. Par exemple: le champ "Longueur totale" dans l'en-tête IPv4 est une valeur de 16 bits occupant les octets 2 et 3. Si la longueur totale est de 1000 octets - 0x3E8 en hexadécimal, elle sera envoyée comme 0x03 (octet 2) suivi de 0xE8 (octet 3). (Alors que si c'était little-endian, ce serait 0xE8 dans l'octet 2 et 0x03 dans l'octet 3.)

Questions connexes