If we want to broadcast information from a socket, we need to enable `SocketOptions.SO_BROADCAST`. However, I don't understand why that is necessary.

My understanding is we set the packet with a broadcast address, just the same way as set a unicast address. Then we just need to send it through a regular socket. If its a UDP socket, then a UDP header will be added to that packet, and then an IP header containing the receiver's IP address (in this case is the broadcast address in the form of `192.168.255.255`), and then a MAC address `(FF:FF:FF:FF)` is added.

I think the router will get the packet and perform the broadcast. I don't understand why we need to set the socket attribute to `SO_BROADCAST`.