Tabla de contenidos
Funcionamiento de IGMP
Figura: ARP("Address Resolution Protocol")
El protocolo ARP es un protocolo estándar específico de las redes. Su status es electivo.
El protocolo de resolución de direcciones es responsable de convertir las dirección de protocolo de alto nivel(direcciones IP) a direcciones de red físicas. Primero, consideremos algunas cuestiones generales acerca de Ethernet.
Se pueden usar los siguientes formatos de trama en el cable coaxial de Ethernet:
La diferencia entre estos dos estándares está en el uso de uno e los campos de la cabecera, que contiene un número de tipo de protocolo para Ethernet y la longitud de los datos del trama en IEEE 802.3.
Figura: formatos de trama en Ethernet e IEEE 802.3
Así, a efectos prácticos, la capa física de Ethernet e IEEE 802.3 son compatibles. A pesar de todo, las capas de enlace de Ethernet y de IEEE 802.3/802.2 no lo son.
El IEEE 802.3 usa un concepto conocido como LSAP("Link Service Access Point") que utiliza una cabecera de 3 bytes:
Figura: Cabecera de LSAP en IEEE 802.2
donde DSAP y SSAP significan Destination y Source Service Access Point, respectivamente. Los números para estos campos son asignados por un comité IEEE.
Debido al número creciente de aplicaciones que emplean IEEE 802 como protocolo para los niveles inferiores, se le hizo una extensión en la forma del SNAP ("Sub-Network Access Protocol"). Se trata de una extensión a la cabecera de LSAP, y el valor 170 de los campos SSAP y DSAP indica su uso.
Figura: Cabecera de LSAP en IEEE 802.2
se han establecido tres estándares, que describen el encapsulamiento de las tramas IP y ARP en estas redes:
El RFC indica claramente que el método IEEE 802.2/802.3 es el preferido, es decir, se supone que todas las implementaciones futuras de IP en redes IEEE 802.3 deberían usarlo.
Estos son los mismos valores que se usan en el campo de tipo de Ethernet.
Debido a que este nuevo enfoque del problema(muy importante para las implementaciones) pasó prácticamente inadvertido al figurar como una pequeña nota del RFC, hubo bastante confusión al respecto, y finalmente, en febrero de 1988, se repitió en un RFC propio: RFC 1042, que deja obsoleto al RFC 948.
Sin embargo, en la práctica, todavía hay implementaciones de TCP/IP que utilizan el viejo método LSAP(RFC 948 o 1042). Tales implementaciones no se comunicarán con implementaciones más recientes.
Notar además que el último método cubre no sólo las redes IEEE 802.3, sino también las redes IEEE 802.4 y 802.5.
En una sola red física, los hosts individuales se conocen en la red a través de su dirección física. Los protocolos de alto nivel direccionan a los hosts de destino con una dirección simbólica (en este caso la dirección IP). Cuando tal protocolo quiere enviar un datagrama a la dirección IP de destino w.x.y.z, el manejador de dispositivo no la entiende.
En consecuencia, se suministra un módulo(ARP) que traducirá la dirección IP a las dirección física del host de destino. Utiliza una tabla(llamada a veces caché ARP) para realizar esta traducción.
Cuando la dirección no se encuentra en la caché ARP, se envía un broadcast en la red, con un formato especial llamado petición ARP. Si una de las máquinas en la red reconoce su propia dirección IP en la petición, devolverá una respuesta ARP al host que la solicitó. La respuesta contendrá la dirección física del hardware así como información de encaminamiento8(si el paquete ha atravesado puentes durante su trayecto) tanto esta dirección como la ruta se almacenan en la caché del host solicitante. Todos los posteriores datagramas enviados a esta dirección IP se podrán asociar a la dirección física correspondiente, que será la que utilice el manejador de dispositivo para mandar el datagrama a la red.
ARP se diseño para ser usado en redes que soportasen broadcast por hardware. Esto significa, por ejemplo, que ARP no funcionará en una red X.25.
ARP se emplea en redes IEEE 802 además de en las viejas redes DIX Ethernet para mapear direcciones IP a dirección hardware. Para hacer esto, ha de estar estrechamente relacionado con el manejador de dispositivo de red. De hecho, las especificaciones de ARP en RFC 826 sólo describen su funcionalidad, no su implementación, que depende en gran medida del manejador de dispositivo para el tipo de red correspondiente, que suele estar codificado en el microcódigo del adaptador.
Si una aplicación desea enviar datos a una determinado dirección IP de destino, el mecanismo de encaminamiento IP determina primero la dirección IP del siguiente salto del paquete (que puede ser el propio host de destino o un "router") y el dispositivo hardware al que se debería enviar. Si se trata de una red 802.3/4/5, deberá consultarse el módulo ARP para mapear el par <tipo de protocolo, dirección de destino> a una dirección física.
El módulo ARP intenta hallar la dirección en su caché. Si encuentra el par buscado, devuelve la correspondiente dirección física de 48 bits al llamador(el manejador de dispositivo). Si no lo encuentra, descarta el paquete (se asume que al ser un protocolo de alto nivel volverá a transmitirlo) y genera un broadcast de red para una solicitud ARP.
Figura: Paquete de petición/respuesta ARP
Donde:
Para el paquete de solicitud, la dirección hardware de destino es el único campo indefinido del paquete.
Cuando un host recibe un paquete ARP(bien un broadcast o una respuesta punto a punto), el dispositivo receptor le pasa el paquete al módulo ARP, que lo trata como se indica en Figura - Recepción del paquete ARP.
Figura: Recepción del paquete ARP
El host solicitante recibirá esta respuesta ARP, y seguirá el algoritmo ya comentado para tratarla. Como resultado, la tripleta <tipo de protocolo, dirección de protocolo, dirección hardware> para el host en cuestión se añadirá a la caché ARP. La próxima vez que un protocolo de nivel superior quiera enviar un paquete a ese host, el módulo de ARP encontrará la dirección hardware, a la que se enviará el paquete.
Notar que debido a que la petición ARP original fue un broadcast en la red, todos los host en ella habrán actualizado la dirección del emisor en su propia caché(sólo si previamente ya existía esa entrada) en la tabla.
El protocolo ARP es el mismo aunque haya subredes. Recordar que cada datagrama IP pasa primero por el algoritmo de encaminamiento IP. Este algoritmo selecciona el manejador de dispositivo que debería enviar el paquete. Sólo entonces se consulta al módulo ARP asociado con ese manejador.
El Proxy-ARP se describe en el RFC 1027 - Usando ARP para implementar pasarelas de subredes transparentes, que de hecho es un subconjunto del método propuesto en el RFC 925 - Resolución de direcciones Multi-LAN. Es otro método para construir subredes locales, sin necesidad de modificar el algoritmo de encaminamiento IP, pero con modificaciones en los routers, que interconectan las subredes.
Considerar una red IP, dividida en subredes, interconectadas por "routers". Utilizamos el algoritmo IP "viejo", lo que significa que ningún host conoce la existencia de múltiples redes físicas. Si se toman los hosts A y B, que se hallan en distintas redes físicas dentro de la misma red IP, y un "router" entre las dos subredes:
Figura: Hosts interconectados por un "router"
Cuando el host A quiere enviar un datagrama IP al host B, primero ha de determinar la dirección de red física del host B usando ARP.
Como A no puede diferenciar entre las redes físicas, su algoritmo de encaminamiento IP piensa que el host B está en su misma red local y envía un broadcast de petición ARP. El host B no lo recibe, pero sí el "router" R. R entiende de subredes, es decir, ejecuta la versión de subred del algoritmo de encaminamiento y será capaz de ver que el destino de la petición ARP(en el campo de dirección de protocolo de destino) está localizado en otra red física. Si las tablas de encaminamiento de R especifican que el siguiente salto a otra red se produce a través de un dispositivo diferente, replicará al ARP como si fuera el host B, diciendo que la dirección de B es la del mismo "router".
El host A recibe esta respuesta ARP, la introduce en su caché y enviará los siguientes paquetes dirigidos a B al "router" R, que los retransmitirá a la subred adecuada.
El resultado es subnetting transparente:
Tabla de contenidos
RARP ("Reverse Address Resolution Protocol")