Главная страница

Меню сайта

Поиск

Мини-чат

200

Наш опрос

Оцените мой сайт

Статистика

[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
Решение проблем совместимости игрока и сервера
LUCIFERДата: Среда, 11.05.2011, 16:47 | Сообщение # 1
Майор
Группа: Администраторы
Сообщений: 101
Репутация: 1
Статус: Offline
Эта статья о том, как зайти к игрокам, к которым зайти раньше не получалось.
Для начала немного теории.
Каждый из нас выходит в интернет по разному. Кто то через модем, кто то через кабель, кто то через телефон. Способов выхода много, но глобальная сеть - одна.

IPv4 Пространство- четыре числа от 0 до 255, называемыемые IP адресами. Знакомые с комбинаторикой могут с уверенностью сказать что таким образом можно адресовать около 4 миллиардов узлов. IP адреса в глобальной сети называются "глобальными" (син. "внешние", "белые"). Каждый адрес - это узел, иными словами - компьютер, маршрутизатор или любое другое сетевое устройство (но чаще всего компьютер). Так же IP бывают локальными, для которых отведены специальные диапазоны, такие как 10.100.X.X, 192.168.X.X, 172.16.X.X и другие. Они служат для адресации внутри локальной сети. Для установления соединения между двумя компьютерами в глобальной сети необходимо, чтобы хотя бы один из них имел глобальный IP.

Шлюзы:Для связи двух и более сетей между собой используется шлюз. Шлюз это тоже сетевое устройство (напр. компьютер) который входит в состав обоих сетей.

Порты
Каждое сетевое устройство или компьютер имеет порты - специальные числа, необходимые для установление связи и простоты работы с сетью. У каждого есть номер (0-65535) и тип протокола (TCP, UDP, SMTP). Для простоты понимания попробуйте представить вокзал и большое количество платформ. Так вот вокзал - это компьтер или сетевое устройство, платформы - это порты, поезда - это пакеты данных. Компьютер обрабатывает приходящие данные, так же как и диспетчер на вокзале. Если пришел поезд TCP на платформу #80, и платформа эта пустая - то высадить пассажиров и отправить на этом поезде новых пассажиров в тот же город (вокзал). Номера некоторых портов используются самой системой, например 20, 21, 25, 80 и т.д. Остальные порты обычно закрыты файрволом - специальной программой защищающей ваш компьютер от доступа извне.

Протоколы:Любые данные, приходящие и исходящие можно интерпретировать по разному. Правило оформления данных в сети называется протоколом. Например читая форум, мы чаще всего, связываемся с сайтом по протоколу HTTP (для него назначен порт 80), по которому нам приходят специально отформатированные страницы и другие данные, которые оформлены так, как принято для протокола HTTP. Попытка связатся с сайтом, пусть даже с тем же портом, но по другому протоколу - это как попытка диалога между русским и зулусом. Никто никого не поймет.

DNS
Связь с компьютером на низжем уровне всегда выполняется по IP адресу. Для удобства пользователя для узлов были введены имена и специальная служба DNS, которая по имени узла дает его IP адрес. Браузер так же использует DNS, если мы не вводим IP адрес явным образом. По сути на момент пока я это пишу, нет разницы между http://google.ru или http://74.125.77.104. Жить без DNS можно, но очень тяжело. Если IP гугла поменяется, нам без сторонней помощи найти его будет крайне тяжело.

Провайдеры
Пространство глобальных IP распределено между провайдерами - т.е. теми, кто нам предоставляет услуги выхода в сеть. У каждого провайдера есть свой диапазон IP адресов и в силу развития интернета этих адресов на всех пользователей не хватает. Глобальные IP провайдера могут быть как статическими (у вас всегда один и тот же адрес), так и динамическими (адрес меняется в пределах диапазона провайдера). Бывает так, что провайдер либо дает каждому свой внешний IP из своего диапазона, либо в целях экономии IP адресов и денежных средств - подключает пользователей "домами", когда на один дом приходится по одному IP. Рассмотрим 2 типовых случая подключения к интернет:

1) Кабельное (LAN) соединение, используя сетевую карту и кабель. Популярный способ подключения "домами" в больших городах. При таком подключении вы находитесь в составе одной локальной сети, в которой также находятся соседи по этажу, дому или кварталу. Один глобальный IP выдается нескольким пользователям и соединится с таким компьютером извне нельзя. Почему? все очень просто - поскольку глобальный IP один на несколько компьютеров в вашей сети, то наш запрос дойдет до маршрутизатора (который обычно спрятан где нибудь в подвале или на чердаке и является шлюзом с внешним IP), но куда и на какой компьютер из 10 (а то сотни) идти от маршрутизатора дальше - не известно. Конечно можно подключится к маршрутизатору и указать ему в этом случае куда идти дальше - но провайдеры защищают маршрутизаторы, чтобы другим было не обидно ))

