Ethernet y sus Versiones

Históricamente, las compañías Digital Equipment Corporation DEC, Intel y Xerox (formando el término DIX) desarrollaron la primera versión de Ethernet que fue bautizado como Ethernet I y que fue lanzado al mercado en 1980. En ese mismo año, la IEEE se reunió para estandarizar este protocolo. DIX lanzó en 1982 la versión de Ethernet II (que reemplazó a Ethernet I). En 1983, la compañía Novell, con su producto Netware '86, lanzó su versión del protocolo de la IEEE, que aún no estaba listo. Dos años más tarde, la IEEE lanzó finalmente la estandarización de este protocolo llamándolo IEEE 802.3, que incluye el header LLC (Logical Link Control) de la IEEE 802.2, por lo que el protocolo utilizado por Novell no sería estándar, vale decir, sería propietario. Dado que la IEEE sacó su versión de Ethernet, y que existen protocolos que necesitaban trabajar con la versión original (Ethernet II), la IEEE lanzó la versión IEEE 802.3 SNAP que permite la compatibilidad entre IEEE 802.3 y Ethernet II.

Lo anterior demuestra que no existe una sola versión de Ethernet y que además se requiere que puedan coexistir en la misma red sin interferirse, lo que lo hace más complicado y versátil. En resumen, la gran diferencia entre estos estándares es el formato del paquete.

En resumen, las 4 versiones de Ethernet son:

Ethernet (Versión II)
IEEE 802.3
Novell (Raw 802.3)
IEEE 802.3 SNAP

A continuación se muestra un esquema con los 4 formatos de paquete existentes con los largos correspondientes:


(vea la imagen en tamaño grande)

1.- Preámbulo (Preamble):

Independientemente del formato de paquete que sea, la sincronización digital entre las distintas tarjetas Ethernet deben ser la misma, por lo que este campo contiene 62 bits '1' y '0' en forma alternada finalizando con 2 bits '1' (en total 8 bytes), permitiendo ajustar los tiempos en ambas tarjetas (computadores o equipos de comunicaciones) para tener una transmisión digital sincronizada.

2.- Data Link Header:

2.1.- Dirección de Destino (Destination Address):

Corresponde a la dirección Ethernet (6 bytes) de la tarjeta Ethernet de destino del paquete a transmitir. Si esta dirección se compone enteramente de '1', entonces significa que es un mensaje de Broadcast, vale decir, un mensaje para todas las estaciones de la red local. Los primeros 3 bytes de esta dirección están normadas por la IEEE y cada fabricante de tarjetas Ethernet le corresponde un único trío.

2.2.- Dirección de Fuente (Source Address):

Corresponde a la dirección Ethernet (6 bytes) de la tarjeta Ethernet que envía el paquete a transmitir. Los primeros 3 bytes de esta dirección están normadas por la IEEE y cada fabricante de tarjetas Ethernet le corresponde un único trío, por lo que se puede saber "cual" es la maquina que envía el paquete.

Toda Dirección Ethernet (fuente o destino) es única en el mundo, excluyendo la posibilidad de suplantación o de errores en una red LAN.

2.3.- Ether Type (sólo Versión II):

Este campo indica el tipo de protocolo (superior) que está ocupando el formato de paquete Ethernet Versión II. En otras palabras, diferencia los distintos tipos de protocolos de capas superiores que puedan ocupar Ethernet. Por ejemplo: IP tiene un Ether-Type de valor 0x0800, ARP tiene valor 0x0806, IPX tiene 0x8137. Todos los valores son asignados por la IEEE en el RFC1700 y poseen valores mayores de 0x05DC (1500 decimal).

2.4.- Length (largo del paquete):

Este campo es ocupado por IEEE 802.3, IEEE 802.3 SNAP y Novell Raw e indica el largo del paquete, en cuanto a la sumatoria de los campos del Data Link Header y la Data. Por ende, este campo tiene los valores extremos de:

Mínimo: 6 + 6 + 2 + 46 = 60 bytes

Máximo: 6 + 6 + 2 + 1500 = 1514 bytes

NOTA:

Lo anterior muestra claramente que el Ether Type empieza desde el valor de 1500 (0x05DC) (oficialmente, pero en la práctica, empieza desde 0x0600 o 1536), y el Length termina en 1514 máximo, permitiendo que las versiones de Ethernet no se confundan y puedan ser utilizados al mismo tiempo en la misma red LAN.

3.- Logical Link Header (proviene de la IEEE 802.2)

La idea de este LLC es el de proveer de más información a las capas superiores indicando en qué buffer de memoria se coloca la información recibida por la tarjeta.

3.1.- DSAP (Destination Service Access point):

Este campo corresponde a un puntero en el buffer de memoria de la estación receptora del paquete, el cual, es utilizado por la "tarjeta receptora" para saber en cual buffer colocar esta información. Esto es particularmente útil en situaciones donde un usuario está usando múltiples protocolos. En el caso de ser un paquete del tipo IEEE 802.3 SNAP, este campo contiene el valor 0xAA.

3.2.- SSAP (Source Service Access point):

Este campo es análogo al DSAP, pero se refiere a la estación emisora. En el caso de ser un paquete del tipo IEEE 802.3 SNAP, este campo contiene el valor 0xAA.

3.3.- Control Byte:

Este byte indica el tipo de LLC (Logical Link Header).

4.- SNAP (SubNetwork Access Protocol) Header.

4.1.- Protocol ID (Vendor Code):

Este campo de 3 bytes indica el código del fabricante de la tarjeta de red (NIC), generalmente es igual a los 3 primeros bytes del Source Address y en otros casos es igual a cero.

4.2.- Ether Type (Local Code):

Este campo de 2 bytes corresponde al Ether-Type del paquete. Aquí es donde se aplica la "compatibilidad" entre el estándar IEEE 802.3 SNAP y Versión II.

5.- DATA:

Es en este campo donde reside la información transmitida y que generalmente consiste de headers de capas superiores (TCP/IP, IPX, etc. ) y la data verdadera.

6.- FCS (Frame Check Sequence o CRC):

Este campo de 4 bytes contiene un checksum que permite revisar la integridad del paquete recibido para ser entregado a las capas superiores o descartado.

NOTA:

En el caso del protocolo IPX, éste puede ser transmitido por las 4 versiones de Ethernet, con los valores de campos indicados a continuación:

Versión II

Ether-Type = 0x8137

Novell Raw

Este protocolo sólo puede transmitir paquetes tipo IPX, pero para distinguirse de la norma IEEE 802.2 los primeros 2 bytes de la DATA deben ser 0xFFFF. Este es el protocolo por defecto de las redes Novell hasta antes de la Versión Novell 4.0.

IEEE 802.3

DSAP=0xE0, SSAP=0xE0, Control=0x03.

Este corresponde al tipo de paquetes por defecto para una Novell 4.0.

IEEE 802.3 SNAP

SNAP Protocol ID = 0x000000, SNAP Ether-Type=0x8137. Este Protoclo casi nunca es ocupado por IPX, es muy usando por Apple-Talk.