Mirando la entrada de Ethernet en Wikipedia, no puedo entender cómo se indica cuánto dura la trama de Ethernet. El campo de encabezado EtherType / Length aparentemente puede indicar un tipo de trama o una longitud explícita, y supongo que en el caso de un tipo de trama, tiene que hacer alguna otra lógica para averiguar cuánto dura el paquete. Por ejemplo, si el campo EtherType es 0x0800, eso indica una carga útil IPv4, por lo que la NIC receptora tendría que examinar los primeros 32 bits de la carga útil para encontrar la longitud del paquete IP y, por lo tanto, calcular la longitud total de la trama de Ethernet y sepa cuándo buscar la suma de comprobación de fin de trama y la brecha entre tramas.
¿Suena esto correcto? También miré la especificación IEEE 802.3 para Ethernet (parte 1, de todos modos) que parece corroborar esto, pero es bastante opaca.
fuente
Respuestas:
La subcapa de codificación física es responsable de delimitar las tramas y enviarlas a la capa MAC.
En Gigabit Ethernet, por ejemplo, el esquema de codificación 8B / 10B utiliza un grupo de códigos de 10 bits para codificar un byte de 8 bits. Los dos bits adicionales indican si un byte es información o datos de control. La información de control puede ser Configuration, Start_of_packet, End_of_packet, IDLE, Carrier_extend, Error_propagation.
Así es como una NIC sabe dónde comienza y termina un marco. Esto también significa que la longitud del marco no se conoce antes de que se haya descodificado completamente, de forma análoga a una cadena terminada en NULL en C.
fuente
El artículo que realmente desea responder a su pregunta es http://en.wikipedia.org/wiki/Ethernet_II_framing ; que dice:
fuente
Lógicamente, solo hay tres opciones:
Uno de estos funciona en Ethernet porque no hay otras opciones disponibles actualmente para las redes modernas;) 1er y 3er son incorrectos para Ethernet, ¡así que está en lo correcto!
fuente
Tomó un tiempo resolver esto una vez antes, y nuevamente ahora. No hay mucha información disponible, lo cual es sorprendente ya que es una pregunta tan obvia. Finalmente me decidí por la solución de que se usan los campos de longitud en los encabezados de paquetes. Ver el siguiente enlace
http://www3.rad.com/networks/infrastructure/lans/etherform.htm#_ieee
fuente