jueves, 24 de mayo de 2012

DHCP

DHCP, de Dynamic Host Configuration Protocol, es un protocolo que permite configurar automáticamente los parámetros de red de equipos que pertenecen a una red TCP/IP. Se basa en Bootp, emplea UDP en la capa de transporte, y los puertos empleados son el 68 para el cliente, y el 67 para el servidor. No voy a extenderme explicando los fundamentos de dicho protocolo, ya que hay bastante información al respecto en Internet, aparte del RFC 2131, pero sí he querido contrastar dicha información con un caso práctico o real, en este caso, con mi propio equipo y Wireshark.

Como vemos en la siguiente imagen, ésta es la negociación básica entre un cliente y un servidor DHCP:


Y aquí, la negociación que ha capturado Wireshark, entre mi equipo y el router:


De un vistazo rápido, vemos que inicialmente, el cliente, al no tener dirección IP, empleará la 0.0.0.0, y hasta que no localiza el servidor, manda el aviso a todo dios con 255.255.255.255 (broadcast). También vemos que todo el proceso, tiene asignado un mismo identificador de transacción.

Ahora, voy a poner una imagen detallada y una breve descripción de cada paso:
  • DHCP Discover - El cliente hace un broadcast para localizar algún servidor disponible.

  • DHCP Offer - El servidor responde al cliente ofreciendo unos parámetros de configuración de red.

  • DHCP Request - Mensaje del cliente al servidor aceptando la configuración propuesta por el servidor en el paso anterior. También puede ser que el cliente, con este mensaje, mande confirmación de la configuración que tenía antes de un reinicio, o simplemente que esté pidiendo una extensión del tiempo de préstamo de dicha configuración.

  • DHCP Ack - El servidor acepta la solicitud del cliente y envía acuse de recibo.

  • DHCP Inform - El cliente solicita parámetros de configuración local: confirmación de configuración actual, reestablecimiento del tiempo de concesión, etc.

Esto es lo que he obtenido al ejecutar un 
#ipconfig /release



Para finalizar, pongo la definición de algunos parámetros que vemos en las capturas anteriores:

Transaction ID: un número aleatorio escogido por el cliente, que sirve para identificar los mensajes intercambiados entre cliente y servidor.

Client IP addr: dirección IP cliente. Solo se establece si se está en estado BOUND, RENEW o REBINDING y puede responder a peticiones ARP.

Your IP addr: "tu" dirección IP (cliente).

Next Server IP addr: IP del siguiente servidor que emplee bootstrap, devuelto por el servidor en un DHCPOFFER o DHCPACK.

Relay agent IP addr: IP de un agente de relay (un host o un router) empleado para pasar mensajes entre cliente y servidor.

Client MAC addr: dirección hardware del cliente.

Boot file name: fichero con parámetros de "boot" o arranque.

Magic cookie: heredado de y empleado por bootp, tiene asociada información del fabricante. Consiste en 4 octetos con la notación 99.130.83.99 en decimal o 63.82.53.63 en hexadecimal.

Option: Parameter Request List: el cliente informa al servidor de los parámetros de configuración en los que está interesado. Ésto se consigue enviando los tags de cada parámetro en cuestión.

Referencias: