Мир программирования

 


Найти: на:


Меню
Партнеры
Счетчики
Реклама

Сетевая базовая система ввода-вывода (NETBIOS)

Глава 3: Протоколы и форматы пакетов


   
Добавить в избанное Обсудить в форуме Написать автору сайта Версия для печати

      Общий обзор протоколов NETBIOS был дан в Главе 1. Основным типом операции для обмена информацией между двумя именами в сети является следующий: 1). добавить имена в таблицу местных имен соответствующей прикладной программы на данной ПЭВМ; 2). установить сеанс между двумя именами, используя команды CALL и LISTEN; 3). передать данные, используя команды SEND и RECEIVE; 4). завершить сеанс используя команды HANG UP или RESET. На рис 3-1 показана общая синхронизация обменов пакетами.


1. УСТАНОВКА СЕАНСА

Инициатор Ответчик

----------> Открыть запрос ----------->

<---------- Открыть ACK <-----------

----------> Запрос сеанса ----------->

<---------- Сеанс принят <-----------
или отвергнут

2. ПЕРЕДАЧА ДАННЫХ

Инициатор Ответчик

----------> Данные ----------->

<---------- ACK или NACK <-----------

----------> Данные ----------->

----------> Данные (нет ----------->
повторной
передачи ACK)

<---------- ACK или NACK <-----------

3. ЗАВЕРШЕНИЕ СЕАНСА

Инициатор Ответчик

<---------- Закрыть <-----------

----------> Закрыть ----------->

<---------- Закрыто <-----------


ПРИМЕЧАНИЕ: ACK - символ подтверждения;
NACK - символ отрицательного квитирования.


Рис.3-1. Общая схема синхронизации пакетов сеанса.


      В данной главе будет рассказано о фактической реализации протоколов и форматов пакетов для переноса информации между станциями в NETBIOS. В качестве примеров приводятся два типа сети: оригинальная сеть ПЭВМ IBM с модулированной передачей и ЭКС IBM PC Token-Ring.

[начало] [оглавление]

 

Сеть ПЭВМ (PC Network)

      На рис 3-2 показана зависимость между различными протоколами, реализованными в апдаптере оригинальной Сети ПЭВМ IBM с модулированной передачей.

      В эом разделе рассматриваются предпринимаемые NETBIOS действия для различных команд Блока управления сетью (NCB). Команды и протоколы ассоциируются с Протоколом управления сеансами (SMP) Сети ПЭВМ IBM. Ниже дается высокоуровневое описание протоколов, используемых Протоколом управления сеансами - SMP. Также приводятся форматы пакетов, если на них делается ссылка впервые. Форматы используются NETBIOS на Сети IBM PC с модулированной передачей; в зависимости от конкретной реализации, эти пакеты могут отличаться друг от друга.

      Все пакеты, полученные NETBIOS, уже прошли проверку при помощи избыточного циклического кода и узнавание адреса на канальном уровне. В широкополосной сети ПЭВМ IBM, это осуществляется контроллером CSMA Intel 82586; в ЭКС Token-Ring - собственными драйверами протокола IBM.

ADD NAME

      NETBIOS проверяет имя, чтобы удостовериться, что оно правильно и продолжает работу, если это так. Если он не находит имени в таблице местных имен, он передает широковещательный пакет "заявка на имя" (рис 3-3) несколько раз, чтобы все станции смогли увидеть этот запрос. Если ответ будет получен, пакет будет в форме, показанной на рис 3-4, если нет - имя будет добавлено в таблицу местных имен.

DELETE NAME

      Как и в случае с ADD NAME, NETBIOS проверит правильность имени и продолжит работу, если все верно. Если он обнаружит неактивный сеанс, ассоциированный с этим именем, он завершит работу. В противном случае, NETBIOS поставит запрос на удаление имени в очередь, пока "подсчет сеансов" (активных сеансов) будет равен нулю, - в этом случае имя будет затем удалено из таблицы имен.

CALL

      NETBIOS сначала осуществляет проверку, чтобы убедиться в том, что местное имя в таблице имен найдено. Если это так, NETBIOS проверит удаленное имя в таблице имен, и, если оно не будет найдено, передаст пакет "запроса на имя" в сеть (рис.3-5). Если оно найдено, или узел отвечает на запрос об имени, то тогда получателю посылается пакет "запрос на сеанс" (рис.3-6), и NETBIOS выполнит команду LISTEN для ожидания ответа. Если пакет "сеанс принят" (рис.3-7) будет получен до истечения времени ожидания (тайм-аута) команды LISTEN, тогда NETBIOS установит флаг (установленного) сеанса в таблице сеансов,возвратит номер местного сеанса (LSN) и вернет состояние завершения команды (CMD_CPLT) прикладной программе.

