A diferencia de como sucede en Internet, los dispositivos conectados en una red local no se comunican directamente con su dirección IP. En lugar de ello, para la resolución de direcciones en redes IPv4 se utilizan direcciones físicas de hardware, las denominadas direcciones MAC (Media Access Control), consistentes en un código único de 48 bits que identifica la tarjeta de red de cada dispositivo en la red local de forma inequívoca.
Ejemplo de una dirección MAC: 00-80-41-ae-fd-7e
Las direcciones MAC son concedidas por los fabricantes de hardware y son únicas a nivel global. En teoría, estas direcciones físicas deberían poder resolver las direcciones a nivel local, pero en la práctica no es factible, ya que las direcciones IPv4 son demasiado cortas para poder reproducir por completo las direcciones MAC. Este es el motivo por el que, en las redes basadas en este protocolo, se haga imprescindible la resolución de direcciones mediante ARP.
Para poder comunicarse con el ordenador B, el ordenador A necesita averiguar la dirección MAC asociada a su dirección IP. Es aquí donde interviene el protocolo de resolución de direcciones o ARP, un protocolo de red que trabaja según el modelo petición-respuesta.
En la búsqueda de la dirección MAC correspondiente, el ordenador A difunde una petición (ARP Request) en todos los dispositivos de la red que contiene la siguiente información:
Un ordenador con la dirección MAC xx-xx-xx-xx-xx-xx y la dirección IP yyy.yyy.yyy.yyy quiere contactar con un ordenador con la dirección IP zzz.zzz.zzz.zzz y necesita su dirección MAC.
Para evitar tener que enviar una petición ARP cada vez que se envía un paquete de datos, todos los ordenadores en la red disponen de una tabla (caché ARP), donde se almacenan temporalmente todas las direcciones MAC conocidas incluyendo sus IP asociadas. Estos ordenadores, tras recibir la petición, anotan el par de direcciones (IP y MAC) entregado junto a la petición, pero la respuesta con la dirección MAC solo puede darla uno de ellos, el ordenador B. Su respuesta podría ser algo así como:
Aquí el sistema con la dirección IP zzz.zzz.zzz.zzz. La dirección MAC solicitada es aa-aa-aa-aa-aa-aa.
Cuando el ordenador A recibe esta respuesta (ARP Reply), ya dispone de toda la información que necesita para enviar paquetes de datos al ordenador B. En este momento no hay nada que impida la comunicación en la red local. Ahora bien, ¿qué pasaría si el que responde no es el ordenador esperado, sino un dispositivo controlado por una persona externa con objetivos dudosos? Es aquí donde entra en juego el ARP spoofing.