Estamos tentando depurar alguns aplicativos que executam transmissão.
Qual é a diferença entre o endereço de broadcast 255.255.255.255 e como, por exemplo, relatado por ifconfig, Bcast: 192.168.1.255
Estamos tentando depurar alguns aplicativos que executam transmissão.
Qual é a diferença entre o endereço de broadcast 255.255.255.255 e como, por exemplo, relatado por ifconfig, Bcast: 192.168.1.255
Respostas:
Um endereço de transmissão é sempre relativo a uma determinada rede, não há transmissão por si só ; quando você tem uma rede, pode calcular seu endereço de transmissão substituindo todos os bits do host por 1s; Simplificando, o endereço de broadcast é o endereço mais alto que você pode ter na rede, enquanto o endereço de rede é o mais baixo (com todos os bits do host configurados como 0s); é por isso que você não pode usar nenhum deles como endereços de host reais: eles são reservados para esse uso.
Se sua rede for 192.168.1.0/24, seu endereço de rede será 192.168.1.0 e seu endereço de transmissão será 192.168.1.255.
Se sua rede for 192.168.0.0/16, seu endereço de rede será 192.168.0.0 e seu endereço de transmissão será 192.168.255.255.
E assim por diante...
255.255.255.255 é um endereço de broadcast especial, que significa "esta rede": permite enviar um pacote de broadcast para a rede à qual você está conectado, sem se importar com o endereço; nisso, é semelhante ao 127.0.0.1, que é um endereço virtual que significa "host local".
Mais informações aqui: http://en.wikipedia.org/wiki/Broadcast_address
fonte
Para adicionar ao que Massimo declarou em sua resposta:
255.255.255.255 seria considerado o endereço de broadcast da camada física, enquanto 192.168.1.255 seria considerado o endereço de broadcast da camada de rede. O ARP geraria uma transmissão da camada física, enquanto o NetBIOS geraria uma transmissão da camada de rede.
fonte
Em princípio, 255.255.255.255 é o endereço de transmissão "global", o que significa que a pilha IP deve enviar o pacote para todas as interfaces de rede e os roteadores configurados para encaminhar difusões devem enviá-los.
Na prática, quase não há roteadores encaminhando difusões e muitas pilhas simplesmente enviam uma cópia do pacote para a interface para onde a rota padrão aponta.
O endereço de broadcast da sub-rede é usado para selecionar uma interface específica. Nos dois casos, eles devem ser mapeados para o endereço de broadcast da camada de rede (que seria FF: FF: FF: FF: FF: FF: FF para Ethernet).
Em geral, usar 255.255.255.255 é uma péssima ideia, pois existem várias configurações nas quais a interface com a rota padrão é exatamente a escolha errada. Selecionar uma interface explicitamente é melhor, mas precisa ser feito com cuidado.
Minha outra sugestão seria usar multicast, se isso faz sentido para o seu aplicativo. As mesmas ressalvas que o tráfego de broadcast ainda se aplicam, mas isso permite que hosts desinteressados identifiquem rapidamente seus pacotes e permite que os gerentes de rede configurem regras de encaminhamento específicas para o seu protocolo.
fonte