Bootstrap protocol: toda la información sobre el precursor del DHCP

Para poder comunicarse entre ellos en redes como Internet, los sistemas participantes necesitan una dirección IP. En principio, esta se puede asignar de forma manual; sin embargo, en la práctica, la mayoría de los dispositivos la vinculan de forma automática. Para ello es necesario el protocolo de comunicación DHCP, que apoya a los sistemas que buscan conexión en la obtención de la información necesaria. En los primeros días de los ordenadores y las redes, el protocolo de arranque, también conocido como BOOTP, asumió la función del gestor de direcciones.

¿Qué es BOOTP?

En septiembre de 1985, el Stanford University Network Group (grupo de redes de la Universidad de Stanford) publicó en el RFC 951 la primera versión del protocolo de arranque (BOOTP). Este protocolo de comunicación, que se desarrolló en colaboración con un equipo de trabajo del fabricante de ordenadores Sun Microsystems, permitió por primera vez a los terminales y las estaciones de trabajo sin disco duro utilizados por aquel entonces obtener, además de la dirección IP, información como la dirección de la puerta de enlace, la dirección del servidor de arranque y el directorio del archivo de arranque (necesario para cargar el sistema operativo). Sustituyó al hasta entonces utilizado protocolo de resolución de direcciones inverso (RARP), que se limitaba a entregar direcciones de red y solo podía utilizarse en subredes.

El protocolo de arranque forma parte de la familia de protocolos de Internet y funciona, al igual que muchos otros protocolos de la pila, según el modelo cliente-servidor. El intercambio de mensajes para la transmisión de la información de red también tiene lugar entre un cliente BOOTP y el servidor BOOTP. Como protocolo para el transporte de los paquetes de datos se ha previsto el protocolo de datagramas de usuario mínimo y sin conexión, (puertos 67 y 68) (UDP). En comparación con el TCP, este no es solo menos complejo, sino que además permite, a diferencia del protocolo estándar para el transporte de datos, la difusión de audio y vídeo en tiempo real. Puesto que, al establecer la conexión, el cliente no conoce ni su propia dirección ni la del servidor BOOTP, este método de mensajería, mediante el cual se contacta a todos los participantes de la red, es la única solución para la obtención automática de la dirección.

Así funciona el intercambio de información de red con BOOTP

La asignación de direcciones a través de BOOTP está basada en un sencillo intercambio de mensajes de dos pasos entre el cliente y el servidor, en el que el componente cliente es el iniciador. Puesto que al principio este no conoce ni su propia dirección IP ni la del servidor BOOTP, envía una solicitud general ("BOOTREQUEST") a la dirección de grupo de difusión 255.255.255.255. El servidor, que escucha el puerto UDP 67, recibe y procesa la solicitud, que consiste principalmente en asignar la dirección IP correcta a la dirección MAC del sistema cliente. A continuación, se envía al cliente la respuesta ("BOOTREPLY") por difusión (broadcast) junto con información de red adicional. A partir de ese momento el cliente puede vincular el sistema operativo a través de la red.

Nota

Si el cliente ya conoce la dirección del servidor BOOTP, puede enviarle a este la solicitud directamente a través de una conexión de unidifusión.

Esta es la estructura de los mensajes que envían el cliente y el servidor durante la comunicación a través del protocolo de arranque:

Cada mensaje BOOTP comienza con un campo op de 8 bits que define el tipo de operación o el mensaje. Para solicitudes por parte del cliente, en este punto se establece el valor 1 (para BOOTREQUEST), mientras que las respuestas del servidor muestran el valor 2 (para BOOTREPLY). Le siguen 8 bits que indican el tipo ("htype"), así como la longitud de la dirección de hardware ("hlen"). El campo "hops", también de 8 bits, indica el número de estaciones intermedias que atraviesa el paquete en su camino hacia el destinatario. En solicitudes del cliente el valor siempre es 0.

