Protocolo de arranque

La versión actual de la página aún no ha sido revisada por colaboradores experimentados y puede diferir significativamente de la versión revisada el 30 de mayo de 2017; las comprobaciones requieren 5 ediciones .
BOOTP
Nombre Protocolo de arranque
Nivel (según el modelo OSI ) aplicado
Familia TCP/IP
Creado en 1985
Puerto/ID 67/ UDP (servidor),
68/UDP (cliente) [1]
Propósito del protocolo obtener configuración de red
Especificación RFC 951 , RFC 1542

BOOTP (del inglés  bootstrap protocol ) es un protocolo de red de capa de aplicación utilizado para obtener automáticamente una dirección IP por parte del cliente . Esto suele suceder mientras la computadora se está iniciando . BOOTP se define en RFC 951 .

BOOTP, como RARP , permite que un servidor especial determine la dirección IP del cliente a partir de su dirección MAC (por ejemplo, al iniciar un dispositivo que no tiene la capacidad de almacenar su propia dirección IP), y también permite que los clientes aprendan otros parámetros de inicio (por ejemplo, el nombre del programa, descargado a través de TFTP ) y utiliza UDP como protocolo de capa de transporte. Esto le permite usar enrutadores (bootp relay) para enviar solicitudes y respuestas de un segmento LAN a otro. DHCP ( Protocolo de configuración dinámica de host) es un  complemento para BOOTP (para compatibilidad con el relé bootp) y permite que el servidor asigne direcciones IP a los clientes de forma dinámica durante un período limitado.

Historia

El personal de mantenimiento de esos (?) años enfrentó los desafíos de conectar y mover constantemente nuevos dispositivos, así como la necesidad de cambiar la configuración de la red para cumplir con los requisitos de la red moderna. Todo esto llevó a la necesidad de crear un mecanismo para automatizar la configuración de los nodos de red, los sistemas operativos distribuidos y el software de red. La forma más eficiente de implementar dicho mecanismo puede ser almacenar los ajustes de configuración y las imágenes de software en uno o más servidores de arranque. Durante el inicio, el sistema interactúa con dicho servidor, recibe los parámetros de configuración iniciales y, si es necesario, descarga el software necesario.

BOOTP se introdujo en RFC 951 como reemplazo del obsoleto RARP. BOOTP se desarrolló originalmente para estaciones de trabajo sin disco . Las condiciones modernas han llevado a la necesidad de automatizar el arranque de los sistemas que solo tienen herramientas básicas para IP , UDP y TFTP en ROM. El script de arranque original se veía así:

Formato de mensaje BOOTP

La solicitud de descarga y la respuesta utilizan el mismo formato de mensaje. En la solicitud, algunos campos tienen valores nulos.

Estructura del paquete BOOTP [2] :

Desplazamiento de
segmento
Longitud,
octeto
Descripción
0 una Op
Código de operación
una una Tipo H
Tipo de equipo
2 una HLen
Longitud de dirección de hardware
3 una Lúpulos
Número de saltos
cuatro cuatro
ID de transacción XID
ocho 2 Secs Contador de segundos
desde que el cliente envió la primera solicitud
diez 2 No se usa en RFC 951
Banderas  - Campo de banderas en RFC 1542
12 cuatro
Dirección IP del cliente CIAddr
dieciséis cuatro YIAddr La
dirección IP proporcionada al cliente por el servidor
veinte cuatro
Dirección IP del servidor SIAddr
24 cuatro GIAddr
Dirección IP del enrutador intermedio
28 dieciséis CHAddr
Dirección de hardware del cliente
44 64
Nombre de host del servidor SName
108 128 Nombre de archivo
del archivo de arranque
236 64 Área de Vend
Developer y Opciones Avanzadas

Consideremos todos los parámetros con más detalle.

Código de operación

El código de operación indica el tipo de mensaje:

Tipo de equipo

Especifica el tipo de hardware de red que se está utilizando, utilizando valores similares al campo Tipo de hardware ( HType , HRD ) en la especificación del protocolo ARP [3] [4] .

Algunos valores de uso común:

tipo h Descripción
una Ethernet (10Mb)
6 Redes IEEE 802
7 ARCNET
quince Retardo de fotograma
dieciséis Modo de transferencia asincrónica (ATM)
Dieciocho canal de fibra
veinte línea serial

Longitud de dirección de hardware

Especifica la longitud de la dirección de hardware en el mensaje. Para redes Ethernet y otras que utilicen IEEE 802 , el valor de este parámetro es 6.

Un campo similar en el paquete ARP es HLN.

Número de transferencias

Los relés utilizan este segmento para controlar el reenvío de mensajes. El valor del campo se establece en 0 antes de enviarse y se incrementa en 1 a medida que pasa por cada relé.

ID de transacción

El ID de transacción es un número entero de 32 bits que establece el cliente y lo devuelve el servidor. Permite al cliente hacer coincidir la respuesta con la solicitud. El cliente establece este campo en un número aleatorio para cada solicitud.

Contador de segundos

