Come fanno i client di gioco a sapere che un server è in esecuzione sulla propria LAN?


18

In molti giochi multiplayer c'è l'opzione per il gioco LAN. La mia domanda è: come fa un client a sapere dove si trova un server sulla LAN?

Gli unici modi a cui riesco a pensare

  1. Invia trasmissioni tramite l'indirizzo di trasmissione. Questo ha lo svantaggio di essere filtrato a volte da router o switch in diversi ambienti di rete.
  2. Tentare di connettersi a un server su ogni IP nella sottorete. Questo ha lo svantaggio di essere lento (specialmente se la rete utilizza 10.XXX.XXX.XXX per i loro IP) e un attacco mini ddos, ma non verrà filtrato.

Come fanno i giochi a farlo specialmente in altri ambienti di rete?

Risposte:


32

Per i giochi con LAN play, la cosa standard da fare è che i client inviino pacchetti di trasmissione per scoprire i server. (Il client invia una trasmissione, il server invia una risposta diretta al client)

In generale, il client invierà da qualche parte tra tre e cinque messaggi di trasmissione, ciascuno a circa un secondo di distanza, e deciderà quindi che non deve esserci un server se non ha sentito alcuna risposta entro quel tempo. L'invio di più pacchetti rende l'individuazione del servizio un po 'più tollerante alla perdita di pacchetti (anche se ciò è abbastanza raro sulle LAN), e il tempo che intercorre tra loro impedisce loro di interrompere troppo il traffico di rete.

Nessuno (per quanto ne sappia) fa la tua opzione n. 2, perché peggiorerà le prestazioni della LAN (o impiegherà un po 'di tempo, se si scaglionano i tentativi di connessione).

Ma per far fronte ai casi in cui le trasmissioni sono filtrate dalla LAN locale (cosa piuttosto insolita, ma non inaudita), la maggior parte dei giochi consentirà ai giocatori di inserire direttamente un indirizzo IP a cui connettersi. Ciò consente ai giocatori in questo tipo di situazioni di connettersi a un server noto, anche se non possono trasmettere per trovarlo automaticamente.

Per i giochi su Internet, i client invieranno una richiesta diretta a un meta server statico , che risponde con gli indirizzi per le istanze del server correnti conosciute. I server, allo stesso modo, contattano quel meta server per informarli della propria posizione in modo che i client possano essere indirizzati a loro. A causa delle complessità di NAT, tuttavia, questo approccio di solito non funziona per i server ospitati all'interno di una LAN. Questo è il motivo per cui questo tipo di approccio non viene in genere utilizzato per i giochi LAN.

Nota a margine: è prassi comune per i giochi su Internet contattare prima un server di punti . Il server dei punti indica al gioco su quale indirizzo può trovare il meta server, che gli dirà dove si possono trovare i server. I server di punti sono spesso (anche se certamente non sempre) implementati come un semplice server Web e sono l'unico pezzo di questo sistema con un indirizzo inserito nel gioco. Ciò consente agli sviluppatori di giochi di spostare il loro meta server da una macchina all'altra secondo necessità, semplicemente aggiornando l'indirizzo restituito dal punto server. Può anche essere utilizzato per implementare una semplice forma di bilanciamento del carico o cambio di regione facendo in modo che il server di punti invii gli utenti a diversi meta server in base al carico del server o alla vicinanza geografica.


2
+1 a lei signore, ho risposto anche ad alcune mie domande.
Raine,

2
+1, Broadcast è la strada da percorrere poiché in realtà È il modo corretto di fare # 2, hehe .. Ecco a cosa serve la trasmissione, contattando più IP per vedere se qualcosa è in ascolto.
James

Sì, l'unico problema con la trasmissione è che alcune LAN (grandi aziende, in particolare) non propagano la trasmissione tra tutti i segmenti LAN. In futuro, il multicast sarà presumibilmente il nuovo modo per farlo e dovrebbe funzionare automaticamente su tutti i segmenti LAN. Ma in questo momento, il corretto supporto del router per il multicast è ancora troppo discutibile per fare affidamento come sostituto della trasmissione. Dagli ancora qualche anno e le cose potrebbero finalmente migliorare.
Trevor Powell,

Le poche volte in cui mi sono imbattuto in reti aziendali che non supportano le trasmissioni, ho riscontrato ogni sorta di altri problemi di routing che di solito sono causati da apparecchiature difettose (a volte risolte aggiornando il firmware del router). Se la trasmissione non funziona in un segmento LAN locale, è improbabile che sia intenzionale.
Randolf Richardson,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.