Презентация на тему “Протоколы локальных сетей (IPX/SPX)”

Выполнили ст. гр. 3305: Бахвалова Ю.С., Чепас А.С.

Содержание

  1. Введение

1.1. Протокол

1.2. Метод дейтаграмм

1.3. Метод с логическим соединением

    1. Соответствие протоколов Novell и 7-уровневой модели OSI

  1. Протокол IPX

2.1. Общие сведения

2.2. Формат пакета IPX

2.3. Описание полей пакета IPX

2.4. Пример структуры заголовка пакета IPX

2.5. Работа с драйверами IPX/SPX

2.6. Процедура приема/передачи пакетов данных средствами IPX

2.6.1. Формат блока ECB

2.6.2. Описание полей блока ECB

2.7. Достоинства IPX

2.8. Недостатки IPX

  1. Протокол SPX

3.1. Общие сведения

3.2. Преимущества использования SPX

3.3. Формат пакета SPX

3.4. Отличия форматов IPX и SPX

3.5. Описание полей пакета SPX

3.6. Описание ЕСВ-блока SPX

3.7. SPX 2

3.8. Достоинства SPX

  1. Взаимодействие уровней стека IPX/SPX

  1. Заключение

  1. Список литературы

1. Введение

1.1. Протокол

Базовым понятием в области построения и функционирования сетей является протокол.

Протокол – это набор семантических и синтаксических правил, определяющих поведение систем, устройств и процессов при передаче данных. Проще говоря, протоколы – это некие схемы или алгоритмы, следуя которым все узлы сети стандартным образом подготавливает данные к передаче и осуществляет ее. Каждый из уровней может иметь собственные протоколы, т.е. те наборы правил, в соответствии с которым данные будут преобразовываться для передачи на следующий уровень.

Существует два основных метода взаимодействия абонентов в сети:

  • Метод взаимодействия без логического соединения (или метод дейтаграмм).

  • Метод взаимодействия с логическим соединением.

1.2. Метод дейтаграмм

Это простейший метод, в котором каждый пакет рассматривается как самостоятельный объект.

Рис. 1

Пакет при этом методе (см. рис. 1) передается без установления логического канала, то есть без предварительного обмена служебными пакетами для выяснения готовности приемника, а также без ликвидации логического канала, то есть без пакета подтверждения окончания передачи. Дойдет пакет до приемника или нет – неизвестно (проверка факта получения переносится на более высокие уровни).

Метод дейтаграмм предъявляет повышенные требования к аппаратуре (так как приемник всегда должен быть готов к приему пакета). Достоинства метода в том, что передатчик и приемник работают независимо друг от друга, к тому же пакеты могут накапливаться в буфере и затем передаваться вместе, можно также использовать широковещательную передачу, то есть адресовать пакет всем абонентам одновременно. Недостатки метода – это возможность потери пакетов, а также бесполезной загрузки сети пакетами в случае отсутствия или неготовности приемника.

1.3. Метод с логическим соединением

Разработан позднее, чем метод дейтаграмм , и отличается усложненным порядком взаимодействия.

Рис. 2

При этом методе (см. рис. 2) пакет передается только после того, как будет установлено логическое соединение (канал) между приемником и передатчиком. Каждому информационному пакету сопутствует один или несколько служебных пакетов (установка соединения, подтверждение получения, запрос повторной передачи, разрыв соединения). Логический канал может устанавливаться на время передачи одного или нескольких пакетов.

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

  • Примеры протоколов, работающих по методу дейтаграмм — это протоколы IP и IPX.

  • Примеры протоколов, работающих по методу с логическим соединением – это TCP и SPX.

Именно для того, чтобы объединить достоинства обоих методов, эти протоколы используются в виде связанных наборов: TCP/IP и IPX/SPX, в которых протокол более высокого уровня (TCP, SPX), работающий на базе протокола более низкого уровня (IP, IPX), гарантирует правильную доставку пакетов в требуемом порядке.

1.4. Схема соответствия протоколов Novell и 7-уровневой модели OSI

  • Сетевому уровню модели OSI соответствует протокол IPX.

  • Транспортному уровню модели OSI соответствует протокол SPX.

2. Протокол IPX

2.1. Общие сведения

IPX (Internetwork Packet Exchange) является оригинальным протоколом сетевого уровня фирмы Novell.

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

