netlib.narod.ru< Назад | Оглавление | Далее >

Знакомство с сетями

Сеть (network) — это несколько компьютеров, соединенных друг с другом для обмена данными и совместной работы. Помимо нескольких компьютеров для сети требуется сетевое программное обеспечение (или сетевая операционная система), сетевые адаптеры и кабели. Сетевые адаптеры бывают разных размеров и форм, но обычно встречаются адаптеры в виде модема. Верно, ваш модем — это сетевой адаптер, дающий возможность соединяться с миллионами других компьютеров по всему миру в величайшей сети, Интернете.

В данной главе я сосредоточусь на работе с сетью с точки зрения игрового процесса и программирования игр. На первый взгляд работа с сетью может выглядеть пугающе. Множество компьютеров, передающих бесконечные потоки данных, как и что можно сделать, чтобы разобраться во всем этом? Как и со многими другими вещами, следует начать с начала и изучить концепции, лежащие в основе сетей; затем вы разовьете ваши знания, основываясь на реальных (и простых) примерах.

Сетевые модели

Существует две основных сетевых модели: клиент-сервер (client-server) и одноранговая (peer-to-peer). Каждая модель в той или иной форме объединяет компьютеры для совместного пользования информацией. Какую модель использовать зависит от вас, но принимать решения следует основываясь на ваших потребностях, поскольку у каждой модели есть свои сильные и слабые стороны.

Сервер используется при создании централизованной сети. Остальные компьютеры являются клиентами и подключаются к серверу, обмениваясь информацией только с ним.

У клиента нет прямых связей с другими клиентами; он знает только о сервере. Сервере знает обо всех клиентах и маршрутизирует данные между ними как считает нужным. На рис. 5.1. показаны взаимосвязи между компьютерами в модели клиент-сервер.


Рис. 5.1. Клиенты могут подключаться к серверу, но ничего не знают друг о друге

Рис. 5.1. Клиенты могут подключаться к серверу, но ничего не знают друг о друге


 

ПРИМЕЧАНИЕ
Пара из сервера и клиента обычно описывается как общая модель клиент/сервер. Однако, при использовании DirectPlay необходимо разделение на модель сервера и модель клиента, поскольку они представляются двумя отдельными компонентами.

Другая модель сети — одноранговая, в которой компьютеры соединяются друг с другом напрямую. Новая связь устанавливается для каждого нового компьютера, подключающегося к сессии, поэтому каждый компьютер знает обо всех других. Как показано на рис. 5.2, для сети из четырех компьютеров необходимо 12 соединений (помните, что у каждого компьютера есть подключения к каждому из трех других компьютеров).


Рис. 5.2. В одноранговой сети каждый компьютер соединен со всеми другими компьютерами сети

Рис. 5.2. В одноранговой сети каждый компьютер соединен со всеми другими компьютерами сети


 

ПРИМЕЧАНИЕ
Период времени, в течение которого вы подключены к сети, называется сессией (session). С сессией могут быть связаны различные свойства, такие как пароль, максимальное число подключений и т.д. В главе 15, «Реализация многопользовательского режима», вы узнаете как эта информация относится к играм.

 

ПРИМЕЧАНИЕ
Некоторые игры используют одноранговую модель, поскольку позволяют одновременную игру только четырех или восьми игроков. Примером может служить Diabolo (от Blizzard Entertainment), поддерживающая до четырех игроков. С другой стороны, такие игры как Ultima Online (от Origin Systems) или EverQuest (от Sony) поддерживают тысячи игроков, используя модель клиент/сервер.

Какой тип сетевой модели лучше подходит вам, зависит от используемого приложения. Модель клиент/сервер лучше подходит для сетей в которых больше четырех пользователей, а одноранговая модель лучше приспособлена для прямого соединения или небольших домашних сетей.

Главной проблемой при большом количестве компьютеров в сети становится попытка найти других игроков. Хотя вы можете как обычно играть с несколькими друзьями (и, конечно, знать, как найти их), что делать, если в игру хочется пригласить кого-нибудь нового? В большинстве случаев для этих целей сетевые игры используют лобби-серверы.

Лобби

Вы можете думать о лобби-сервере (lobby server), как о зале для встреч игроков. Лобби-сервер позволяет игрокам регистрироваться, общаться и вместе играть в их любимые игры. Как только лобби-сервер соединяет игроков, он выходит из цикла обмена данными (для экономии полосы пропускания сети).

ПРИМЕЧАНИЕ
Полоса пропускания сети (network bandwidth) определяет объем данных, который может пройти через сетевое соединение без затруднений. Широкополосные соединения обрабатывают большие объемы данных и быстрее, чем узкополосные.

