De acuerdo con el orden de bytes de Big Endian o el orden de bytes de red, los bits se transmiten en este orden: primero los bits 0-7, luego los bits 8-15, luego los bits 16-23 y los bits 24-31. ¿Esto significa que los bits de la versión, identificación, TTL, etc. van primero y luego los bits de los siguientes campos?
Hay una confusión aquí. El orden de bytes de la red no especifica cómo se transmiten los bits a través de la red. Especifica cómo se almacenan los valores en campos de varios bytes.
Ejemplo :
El campo Longitud total se compone de dos bytes. Especifica en bytes el tamaño del paquete.
Digamos que tenemos el valor 500 para ese campo. Usando el orden de bytes de red, se verá sobre el cable de esta manera, transmitiéndose la transmisión de izquierda a derecha:
00000001 11110100
Si utilizáramos el formato little endian, se habría visto por cable de la siguiente manera:
11110100 00000001
Después de construir todo el paquete, los bits se enviarán comenzando con el bit de encabezado más bajo del encabezado (bit 0), por lo que la transmisión comenzará con el campo Versión .
Un último punto a destacar aquí es que el orden de bytes de red es, como usted mencionó, el orden Big Endian. Se eligió arbitrariamente para tener un formato común para todos los protocolos e implementaciones de red.
Por lo tanto, en caso de que el primer campo que irá en el cable sea versión, luego HL, luego Tipo, luego Longitud total, luego Identificación, y así sucesivamente. Big endian y little endian solo determinan cómo se almacenan los bits en los campos de encabezado.
MUSR
Sí, lo tienes :)
dragosb
@MUSR: no, determinan el orden en que se transmiten los bytes en un campo de varios bytes.
EML
3
Es muy fácil pensar que los paquetes de Internet se conectan por cable de una forma muy simple de "puerto serie". En la práctica no hay nada intrínsecamente serial al respecto.
Si piensa en algunos detalles de la interfaz, podría aclarar esto:
El 100baseTX real codifica bloques de 4 bits y los envía como 5 bits en serie, pero los datos originales no son visibles en la salida, por lo que la pregunta sobre en qué orden van no tiene una respuesta. https://en.wikipedia.org/wiki/4B5B
Cuando envía un paquete a través de una interfaz de bucle invertido, puede copiarse dentro del bus de la computadora de 64 bits a la vez; o, de hecho, simplemente mediante la reasignación de memoria que realmente sería un paquete completo en paralelo
Por supuesto, la IP del puerto paralelo no es común, pero ilustra el punto; los otros dos son ubicuos.
Otros protocolos pueden ser diferentes, pero Ethernet transmite primero el octeto / byte más significativo y dentro de cada byte el bit menos significativo primero . Entonces, un campo de 16 bits se transmite 8-9-10-11-12-13-14-15 - 0-1-2-3-4-5-6-7 (0 = bit menos significativo, 15 = más bit significativo). Verifique las Cláusulas IEEE 802.3 3.1.1, 3.2.6 y 3.3.
(Esto es para Ethernet puramente en serie, dependiendo de la capa física, se pueden transferir hasta ocho bits simultáneamente. Además, el orden de bits solo se aplica a la capa no codificada 1.)
IPv4 también usa el octeto más significativo primero, verifique RFC 791. Sin embargo, la numeración en RFC IETF está en orden de transmisión con la numeración de bits inversa a Ethernet : Bit 0 = bit más significativo = transmitido primero (donde no se define de otra manera).
Confundió los octetos y el orden de bits debería ser: 7-6-5-4-3-2-1 15-14-13-12-11-10-9-8 el primer octeto es 0-7, el séptimo bit es el menor significativo.
Gopoi
@Gopoi Si numeras los bits de esa manera tienes razón. Sin embargo, generalmente "0" es el bit menos significativo (último en forma escrita humana) y "15" es el bit más significativo (primero en forma escrita humana), de acuerdo con su poder de dos valores.
Zac67
Siempre pensé en la numeración de bits como el orden de transmisión, ya que los encabezados RFC se muestran así. ¡Cuanto más sepas!
Es muy fácil pensar que los paquetes de Internet se conectan por cable de una forma muy simple de "puerto serie". En la práctica no hay nada intrínsecamente serial al respecto.
Si piensa en algunos detalles de la interfaz, podría aclarar esto:
Por supuesto, la IP del puerto paralelo no es común, pero ilustra el punto; los otros dos son ubicuos.
Espero que ayude
Jonathan
fuente
Otros protocolos pueden ser diferentes, pero Ethernet transmite primero el octeto / byte más significativo y dentro de cada byte el bit menos significativo primero . Entonces, un campo de 16 bits se transmite 8-9-10-11-12-13-14-15 - 0-1-2-3-4-5-6-7 (0 = bit menos significativo, 15 = más bit significativo). Verifique las Cláusulas IEEE 802.3 3.1.1, 3.2.6 y 3.3.
(Esto es para Ethernet puramente en serie, dependiendo de la capa física, se pueden transferir hasta ocho bits simultáneamente. Además, el orden de bits solo se aplica a la capa no codificada 1.)
IPv4 también usa el octeto más significativo primero, verifique RFC 791. Sin embargo, la numeración en RFC IETF está en orden de transmisión con la numeración de bits inversa a Ethernet : Bit 0 = bit más significativo = transmitido primero (donde no se define de otra manera).
fuente