В качестве прототипа протокола IPX компания Novell использовала один из первых протоколов локальных сетей – протокол Xerox Network System (XNS), адаптировав его для своей файл-серверной операционной системы NetWare. Компания Xerox Corporation предложила протокол XNS в качестве средства передачи данных по сетям Ethernet. В начале 1980-х годов некоторые производители выпустили собственные версии этого протокола. Вариант компании Novell определил возникновение протокола IPX, предназначенного для серверов NetWare.

Если устройство, с которым необходимо установить связь, находится в другой сети, IPX прокладывает маршрут для прохождения информации через любые промежуточные сети, которые могут находиться на пути к пункту назначения.

2.2. Формат пакета IPX

На данной схеме представлен формат пакета IPX.

Все поля, кроме поля Data, образуют заголовок пакета.

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

2.3. Описание полей пакета IPX

1) Контрольная сумма (Checksum)

Контрольная сумма (Checksum) - это 2-байтовое поле, являющееся «пережитком прошлого», которое протокол IPX ведет от протокола IDP стека Xerox. Так как низкоуровневые протоколы (например, Ethernet) всегда выполняют проверку контрольных сумм, то IPX не использует это поле и всегда устанавливает его в единицы.

2) Общая длина пакета (Length)

Занимает 2 байта и задает размер всего пакета, включая IPX-заголовок и поле данных. Самый короткий пакет - 30 байт - включает только IPX-заголовок, а рекомендуемый максимально большой - 576 байт - включает IPX-заголовок плюс 546 байт данных. Максимальный размер пакета в 576 байт соответствует рекомендациям стандартов Internet для составных сетей. Протокол IPX вычисляет значение этого поля, основываясь на информации, предоставляемой прикладной программой при вызове функции IPX. IPX-пакет может превосходить рекомендуемый максимум в 576 байт, что и происходит в локальных сетях Ethernet, где используются IPX-пакеты в 1500 байт с полем данных в 1470 байт.

3) Управление транспортом (Transport control)

Имеет длину 8 бит. IPX-пакет может пересечь до 15 маршрутизаторов. Протокол IPX передающей станции устанавливает это однобайтовое поле в 0 до начала передачи, а затем увеличивает его на 1 каждый раз, когда пакет проходит через маршрутизатор. Если счетчик превысит 15, то пакет аннулируется.

4) Тип пакета (Packet type)

Имеет длину 8 бит. Фирма Xerox определила в свое время определенные значения для различных типов пакетов: прикладные программы, посылающие IPX-пакеты, должны устанавливать в это поле значение, равное 4. Значение 5 соответствует служебным IPX-пакетам, используемым протоколом SPX в качестве служебных сообщений. Значение 17 указывает на то, что в поле данных IPX-пакета находится сообщение протокола NetWare Core Protocol (NCP) - основного протокола файловой службы NetWare.

5) Номер сети получателя пакета (DestNetwork)

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

6) Адрес станции-получателя (DestNode)

Определяет адрес станции, которой предназначен пакет. Устанавливается прикладной программой.

7) Гнездо программы-получалеля (DestSocket)

Предназначено для определения программы, которая запущена на станции-получателе и должна принять пакет. Это поле устанавливается в прикладной программе.

8) Номер сети отправителя пакета (SourceNetwork),

9) Адрес станции-отправителя (SourceNode),

10) Гнездо программы-отправителя (SourceSocket)

Содержат, соответственно, номер сети, из которой посылается пакет, адрес передающей станции и гнездо программы, которая передает пакет. Эти поля заполняются протоколом IPX передающей станции.

11) Передаваемые данные (Data)

Данное поле содержит передаваемые данные. Это поле формируется протоколом IPX передающей станции на основании описания блока ECB (Event Control Block).

2.4. Пример структуры заголовка пакета IPX

Для формирования заголовка пакета можно воспользоваться, например, следующей структурой:

struct _IPXHeader {

unsigned char Checksum[2];

unsigned char Length[2];

unsigned char TransportControl;

unsigned char PacketType;

unsigned char DestNetwork[4];

unsigned char DestNode[6];

unsigned char DestSocket[2];

unsigned char SourceNetwork[4];

unsigned char SourceNode[6];

unsigned char SourceSocket[2];}

IPXHeader; 

2.5. Работа с драйвером IPX/SPX

Первое, что должна сделать программа, желающая работать в сети с протоколом IPX/SPX - проверить, установлен ли драйвер соответствующего протокола. Затем необходимо получить адрес вызова этого драйвера - точку входа API (Application Programm Interface - интерфейс для приложений). В дальнейшем программа вызывает драйвер при помощи команды межсегментного вызова процедуры по адресу точки входа API драйвера IPX/SPX.

