El protocolo de resolución de direcciones ( ARP ) es un protocolo de comunicación que se utiliza para descubrir la dirección de la capa de enlace , como una dirección MAC , asociada a una dirección de la capa de Internet determinada , normalmente una dirección IPv4 . Esta asignación es una función fundamental en el conjunto de protocolos de Internet . El ARP se definió en 1982 en RFC 826, [1] que es el estándar de Internet STD 37.
ARP se ha implementado con muchas combinaciones de tecnologías de capa de enlace de datos y red, como IPv4 , Chaosnet , DECnet y Xerox PARC Universal Packet (PUP) utilizando estándares IEEE 802 , FDDI , X.25 , Frame Relay y Asynchronous Transfer Mode (ATM).
En las redes del Protocolo de Internet versión 6 (IPv6), la funcionalidad de ARP la proporciona el Protocolo de descubrimiento de vecinos (NDP).
El protocolo de resolución de direcciones es un protocolo de solicitud-respuesta . Sus mensajes están encapsulados directamente por un protocolo de capa de enlace. Se comunican dentro de los límites de una única subred y nunca se enrutan .
El protocolo de resolución de direcciones utiliza un formato de mensaje simple que contiene una solicitud o respuesta de resolución de direcciones. Los paquetes se transportan en la capa de enlace de datos de la red subyacente como carga útil sin procesar. En el caso de Ethernet, se utiliza un valor EtherType 0x0806 para identificar tramas ARP.
El tamaño del mensaje ARP depende de los tamaños de las direcciones de la capa de enlace y de la capa de red. El encabezado del mensaje especifica los tipos de red en uso en cada capa, así como el tamaño de las direcciones de cada una. El encabezado del mensaje se completa con el código de operación para la solicitud (1) y la respuesta (2). La carga útil del paquete consta de cuatro direcciones, la dirección de hardware y la dirección de protocolo de los hosts emisor y receptor.
La estructura principal de los paquetes ARP se muestra en la siguiente tabla, que ilustra el caso de redes IPv4 que se ejecutan en Ethernet. En este escenario, el paquete tiene campos de 48 bits para la dirección de hardware del remitente (SHA) y la dirección de hardware de destino (THA), y campos de 32 bits para las direcciones de protocolo del remitente y del destino correspondientes (SPA y TPA). El tamaño del paquete ARP en este caso es de 28 bytes.
Los valores de los parámetros del protocolo ARP se han estandarizado y son mantenidos por la Autoridad de Números Asignados de Internet (IANA). [2]
El EtherType para ARP es 0x0806 . Aparece en el encabezado de la trama Ethernet cuando la carga útil es un paquete ARP y no debe confundirse con PTYPE, que aparece dentro de este paquete ARP encapsulado.
La ubicación de ARP dentro del conjunto de protocolos de Internet y del modelo OSI puede ser motivo de confusión o incluso de disputa. El RFC 826 lo ubica en la capa de enlace y lo caracteriza como una herramienta para investigar sobre la "capa de nivel superior", como la capa de Internet. [4] El RFC 1122 también analiza ARP en su sección de capa de enlace. [5] [6] Richard Stevens ubica ARP en la capa de enlace de datos de OSI [7] mientras que las ediciones más nuevas lo asocian con la capa de red o introducen una capa intermedia OSI 2.5. [8]
Dos computadoras en una oficina ( Computadora 1 y Computadora 2 ) están conectadas entre sí en una red de área local mediante cables Ethernet y conmutadores de red , sin pasarelas ni enrutadores intermedios . La Computadora 1 tiene un paquete para enviar a la Computadora 2. A través de DNS , determina que la Computadora 2 tiene la dirección IP 192.168.0.55 .
Para enviar el mensaje, también se requiere la dirección MAC de la Computadora 2. Primero, la Computadora 1 utiliza una tabla ARP almacenada en caché para buscar en 192.168.0.55 cualquier registro existente de la dirección MAC de la Computadora 2 ( 00:EB:24:B2:05:AC ). Si se encuentra la dirección MAC, envía una trama Ethernet que contiene el paquete IP al enlace con la dirección de destino 00:EB:24:B2:05:AC . Si la caché no produjo un resultado para 192.168.0.55 , la Computadora 1 tiene que enviar un mensaje de solicitud ARP de difusión (dirección MAC de destino FF:FF:FF:FF:FF:FF ), que es aceptado por todas las computadoras en la red local, solicitando una respuesta para 192.168.0.55 .
La computadora 2 responde con un mensaje de respuesta ARP que contiene sus direcciones MAC e IP. Como parte del procesamiento de la solicitud, la computadora 2 puede insertar una entrada para la computadora 1 en su tabla ARP para uso futuro.
La computadora 1 recibe y almacena en caché la información de respuesta en su tabla ARP y ahora puede enviar el paquete. [9]
Una sonda ARP en IPv4 es una solicitud ARP construida con el SHA del host que realiza la sonda, un SPA de todos los 0, un THA de todos los 0 y un TPA configurado en la dirección IPv4 que se está sondeando. Si algún host de la red considera la dirección IPv4 (en el TPA) como propia, responderá a la sonda (a través del SHA del host que realiza la sonda) informando así al host que realiza la sonda del conflicto de direcciones. Si, en cambio, no hay ningún host que considere la dirección IPv4 como propia, no habrá respuesta. Cuando se han enviado varias sondas de este tipo, con ligeros retrasos, y ninguna recibe respuesta, se puede esperar razonablemente que no exista ningún conflicto. Como el paquete de sonda original no contiene ni un par SHA/SPA ni un par THA/TPA válidos, no existe riesgo de que ningún host utilice el paquete para actualizar su caché con datos problemáticos. Antes de comenzar a utilizar una dirección IPv4 (ya sea recibida mediante configuración manual, DHCP o algún otro medio), un host que implemente esta especificación debe probar para ver si la dirección ya está en uso, mediante la difusión de paquetes de sondeo ARP. [10] [11]
ARP también se puede utilizar como un protocolo de anuncio simple. Esto resulta útil para actualizar las asignaciones de otros hosts de una dirección de hardware cuando cambia la dirección IP o la dirección MAC del remitente. Este tipo de anuncio, también denominado mensaje ARP gratuito (GARP), suele transmitirse como una solicitud ARP que contiene el SPA en el campo de destino (TPA=SPA), con THA establecido en cero. Una forma alternativa es transmitir una respuesta ARP con el SHA y el SPA del remitente duplicados en los campos de destino (TPA=SPA, THA=SHA).
Los anuncios de solicitud ARP y de respuesta ARP son ambos métodos basados en estándares, [12] [13] pero se prefiere el método de solicitud ARP . [14] Algunos dispositivos pueden configurarse para el uso de cualquiera de estos dos tipos de anuncios. [15]
Un anuncio ARP no tiene como objetivo solicitar una respuesta; en cambio, actualiza cualquier entrada almacenada en caché en las tablas ARP de otros hosts que reciben el paquete. El código de operación en el anuncio puede ser una solicitud o una respuesta; el estándar ARP especifica que el código de operación solo se procesa después de que se haya actualizado la tabla ARP a partir de los campos de dirección. [16] [17] [18]
Muchos sistemas operativos emiten un anuncio ARP durante el inicio. Esto ayuda a resolver problemas que de otro modo ocurrirían si, por ejemplo, se cambió recientemente una tarjeta de red (cambiando la asignación de dirección IP a dirección MAC) y otros hosts aún tienen la asignación anterior en sus cachés ARP.
Algunas interfaces de red también utilizan anuncios ARP para equilibrar la carga del tráfico entrante. En un equipo de tarjetas de red, se utiliza para anunciar una dirección MAC diferente dentro del equipo que debe recibir los paquetes entrantes.
Los anuncios ARP se pueden utilizar en el protocolo Zeroconf para permitir la asignación automática de una dirección de enlace local a una interfaz donde no hay otra configuración de dirección IP disponible. Los anuncios se utilizan para garantizar que una dirección elegida por un host no esté en uso por otros hosts en el enlace de red. [19]
Esta función puede ser peligrosa desde el punto de vista de la ciberseguridad ya que un atacante puede obtener información sobre los otros hosts de su subred para guardar en su caché ARP ( ARP spoofing ) una entrada donde la MAC del atacante se asocia, por ejemplo, a la IP del gateway predeterminado , permitiéndoles así interceptar todo el tráfico a redes externas.
La mediación ARP se refiere al proceso de resolución de direcciones de Capa 2 a través de un servicio de cable privado virtual (VPWS) cuando se utilizan diferentes protocolos de resolución en los circuitos conectados, por ejemplo, Ethernet en un extremo y Frame Relay en el otro. En IPv4 , cada dispositivo de borde del proveedor (PE) descubre la dirección IP del dispositivo de borde del cliente (CE) conectado localmente y distribuye esa dirección IP al dispositivo PE remoto correspondiente. Luego, cada dispositivo PE responde a las solicitudes ARP locales utilizando la dirección IP del dispositivo CE remoto y la dirección de hardware del dispositivo PE local. En IPv6 , cada dispositivo PE descubre la dirección IP de los dispositivos CE locales y remotos y luego intercepta los paquetes de Descubrimiento de vecino (ND) e Descubrimiento de vecino inverso (IND) locales y los reenvía al dispositivo PE remoto. [20]
El protocolo de resolución de direcciones inversa ( Inverse Address Resolution Protocol, ARP o InARP ) se utiliza para obtener direcciones de capa de red (por ejemplo, direcciones IP ) de otros nodos a partir de direcciones de capa de enlace de datos (Capa 2). Dado que ARP traduce direcciones de capa 3 a direcciones de capa 2, InARP puede describirse como su inverso. Además, InARP se implementa como una extensión de protocolo de ARP: utiliza el mismo formato de paquete que ARP, pero diferentes códigos de operación.
InARP se utiliza principalmente en redes Frame Relay ( DLCI ) y ATM, en las que las direcciones de capa 2 de los circuitos virtuales a veces se obtienen a partir de la señalización de capa 2, y las direcciones de capa 3 correspondientes deben estar disponibles antes de que se puedan utilizar esos circuitos virtuales. [21]
El protocolo de resolución de direcciones inversa (Reverse Address Resolution Protocol o RARP), al igual que InARP, traduce direcciones de capa 2 a direcciones de capa 3. Sin embargo, en InARP la estación solicitante consulta la dirección de capa 3 de otro nodo, mientras que RARP se utiliza para obtener la dirección de capa 3 de la propia estación solicitante para fines de configuración de direcciones. RARP está obsoleto; fue reemplazado por BOOTP , que luego fue reemplazado por el Protocolo de configuración dinámica de host (DHCP). [22]
Debido a que ARP no proporciona métodos para autenticar las respuestas ARP en una red, las respuestas ARP pueden provenir de sistemas distintos del que tiene la dirección de Capa 2 requerida. Un proxy ARP es un sistema que responde a la solicitud ARP en nombre de otro sistema para el cual reenviará tráfico, normalmente como parte del diseño de la red, como para un servicio de Internet de acceso telefónico. Por el contrario, en la suplantación ARP , el sistema de respuesta, o spoofer , responde a una solicitud de la dirección de otro sistema con el objetivo de interceptar datos destinados a ese sistema. Un usuario malintencionado puede utilizar la suplantación ARP para realizar un ataque de intermediario o de denegación de servicio a otros usuarios de la red. Existe varios programas informáticos para detectar y realizar ataques de suplantación ARP, aunque ARP en sí no proporciona ningún método de protección contra dichos ataques. [23]
IPv6 utiliza el Protocolo de descubrimiento de vecinos y sus extensiones, como Secure Neighbor Discovery , en lugar de ARP.
Los ordenadores pueden mantener listas de direcciones conocidas, en lugar de utilizar un protocolo activo. En este modelo, cada ordenador mantiene una base de datos de la asignación de direcciones de capa 3 (por ejemplo, direcciones IP ) a direcciones de capa 2 (por ejemplo, direcciones MAC de Ethernet ). Estos datos se mantienen principalmente interpretando los paquetes ARP del enlace de red local. Por ello, a menudo se denomina caché ARP . Desde al menos la década de 1980, [24] los ordenadores en red tienen una utilidad llamada arp para interrogar o manipular esta base de datos. [25] [26] [27]
Históricamente, se utilizaban otros métodos para mantener el mapeo entre direcciones, como archivos de configuración estáticos, [28] o listas mantenidas centralmente.
Los sistemas integrados, como las cámaras en red [29] y los dispositivos de distribución de energía en red [30] , que carecen de una interfaz de usuario, pueden utilizar el llamado relleno ARP para realizar una conexión de red inicial, aunque este es un nombre inapropiado, ya que el ARP no está involucrado.
El relleno ARP se realiza de la siguiente manera:
Estos dispositivos suelen tener un método para desactivar este proceso una vez que el dispositivo está funcionando normalmente, ya que esta capacidad puede hacerlo vulnerable a ataques.
Un ARP gratuito PUEDE utilizar un paquete de solicitud ARP o de respuesta ARP. [...] cualquier nodo que reciba un paquete ARP (solicitud o respuesta) DEBE actualizar su caché ARP local con el protocolo del remitente y las direcciones de hardware en el paquete ARP [...]
¿Por qué los anuncios ARP se realizan mediante paquetes de solicitud ARP y no mediante paquetes de respuesta ARP?
[...] garpReply habilitado [...] genera paquetes ARP que [...] son del tipo OPCODE REPLY, en lugar de REQUEST.