2009-11-24 19 views
8

Si el cliente no escucha en el puerto 68, cuando el servidor DHCP recibe la solicitud, puede enviarla a la dirección desde donde recibió la solicitud (con el puerto efímero elegido por el cliente al momento del envío), entonces ¿por qué el protocolo especifica el cliente? estar escuchando en el puerto 68?¿Por qué el cliente DHCP escucha en el puerto 68?

Respuesta

1

Porque está en el RFC (Solicitud de comentarios) que especifica cómo se comporta DHCP. RFC 2131 es el documento que especifica cómo debe comportarse un cliente y servidor DHCP.

Consulte here para obtener más información sobre DHCP (sección 4.1 en particular). Consulte here para obtener información sobre lo que son las RFC.

+5

La pregunta dice "¿por qué el protocolo especifica que el cliente esté escuchando en el puerto 68?", Entonces lo que preguntan parece ser más "¿por qué lo dice el RFC?" –

+1

DHCP se basa en el protocolo BOOTP anterior que usaba los puertos 67 (servidor) y 68 (cliente).La razón por la cual BOOTP usó esos puertos fue probablemente porque no fueron utilizados por ninguno de los otros protocolos en ese momento (SMTP usa 25, FTP usa 21, etc.). Mientras que un host generalmente tiene una sola dirección IP, puede tener miles de puertos. Al asignar números de puerto particulares a protocolos específicos, varias partes pudieron desarrollar servicios y clientes estándar. Siempre que haya escuchado en el puerto correcto, puede escribir su propio cliente o servidor DHCP. – TLiebe

+1

Ok significa que no hay un motivo técnico? – avd

16

La razón principal es que el servidor DHCP podría transmitir la "oferta DHCP" en el nivel de mac, en lugar de enviarlo unicast a la dirección MAC que recibió la solicitud. Si el puerto no era constante, algunos hosts que están escuchando por casualidad este mismo puerto aleatorio, aceptarán el paquete en la capa 5: la capa de aplicación. En otras palabras, una aplicación recibirá un mensaje de una aplicación completamente diferente, no una situación saludable.

+0

Esta respuesta no parece diferente a la de hace más de 3 años. Si desea agregar algo, considere sugerir una edición a la respuesta existente y aceptada :) –

+3

Gracias, esta es en realidad la respuesta correcta. – Parzifal

+0

Pregunta relevante: ¿Puedo hacer cortafuegos con seguridad en este puerto en una configuración normal en la que se usa un cliente DHCP para obtener direcciones IP? Es decir. ¿el * might * es relevante en el mundo real? – Zero3

1

sólo tenía que hacer frente a la misma pregunta a mí mismo, y después de algunas investigaciones, encontré lo siguiente en la RFC 2131, que describe el protocolo DHCP, en el apartado 1.6 Objetivos de diseño:

  • DHCP debe proporcionar el servicio a los clientes BOOTP existentes

también en la RFC 951, que describen el protocolo BOOTP, podemos encontrar los siguientes:

la cabecera UDP contiene números de puerto de origen y destino. El protocolo BOOTP utiliza dos números de puerto reservados, 'cliente BOOTP' (68) y 'servidor BOOTP' (67). El cliente envía solicitudes usando el 'servidor BOOTP ' como el puerto de destino; esto es generalmente una transmisión. El servidor envía respuestas utilizando el 'cliente BOOTP' como el puerto de destino; dependiendo del kernel o las instalaciones del controlador en el servidor, esto puede o puede no ser una transmisión (esto se explica más detalladamente en la sección titulada 'Problemas de pollo/huevo' a continuación). La razón por la que se utilizan DOS puertos reservados es para evitar el 'despertar' y programar los demonios del servidor BOOTP , cuando se debe transmitir una respuesta de inicio a un cliente. Dado que el servidor y otros hosts no escucharán en el puerto 'cliente BOOTP', cualquiera de esas transmisiones entrantes se filtrarán en el nivel kernel . No podemos simplemente permitir que el cliente elija un número de puerto "aleatorio" para el campo de puerto de origen UDP; dado que la respuesta del servidor puede ser la difusión , un número de puerto elegido al azar podría confundir a otros hosts que estaban escuchando en ese puerto.

Así que la respuesta a la pregunta viene de lo anterior. Los clientes DHCP necesitan usar el puerto UDP 68, para que el DHCP sea compatible con el protocolo BOOTP y el protocolo BOOTP requiera un puerto específico para el cliente, ya que BOOTPREPLIES puede ser emitido, y si se eligió un puerto aleatorio para el cliente , podría dar lugar a la confusión de otros hosts que están escuchando en el mismo puerto.

Cuestiones relacionadas