API драйвера протокола IPX состоит из примерно дюжины функций, предназначенных для выполнения операций с сокетами, сетевыми адресами, для приема и передачи пакетов и некоторых других операций.

2.6. Процедура приема/передачи пакетов данных средствами IPX

Прием и передачу пакетов выполняет сетевой адаптер, работающий с использованием прерываний. Прерывание от сетевого адаптера обрабатывает драйвер сетевого адаптера.

Например, в операционной системе MS-DOS для адаптеров, совместимых с адаптером Novell NE2000 в составе Novell NetWare поставляется драйвер ne2000.com, реализованный в виде резидентной программы.

Прикладные программы не работают напрямую с драйвером сетевого адаптера. Запросы на прием и передачу пакетов они направляют драйверу IPX (программа ipx.exe или ipxodi.exe), который, обращается к драйверу сетевого адаптера.

Если на рабочей станции используется операционная система MS-DOS, функции, необходимые для реализации протокола IPX, реализуются резидентными программами ipx.com или ipxodi.com, входящими в состав сетевой оболочки рабочей станции сети NetWare.

Для приема или передачи пакета прикладная программа должна подготовить пакет данных, сформировав его заголовок, и построить так называемый блок управления событием ECB (Event Control Block). В блоке ECB задается адресная информация для передачи пакета, адрес самого передаваемого пакета в оперативной памяти и некоторая другая информация.

Подготовив блок ECB, прикладная программа передает его адрес соответствующей функции IPX для выполнения операции приема или передачи пакета.

Функции IPX, принимающие или передающие пакет, не выполняют ожидания завершения операции, а сразу возвращают управление вызвавшей их программе. Прием или передача выполняются сетевым адаптером автономно и асинхронно по отношению к программе, вызвавшей функцию IPX для передачи данных. После того, как операция передачи данных завершилась, в соответствующем поле блока ECB устанавливается признак. Программа может периодически проверять ECB для обнаружения признака завершения операции.

Есть и другая возможность. В блоке ECB можно указать адрес процедуры, которая будет вызвана при завершении выполнения операции передачи данных. Такой способ предпочтительнее, так как прикладная программа не будет тратить время на периодическую проверку блока ECB.

2.6.1. Формат блока ECB

Блок ECB (см. рис 3) состоит из фиксированной части размером 36 байт и массива дескрипторов, описывающих отдельные фрагменты передаваемого или принимаемого пакета данных.

Рис. 3

2.6.2. Описание полей блока ECB

1) Поле Link

Предназначено для организации списков, состоящих из блоков ECB. Драйвер IPX использует это поле для объединения переданных ему блоков ECB в списки, записывая в него полный адрес в формате [сегмент:смещение]. После того, как IPX выполнит выданную ему команду и закончит все операции над блоком ECB, программа может распоряжаться полем Link по своему усмотрению. В частности, она может использовать это поле для организации списков или очередей свободных или готовых для чтения блоков ECB.

2) Поле ESRAddress

Содержит полный адрес программного модуля (в формате [сегмент:смещение]), который получает управление при завершении процесса чтения или передачи пакета IPX. Этот модуль называется программой обслуживания события ESR (Event Service Routine). Если ваша программа не использует ESR, она должна записать в поле ESRAddress нулевое значение. В этом случае о завершении выполнения операции чтения или передачи можно узнать по изменению содержимого поля InUse.

3) Поле InUse

Может служить индикатором завершения операции приема или передачи пакета. Перед тем как вызвать функцию IPX, программа записывает в поле InUse нулевое значение. Пока операция передачи данных, связанная с данным ECB, не завершилась, поле InUse содержит ненулевые значения:

FFh - ECB используется для передачи пакета данных;

FEh - ECB используется для приема пакета данных;

FDh - ECB используется функциями асинхронного управления событиями AES (Asynchronous Event Sheduler), ECB находится в состоянии ожидания истечения заданного временного интервала;

FBh - пакет данных принят или передан, но ECB находится во внутренней очереди IPX в ожидании завершения обработки.

Программа может постоянно опрашивать поле InUse, ожидая завершения процесса передачи или приема данных. Как только в этом поле окажется нулевое значение, программа может считать, что запрошенная функция выполнена. Результат выполнения можно получить в поле CCode.

4) Поле CCode

После выполнения функции IPX (после того, как в поле InUse будет нулевое значение) содержит код результата выполнения.

Если с данным ECB была связана команда приема пакета, в поле CCode могут находиться следующие значения:

