Федеральное агенство образования
Южно-Уральский Государственный Университет
Факультет экономики и управления
Кафедра информатики
Курсовая работа
по дисциплине “Локальные сети”
СОЗДАНИЕ СЕТЕВОЙ ИГРЫ
“КОСТИ”
Выполнили:
Студенты группы ЭиУ-423
Захезин С.М.
Капацина Д.
Давидович И.
Проверил:
Сартасов Е.М.
Челябинск, 2006
Аннотация
Создание сетевой игры «Кости». Игра ведется до 21 очка, работа сделанна на 5 протоколах.
Правила игры
Один из игроков является сервером, другой – клиентом. Для начала игры необходимо выбрать протокол, по которому будет установлена связь. Длительность игры зависит от набранных очков и желания играков.
Протоколы
IPX
Протокол IPX предоставляет возможность программам, запущенным на рабочих станциях, обмениваться пакетами данных без подтверждения. В сети Novell NetWare наиболее быстрая передача данных при наиболее экономном использовании памяти реализуется именно протоколом IPX. Протоколы SPX и NETBIOS сделаны на базе IPX и поэтому требуют дополнительных ресурсов.
Формат пакета IPX
Формат передаваемых по сети пакетов представлен на рис. 2.
Рис. 2. Структура пакета IPX
Пакет можно разделить на две части - заголовок и передаваемые данные. Все поля, представленные на рис. 2, кроме последнего (Data), представляют собой заголовок пакета. Заголовок пакета выполняет ту же роль, что и конверт обычного письма - там располагается адрес назначения, обратный адрес и некоторая служебная информация.
Особенностью формата пакета является то, что все поля заголовка содержат значения в перевернутом формате, т. е. по младшему адресу записывается старший байт данных, а не младший, как это принято в процессорах фирмы Intel. Поэтому перед записью значений в многобайтовые поля заголовка необходимо выполнить соответствующее преобразование. Представление данных в заголовке пакета соответствует, например, формату целых числел в компьютере IBM-370 (серия ЕС ЭВМ). .
Первое, что должна сделать программа, желающая работать в сети с протоколом IPX или SPX, - проверить, установлен ли драйвер соответствующего протокола. Затем необходимо получить адрес вызова этого драйвера - точку входа API (Application Programm Interface - интерфейс для приложений). В дальнейшем программа вызывает драйвер при помощи команды межсегментного вызова процедуры по адресу точки входа API драйвера IPX/SPX.
Обычно в сети одна из рабочих станций принимает запросы на выполнение каких-либо действий от других рабочих станций. Так как станция обслуживает запросы, она называется сервером (serve - обслуживать, server - обслуживающее устройство). Выполнив запрос, сервер посылает ответ в запросившую станцию, которая называется клиентом.
В сети может быть много серверов и много клиентов. Одни и те же клиенты могут посылать запросы разным серверам.
Говоря более строго, сервером или клиентом является не рабочая станция, а запущенная на ней программа. В мультизадачной среде разные программы, запущенные одновременно на одной и той же рабочей станции могут являться и клиентами, и серверами.
Программа-сервер, выполнив очередной запрос, переходит в состояние ожидания. Она ждет прихода пакета данных от программы-клиента. В зависимости от содержимого этого пакета программа-сервер может выполнять различные действия, в соответствии с логикой работы программы. Например, она может принять от программы-клиента дополнительные пакеты данных или передать свои пакеты.
Сервер и клиент при необходимости на какое-то время или навсегда могут поменяться местами, изменив свое назначение на противоположное.
Для того, чтобы создавать программы-серверы и программы-клиенты, нам необходимо научиться выполнять две задачи:
· инициализацию сервера и клиента;
o прием и передачу пакетов данных.
Для инициализации программ сервера и клиента, работающих на базе IPX, недостаточно убедиться в наличии соответствующего драйвера и получить точку входа в его API. Необходимо выполнить некоторые подготовительные действия для того, чтобы программа могла принимать и передавать пакеты данных. Прежде всего необходимо, чтобы программа-сервер или программа-клиент идентифицировали себя в сети при помощи механизма сокетов. Динамически распределяемые сокеты выдаются программам как бы во временное пользование (на время их работы) по специальному запросу. Перед началом работы программа должна запросить сокет у протокола IPX, а перед завершением - освободить его. При реализации схемы обмена данными "клиент-сервер" сервер обычно принимает пакеты на сокете, значение которого известно программам-клиентам. Сами же программы-клиенты могут использовать либо то же самое значение сокета, либо получать свой сокет динамически. Клиент может сообщить серверу свой сокет просто передав его в пакете данных (так как мы предполагаем, что сокет сервера известен программе-клиенту). После определения сокета необходимо узнать сетевой адрес станций-получателей. Для того чтобы клиент мог послать запрос серверу, необходимо кроме сокета сервера знать его сетевой адрес - номер сети и адрес рабочей станции в сети.
TCP/IP
Рассмотрим работу семейства протоколов TCP/IP при обмене данными между двумя процессами telnet, выполняющимися на двух разных хостах, входящих в две разные сети, соединенные посредством маршрутизатора.
Протокол верхнего уровня (приложений/процессов) разделяет данные на кусочки (это процесс называется инкапсуляцией) и каждому кусочку добавляет заголовок. То, что получается в результате, называется TCP-сегментом.
TCP-сегмент
Заголовок
TCP-сегмента
Данные
Модули протокола TCP обмениваются TCP-сегментами.
Протокол TCP обеспечивает надежную дуплексную передачу с предварительной установкой связи и с разрывом соединения.
Надежная – осуществляется контроль получения данных. Сегмент, на данные которого не пришло подтверждения через определенное время, посылается снова.
Дуплексная – значит, передача в две стороны, туда и обратно, передача только в дону сторону называется симплексной.
Формат заголовка TCP-сегмента (заголовок состоит из 32-битных слов):
0 (бит)
4
8
12
16
20
24
28 31
Source Port
Destination Port
Sequence Number
Acknowledgement Number
Offset
Reserved
Flags
Window
Checksum
Urgent Point
Options
Padding
· Source Port и Destination Port – это адреса процессов (отправителя и получателя соответственно). Грубо говоря, это просто числовые идентификаторы, которые присвоены процессам-протоколам верхнего уровня. Некоторые протоколы верхнего уровня имеют стандартные значения номеров портов:
Номер порта
Процесс
ftp-data (передача данных по ftp)
21
fpt (команды)
23
telnet
25
smtp
70
gopher
80
www-http
Страницы: 1, 2, 3, 4, 5, 6, 7