Меню сайта
Казаки
Казаки-развитие
Записи игр
Проги для Казаков
Статьи о казаках
Карты для казаков
СS-1.6

Модели Игроков
Модели оружея
Софт для КС
Карты для КС
Боты
Статьи для КС
Скачать КС
WarCraft

Версии Dоta...
Разные карты
Информацыя о WC
Патчи к варкрафт
Программы для Warcraft
Гайды по Доте
Сатьи о Доте
Все о играх

Прохождения игр
Обзор игр
Коды к играм
Статьи о играх
Обои к играм
Категории раздела
Гайды по доте [5]
Статьи о Доте [7]
Гайды по магах [3]
Гайды по танках [0]
Гайды по ловкачах [0]
Мини-чат
Наш опрос
Нравитса ли вам наш сайт?
Всего ответов: 241
Статистика

Онлайн всего: 1
Гостей: 1
Пользователей: 0
Те,кто был на сайте за тек.день
Зарег. на сайте
Всего: 19373
Новых за месяц: 8
Новых за неделю: 3
Новых вчера: 1
Новых сегодня: 0
Из них
Админов 2
Модеров: 1
Журналисты: 1
Своих 7
Простых 19362
Из них
Мальчиков: 19353
Девочек: 20

Файловик

..::1::..frucezauz

..::2::..maxypublic

..::3::..Dwightfup

..::4::..MONSTER

..::5::..sa125sasha

..::6::..programpc

..::7::..maxynewsic

..::8::..games-124

..::9::..Jeff_Hardy

..::10::..Smexpexexence
Лучшие флудильщики

..::1::..Thomasgove(1078)

..::2::..Douglasstah(832)

..::3::..MONSTER(705)

..::4::..Samsov(542)

..::5::..gurubest(285)

..::6::..DEMON(223)

..::7::..games-124(209)

..::8::..TLVadim(168)

..::9::..Jeff_Hardy(154)

..::10::..AppsSa(150)
Главная » Статьи » Статьи о Доте » Статьи о Доте

Почему я не могу хостить?

Почему я не могу хостить?



Для начинающих варкрафтеров может стать сюрпризом такая ситуация: создаёшь хост, а на него никто не может зайти. Ко мне уже несколько раз обращались с этим вопросом. Ходят даже мифы, что «ему дали хост — может, и мне когда-нибудь дадут». Нет, проблема в другом. А в чём — это я и хочу поведать вам.

Теория

Под хайдом большой и интересный текст. Кто не любит читать, вкратце:
1. Игроки подключаются к хосту, а не к Battle.net.
2. Поэтому хост должен иметь или реальный IP, или открытый порт на NAT'е.
3. А если есть брандмауэр — war3.exe или соответствующий порт должен быть открыт.

Кто такой хост?

Представим себе: несколько компьютеров ведут многопользовательскую игру. Попробуем ответить на два вопроса:
1) Что знает каждый из компьютеров о том, что творится в игровом мире? В частности: хранится ли на нашем компьютере положение невидимых юнитов? Вражеских героев?
и 2) Что компьютеры передают друг другу по сети?

В гонках, например, компьютеры могут просто передавать друг другу положение машин. В стратегии реального времени такого уже не сделаешь: юнитов на карте на несколько порядков больше, чем машин в гонке. Но ведь передают что-то и как-то?

А в стратегиях используют фундаментальное свойство цифровой ЭВМ: когда одной и той же программе «скармливают» одни и те же данные, получается один и тот же результат. Вуаля! 1) На каждом из компьютеров хранится весь игровой мир — всё, включая невидимок, противников в «тумане войны» и т.д. 2) Передаются команды управления наподобие «Пометить группу», «Двигаться» или «Использовать еул». Каждый из компьютеров, получив эту команду, выполняет её — и результаты будут идентичными.

Не так всё просто. Есть много вещей, которые могут привести к рассинхронизации. На разных моделях процессоров матсопроцессор может выдавать числа, чуть-чуть различающиеся в последнем знаке. Есть прерывания, которые проскакивают в неконтролируемые моменты. А есть просто баги. Так что написание «повторяемого» движка — дело непростое. Но принцип поняли...