LISTEN/LISTEN ANY

      Сначала NETBIOS осуществляет проверку с целью удостовериться, что местное имя в таблице имен найдено. Если это так, NETBIOS проверяет наличие места в таблице сеансов и ждет пакета "запрос на сеанс". Если источник этого пакета совпадает с удаленным именем, определенным прикладной программой, то выполняется команда LISTEN. Пакет "сеанс принят" будет возвращен в источник, в таблице сеансов будет установлен флаг (установленного) сеанса, будет установлен номер местного сеанса (LSN) и прикладной программе будет возвращено соответствующее состояние. Если это запрос LISTEN ANY, тогда любой пакет "запрос на сеанс" будет удовлетворять запросу.

HANG UP

      Если запрошенный номер сеанса верен и сеанс является "открытым", NETBIOS завершит любые команды RECEIVE, а затем окончит сеанс. Если ожидающей является команда SEND, то NETBIOS ждет, пока не будет завершено выполнение команды SEND, либо пока не истечет время ожидания (т.е. наступит тайм-аут).

SEND/CHAIN SEND

      Если номер сеанса верен и сеанс "открыт", NETBIOS пошлет пакет данных сеанса (рис.3-8), на который указывает NCB_BUFFER@, в узел назначения и ждет пакет квитирования (рис.3-9), либо - по наступлении тайм-аута - возвращает соответствующее состояние прикладной программе.

RECEIVE/RECEIVE ANY

      Если номер сеанса верен и сеанс "открыт", NETBIOS ждет особое сообщение сеанса в течение времени тайм-аута пакета получения, установленного прикладной программой. Если NETBIOS получает пакет сеанса в течение времени тайм-аута, то квитирование посылается обратно источнику и данные передаются буферу, на который указывает NCB_BUFFER@. NETBIOS также выполняет проверку, чтобы убедиться, что длина получаемого сообщения не превышает установленную NCB_LENGTH длину буфера. Действие команды RECEIVE ANY сходно с действием команды RECEIVE, за исключением того, что в первом случае сообщение может быть принято от любого имени.

SEND DATAGRAM/SEND BROADCAST DATAGRAM

      Для команды SEND DATAGRAM, NETBIOS сравнивает номер запрошенного имени с образцом в таблице имен. Если имя найдено, NETBIOS посылает пакет дейтаграмм (рис.3-10) в узел назначения.Для BROADCAST, проверяется номер имени, и, если он верен, дейтаграмма посылается всем узлам в сети. Дейтаграмма посылается только один раз, и поле адреса на канальном уровне устанавливается как единица.

RECEIVE DATAGRAM/RECEIVE BROADCAST DATAGRAM

      Если NETBIOS находит номер имени в таблице местных имен, он будет ожидать появления дейтаграммы (отличной от широковещательной). Прикладная программа может установить особое имя, откуда получается дейтаграмма или любое (ANY) имя. Если NETBIOS получает дейтаграмму, но она не от имени, которое запросила прикладная прогпрамма, то NETBIOS продолжает ждать. Если прикладной программе нужна любая дейтаграмма, то NETBIOS вернется к прикладной программе. В обоих случаях, получаемое сообщение копируется в NCB_BUFFER@, а номер местного имени получамой дейтаграммы возвращается прикладной программе. RECEIVE BROADCAST DATAGRAM - особый случай, где дейтаграмма передается всем узлам назначения (станциям сети).

[начало] [оглавление]

 

Транспортный уровень

      Сеансовый уровень вызывает транспортный уровень для установки надежной связи между двумя именами (ПЭВМ назначения и ПЭВМ-источником). NETBIOS пытается максимальное количество раз установить эту связь. Если получено квитирование (см.рис.3-9), то соединение прошло успешно. С этого момента NETBIOS будет использовать протокол надежного потока (RSP). Этот протокол специфичен для оригинальной Сети ПЭВМ. Другие реализации NETBIOS имеют отличные от данного протоколы, например Сетевые системы Xerox (Xerox Network Systems - XNS), Протокол управления передачей (Transmission Control Protocol - TCP), либо протоколы транспортного уровня ISO/NBS.

[начало] [оглавление]

 

