miércoles, 18 de abril de 2012

Protocolos de arranque y configuración

Address Resolution Protocol
Primero que nada aclara que el protocolo de arranque y configuración seria RARP, pero es mucho mas claro explicar ARP para entender RARP, ya que es su caso inverso.

Address Resolution Protocol o ARP, es un protocolo que partiendo de una dirección de un protocolo de nivel superior (TCP, FTP, TELNET, etc) nos permite obtener la dirección Ethernet de un dispositivo.

Generación de paquetes ARP
Supongamos que trabajamos con el protocolo IP a nivel de red. Al enviar un mensaje desde el host A al host B, solo conocemos la direccion IP de la maquina de destino, pero a nivel de enlace el paquete es encapsulado en una trama Ethernet, por lo que sera necesario saber la dirección Ethernet de nuestra maquina destino (en caso de estar en la misma red) o de la maquina a través de la cual se hará el enrutamiento. Este proceso se hace media broadcasting, al ser un procedimiento muy costoso cada cliente mantiene una tabla de correspondencia con con los pares IP-Ethernet.

Recepción de paquetes ARP 
Como se dijo anteriormente cuando un terminal necesita determinar la dirección Ethernet de una maquina,  lo hará mediante un broadcast. Cuando una petición de resolución llega a un cliente, primero se actualiza la tabla de correspondencia (para evitar futuros broadcast) y luego se comprueba si nuestra dirección de protocolo es la buscada. Si el mensaje no va dirigido a nosotros se descarta, en caso contrario se responde al dispositivo que genero el mensaje indicándole nuestra dirección Ethernet.

Para consultar la tabla de correspondencia podemos ejecutar arp -a


Como se dijo al principio el caso inverso, es RARP, es decir conocemos la dirección física del dispositivo y queremos saber la dirección IP.


Suponiendo que tenemos que mandar un mensaje desde A (.10) a B (.20), la secuencia de mensajes de ARP es la siguiente:

  1. arp who-has 192.168.1.10 tell  192.168.1.20
  2. arp reply   192.168.1.20 is-at 00:11:22:33:44:55

Esto se puede ver perfectamente con Wireshark.

Bootstrap Protocol
Para lidiar con los problemas del broadcast limitado de RARP (255.255.255.255) surge BOOTPl objetivo de este protocolo es saber la IP de un host a partir de su dirección física. Se basa en UDP usando los puertos 67 y 68  para el servidor y el cliente respectivamente. 

El mayor problema de BOOTP es que el administrador de la red debe introducir manualmente la tabla de correspondencia IP y Ethernet, para evitar eso BOOTP evoluciono a DHCP.

Dynamic Host Configuration Protocol
DHCP se encarga de automatizar la configuración (IP, gateway, mascaras, etc) de los dispositivos. Para el cliente es como si usara BOOTP, ya que usa los mismos puertos y protocolo. La gran diferencia con los protocolos anteriores es que el servidor DHCP no tiene porque estar en la misma red, siendo necesario un agente re-transmisor. Cuando el cliente desea saber su IP genera un mensaje DHCP discover mediante broadcast, en caso de que el servidor se encuentre en la misma red le responde directamente sino el agente de retransmisión re enviara el mensaje al servidor.

  • discover: enviado desde al servidor para solicitar una IP, puede sugerir la IP deseada.
  • decline: rechaza la IP solicitada por el cliente.
  • offer: el servidor le ofrece una configuración al cliente.
  • request: es un mensaje generado por el cliente para confirmar/rechazar ofertas.
  • ack / nak: confirmación / negación de un mensaje de tipo request