¿Cómo saben los clientes del juego que un servidor se está ejecutando en su LAN?

18

En muchos juegos multijugador existe la opción de jugar en LAN. Sin embargo, mi pregunta es ¿cómo sabe un cliente dónde está un servidor en la LAN?

Las únicas formas en que puedo pensar

  1. Enviar transmisiones a través de la dirección de transmisión. Esto tiene la desventaja de ser filtrado a veces por enrutadores o conmutadores en diferentes entornos de red.
  2. Intente conectarse a un servidor en cada IP de su subred. Esto tiene la desventaja de ser lento (especialmente si la red usa 10.XXX.XXX.XXX para sus IP) y un mini ataque ddos, pero no se filtrará.

¿Cómo hacen los juegos esto especialmente en otros entornos de red?

TheLQ
fuente

Respuestas:

32

Para los juegos con juego LAN, lo estándar es que los clientes envíen paquetes de difusión para descubrir servidores. (El cliente envía una transmisión, el servidor envía una respuesta directa al cliente)

En general, el cliente enviará entre tres y cinco mensajes de difusión, cada uno con una separación de aproximadamente un segundo, y luego decidirá que no debe haber servidor si no ha escuchado ninguna respuesta dentro de ese tiempo. El envío de múltiples paquetes hace que el descubrimiento de servicios sea un poco más tolerante a la pérdida de paquetes (aunque eso es bastante poco común en las LAN), y tener tiempo entre ellos evita que interrumpan demasiado el tráfico de otra red.

Nadie (que yo sepa) hace su opción # 2, porque degradará el rendimiento de la LAN (o tomará bastante tiempo, si escalona los intentos de conexión).

Pero para hacer frente a los casos en los que la LAN local filtra la transmisión (lo cual es bastante inusual, pero no desconocido), la mayoría de los juegos permitirán a los jugadores ingresar directamente una dirección IP para conectarse. Esto permite a los jugadores en este tipo de situaciones conectarse a un servidor conocido, incluso si no pueden transmitir para encontrarlo automáticamente.

Para los juegos a través de Internet, los clientes enviarán una solicitud directa a un meta servidor estático , que responde con las direcciones de las instancias del servidor actual conocidas. Los servidores, igualmente, contactan a ese meta servidor para informarles de su propia ubicación para que los clientes puedan ser dirigidos a ellos. Sin embargo, debido a las complejidades de NAT, este enfoque generalmente no funciona para servidores alojados dentro de una LAN. Esta es la razón por la cual este tipo de enfoque no se usa típicamente para juegos LAN.

Nota adicional: es una práctica común que los juegos de Internet se pongan en contacto primero con un servidor de puntos . El servidor de puntos le dice al juego en qué dirección puede encontrar el meta servidor, que le dirá dónde se pueden encontrar los servidores. Los servidores de puntos a menudo (aunque ciertamente no siempre) se implementan como un servidor web simple, y son la única pieza de este sistema con una dirección que está codificada en el juego. Esto permite a los desarrolladores de juegos mover su meta servidor de una máquina a otra según sea necesario, simplemente actualizando la dirección devuelta por el servidor de puntos. También se puede usar para implementar una forma simple de equilibrio de carga o cambio de región haciendo que el servidor de puntos envíe a los usuarios a diferentes meta servidores en función de la carga del servidor o la proximidad geográfica.

Trevor Powell
fuente
2
+1 a usted, señor, esto respondió algunas preguntas que tuve también.
Raine
2
+1, Broadcast es el camino a seguir, ya que en realidad ES la forma correcta de hacer el n. ° 2, jeje ... Para eso es la transmisión, contactar múltiples IP para ver si algo está escuchando.
James
Sí, el único problema con la transmisión es ciertas LAN (corporativas grandes, en particular) que no propagan la transmisión entre todos los segmentos de LAN. En el futuro, la multidifusión probablemente será la nueva forma de hacer esto, y debería funcionar automáticamente en todos los segmentos LAN. Pero en este momento, el soporte de enrutador adecuado para la multidifusión sigue siendo demasiado irregular como para reemplazar la transmisión. Déle otros años y las cosas finalmente pueden mejorar.
Trevor Powell
Las pocas veces que me he encontrado con redes corporativas que no admiten transmisión, he encontrado todo tipo de otros problemas de enrutamiento que generalmente son causados ​​por equipos defectuosos (a veces solucionados al actualizar el firmware del enrutador). Si la transmisión no funciona en un segmento LAN local, es poco probable que sea intencional.
Randolf Richardson