2) xDSL- подключение через телефонную линию, используя xDSL модем через USB или Сетевую карту. В этом случае вам всегда выдают глобальный IP из диапазона провайдера. Подключение может выполнять как и сам модем через PPPoE, так и компьютер используя обычный дозвон PPP с вводом имени пользователя и пароля. Это подключение позволяет видеть ваш компьютер в глобальной сети, если правильно его настроить (или настроить модем - смотря кто получает IP)

Теперь здесь прошу внимания.В игре Flatout 2 данные передаются между компьютерами напрямую, а GameSpy служит лишь для поддержания списков хостов и их глобальных IP адресов. Причем GameSpy проверяет, может ли он соединится с этим внешним IP хоста по порту UDP 23756. Если не может (чаще всего так и бывает), то самым первым игроком, который подключится к этому хосту может быть только игрок с внешним IP и тогда GameSpy присваивает этому хосту внешний IP этого подключившегося игрока и можно сказать теперь этот хост будет жить.

Если оба игрока имеют тип подключения (1) то связь и передача данных между ними невозможна в принципе, т.к. ни один из них не имеет внешнего IP и независимо от стороны запроса, данные до конечного компьютера не дойдут. Эта главная и основная причина невозможности зайти к какому нибудь хосту. Вы сможете зайти только тогда, когда к этому хосту с типом подключения (1) зайдет другой игрок с типом подключения например (2) и тогда связь между вами будет выполнятся через него. Вот пример:

Игроки А и B имеют тип соединения (1), игрок С имеет тип (2).
Игрок А создает хост, а игрок В к нему не может зайти. Но вдруг к игроку А присоединяется игрок С, потом входит игрок В. Все нормально играют и гонят весь траффик через игрока С.
Потом игрок С уходит, связь между А и В разорвана. Игрок В попадает в список хостов и видит там игрока С, который ушел (теперь догадайтесь, почему?) грок А остается хостом и пишет в чате сам себе "Долбаный гейспай, опять вылетели"

Я раньше очень часто не могла войти ко многим, но однажды мне это надоело и я решила настроить модем (именно он у меня имеет глобальный IP) на передачу данных с его порта UDP 23756 на порт моего компьютера. Таким образом модем стал мостом, но только на порте 23756 и все данные с глобальной сети по этому порту приходят не модему, а компьютеру, и, следовательно игре. Теперь как обладататель внешнего активного IP, вхожу к тем, к кому войти не могла. И вылеты случаются гораздо реже, если не соврать, то раз в 10 точно.

Для тех, кто хочет настроить самостоятельно, то вам нужно пробросить UDP порт 23756 для того, чтобы успешно принимать входящие подключения.

В этой теме я предлагаю помочь остальным людям с настройкой их сетевого оборудования так, чтобы играть во флет можно было комфортно и с большим числом людей. Пишите сюда ваш тип подключения, настройки сетевого оборудования и их модель - я попытаюсь помочь настроить Port Forwarding на вашем модеме или другом сетевом устройстве.

Инмормация с сайта flat-out2

 
  • Страница 1 из 1
  • 1
Поиск: