¿Cómo puede mi servidor anunciar su presencia a todos en la red?

¿Cómo puede mi servidor anunciar su presencia a todos en la red?

La situación es la siguiente. Quiero tener una aplicación ejecutándose en un servidor. Todos los escritorios de la empresa deben conectarse a él. Pero no quiero que la dirección IP del servidor esté codificada en las aplicaciones de escritorio. Más bien quiero que el servidor pueda anunciarse mediante algunos mecanismos de transmisión. Las aplicaciones de escritorio estarían escuchando dicho mensaje y, por lo tanto, conocerían la dirección IP del servidor y luego podrían conectarse a él.

Cómo puedo hacerlo ? ¿Necesito usar multidifusión? ¿Hasta dónde llegan los mensajes de multidifusión? ¿Cómo pueden las aplicaciones de escritorio escuchar datos de multidifusión?

Respuesta1

El método más común para esto es usar ordinario ordinarioDNS. Probablemente su empresa tenga su propio nombre de dominio; posiblemente uno interno; simplemente agregue un subdominio debajo de él, myapp.internal.example.como myapp.corpalgo así, y apunte a la dirección de su servidor.

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

(Después de todo, es unservidor, no es probable que su dirección IP cambie semanalmente. Y cuando cambie, todo lo que necesita actualizar es el subdominio en DNS).

Puedes hacerlo más avanzado y utilizarRegistros SRVen lugar de registros de direcciones A/AAAA directos. Por ejemplo, el protocolo de chat XMPP utiliza registros SRV para localizar servidores para un dominio, que pueden ser múltiples con 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>.

Esto es más complejo para las aplicaciones, ya que ahora necesitan algo de lógica para ordenar los registros devueltos por prioridad SRV y luego por peso, pero podría ofrecer algunas ventajas, como la posibilidad de agregar servidores de "respaldo" más lentos.


Si por alguna razón eso no es aceptable, puede probar uno de los sistemas basados ​​en multidifusión existentes.protocolos de descubrimiento de servicios. (Algunos de ellos combinan la resolución de nombres y el descubrimiento de servicios en uno; otros lo mantienen por separado).

  • Apple y varias distribuciones de Linux utilizan Bonjour/Avahi akamDNS("DNS de multidifusión") combinado conDNS-SDtanto para el descubrimiento de servicios generales como para la resolución de nombres locales;

  • Microsoft prefiere el basado en UPnPSSDP, excepto cuando prefieraDescubrimiento de WSen cambio. Usó NetBIOS en el pasado. Todos están documentados bajoProveedores de funciones.

  • (Algunos programas deciden simplemente transmitir datagramas UDP que dicen "¡Estoy aquí!" en su propio formato personalizado. Esto no funciona bien).

Por lo general, existen API proporcionadas por el sistema operativo y bibliotecas de terceros para buscar servicios específicos utilizando el protocolo de descubrimiento correspondiente.

Si va a implementar algo usted mismo, cada sistema operativo también proporciona funciones paraunirse a un grupo de multidifusióny recibir mensajes que cualquiera envíe a ese grupo.multidifusión IPdebería funcionar de forma predeterminada dentro de un dominio de difusión, pero a menudo es necesarioconfigurado para pasar enrutadores.

información relacionada