El bloque siguiente contiene un identificador de transacción al azar de 32 bits de largo, generada por el cliente, que también se utiliza en la respuesta del servidor, para que el cliente pueda clasificarlas con claridad. El cliente también rellena el campo "Tiempo" (16 bits), que indica los segundos que han pasado desde el intento de arranque del cliente. El final de la información introductoria forma otro campo de 16 bits que permanece totalmente vacío. Las siguientes entradas del paquete BOOTP se corresponden con la información de red real, que se incluye en la siguiente lista:

  • Dirección IP del cliente (ciaddr): con la etiqueta "ciaddr" (client ip address, dirección ip de cliente) se distingue el campo de 32 bits en el que el cliente introduce su propia dirección IP, siempre que la conozca. Si no es el caso, el campo contiene el valor 0.
  • Dirección IP asignada (yiaddr): el campo "yiaddr" (your ip address, tu dirección ip) también está reservado para la dirección IP del cliente. A diferencia de la sección del paquete mencionado anteriormente, el servidor rellena este campo de 32 bits en caso de que el cliente no conozca su dirección IP en el momento en que se crea la solicitud de red.
  • Dirección IP del servidor (siaddr): en la secuencia de 32 bits "siaddr" (server ip address, dirección ip del servidor), el servidor BOOTP comparte con el cliente su propia dirección IP.
  • Dirección IP del router (giaddr): si hay una puerta de enlace (p.ej. un router) integrada en el proceso de comunicación, su dirección se introduce en el campo "giaddr" (gateway ip address, dirección ip de la puerta de enlace).
  • Dirección de hardware del cliente (chaddr): la dirección de hardware (128 bits) es uno de los datos obligatorios del cliente durante el intercambio de mensajes. Sin estas direcciones MAC, el servidor no puede asignar la dirección correcta ni el parámetro de red correspondiente.
  • Nombre de host del servidor (sname): Opcionalmente, el servidor también puede especificar la respuesta BOOTP en su nombre de equipo. Para ello, está disponible un campo de hasta 512 bits, en el que puede introducir una cadena de caracteres terminada en cero (el cero indica el final de la cadena).
  • Nombre del archivo de arranque (file): opcionalmente, también se puede especificar un archivo de arranque específico que el cliente necesitará para iniciar el sistema operativo en el terminal o la estación de trabajo. Este campo también proporciona una cadena de caracteres terminada en cero que, en este caso, reproduce la ruta completa del directorio del archivo. La secuencia de caracteres puede tener hasta 1024 bits de largo. En la petición del cliente aparece, o bien el valor 0, o un nombre genérico.
  • Información específica del fabricante (vend): la información específica del fabricante, que no está cubierta por el protocolo, marca el final del mensaje. Se puede tratar, por ejemplo, de información sobre tipos o números de serie de hardware. Además, este dato informativo de 512 bits se puede reservar para un tercer proceso de arranque o proceso operativo.

En general, los mensajes BOOTP también pueden tener una longitud de hasta 2400 bits (300 bytes). El datagrama UDP/IP completo, incluidas las solicitudes y respuestas del protocolo de arranque integrado, tienen la siguiente construcción:

BOOTP vs. DHCP: por qué hoy ya no se utiliza el protocolo de arranque

Para clientes de terminal y estaciones de trabajo sin disco duro, BOOTP fue la solución perfecta para obtener una dirección IP en la red y, de este modo, vincular el sistema operativo. El hecho de que la asignación de la dirección por el protocolo de comunicación pudiese solucionarse de forma simultánea al proceso de arranque fue algo práctico y sencillo para los ordenadores de sobremesa, que empezaron a utilizarse en redes con tamaños más manejables. Por ello, era problemático, por ejemplo, que el administrador tuviese que configurar manualmente las tablas de información de red del servidor BOOTP.

Sin embargo, a medida que las redes fueron creciendo y los ordenadores adquirieron autonomía, y gracias al desarrollo de los dispositivos portátiles más móviles, no poder automatizar el proceso de configuración se apreciaba como un factor negativo. El deseo de un nuevo protocolo era evidente. Con el protocolo de configuración dinámica de host (DHCP) en el año 1993 se encontró un sucesor (especificación final en el RFC 2131). DHCP está basado, en gran parte, en la estructura del protocolo de arranque, complementado, sin embargo, con diferentes opciones de configuración adicionales y ofrece la posibilidad de asignar direcciones de red reutilizables a clientes que buscan conexión. Además, la asignación de información sobre direcciones con DHCP también funciona durante la operación actual del sistema: con BOOTP no es necesario reiniciar.

Estas son las diferencias más importantes entre ambos protocolos:

  BOOTP DHCP
Configuración automática La asignación de direcciones IP requiere la configuración manual de las tablas de direcciones Soporta la asignación automática y la obtención automática de direcciones IP (también la configuración manual)
Direcciones IP temporales No es posible Es posible durante un periodo de tiempo limitado
Soporte para dispositivos móviles No es posible la configuración IP y el acceso a la información de la red Soporta la movilidad de los clientes de red
Índice de errores Índice de errores elevado debido a la configuración manual Prácticamente inmune a los errores gracias a la configuración automática de los componentes de red
Requisitos del sistema Ninguno Requiere disco duro para almacenar y reenviar la información

Gracias a las diferentes optimizaciones, DHCP se convirtió rápidamente en el protocolo estándar para la gestión de IP en redes, mientras que en la actualidad el protocolo BOOTP solo tiene un valor histórico. Puesto que DHCP soporta el protocolo de arranque, los servidores DHCP, en principio, también pueden dar respuesta a todo tipo de solicitudes realizadas por un cliente BOOTP.

¿Le ha resultado útil este artículo?
Page top