Cuando el cliente envía la primera solicitud de descarga, el campo del contador de segundos se establece en cero. Si la solicitud no recibe respuesta, después de que expira el tiempo de espera, el cliente envía la solicitud nuevamente, cambiando el valor en el campo del contador de segundos. Para el tiempo de espera, el cliente utiliza un intervalo aleatorio, aumentando hasta un valor de 60 segundos.

Este campo no tiene un propósito especial. Su contenido puede ser verificado por el servidor o el monitor de red para determinar cuánto tiempo espera el cliente para una descarga de red. El servidor PUEDE usar los valores en el campo del contador de segundos para priorizar las solicitudes, pero este campo actualmente se ignora en la mayoría de las implementaciones.

Banderas

En el RFC 951 original , este campo de dos bytes se dejó en blanco. De acuerdo con RFC 1542 , se utiliza para establecer banderas [5] .

Nombre de la bandera tamaño, poco Descripción
B una Difusión: al enviar el mensaje original, el cliente no conoce su propia dirección IP y este indicador se establece en "1". Este estado indica a los servidores y relés BOOTP que recibieron el paquete que se debe transmitir la solicitud de este cliente .
Reservado quince Reservado y no utilizado, valores establecidos en 0.

Dirección IP del cliente

Si el cliente ya conoce su dirección IP, completa el campo de dirección IP del cliente. De lo contrario, el cliente establece este valor en 0. En este último caso, el servidor inserta su dirección IP en el campo con la dirección IP del cliente. El servidor completa el campo de la dirección IP del servidor. Si se utiliza un servidor autorizado, completa la dirección IP de la puerta de enlace.

La dirección IP proporcionada al cliente por el servidor

El cliente debe establecer su dirección de hardware de cliente. Este es el mismo valor que se encuentra en el encabezado de Ethernet y en el campo UDP del datagrama, lo que lo hace disponible para cualquier proceso de usuario (como un servidor BOOTP) que haya recibido el datagrama. Por lo general, es difícil o casi imposible para un proceso que maneja datagramas UDP determinar el valor en el campo de encabezado de Ethernet del datagrama en el que se transporta el datagrama UDP.

Nombre de host del servidor

El nombre de host del servidor es una cadena que completa el servidor (opcional).

Nombre de archivo de arranque

El servidor también puede completar el campo de nombre de archivo de inicio. Este campo contiene la ruta completa al archivo que se usa al cargar.

Área de desarrolladores

Originalmente, el área específica del proveedor se usaba en los mensajes para enviar información específica de la implementación. Sin embargo, al comienzo de BOOTP, esta área permaneció libre, aunque una gran cantidad de información (por ejemplo, la máscara de subred o la dirección del enrutador predeterminado) no se incluyó formalmente en los mensajes. El área de desarrolladores sirvió como un lugar para opciones de configuración adicionales, así como información específica para desarrolladores. Hay bastantes campos diferentes definidos en esta área.

Números de puerto

BOOTP tiene dos puertos conocidos: 67 para el servidor y 68 para el cliente. Esto significa que el cliente no elige un puerto asignado dinámicamente sin usar, sino que usa el número de puerto 68. La razón por la que se eligieron dos números de puerto en lugar de usar solo uno para el servidor es que el servidor puede enviar una respuesta (aunque generalmente no lo hace). ) de forma retransmitida.

Si la respuesta del servidor se transmitiera y el cliente necesitara seleccionar un número de puerto asignado dinámicamente, esas transmisiones también serían recibidas por otras aplicaciones en otros hosts que usan el mismo número de puerto asignado dinámicamente. Por lo tanto, podemos concluir que enviar una solicitud de transmisión a un número de puerto aleatorio (asignado dinámicamente) no es racional.

Si el cliente utiliza el puerto conocido del servidor (67), todos los servidores de la red se verán obligados a escuchar cada respuesta de difusión. (Si todos los servidores estuvieran 'despertados', tendrían que verificar el código de operación, determinar que era una respuesta y no una solicitud, y 'dormir' nuevamente). Entonces, se tomó la decisión de cómo se hace ahora, es decir, el cliente tiene es el único puerto conocido que es diferente del puerto conocido del servidor.

Si varios clientes están descargando al mismo tiempo, y si las respuestas del servidor se propagan mediante solicitudes de difusión, cada cliente busca las respuestas destinadas a otros clientes. Los clientes usan el campo de ID de transacción en el encabezado BOOTP para hacer coincidir la respuesta con la solicitud, o los servidores miran la dirección de hardware del cliente devuelta.

Véase también

Notas

  1. RFC951 , pág. 3: "El protocolo BOOTP utiliza dos números de puerto reservados, 'cliente BOOTP' (68) y 'servidor BOOTP' (67)".
  2. RFC951 , págs. 3-4.
  3. RFC951 , pág. 3: "Tipo de dirección de hardware, consulte la sección ARP en "Números asignados" RFC".
  4. RFC1700 , Parámetros del protocolo de resolución de direcciones, págs. 163-164.
  5. RFC1542 , Definición del campo 'flags', págs. 5-6: "Este memorándum designa este campo de dos octetos como el campo de 'banderas'".

Enlaces