El Adress Resolution Protocol es un protocolo de resolución de direcciones MAC. Dada una dirección IP, el protocolo ARP descubre la dirección física o MAC asociada.
El objetivo del ARP está claro, pero, ¿y su uso? ¿Por qué es necesario?
Uso
Resolver la dirección física asociada a una dirección IP.
Posibilitar el envío de mensajes entre diferentes redes TCP/IP.
Evitar direcciones IP duplicadas dentro de la misma red (Gratuitous ARP).
Posibilitar que equipos no tan avanzados tecnológicamente se puedan comunicar a través de redes contemporáneas (Proxy ARP).El protocolo ARP está documentado en su total extensión el RFC 826
Cómo funciona el protocolo ARP
ARP Request: Tipo de mensaje ARP en el que se pide la dirección MAC del destinatario, asociado a la dirección IP.
ARP Reply: Respuesta del destinatario al ARP Request en el que entrega su dirección física.Entrega Directa
Si se quiere enviar un mensaje ARP a un destino de la misma red que del origen hablamos de entrega directa.
Paso 1 – Inicio
PC1 quiere enviar un mensaje a PC2 pero no conoce su dirección MAC.
PC1 envía un ARP Rquest a través de una trama en broadcast, que recibirán todos los dispositivos de la red.
El dispositivo preguntado es PC2. Los otros ordenadores de la red descartan el datagrama. PC2 actualiza su tabla ARP con la MAC del emisor y le envía un ARP Reply (unicast, solamente a él).
Finalmente PC1 recibe el ARP reply actualiza su tabla ARP. ¡Ahora ya puede enviar tramas a su vecino PC2!
Si se quiere enviar un mensaje ARP a un destino de una red diferente de la del origen hablamos de entrega indirecta.
El procedimiento es exactamente el mismo, simplemente tendremos que repetir dicho proceso en primera instancia con la interfaz del router que actúa como gateway o puerta de enlace (tantas veces como redes tengamos que saltar (ARP 1 y ARP2)) hasta volvernos a quedar como en el caso de la entrega directa (ARP 3).
Tabla ARP
Cada dispositivo tiene una tabla donde almacena las direcciones IP de las cuales conoce su MAC tal que así.
Si no se recibe una trama con la misma asociación @IP-@MAC durante un tiempo, la resolución se borra.
Hacer esta asignación dinámica evita que se llenen las memorias caché de las tablas ARP de los dispositivos. Generalmente con ajustar el temporizador es suficiente pero siempre se puede limpiar la caché ARP.
Es importante tener en cuenta que las direcciones MAC son fijas, pero las IP pueden cambiar de dispositivo, hecho que se tiene que ver reflejado en las tablas ARP. Para eso se usa el Gratuitous ARP (visto más adelante).
Formato del paquete ARP
La estructura del mensaje ARP para direcciones IPv4 en redes Ethernet es el siguiente:
Hardware Type: Indica el tipo de dirección Física (en este caso Ethernet).
Protocol Type: Indica el protocolo de la dirección que se quiere resolver (IPv4).
Hardware Adress length: Indica el nombre de bytes de la dirección MAC -> 6.
Protocol Adress length: Indica el nombre de bytes de la dirección que se quiere resolver (IPv4 -> 4).
Op. Code: Tipo de mensaje (Request/Reply).
Source Hardware Adress: Dirección física del emisor del mensaje Si el ARP es tipo Reply aquí se encuentra la dirección física buscada.
Source Protocol Adress: Dirección del Protocolo del emisor del mensaje (IP)
Target Harware Adress: Dirección MAC del receptor del mensaje. En un ARP request este campo es irrelevante (es la dirección buscada).
Target Protocol Adress: Dirección del Protocolo del receptor del mensaje (IP).Variaciones de ARP
Reverse ARP
El protocolo RARP (Reverse Address Resolution Protocol) averigua la dirección IP destino a partir de una dirección MAC, justo al revés que un ARP.
Documentado en el RFC 903.
Actualmente para esta función se usa el Protocolo de Configuración Dinámica de Hosts (DHCP).
Inverse ARP
Se usa para traducir las direcciones de la capa de red (3) a la capa de enlace de datos (2).
Se envía cada 60 segundos automáticamente.
Usa el mismo formato de paquete que ARP.
Proxy ARP
Se usa cuando una máquina recibe y contesta un ARP Request en el nombre de otra.
Esto se puede dar si por ejemplo la máquina PC1 no tiene tarjeta Ethernet y por lo tanto no puede contestar a los mensajes de PC3, al que solamente puede llegar por la red Ethernet (ver imágen).
Los mensajes que PC3 quiera enviar a PC1 los recibirá PC2, que al estar configurado como router (IP forwarding activado) mirará su tabla de encaminamiento y enrutará el mensaje hacia PC1.
Gratuitous ARP
Es un tipo de mensaje ARP en el que el host emisor pregunta en broadcast quien puede resolver su dirección IP.
Se realiza después de un arranque del sistema o boot.
El objetivo principal no es más que averiguar si alguien más en la red tiene la misma IP que el dispositivo que envió el ARP gratuito; en este caso estaríamos hablando de una dirección IP duplicada. Lo idóneo en esta situación sería que nadie contestase.
Recuerda: No pueden haber 2 direcciones IP iguales dentro de la misma red.
También se usa para actualizar las memorias caché ARP: Si una dirección IP ha passado de estar asignada del host A al host B las máquinas que tuvieran en su tabla ARP la configuración del host A continuarían enviando paquetes a su dirección física pese a que la dirección IP ya no estuviera haciendo referencia al host A.
Mediante el ARP gratuito, el nuevo host se asegura de que todos los dispositivos de la red actualicen la dirección IP para la nueva dirección física.
ARP Spoofing o suplantación de ARP
El ARP Spoofing es un tipo de ataque informático del estilo Man In The Middle que los hackers explotan una vez infiltrados en una LAN. Este realmente es el talón de aquiles del ARP en cuanto a seguridad se refiere.
Se trata de interceptar el primer ARP request realizado durante el boot de la máquina y enviar un ARP reply malicioso con nuestra dirección MAC. Así, todo el tráfico que salga de dicho computador pasará por nosotros, que posteriormente lo redirigiremos al destino correcto, pasando de esta forma totalmente desapercibidos.