Сетевой уровень

      Сетевой уровень в сети ПЭВМ IBM использует протокол передачи пакетов (PTP). Этот протокол состоит из четырех важнейших процедур: послать пакет PTP, послать кадр протокола доступа к каналу (LAP), получить кадр LAP и процедура полученного кадра.

      Процедура отправки PTP требует того, чтобы буфер был послан особенному идентификатору сетевого соединения. Если соединение существует, то PTP форматирует буфер и посылает его через кадр LAP. Учтите, что, хотя этот протокол/процедура позволяет осуществить взаимодействие, реализация NETBIOS в Сети ПЭВМ IBM позволяет выполнять обработку пакета только в одну другую сеть (адааптер).

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

      Процедура получения кадра LAP получает достоверные кадры непосредственно из канального уровня. Эта процедура также ответственна за выделение и закрытие буферов при получении кадров.

      Если кадр получен от предыдущей процедуры, тогда вовлекается процедура полученного кадра. Эта процедура проверяет тип пакета на соответствие одному из следующих: данные соединения, завершение маршрута, открытие, дейтаграмма, установление маршрута или дубликат (в этом случае он игнорируется). Дейтаграммы передаются транспортному уровню для дальнейшей обработки. Дейтаграммы представляют собой самую низкоуровневую форму пакета в сети, а все протоколы высшего уровня, включающие команды NETBIOS SEND, опосредственно используют их в цепочке событий (сеансовый - транспортный - сетевой - канальный).

[начало] [оглавление]

 

ЭКС Token-Ring

      В ЭКС IBM Token-Ring, кадр NETBIOS непосредствено вложен в кадр управления логическим каналом (LLC) стандарта IEEE 802.2 на втором уровне модели соединения открытых систем. Кадры уровня 2 в свою очередь инкапсулируются в кадр управления ЭКС на первом уровне, уровне управления доступом к носителям (MAC), стандарт IEEE 802.5. Далее будет рассматриваться базовый формат. На рис. 3-11 показан базовый формат кадра NETBIOS. Этот кадр вложен в информационное поле кадра 802.2, который, в свою очередь, вложен в информационное поле кадра 802.5. Кадр 802.5 сам передается по кольцу в станцию назначения, где он разбивается, пока эмулятор не сможет обработать сам фактический кадр NETBIOS.

      Первые 16 бит кадра NETBIOS содержат длину заголовка NETBIOS, включая само поле длины. Следующие 16 бит (2 байта) содержат шест- надцатиричную величину EFFF, которая является разделитилем, указывающим, что последующие данные предназначены для эмулятора NETBIOS. Следующий байт является фактической функцией кадра NETBIOS. В ЭКС Token-Ring функции с шестнадцатиричными величинами от 00 до 13 являются несеансовыми кадрами, которые посылаются с использованием непронумерованных (U) информационных кадров 802.2, в то время, как функции с шестнадцатиричными величинами от 14 до 1F являются кадрами сеансов, которые посылаются с использованием информационных (I) кадров 802.2. Кадры U аналогичны дейтаграммам (замкнутые кадры без номеров последовательности), в то время, как кадры I содержут номера последовательности и надежно передаются и получаются в ЭКС.

      Следующие 8 бит (1 байт) является необязательным байтом данных на определенную команду. Аналогично, следующие 2 байта представляют собой необязателные байты данных на особую команду.

      Следующие 4 байта в кадре являются коррелятором - один или два номера в шестнадцатиричном диапазоне от 0001 до FFFF. Он используется для связывания (ассоциирования) полученных ответов с передаваемыми запросами. Коррелятор передачи возвращается в ответе к данному запросу (эта величина была получена как коррелятор ответа). Коррелятор ответа представляет собой ожидаемую величину (в поле коррелятора передачи), когда получается ответ на это сообщение. Несеансовые кадры содержат 16-символьное имя назначения NETBIOS, за которым следует 16-символьное имя источника. Сеансовые кадры содержат 1-байтовый номер сеанса назначения, за которым следует 1-байтовый номер исходного сеанса.

      Как Вы можете увидеть, несеансовые кадры имеют заголовок NETBIOS общей длиной 43 байта, в то время как сеансовые кадры имеют заголовок длиной 13 байт.


Предыдущая страница    |    Следующая страница


Добавить в избанное Обсудить в форуме Написать автору сайта Версия для печати

Опрос

Конкурсы
Реклама

 

Web дизайн: Бурлаков Михаил    

Web программирование: Бурлаков Михаил

Используются технологии uCoz