Skąd klienci gier wiedzą, że serwer działa w ich sieci LAN?

18

W wielu grach wieloosobowych istnieje opcja gry w sieci LAN. Moje pytanie brzmi jednak: skąd klient wie, gdzie jest serwer w sieci LAN?

Jedyne sposoby, o których mogę myśleć

  1. Wysyłaj transmisje za pośrednictwem adresu transmisji. Ma to tę wadę, że czasami jest filtrowane przez routery lub przełączniki w różnych środowiskach sieciowych.
  2. Spróbuj połączyć się z serwerem przy każdym adresie IP w podsieci. Ma to tę wadę, że jest powolny (szczególnie jeśli sieć używa 10.XXX.XXX.XXX dla swoich adresów IP) i atak mini ddos, ale nie będzie filtrowany.

Jak robią to gry, szczególnie w innych środowiskach sieciowych?

TheLQ
źródło

Odpowiedzi:

32

W przypadku gier z obsługą sieci LAN standardową czynnością jest wysyłanie przez klientów pakietów rozgłoszeniowych w celu wykrycia serwerów. (Klient wysyła transmisję, serwer wysyła bezpośrednią odpowiedź do klienta)

Ogólnie rzecz biorąc, klient wyśle ​​gdzieś od trzech do pięciu wiadomości rozgłoszeniowych, każda w odstępie około jednej sekundy, a następnie zdecyduje, że nie może być serwera, jeśli w tym czasie nie usłyszy żadnej odpowiedzi. Wysyłanie wielu pakietów sprawia, że ​​wykrywanie usług jest nieco bardziej odporne na utratę pakietów (choć jest to dość rzadkie w sieciach LAN), a czas między nimi uniemożliwia im nadmierne zakłócanie ruchu sieciowego.

O ile mi wiadomo, nikt nie robi twojej opcji nr 2, ponieważ obniży to wydajność sieci LAN (lub zajmie to sporo czasu, jeśli rozłożysz próby połączenia).

Ale aby poradzić sobie z przypadkami, w których transmisja jest filtrowana przez lokalną sieć LAN (co jest dość niezwykłe, ale nie niespotykane), większość gier pozwoli graczom na bezpośrednie wprowadzenie adresu IP w celu połączenia. Dzięki temu gracze w takich sytuacjach mogą połączyć się ze znanym serwerem, nawet jeśli nie mogą nadawać, aby go automatycznie znaleźć.

W przypadku gier przez Internet klienci będą wysyłać bezpośrednie żądanie do statycznego meta serwera , który odpowiada adresami znanych znanych instancji serwera. Podobnie serwery kontaktują się z tym serwerem meta, aby poinformować ich o swojej lokalizacji, aby klienci mogli zostać do nich skierowani. Jednak ze względu na złożoność translacji NAT takie podejście zwykle nie działa w przypadku serwerów hostowanych w sieci LAN. Dlatego tego rodzaju podejście zwykle nie jest stosowane w grach LAN.

Dodatkowa uwaga: w grach internetowych powszechną praktyką jest najpierw kontakt z serwerem punktów . Serwer punktów informuje grę, pod jakim adresem może znaleźć serwer meta, który poinformuje go, gdzie można znaleźć serwery. Serwery punktowe są często (choć na pewno nie zawsze) implementowane jako prosty serwer sieciowy i są jedynym elementem tego systemu z adresem, który jest zakodowany na stałe w grze. Pozwala to twórcom gier na przenoszenie meta serwera z jednego komputera na inny, zgodnie z potrzebami, po prostu aktualizując adres zwrócony przez serwer punktów. Może być również wykorzystany do implementacji prostej formy równoważenia obciążenia lub przełączania regionu, ponieważ serwer punktów wysyła użytkowników do różnych meta serwerów w zależności od obciążenia serwera lub odległości geograficznej.

Trevor Powell
źródło
2
+1 do pana, to odpowiada również na kilka pytań, które miałem.
Raine,
2
+1, rozgłaszanie jest właściwą drogą, ponieważ w rzeczywistości jest to właściwy sposób # 2, hehe .. Po to jest nadawanie, łączenie się z wieloma adresami IP w celu sprawdzenia, czy coś nasłuchuje.
James
Tak, jedynym problemem z transmisją są pewne sieci LAN (w szczególności duże korporacje), które nie propagują transmisji między wszystkimi segmentami LAN. W przyszłości multiemisja będzie prawdopodobnie nowym sposobem na to i powinna automatycznie działać we wszystkich segmentach sieci LAN. Ale teraz właściwa obsługa routerów dla multiemisji jest wciąż zbyt nierówna, aby polegać na niej jako zamienniku dla transmisji. Daj mi kolejne kilka lat, a rzeczy mogą się w końcu poprawić.
Trevor Powell,
Kilka razy, gdy natknąłem się na sieci korporacyjne, które nie obsługują rozgłaszania, znalazłem wiele innych problemów z routingiem, które zwykle są powodowane przez wadliwy sprzęt (czasem naprawiony przez aktualizację oprogramowania routera). Jeśli transmisja nie działa w lokalnym segmencie LAN, jest mało prawdopodobne, aby była zamierzona.
Randolf Richardson,