Está en la página 1de 4

Segundo Documento

Conceptos Teóricos
Captura de Tramas Ethernet.
pyEtherIP.

Autor: Rodrigo Ancavil del Pino.

Versión: 1.0

I. Descripción:

El presente documento entrega algunos conceptos teóricos para el


entendimiento de los procedimientos utilizados para construir pyEtherIP. En
esta entrega nos enfocamos en la captura de tramas Ethernet.

II. Funcionamiento de las Redes Ethernet:

La definición de Ethernet dice que es una arquitectura desarrollada por


Xerox, Intel y DEC en los años 70’s y se basa en la especificación de la
IEEE 802.3, la cual define la capa física el software de bajo nivel.

Ethernet utiliza tres conceptos esenciales para su operatividad:

• La difusión.
• El direccionamiento Ethernet.
• Trama Ethernet.

La difusión o broadcast hace que una trama Ethernet se difunda por todo
el medio de comunicación, llegando a cada tarjeta conectada (al cable); sin
embargo, sólo la tarjeta con la dirección Ethernet que coincide con la
Dirección indicada en la trama la aceptará, el resto simplemente la ignorará.

El direccionamiento Ethernet hace que una tarjeta sea única en la red y


corresponde a la dirección física de la tarjeta; ninguna tarjeta en el mundo y
posiblemente en el universo tiene una dirección igual a otra.

Todo lo que circula por una red Ethernet lo hace a través de una Trama
Ethernet; ésta vendría a ser el medio de transporte de todos los protocolos
que se definen en las capas superiores. Las tramas son el formato en que
los datos son encapsulados para poder ser transmitidos al medio físico.
Esquemáticamente una trama Ethernet es:
CRC
Dir. Ether. Dest. Dir. Ether. Orig. Proto Datos

Figura 1: Trama Ethernet


Dir. Ether. Dest. (6 bytes):
Corresponde a la dirección Ethernet (dirección física) de la tarjeta
destino).
Dir. Ether. Orig. (6 bytes):
Corresponde a la dirección Ethernet (dirección física) de la tarjeta
destino).
Proto (2 bytes):
Es el indicador del protocolo transportado en la trama Ethernet
(0x800 indica que los datos corresponden a un datagrama IP).
Datos (46-1500 bytes):
Son los datos transportados (protocolos: IP, NetBeui, etc).

CRC (4 bytes):
Es el cálculo de la suma de comprobación la cual asegura la
integridad de la trama.
En resumen, Ethernet es la interfaz entre las capas superiores (protocolos y
aplicación) y la capa física de una red (recordar el modelo OSI). Una
aproximación esquemática sería la siguiente:
HOST 1
HOST 2

APLICACIONES DE RED
APLICACIONES DE RED

NETBEUI
TCP/IP

ETHERNET
ETHERNET

MEDIO FÍSICO

Figura 2: Esquema de operatividad de Ethernet.

III. Modo Promiscuo:

La captura del tráfico que circula por una red Ethernet se logra gracias a la
posibilidad de poder configurar las tarjetas de red en modo promiscuo, esto
permite que las tarjetas puedan obtener una copia de todas las tramas
Ethernet que circulan por el medio de comunicación (cable p.e.)
independiente del direccionamiento que estas tramas tengan.

Simplificando el concepto, el modo promiscuo deshabilita el filtro que una


tarjeta Ethernet utiliza para identificar aquellas tramas cuya Dirección
Ethernet coincide con la que tiene asignada.

De esta forma, los sniffers de paquetes pueden capturar las tramas que
circulan por el “cable”.
Cada trama Ethernet identifica el contenido de su área de datos mediante el
campo protocolo del formato mostrado en la figura 1.

En el caso pyEtherIP, configura la interfaz de red en modo promiscuo


mediante la configuración de un socket y la utilización de ioctl.

Sock = socket(PF_PACKET, SOCK_RAW,htons(ETH_P_IP);

En este caso el socket rescatará sólo las tramas Ethernet que transporten
un datagrama IP en su área de datos, es decir.

Proto = ETH_P_IP = 0x0800 Hex.

Todas las otras tramas Ethernet serán ignoradas.

[00:00:aa:bb:cc:dd,22:3b:4c:43:33:66,0x0800 ]
pyEtherIP

0x0800Hex

Eth0

Medio de Comunicación

0x0800Hex 0x86DDHex 0x0806Hex Tramas Ethernet que circulan por la Red

Figura 3: Funcionamiento de pyEtherIP

En este ejemplo, se puede apreciar que por el medio de comunicación


circula una serie de tramas que busca su destino; sin embargo, según se
aprecia sólo las1 que transportan IP (0x0800Hex) en su interior son llevadas
HOST

hasta pyEtherIP, el resto son ignoradas.

Los protocolo transportados por Ethernet se definen mediante la asignación


de un valor Hexadecimal. Ejemplo:

Protocolo Tipo Ethernet


IPV4 0x0800
IPV6 0x86DD
ARP 0x0806
AppleTalk 0x809B

IV. Resumen:
Los conceptos acá entregados no pretenden ser un postulado filosófico de
las redes Ethernet, sino más bien se pretende simplificar los conceptos para
que, de esta forma, puedan ser aplicados al entendimiento del
funcionamiento y operatividad de pyEtherIP.

En una próxima entrega nos enfocaremos en como pyEtherIP realiza la


identificación del tráfico IP; para esto utilizaremos como base los conceptos
acá planteados.

También podría gustarte