Como meu servidor pode anunciar sua presença para todos na rede

Como meu servidor pode anunciar sua presença para todos na rede

A situação é a seguinte. Quero ter um aplicativo rodando em um servidor. Todos os desktops da empresa precisam se conectar a ele. Mas não quero que o endereço IP do servidor seja codificado nos aplicativos de desktop. Em vez disso, quero que o servidor seja capaz de se anunciar através de alguns mecanismos de transmissão. Os aplicativos de desktop estariam ouvindo essa mensagem e, portanto, conheceriam o endereço IP do servidor e poderiam então se conectar a ele

Como eu posso fazer isso ? Preciso usar multicast? Até onde vão as mensagens multicast? Como os aplicativos de desktop podem ouvir dados multicast?

Responder1

O método mais comum para isso é usarDNS. Sua empresa provavelmente possui seu próprio nome de domínio; possivelmente um interno; basta adicionar um subdomínio nele – myapp.internal.example.comou myapp.corpalgo assim – e apontar para o endereço do seu servidor.

myapp.<domain>.         A       10.0.0.5
myapp.<domain>.         AAAA    2001:db8::123:4

(Afinal, é umservidor, seu endereço IP provavelmente não mudará semanalmente. E quando isso mudar, tudo que você precisa atualizar é o subdomínio no DNS.)

Você pode torná-lo mais avançado e usarRegistros SRVem vez de registros diretos de endereço A/AAAA. Por exemplo, o protocolo de chat XMPP usa registros SRV para localizar servidores para um domínio, que pode ser múltiplo com diferentes prioridades:

chat1.<domain>.         A       10.0.0.4
chat2.<domain>.         A       10.0.0.7

                                ; priority, weight, port, hostname
_xmpp._tcp.<domain>.    SRV      0 0 5222 chat1.<domain>.
_xmpp._tcp.<domain>.    SRV     10 0 5222 chat1.<domain>.

Isso é mais complexo para os aplicativos, pois agora eles precisam de alguma lógica para classificar os registros retornados por prioridade SRV e depois por peso, mas pode oferecer algumas vantagens, como a capacidade de adicionar servidores de "backup" mais lentos.


Se por algum motivo isso não for aceitável, você pode tentar um dos sistemas baseados em multicast existentes.protocolos de descoberta de serviço. (Alguns deles combinam resolução de nomes e descoberta de serviço em um só; outros os mantêm separados.)

  • Apple e várias distribuições Linux usam Bonjour/Avahi, também conhecido comomDNS("DNS Multicast") combinado comDNS-SDpara descoberta de serviços gerais e resolução de nomes locais;

  • A Microsoft prefere o baseado em UPnPSSDP, exceto quando preferirWS-Descobertaem vez de. Ele usou NetBIOS no passado. Todos estão documentados emProvedores de funções.

  • (Alguns programas decidem apenas transmitir datagramas UDP dizendo "Estou aqui!" em seu próprio formato personalizado. Isso não funciona bem.)

Geralmente existem APIs fornecidas pelo sistema operacional e bibliotecas de terceiros para procurar serviços específicos usando o protocolo de descoberta correspondente.

Se você for implementar algo sozinho, cada sistema operacional também fornece funções parajunte-se a um grupo multicaste para receber mensagens que qualquer pessoa enviar para esse grupo.Multicast IPdeve funcionar por padrão dentro de um domínio de transmissão, mas muitas vezes precisa serconfigurado para passar roteadores.

informação relacionada