ARP, Address Resolution Protocol

Una de las primeras entradas que publique (ésta) fue acerca de un Script que hice en Bash para prevenir ataquetes Man In The Middle por ARP Spoofing, en él, rápidamente explicaba como funcionaba el protocolo ARP, pero hoy quiero profundizar un poco más en él, ya que me parece un protocolo bastante importante de entender, o al menos de tener en cuenta en muchisimas situaciones.

Como bien comentaba en la entrada arriba linkeada, en redes locales los paquetes se guían por la dirección MAC y no por la dirección IP, este quiere decir que cuando un equipo A y quiere enviar un paquete a un equipo B, lo hará con una dirección IP como destino, pero este además buscará en su tabla ARP, la cual contiene una lista con las direcciones IP y las direcciones MACs de los equipos, con los cuales nuestro PC ya se ha comunicado antes, y si tiene ya una dirección MAC, entonces lo enviará a dicha dirección.

Captura de pantalla 2016-04-27 a las 23.35.08
Tabla ARP. (Imágen 1) Obtenida con el comando arp -a

Será más fácil de comprender si ponemos un ejemplo gráfico:

a-down
Diseño de red para el ejemplo. (Imágen 2)

Las direcciones MACs expuestas en el ejemplo son totalmente inventadas y no corresponden con la realidad, lo he hecho así para que se pueda comprender más fácil el ejemplo, pero en realidad el formato de una dirección MAC viene a ser en hexadecimal y tiene un tamaño de 6 bytes con 1 byte por grupo y separados estos por dos puntos, además los 3 primeros bytes, forman parte del OUI (Organizationally Unique Identifier) el cual es un numero entregado a las organizaciones/empresas para identificarlas inequivocamente cuando fabrican un dispositivo de red. Este numero de 24bits se compra al IEEE.

Imaginemos pues, que el equipo cliente, envia un paquete al servidor, éste tiene la IP 172.16.8.3 del mismo, pero para poder enviarlo tendrá que dirigir esta paquete a su GW (Gateway o Puerta de enlace predeterminada), para poder hacerlo deberá enviar el paquete a la dirección fisica del Router, así que si tiene la dirección fisica en su tabla ARP, empaquetará el susodicho paquete con esta dirección destino en la capa de enlace de datos ( Nº 2), y lo enviará (Imágen 3).

Captura de pantalla 2016-04-28 a las 0.35.54
(Imágen 3)

Si no tiene la dirección MAC, deberá enviar un paquete ARP Request con la dirección MAC Broadcast como destino (FF:FF:FF:FF:FF:FF) (Imágen 4), para que el paquete llegue a todos los equipos en la LAN y de esta manera el que posee la dirección del GW, en este caso la 172.16.24.1, responda con un paquete ARP Reply indicando que el que tiene dicha IP es él (Imágen 5).

Captura de pantalla 2016-04-28 a las 0.35.04
(Imágen 4)
Captura de pantalla 2016-04-28 a las 0.35.16
(Imágen 5)

Lo siguiente, y una vez dentro del Router éste sabrá porqué ‘puerta’ deberá ir ese paquete dependiendo a qué red vaya, es decir: si el paquete va a la red 172.16.8.0 deberá ir por la ‘puerta’  172.16.16.3, pero si suponemos que no sabe su MAC, entonces enviara un paquete ARP request por broadcast preguntando por la MAC, despues a partir de esa información recibida se crearan tablas ARP, asociando así la IP con la MAC.

El Router 2, por tablas enrutamiento, sabrá por que interfaz enviar el paquete. La tabla de enrutamiento se podría ver tal que así:

Captura de pantalla 2016-04-29 a las 21.35.41
(Imagén 6)

Para sacar la dirección  de red, el router realiza una operación AND con la máscara de red y la propia dirección de destino, pero tampoco pienso entrar mucho en ello,  ya que no es lo que nos atañe exactamente.

Apartir de allí el Router 2 empaqueta la trama de red, con una nueva dirección fisica como destino, en este caso la de la red del Router 1, quedando algo como lo que podemos ver en la imágen 7. Recordamos que si no tuviese la dirección física, enviaría un paquete ARP Request por Broadcast de capa 2.

Captura de pantalla 2016-04-29 a las 22.01.47
(Imágen 7)

Ya con estos ejemplos podéis ver cual es funcionamiento concreto del protocolo ARP, básicamente se encarga de que los paquetes lleguen a su destino de enlace a enlace o en areas locales.

Un comentario sobre “ARP, Address Resolution Protocol

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión /  Cambiar )

Google photo

Estás comentando usando tu cuenta de Google. Cerrar sesión /  Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión /  Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión /  Cambiar )

Conectando a %s