Кстати, на этой же «повторяемости» основана запись реплеев.

В такой модели выделенному серверу просто нет места. Передавать короткие сообщения с машины на машину, служить посредником? Это вполне может взять на себя один из игроков. Так что вот вам ещё одна чеканная фраза: игроки налаживают соединение с хостом, а не с Battle.net.

А что же делает Battle.net? А он служит исключительно рекламой. Он объявляет игрокам хосты. И больше ничего. Варкрафтеры со стажем не раз встречали сообщение: «Через 20 минут сервер будет перезапущен». Сервер давно перезапустили, а игра идёт как ни в чём не бывало. Как раз по этой причине.

Сколько раз я уже слышал от людей с пингом под 200: «Я не лаггер»... Причина та же самая. Пинг проверяется от клиентов до хоста, а не от клиентов до сервера. Разумеется, на одном хосту будут лаги, в то время как на другом всё пройдёт гладко.

NAT'ы, брандмауэры и иже с ними

Таким образом, игроки налаживают соединение с хостом (обычно по порту 6112, хотя этот порт можно задать в настройках игры). Что нужно знать, чтобы наладить соединение? IP-адрес и порт.

IP-адрес — это четыре числа от 0 до 255. Например, 101.102.103.104. Всего IP-адресов 256^4 = 4 млрд. То есть, два IP-адреса на трёх жителей Земли. Уже во время конверсии Арпанета в Интернет выяснилось, что долго такая адресация не протянет. Так что сделали обходной путь — NAT (Network Address Translation). Как он действует, покажу на примере.

Без NAT'а всё просто. Маршрутизаторы передают TCP-пакет по эстафете без всяких изменений.

А как же с NAT'ом? Начнём с того, что адреса вида 10.x.x.x и 192.168.x.x считаются внутрисетевыми, и пакеты, предназначенные им, маршрутизаторы не пропускают. А как же мы с такими адресами ухитряемся качать порнуху? А вот так.

Мы — компьютер 10.0.0.5. Мы передаём пакет на шлюз, имеющий внутрисетевой IP 10.0.0.1 и внешний IP 25.26.27.28. А теперь самое интересное: маршрутизатор корректирует адрес отправителя, и в интернет идёт пакет с реквизитами «25.26.27.28 -> 31.32.33.34». Сервер возвращает ответ маршрутизатору (25.26.27.28). Тот вспоминает, что этот ответ предназначается 10.0.0.5, и ретранслирует его в сеть (попутно заменив 25.26.27.28 на 10.0.0.5)

А теперь вопрос: как связаться с 10.0.0.5 извне? Так, чтобы не наш 10.0.0.5 наладил соединение, а 31.32.33.34? Пакет с получателем 10.0.0.5 не дойдёт, его никакой маршрутизатор не пропустит. А если писать на 25.26.27.28, пакет дойдёт до маршрутизатора, но в таблице открытых соединений ничего по этому поводу нет — а значит, пакет снова не дойдёт!

Чтобы разрешить эту проблему, в NAT'е есть ещё одна таблица — так называемая таблица перенаправления портов. Но, к сожалению, её приходится заполнять вручную (на админском языке это называется «пробросить порт»). А если доступа к ней нет (например, NAT провайдерский) — только облизываться.

Получается, что находящиеся в локальной сети компьютеры для внешнего мира «не существуют», от их имени действует NAT-шлюз. Мы можем ходить на веб-сервер 25.26.27.28:80, а можем — играть в Dot'у с 25.26.27.28:6112, даже не подозревая, что это разные машины. NAT используется повсеместно: когда за ним квартира, когда компьютерный клуб, когда целая страна. Да, бывает и такое: в некоторых мусульманских странах один IP-адрес на всех. И нам, украинцам, в этом плане ещё везёт.

Межсетевой экран, или брандмауэр — аппаратно-программный комплекс, не пропускающий «вредного» трафика. Если брандмауэр есть, в нём надо сделать дырочку: указать, что Warcraft — программа полезная и её резать не надо.

