Redes - El protocolo ARP
El protocolo ARP (Address Resolution Protocol) tiene un importante papel entre los protocolos de comunicaciones relacionados con TCP/IP. Su principal objetivo es conocer la dirección física (MAC) de una tarjeta de interfaz de red correspondiente a una dirección IP (Internet Protocol). De ahí viene su nombre: Protocolo de Resulución de Dirección (Address Resolution Protocol).
¿Qué dirección?
Cada equipo conectado a una red tiene un número de 48 bits (6 bloques hexadecimales de 8 bits cada uno) que le identifica. Esta dirección es única para cada dispositivo. Los 24 primeros bits identifican al fabricante y los 24 últimos son los propios del equipo. Digo equipo porque puede ser un ordenador, tablet, smartphone, Arduino, Raspberry Pi, etc. La comunicación por Internet no utiliza directamente esta dirección (MAC), sino que utiliza direcciones IP, es decir, que tiene que haber relación entre direcciones físicas (MAC) y lógicas.
Toda la documentación del protocolo ARP está en el RFC 826.
Utilizaremos el protocolo ARP en estos casos:
- Existen 2 hosts en una misma red y uno quiere enviar un paquete a otro.
- Existen 2 hosts en redes diferentes y deben usar un router para llegar al otro host.
- Cuando un router necesita enviar un paquete a un host a través de otro router.
- Cuando un router necesita enviar un paquete a un host de la misma red.
Tablas ARP
Cada equipo tiene una tabla donde almacena las direcciones IP de las cuales conoce su MAC. Por ejemplo:
IP | MAC |
192.168.1.1 | d1:31:54:68:1a:db |
192.168.1.3 | 00:31:64:68:ca:dc |
¿Cómo funciona?
Caso 1:
Supongamos que tenemos dos equipos en nuestra red. Uno es el equipo A y otro es el equipo B. El equipo A quiere mandar una trama al equipo B. Para ello, mirará su tabla ARP con el fin de poner en la trama la dirección MAC del equipo B. De esta manera, los equipos a los que les llegue esa trama sabrán rápidamente si es para ellos o no.
Caso 2:
Supongamos de nuevo que tenemos dos equipos en distintas redes, llamados A y B. Si A quiere enviar un mensaje a C, este mensaje tendrá que salir de la red de A. Por lo tanto, al estar en distintas redes, A enviará la trama a la dirección física de salida del router. Esta dirección física se obtendrá a partir de la IP del router, mediante el uso de la tabla ARP. Pero, ¿Qué pasa si la entrada no está en la tabla? Mandaremos un mensaje ARP a esa IP con un broadcast (a todos).
Ahora el router consultará su tabla de encaminamiento para obtener el siguiente nodo al que mandará su mensaje y enviará el mensaje por la interfaz correspondiente. Esto se repetirá con todos los nodos intermedios hasta que llegue al router de la red en la que está C.
En este momento, el router tendrá que averiguar la dirección MAC del equipo C y, esto lo hará mirando su tabla ARP. En caso de que no la tenga en su tabla, hará un broadcast para que el equipo C conteste con su MAC.
En la siguiente imagen veremos más fácilmente el funcionamiento de ARP:
[caption id="attachment_5743" align="aligncenter" width="800"]
Ilustración del funcionamiento del protocolo ARP. Fuente de la imagen: wiki.adwys.es[/caption]
Como podemos ver, se manda una petición broadcast (a todos) y únicamente responde la máquina en cuestión.
¿Por qué este tutorial?
Este tutorial lo he hecho porque dentro de poco publicaré otro artículo sobre el sniffer Wireshark, con el cual aprenderemos a hacer un ataque Man in the Middle (hombre en el medio) y quiero que quede todo clarísimo. No vale de nada hacer algo sin entender qué pasa.
Si tenéis cualquier duda, dejad un comentario. ¡Un saludo!