00 - пакет был принят без ошибок;

FFh - указанный в ECB сокет не был

предварительно открыт программой;

FDh - переполнение пакета: либо поле

количества фрагментов в пакете

FragmentCnt равно нулю, либо

буферы, описанные дескрипторами

фрагментов, имеют недостаточный

размер для записи принятого пакета;

FCh - запрос на прием данного пакета был

отменен специальной функцией

драйвера IPX.

Если ECB использовался для передачи пакета, в поле CCode после завершения передачи могут находиться следующие значения:

00 - пакет был передан без ошибок (что, кстати, не означает, что пакет был доставлен по назначению и успешно принят станцией-адресатом, так как протокол IPX не обеспечивает гарантированной доставки пакетов);

FFh - пакет невозможно передать физически из-за неисправности в сетевом адаптере или в сети;

FEh - пакет невозможно доставить по назначению, так как станция с указанным адресом не существует или неисправна;

FDh - сбойный: либо имеет длину меньше 30 байт, либо первый фрагмент пакета по размеру меньше размера стандартного заголовка пакета IPX, либо поле количества фрагментов в пакете FragmentCnt равно нулю;

FCh - запрос на передачу данного пакета был отменен специальной функцией драйвера IPX.

Обратим еще раз ваше внимание на то, что, даже если код завершения в поле CCode равен нулю, это не гарантирует успешной доставки пакета адресату.

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

Одна из интересных особенностей при передаче пакетов заключается в том, что вы можете передавать пакеты "сами себе", т. е. передающая и принимающая программы могут работать на одной и той же станции и использовать один и тот же сокет.

5) Поле Socket

Cодержит номер гнезда, связанный с данным ECB. Если ECB используется для приема, это поле содержит номер гнезда, на котором выполняется прием пакета. Если же ECB используется для передачи, это поле содержит номер гнезда передающей программы. Заполняется в прикладной программе и используется протоколом IPX для заполнения поля SourceSocket пакета IPX.

6) Поле IPXWorkspace

Зарезервировано для использования драйвером IPX.

7) Поле DriverWorkspace

Зарезервировано для использования драйвером сетевого адаптера.

8) Поле ImmAddress

Поле ImmAddress (Immediate Address - непосредственный адрес) содержит адрес узла в сети, в который будет направлен пакет. Если пакет передается в пределах одной сети, поле ImmAddress будет содержать адрес станции-получателя (такой же, как и в заголовке пакета IPX). Если же пакет предназначен для другой сети и будет проходить через мост, поле ImmAddress будет содержать адрес этого моста в сети, из которой передается пакет.

9) Поле FragmentCnt

Устанавливается прикладной программой и содержит количество фрагментов, на которые надо разбить принятый пакет или из которых надо собрать передаваемый пакет, т.е. в программе можно указать отдельные буферы для приема/передачи заголовка и данных пакета. В этом случае значение поля FragmentCnt должно быть равно 2.

Значение, записанное в поле FragmentCnt, не должно быть равно нулю. Если в этом поле записано значение 1, весь пакет вместе с заголовком записывается в один общий буфер.

Сразу вслед за полем FragmentCnt располагаются дескрипторы фрагментов, состоящие из указателя в формате [сегмент:смещение] на фрагмент Address и поля размера фрагмента Size.

Если программе надо разбить принятый пакет на несколько частей, она должна установить в поле FragmentCnt значение, равное количеству требуемых фрагментов. Затем для каждого фрагмента необходимо создать дескриптор, в котором указать адрес буфера и размер фрагмента. Аналогичные действия выполняются и при сборке пакета перед передачей из нескольких фрагментов.

Самый первый фрагмент не должен быть короче 30 байт, так как там должен поместиться заголовок пакета IPX.

2.7. Достоинства IPX

  • Протокол IPX определяет самый быстрый уровень передачи в сетях NetWare.

  • Он относится к классу дейтаграммных протоколов, т.е. без установления соединения. Прикладной программе не требуется устанавливать специальное соединение с получателем.