NAT-маршрутизатор сам по себе выполняет часть функций брандмауэра, пропуская входящие соединения только по разрешённым портам. Впрочем, настоящие брандмауэры блокируют и другие виды атак — вредоносный исходящий трафик, сканирование портов или DoS.

Что делать?

Проще говоря, нужно выполнить три шага.

1) Убедиться, что нет NAT'а, неподконтрольного нам (у провайдера, на фирме, в клубе...).
2) Если есть подконтрольный нам NAT, открыть соответствующий порт.
3) Сделать «дырочку» в локальном брандмауэре.

Как проверить наличие NAT'а

Технически подкованные должны знать, имеют они внешний IP или внутренний через NAT. В частности, это можно найти на сайте провайдера. Но в том-то и дело, что я пишу для новичков.

На компьютере даём команду «Пуск-Выполнить». Введите cmd. В открывшемся окне введите ipconfig /all.

Пользователи Windows 9x вместо cmd набирают command.

Если IP-адрес внутрисетевой (192.168.x.x или 10.x.x.x), NAT есть.

Если же NAT есть и у вас в квартире маршрутизатор — может, NAT на маршрутизаторе?

В кабельные и DSL-модемы часто встраивают маршрутизатор. Поэтому если у вас модем и вы подключены к интернету постоянно (никакое соединение запускать не надо) — у вас роутер (и, скорее всего, на нём NAT). За модемом несколько машин на свитче — та же самая история.

Заходим браузером на IP-адрес маршрутизатора. Например:

Введя логин и пароль, находим пункт меню Connection Status, Device Status или подобный. Там можно найти текущий IP-адрес. Если адрес внутрисетевой (192.168.x.x или 10.x.x.x), NAT есть. Если нет — значит, NAT на маршрутизаторе и всё нормально.

Если судить по картинкам, у меня внутрисетевой адрес на компьютере и обычный — на маршрутизаторе. То есть, у меня именно этот вариант — NAT на личном маршрутизаторе.

Как избавиться от неподконтрольного NAT'а

Если выяснилось, что NAT у провайдера, следует купить реальный (внешний) IP-адрес (статический или динамический — не важно). Эта услуга есть почти у всех Ethernet- и DSL-провайдеров за небольшую плату. Несколько провайдеров наобум:

IPNet: реальный статический IP 5 грн. за подключение + 5 грн/месяц.
Аванет: реальный статический IP 5 грн/мес.
Воля: реальный динамический IP изначально.
Киевнет: реальный статический изначально.
Ланет: на тарифах 110 грн. и выше реальный статический IP изначально, на более дешёвых 15 грн/мес.
Укртелеком/ОГО: реальный динамический IP изначально.
(данные на июль 2008 г.)

А если NAT в клубе, на работе, дома и т.д. — попробуйте сделать его подконтрольным! Договоритесь с админом, чтобы он открыл вам порт. И не злите его, чтобы не закрыл. Smiling

Как открыть порт на NAT-маршрутизаторе

Много текста, а нужно не всем. Поэтому эту часть гайда прикрою.

Предполагается, что у нас не менее двух компьютеров и простой домашний роутер, настроенный и работающий. Для примера возьмём стоящий у меня под столом Edimax BR-6104KP. На других моделях пункты меню будут другие.

Большинство домашних роутеров способно открывать порты только по IP-адресу. Так что первое, что вам придётся сделать — это отключить динамическую раздачу IP-адресов (DHCP — Dynamic Host Configuration Protocol).

Было бы отлично, если бы на устройствах такого класса был статический DHCP. Но его нет — что ж, не судьба...

Вводим на компьютере Пуск-Выполнить-cmd, затем ipconfig /all. Этим мы узнаём, есть ли DHCP.

Если его нет, это хорошо. Если есть — выключим.

Отключение DHCP

