El Protocolo de resolución de direcciones ( ARP ) es un protocolo de comunicación utilizado para descubrir la dirección de la capa de enlace , como una dirección MAC , asociada con una dirección de capa de Internet determinada , generalmente una dirección IPv4 . Este mapeo es una función crítica en el conjunto de protocolos de Internet . ARP fue definido en 1982 por 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 los estándares IEEE 802 , FDDI , X.25 , Frame Relay y Modo de transferencia asíncrono (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 directamente encapsulados por un protocolo de capa de enlace. Se comunica dentro de los límites de una única subred y nunca se enruta .
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 del tamaño de la dirección 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 de solicitud (1) y respuesta (2). La carga útil del paquete consta de cuatro direcciones, la dirección de hardware y de protocolo de los hosts del remitente y del 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 de destino y de remitente 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 han sido estandarizados y son mantenidos por la Autoridad de Números Asignados de Internet (IANA). [2]
El EtherType para ARP es 0x0806 . Esto 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 el modelo OSI puede ser motivo de confusión o incluso de disputa. RFC 826 lo coloca en la capa de enlace y lo caracteriza como una herramienta para consultar sobre la "capa de nivel superior", como la capa de Internet. [4] RFC 1122 también analiza ARP en su sección de capa de enlace. [5] [6] Richard Stevens coloca 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 OSI intermedia 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 puertas de enlace 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 usa 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 el caché no produjo un resultado para 192.168.0.55 , la Computadora 1 debe enviar un mensaje de solicitud ARP de transmisión (dirección MAC de destino FF:FF:FF:FF:FF:FF ), que es aceptado por todas las computadoras en la red local. , solicitando 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 de sondeo, un SPA de todos 0, un THA de todos 0 y un TPA configurado en la dirección IPv4 que se está investigando. Si algún host en la red considera la dirección IPv4 (en el TPA) como propia, responderá al sondeo (a través del SHA del host sondeador) informando así al host sondeador del conflicto de direcciones. Si, por el contrario, no hay ningún host que considere propia la dirección IPv4, 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 un par SHA/SPA válido ni un par THA/TPA válido, 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, transmitiendo paquetes de sonda ARP. [10] [11]
ARP también se puede utilizar como protocolo de anuncio simple. Esto es útil para actualizar las asignaciones de una dirección de hardware de otros hosts cuando cambia la dirección IP o MAC del remitente. Un anuncio de este tipo, también denominado mensaje ARP gratuito (GARP), normalmente se transmite como una solicitud ARP que contiene el SPA en el campo de destino (TPA=SPA), con el THA establecido en cero. Una forma alternativa es transmitir una respuesta ARP con el SHA y SPA del remitente duplicados en los campos de destino (TPA=SPA, THA=SHA).
La solicitud ARP y los anuncios de respuesta ARP son 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 pretende solicitar una respuesta; en su lugar, actualiza las entradas almacenadas en caché en las tablas ARP de otros hosts que reciben el paquete. El código de operación en el anuncio puede ser solicitud o respuesta; El estándar ARP especifica que el código de operación solo se procesa después de que la tabla ARP se haya actualizado desde 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 cambiara recientemente una tarjeta de red (cambiando la asignación de dirección IP a dirección MAC) y otros hosts todavía tuvieran la asignación anterior en sus cachés ARP.
Algunas interfaces de red también utilizan anuncios ARP para proporcionar equilibrio de carga para el tráfico entrante. En un equipo de tarjetas de red, se utiliza para anunciar una dirección MAC diferente dentro del equipo que debería 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 sea utilizada 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 está asociada, por ejemplo, a la IP predeterminada . gateway , permitiéndoles así interceptar todo el tráfico hacia 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 perimetral del proveedor (PE) descubre la dirección IP del dispositivo perimetral 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 locales de descubrimiento de vecinos (ND) y de descubrimiento de vecinos inversos (IND) y los reenvía al dispositivo PE remoto. [20]
El protocolo de resolución de direcciones inversas ( ARP inverso 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 del protocolo 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 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 inversas (ARP inverso o RARP), como InARP, traduce direcciones de capa 2 en 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á el tráfico, normalmente como parte del diseño de la red, como por ejemplo para un servicio de Internet por acceso telefónico. Por el contrario, en la suplantación de identidad 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 de ARP para realizar un ataque de intermediario o de denegación de servicio a otros usuarios de la red. Existen varios programas para detectar y realizar ataques de suplantación de identidad de ARP, aunque ARP en sí no proporciona ningún método de protección contra dichos ataques. [23]
IPv6 utiliza el protocolo Neighbor Discovery y sus extensiones, como Secure Neighbor Discovery , en lugar de ARP.
Las computadoras pueden mantener listas de direcciones conocidas, en lugar de utilizar un protocolo activo. En este modelo, cada computadora 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 Ethernet ). Estos datos se mantienen principalmente interpretando paquetes ARP desde el enlace de la red local. Por lo tanto, a menudo se le llama caché ARP . Al menos desde la década de 1980, [24] los ordenadores en red disponen de una utilidad llamada arp para consultar o manipular esta base de datos. [25] [26] [27]
Históricamente, se utilizaron 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 cámaras en red [29] y 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 ARP no está involucrado.
El relleno ARP se logra 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 cualquier 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 utilizando paquetes de solicitud ARP y no paquetes de respuesta ARP?
[...] garpReply habilitado [...] genera paquetes ARP que [...] son de tipo OPCODE RESPUESTA, en lugar de SOLICITUD.