¿Por qué necesitamos SocketOptions.SO_BROADCAST para habilitar la difusión?

Si queremos transmitir información desde un socket, necesitamos habilitarSocketOptions.SO_BROADCAST. Sin embargo, no entiendo por qué es necesario.

Según tengo entendido, configuramos el paquete con una dirección de transmisión, de la misma manera que configuramos una dirección de unidifusión. Entonces solo tenemos que enviarlo a través de un socket regular. Si es un socket UDP, entonces se agregará un encabezado UDP a ese paquete, y luego un encabezado IP que contenga la dirección IP del receptor (en este caso es la dirección de transmisión en forma de192.168.255.255), y luego una dirección MAC(FF:FF:FF:FF) está agregado.

Creo que el enrutador obtendrá el paquete y realizará la transmisión. No entiendo por qué tenemos que establecer el atributo socket paraSO_BROADCAST.

Respuestas a la pregunta(2)

Su respuesta a la pregunta