2.8. Недостатки IPX

  • Не гарантирует доставку данных.

  • Не гарантирует сохранение правильной последовательности приема пакетов.

  • Не подавляет прием дублированных пакетов.

  • Обработка ошибок, возникающих при передаче пакетов IPX, возлагается на прикладную программу.

  • Большие накладные расходы на служебную информацию. Сравнительно небольшая максимальная длина поля данных IPX-пакета (546 байт при длине заголовка 30 байт) приводит к тому, что как минимум 5 % данных являются служебными.

  • Время жизни пакета ограничено числом 15, что может оказаться недостаточным для большой сети (для сравнения, в IP-сетях пакет может пройти до 255 промежуточных маршрутизаторов).

  • Дополнительный трафик, возникающий из-за того, что активные рабочие станции используют часто генерируемые широковещательные пакеты для подтверждения своего присутствия в сети. При наличии множества серверов NetWare и нескольких сотен клиентов применяемые протоколом IPX широковещательные пакеты типа "я здесь" (см. рис. 4) могут создавать значительный сетевой трафик.

Рис. 4

3. Протокол SPX

3.1. Общие сведения

Транспортный протокол SPX (Sequenced Packet eXchange) ориентирован на установление соединения. Протокол обрабатывает пакет SPX.

3.2. Преимущества использования SPX

Для некоторых приложений (например, для программ, передающих файлы между рабочими станциями) удобнее использовать сетевой протокол более высокого уровня SPX, обеспечивающий гарантированную доставку пакетов в правильной последовательности. Разумеется, ваша программа может сама следить за тем, чтобы все переданные пакеты были приняты. Однако в этом случае вам придется делать собственную надстройку над протоколом IPX - собственный протокол передачи данных.

3.3. Формат пакета SPX

На данной схеме представлен формат пакета SPX.

3.4. Отличия форматов IPX и SPX

Пакет, передаваемый при помощи протокола SPX, имеет более длинный заголовок. Дополнительно к 30 байтам стандартного заголовка пакета IPX добавляется еще 12 байт.

Первые десять полей пакета совпадают с заголовком пакета IPX. Рассмотрим остальные поля заголовка SPX.

3.5. Описание полей пакета SPX

1) Управление потоком данных (ConnControl)

Содержит набор битовых флагов, управляющих передачей данных по каналу SPX.

2) Тип данных в пакете (DataStreamType)

Состоит из однобитовых флагов, которые используются для классификации данных, передаваемых или принимаемых при помощи протокола SPX.

3) Идентификатор канала отправителя (SourceConnID)

Содержит номер канала связи передающей программы, присвоенный протоколом SPX при создании канала связи. Полем управляет протокол SPX.

4) Идентификатор канала получателя (DestConnID)

Содержит номер канала связи принимающей стороны. Так как все пакеты, приходящие на один номер гнезда, могут принадлежать разным каналам связи (на одном гнезде можно открыть несколько каналов связи), то приходящие пакеты следует классифицировать по номеру канала связи. Полем управляет протокол SPX.

5) Счетчик переданных пакетов (SeqNumber)

Содержит счетчик пакетов, переданных по каналу в одном направлении. На каждой стороне канала используется свой счетчик. При достижении значения FFFFh счетчик сбрасывается в 0. После чего процесс счета продолжается. Содержимым поля управляет протокол SPX.

6) Номер следующего пакета (AckNumber)

Содержит номер следующего пакета, который должен быть принят протоколом SPX. Содержимым этого поля управляет протокол SPX.

7) Количество буферов для приема (AllocNumber)

Содержит количество буферов, отведенных программой для приема пакетов. Содержимым этого поля управляет протокол SPX.

3.6. Описание ЕСВ-блока SPX

Для протокола используется точно такой же блок ECB, что и для протокола IPX.

Так как для обработки системных пакетов протокол гарантированной доставки SPX использует те же блоки ECB, что и для приема прикладных пакетов, должно обеспечиваться достаточное количество блоков ECB в очереди на прием пакетов.

Протокол SPX позволяет осуществить от 100 до 2000 соединений одновременно (по умолчанию это число равно 1000). Конфигурационные параметры SPX-протокола (и сети) хранятся в файлах shell.cfg и net.cfg.

3.7. SPX II

В 1992 году была разработана новая версия SPX - SPX II. Главное усовершенствование протокола связано с применением пакетов большего размера. Раньше длинные spx-пакеты фрагментировались и пересылались по частям.

В Ethernet пакет SPX II может иметь длину 1518 байт. SPX II допускает использование технологии окон, то есть можно послать несколько кадров, не дожидаясь получения подтверждения на каждый из уже посланных.

На основе протокола SPX работают утилита удаленной консоли и службы печати фирмы Novell. Удаленная консоль позволяет рабочей станции администратора видеть ту же информацию, которая отображается на консоли файл-сервера NetWare, благодаря чему пользователь может удаленно выполнять системные команды сервера, не находясь за его клавиатурой.