Снова заходим в настройки маршрутизатора и находим настройку DHCP — она должна быть в пункте «LAN» или «DHCP». В моём маршрутизаторе всё это находится в пункте «General setup / LAN». Делаем, чтобы роутер мог раздавать не все возможные сетевые адреса (в данном случае «все» — это 192.168.2.2—192.168.2.255; цифры могут меняться в зависимости от модели маршрутизатора и ваших настроек), а некоторую их часть. Например, от 100 до 200.

А на компьютере выставляем IP-адрес за пределами этого диапазона (и, конечно же, не совпадающий с IP-адресом маршрутизатора). «Пуск — Панель управления — Сетевые подключения — Подключение по локальной сети — (правая кнопка) — Свойства — Протокол интернета (TCP/IP) — Свойства». Откуда брать остальные поля (маска подсети, шлюз, DNS) — думаю, понятно.

Внимание! Провайдеры любят менять адреса DNS-серверов без предупреждения, а большинство роутеров способны ретранслировать провайдерские DNS-сервера по DHCP. Так что появляется побочный эффект: если провайдер сменит DNS, у вас интернет пропадает, а у напарников, у которых DHCP не отключили — нет. В такой ситуации вам придётся вводить новые адреса DNS-серверов.

Как открыть порт

Теперь в настройках маршрутизатора находим пункт NAT/Virtual Servers или NAT/Port Forwarding. Открываем порт 6112 на протоколы TCP и UDP. Например, так...

На некоторых роутерах можно увидеть два пункта: Local Port и Network Port. В обоих полях ставится 6112.

Этот же порт прописываем в Warcraft. Из главного меню вызываем «Настройки — Игра».

Если нас много?

Если за роутером целая компания дотеров, придётся настроить каждого из них.

Всем компьютерам устанавливаются фиксированные IP-адреса. Первому открывается порт 6112, второму — 6113, и т.д.

Соответствующие порты прописываются и в Warcraft'е.

И наконец...

По открытию портов на маршрутизаторах есть отличный сайт: http://portforward.com. Заходите, скорее всего, вы найдёте там гайд именно по вашей модели роутера (правда, по-английски).


Настройка локального брандмауэра

Если NAT'а нет, крайне опасно заходить в интернет без брандмауэра (ну или соответствующей настройки служб Windows — настройка по умолчанию рассчитана на локальную сеть, когда «все друг другу доверяют»). Поэтому стоит прикрыться, а для Warcraft'а сделать «люк».

Пуск — Панель управления — Брандмауэр Windows — Исключения. Нажимаем «Добавить программу» и находим war3.exe. Получается примерно так...

Именно war3.exe — а не «Warcraft III.exe», «Frozen Throne.exe» или запускалка пиратского Battle.net.

Вот и всё. Муторная, но важная работа проделана. Наслаждайтесь!

UPD 22 января 2009. Оказывается, для многих роутеров опенсорсниками написаны альтернативные прошивки, на которых статический DHCP всё же есть. Если вы счастливый обладатель такого устройства, вместо отключения DHCP можно просто прописать ваш MAC-адрес («физический адрес» в терминах ipconfig) в таблицу статического DHCP.

Категория: Статьи о Доте | Добавил: MONSTER (03.03.2010)
Просмотров: 891 | Теги: Garena, Статьи, как, гарену, самые, играть через, гарена, читать, Скачать, бесплатно | Рейтинг: 0.0/0 |
Всего комментариев: 0
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]
Мини-профиль
Гость

Сообщения:

Группа:
Гости
Время:03:29

Добро пожаловать на наш портал.Зарегистрируйтесь или авторизуйтесь!
Логин:
Пароль:
Друзья сайта
Каталог бесплатных игр Новые версии бесплатных программ
Нас считают
Rambler's Top100 Информер ПР Русская сеть - поисковый русскоязычный каталог с прямыми ссылками Game's TOP-100 Counter НикНок Товары и услуги - каталог сайтов

  • Уроки самообороны
  • Все материалы размещенные на сайте пренадлежат их владельцам и предоставляются исключительно в ознакомительных целях. Администрация ответственности за содержание материала не несет и убытки не возмещает. © 2024