Як клієнти гри знають, що сервер працює у їхній локальній мережі?


18

У багатьох мультиплеєрних іграх є можливість гри в локальну мережу. Моє питання, однак, як клієнт знає, де знаходиться сервер у локальній мережі?

Єдині способи я можу придумати

  1. Надсилайте трансляції за адресою мовлення. Це має недолік, коли іноді фільтруються маршрутизаторами або комутаторами в різних мережевих середовищах.
  2. Спроба підключитися до сервера на кожному IP вашої підмережі. Це має недолік у тому, що він є повільним (особливо якщо мережа використовує 10.XXX.XXX.XXX для своїх IP-адрес) та міні-атакою ddos, але її не фільтрують.

Як ігри роблять це особливо в інших мережевих середовищах?

Відповіді:


32

Для ігор з локальною мережею стандартне, що потрібно клієнтам надсилати широкомовні пакети для виявлення серверів. (Клієнт надсилає трансляцію; сервер надсилає клієнту пряму відповідь)

Загалом, клієнт надсилатиме десь між трьома і п’ятьма широкомовними повідомленнями, кожне приблизно на секунду, а потім вирішить, що не повинно бути сервера, якщо він не почув жодної відповіді протягом цього часу. Надсилання декількох пакетів робить відкриття сервісу трохи більш стійким до втрат пакетів (хоча це досить рідко в локальних мережах), а час між ними не дозволяє занадто сильно порушити інший мережевий трафік.

Ніхто (наскільки мені відомо) не виконує ваш варіант №2, оскільки це погіршить продуктивність локальної мережі (або займе досить багато часу, якщо ви будете хитати спроби з'єднання).

Але, щоб впоратися з випадками, коли трансляція фільтрується локальною локальною мережею (що досить незвично, але не є нечуваним), більшість ігор дозволить гравцям безпосередньо ввести IP-адресу для підключення. Це дозволяє гравцям у таких ситуаціях підключатися до відомого сервера, навіть він не може транслювати, щоб автоматично його знайти.

Для ігор через Інтернет клієнти надсилають прямий запит на статичний мета-сервер , який відповідає з адресами відомих поточних екземплярів сервера. Сервери також звертаються до цього мета-сервера, щоб повідомити їх про своє місцезнаходження, щоб клієнти могли бути спрямовані до них. Через складність NAT, однак, такий підхід зазвичай не працює для серверів, розміщених всередині локальної мережі. Ось чому такий підхід зазвичай не використовується для ігор з локальною мережею.

Додаткова зауваження: в Інтернет-іграх зазвичай спочатку звертатися до точкового сервера . Точковий сервер повідомляє гру, за якою адресою він може знайти метасервер, який підкаже, де можна знайти сервери. Точкові сервери часто (хоча, звичайно, не завжди) реалізуються як простий веб-сервер, і є єдиною частиною цієї системи з адресою, яка жорстко вводиться в гру. Це дозволяє розробникам ігор переміщати свій мета-сервер з однієї машини на іншу, якщо потрібно, просто оновивши адресу, повернуту сервером точок. Він також може бути використаний для реалізації простої форми балансування навантаження або комутації регіону, якщо сервер точок відправляє користувачів на різні мета-сервери на основі завантаження сервера або географічної близькості.


2
+1 вам, сер, це відповіло на кілька питань, які у мене були.
Дощ

2
+1, Трансляція - це спосіб пройти, адже насправді це правильний спосіб зробити №2, хе-хе .. Це саме те, для чого мовлення, зв’язавшись із декількома IP-адресами, щоб побачити, чи щось слухає.
Джеймс

Так, єдиною проблемою з трансляцією є певні (великі корпоративні, зокрема) локальні мережі, які не розповсюджують трансляцію між усіма сегментами локальної мережі. В майбутньому, багатоадресна передача, мабуть, буде новим способом цього, і вона повинна автоматично працювати в усіх сегментах локальної мережі. Але зараз належна підтримка маршрутизатора для багатоадресної передачі все ще занадто плямиста, щоб покластися на неї як заміну для трансляції. Дайте йому ще кілька років, і все може остаточно покращитися.
Тревор Пауелл

Декілька разів, коли я стикався з корпоративними мережами, які не підтримують трансляцію, я виявив всілякі інші проблеми з маршрутизацією, які, як правило, спричиняються несправним обладнанням (іноді виправляється через оновлення мікропрограмного забезпечення маршрутизатора). Якщо трансляція не працює в локальному сегменті локальної мережі, навряд чи це буде навмисно.
Рандольф Річардсон
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.