Замечательный лобби-сервер расположен на сайте Microsoft Gaming Zone (по адресу http://zone.msn.com). Оп позволяет тысячам игроков общаться друг с другом, а затем соединяет их напрямую, чтобы они играли в свои любимые сетевые игры. Gaming Zone поддерживает множество игр, и если ваша игра окажется популярной, там может появиться и ее поддержка!

Хотя лобби-серверы и полезны для многопользовательских игр, их обсуждение выходит за рамки этой книги. Документация DirectX SDK содержит много информации об использовании лобби-серверов, а в SDK включены несколько примеров приложений с поддержкой лобби-серверов, которые вы можете посмотреть. За дополнительной информацией об этих приложениях обращайтесь к DX SDK (вы найдете его на прилагаемом к книге CD-ROM).

Задержка и запаздывание

Ширина полосы пропускания привносит два новых термина: задержка и запаздывание. Задержка (latency) — это количество времени, необходимое для выполнения операции (чем меньше, тем лучше). Термин запаздывание (lag) используется для описания задержек в сетевых коммуникациях — времени, проходящего с того момента, как данные отправлены, до того момента, когда они будут получены.

Малое запаздывание означает быструю передачу данных. Большое запаздывание (очень неприятная вещь) означает, что сетевые данные задерживаются или вообще не будут доставлены. Запаздывание — это большая проблема, особенно когда работаешь с Интернетом, так что вы будете иметь дело с ним.

Коммуникационные протоколы

Компьютеры в сети могут взаимодействовать между собой различными способами, но чтобы понимать друг друга две системы должны использовать один и тот же протокол. На данный момент наиболее популярным протоколом является TCP/IP (Transfer Control Protocol/Internet Protocol), используемый в Интернете, и только с ним мы будем иметь дело в этой книге.

ПРИМЕЧАНИЕ
Коммуникационные протоколы иногда называют поставщиками услуг (service provider). Думайте о поставщике услуг как о вашем интерфейсе к сети, будь это протокол, такой как IPX или TCP/IP, или устройство, такое как модем или последовательный кабель.

Протокол TCP/IP — это метод упаковки данных и их отправки через сеть. Он делает это разделяя данные на небольшие пакеты и добавляя к ним адреса отправителя и получателя, а также номер пакета, используемый для воссоздания первоначальных данных (как показано на рис. 5.3). Эти пакеты отправляются в великое неизведанное с надеждой, что они доберутся до места назначения.


Рис. 5.3. TCP/IP разделяет данные на пакеты и добавляет к ним свою собственную информацию заголовка

Рис. 5.3. TCP/IP разделяет данные на пакеты и добавляет к ним свою собственную информацию заголовка. Заголовок содержит номер пакета, адрес отправителя и адрес намеченной цели


TCP/IP позволяет повторно отправлять пакеты по сети, на случай если какая-то информация потеряется во время передачи (такое случается достаточно часто). Когда возникает запаздывание, пакеты могут даже приниматься в неправильном порядке, и старые пакеты будут получены после новых. Не стоит беспокоиться; TCP/IP заботится о повторной отправке потерянных пакетов и переупорядочивании пакетов, полученных в неверной последовательности.

Адресация

В Интернете столько компьютеров, как же данные знают, куда направляться? Точно также, как вы пишете на конверте адрес, перед тем как бросить его в почтовый ящик, протокол TCP/IP назначает каждой системе сетевой адрес (IP-адрес), состоящий из разделенных точками четырех чисел (которые могут быть в диапазоне от 0 до 255). IP-адрес может выглядеть так:

64.120.53.2

Хотя для человека адрес выглядит тарабарщиной, сеть может успешно направлять данные, основываясь на этих значениях. Если вы любите математику, можете посчитать, что комбинация четырех чисел дает 4 294 967 296 возможных адресов. Чтобы увеличить количество адресов, в сетях используются дополнительные значения, называемые порты и определяющие куда должны быть доставлены данные.

Думайте об IP-адресе, как о почтовом отделении. Такое почтовое отделение (IP-адрес) представляет отдельный компьютер, подключенный к сети, и ему назначен единственный IP-адрес. Внутри почтового отделения есть много ящиков (или портов) по которым сортируется почта. Каждый ящик (порт) относится к отдельному офису (отдельному приложению).

Некоторые приложения используют несколько портов. Данные будут получены только той системой, которая имеет тот IP-адрес, которому они направлены, и знает какой порт надо прослушивать. Устройство, называемое маршрутизатор данных (data router) направляет входящие сетевые данные тем системам, которые оно знает, либо переправляет их другому сетевому соединению (называемому вторичная сеть, pass-along network). На рис. 5.4 показаны пути прохождения данных через маршрутизатор.


Рис. 5.4. У почтового отделения (IP-адреса) есть множество ящиков (портов) для сортировки входящих данных

Рис. 5.4. У почтового отделения (IP-адреса) есть множество ящиков (портов) для сортировки входящих данных. Несколько почтовых отделений могут быть соединены через маршрутизатор данных



netlib.narod.ru< Назад | Оглавление | Далее >

Сайт управляется системой uCoz