return regs.x.ax;
}
unsigned int get_1st_connection_num (char *who)
{
union REGS regs;
struct SREGS sregs;
struct {
unsigned int len;
unsigned char buffer_type;
unsigned int object_type;
unsigned char name_len;
unsigned char name [47];
} request_buffer;
struct {
unsigned int len;
unsigned char number_connections;
unsigned char connection_num [100];
} reply_buffer;
regs.h.ah = 0xe3;
request_buffer.len = 51;
request_buffer.buffer_type = 0x15;
request_buffer.object_type = 0x0100;
request_buffer.name_len = (unsigned char) strlen(who);
strcpy(request_buffer.name, who);
reply_buffer.len = 101;
regs.x.si = FP_OFF( (void far *) &request_buffer);
sregs.ds = FP_SEG( (void far *) &request_buffer);
regs.x.di = FP_OFF( (void far *) &reply_buffer);
sregs.es = FP_SEG( (void far *) &reply_buffer);
int86x(0x21, ®s, ®s, &sregs);
if (regs.h.al != 0) return 0;
if (reply_buffer.number_connections == 0) return 0;
regs.h.ah = 0;
regs.h.al = reply_buffer.connection_num[0];
return regs.x.ax;
}
unsigned char get_connection_number(void)
{
_AH = 0xDC;
geninterrupt(0x21);
return _AL;
}
void get_user_id(unsigned char connection_number,
unsigned char *user_id)
{
union REGS regs;
struct SREGS sregs;
struct {
unsigned int len;
unsigned char buffer_type;
unsigned char connection_number;
} request_buffer;
struct {
unsigned int len;
unsigned char object_id[4];
unsigned char object_type[2];
char object_name[48];
char login_time[7];
} reply_buffer;
regs.h.ah = 0xe3;
request_buffer.len = 2;
request_buffer.buffer_type = 0x16;
request_buffer.connection_number = connection_number;
reply_buffer.len = 61;
regs.x.si = FP_OFF( (void far *) &request_buffer);
sregs.ds = FP_SEG( (void far *) &request_buffer);
regs.x.di = FP_OFF( (void far *) &reply_buffer);
sregs.es = FP_SEG( (void far *) &reply_buffer);
int86x(0x21, ®s, ®s, &sregs);
strncpy(user_id, reply_buffer.object_name, 48);
}
2.6. Протокол последовательного обмена пакетами NetWare (SPX)
Протокол обмена последовательными пакетами (SPX) строится на
основе IPX и предлагает дополнительные услуги Xerox's Sequenced
Packet Protocol (SPP). SPX дает возможность прикладным программам
рабочей станции NetWare получать некоторые преимущества при ис-
пользовании сетевых драйверов при прямых коммуникациях с другими
рабочими станциями, серверами и устройствами интерсети с дополни-
тельной гарантией достоверности и последовательности пакетов.
Внутренне SPX построен на дейтаграммных примитивах IPX и дает
простой интерфейс, ориентированный на установление соединения.
В дополнение к структуре IPX, SPX включает 12 байтов блока уп-
равления соединения.
2.7. Программный интерфейс SPX
В дополнение к программному интерфейсу IPX, SPX предоставляет
следующие функции:
a. проверка установки SPX;
b. установка соединения;
c. прослеживание соединения;
d. окончание соединения;
e. разрыв соединения;
f. получение состояния соединения;
g. посылка последовательного пакета;
h. прослушивание (ожидание) последовательного пакета.
Эти функции управляют установкой, поддержанием, cбросом соеди-
нения. Прикладные системы, использующие SPX не обязаны организовы-
вать свои собственные схемы тайм-аутов для гарантирования воста-
новления по обрыву установленного соединения, посылки последова-
тельного пакета или по запросу об окончании соединения.
Формат пакета протокола SPX
0 1 15 ¦
г====================¬¦
¦ контрольная сумма ¦¦
¦--------------------¦¦
¦ длина ¦¦
¦---------T----------¦¦
¦упр.транс¦тип пакетদ
¦---------+----------¦¦
¦- сеть доставки -¦¦
¦--------------------¦¦
Сетевой адрес ¦- -¦¦
доставки ¦- хост доставки -¦¦
¦--------------------¦¦Уровень 1
¦ порт доставки ¦+---------
¦--------------------¦¦адресация
¦- сеть отправителя-¦¦
¦--------------------¦¦
Сетевой адрес ¦ -¦¦
отправителя ¦- хост отправителя -¦¦
¦- -¦¦
¦--------------------¦¦
¦ порт отправителя ¦¦
L====================-¦
-+
г==========T=========¬¦
¦упр.соедин¦тип потоꦦ
¦----------+---------¦¦
¦идент.источ.соединен¦¦
¦--------------------¦¦
¦идент. приемника ¦¦Уровень 2
¦--------------------¦+---------
¦ номер пакета ¦¦протокол
¦--------------------¦¦последова-
¦номер подтверждения ¦¦тельных
¦--------------------¦¦пакетов
¦ номер размещения ¦¦
L====================-¦
--
г====================¬¦
¦ 0 - 546 байтов ¦¦Уровень 3
¦ ¦+---------
¦ прозрачных данных ¦¦управление
¦ -----------¦¦
¦ ¦доп.байт ¦¦
L=========¦==========-¦
--
гTTT======T==========¬
¦¦¦¦резерв¦тип потока¦
L+++======¦==========-
¦¦¦¦конец сообщения
¦¦¦внимание
¦¦посылка подтверждений
¦системный пакет
Рис.2.4
2.8. Управление потоком SPX
Управление потоком является средством, позволяющим уменьшить
количество повторных передач пакетов. В таких случаях, когда про-
исходит тайм-аут без успешного подтверждения, SPX выполняет опти-
мальное количество повторов, прежде чем декларирует обрыв соедине-
ния. SPX автоматически выбирает оптимальный тайм-аут и значение
количества повторов, которые наиболее подходят к физическим харак-
тетистикам соответствующих сетевых устройств. SPX использует эв-
ристический алгоритм тайминга для вычисления оптимального коли-
чества повторов, адаптируясь под время задержки пакетов.
Протокол SPX предназначен для использования в качестве фунда-
мента для всевозможных сложных прикладных систем, включая коммуни-
кационные серверы, шлюзы и системы пересылки сообщений рабочих
станций интерсети.
2.9. Протокол объявления услуг
Создавая открытую архитектуру, фирма Novell открывает разработ-
чикам возможность добавлять к существующему набору сетевых услуг
новые сервисы и услуги. Для облегчения таких разработок среда ин-
терсети NetWare включает в себя протокол и механизм, который поз-
воляет сетевым сервисным программам объявлять свои услуги по имени
и типу интерсети NetWare.
Серверы, использующие этот протокол, имеют свое имя, тип серви-
са и адрес интерсети, та же самая информация существует в маршру-
тизаторах NetWare.
Данный механизм позволяет рабочей станции издать широковеща-
тельный пакет запроса в локальную сеть для получения идентификации
всех серверов любого типа, всех серверов специфического типа или
только ближайшего сервера конкретного типа услуг. Дополнительно
рабочая станция может запросить любой сервер для получения имен и
адресов всех серверов данного конкретного типа.
Весь этот механизм известен как протокол объявления услуг
(SAP). Каждый сервер определенного типа имеет заданное уникальное
имя, которое позволяет клиенту выбирать среди серверов определен-
ный тип и определять желаемый сервер по имени, а не по адресу ин-
терсети.
3. ПРОТОКОЛЫ TCP/IP
Соотношение пpотоколов TCP/IP и Модели Откpытых Систем
Уpовни МОС Пpотоколы TCP/IP
------------------¬ --------T----T-----T-----T---------¬
¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦
¦Пpикладной ¦ ¦Telnet ¦FTP ¦TFTP ¦SMTP ¦ DNS ¦
¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦
+-----------------+ ¦ ¦ ¦ ¦ +---------+
¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦
¦Пpедставительный ¦ ¦ ¦ ¦ ¦ ¦ Дpугие ¦
¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦
+-----------------+ +-------+----+---T-+-----+---------+
¦ ¦ ¦ ¦ ¦
¦Сеансовый ¦ ¦ TCP ¦ UDP ¦
¦ ¦ ¦ ¦ ¦
¦ ¦ ¦ ¦ ¦
¦ ¦ ¦ ¦ ¦
¦Тpанспоpтный ¦ ¦ ¦ ¦
¦ ¦ ¦ ¦ ¦
+-----------------+ +-------T--------+T----------------+
¦ ¦ ¦ IP ¦ ICMP ¦ ---------------+
¦Сетевой ¦ ¦ L---------- ¦ ARP RARP ¦
¦ ¦ ¦ ¦ ¦
+-----------------+ +----------T--------+--T-----------+
¦ ¦ ¦ ¦ ¦ ¦
¦Канальный ¦ ¦ ¦ ¦ ¦
¦ ¦ ¦Ethernet ¦Token Ring ¦ Дpугие ¦
+-----------------+ ¦ ¦ ¦ ¦
¦ ¦ ¦ ¦ ¦ ¦
¦Физический ¦ ¦ ¦ ¦ ¦
¦ ¦ ¦ ¦ ¦ ¦
L------------------ L----------+-----------+------------
Рис.3.1.
Уровневая структура модели позволяет разработчикам сетей сосре-
доточиться на функциях конкретного уровня. Другими словами, нет
необходимости создавать все механизмы для посылки информации по
сети. Разработчикам нужно знать сервисы, которые должны быть обес-
печены вышележащему уровню, какие сервисы нижележащего уровня дос-
тупны, и какие протоколы модели обеспечивают эти сервисы.
Сумму уровней протокольного набора часто называют протокольным
стеком (protocol stack) - см. pис .3.2.
Таблица иллюстрирует некоторые из наиболее общих протоколов
TCP/IP и сервисы, обеспечиваемые ими.
Каждый уровень протокольного стека исходного компьютера взаимо-
действует с соответствующим уровнем компьютера-адресата как равный
с равным. С точки зрения программного обеспечения или пользователя
передача данных имеет место так, словно равноправные
Пpотоколы TCP/IP
Хост-ЭВМ - источник Хост-ЭВМ - адpесат
---------------¬ --------------¬
¦ Пpикладной ¦ ¦ Пpикладной ¦
¦ ¦ ¦ ¦
L-------T------- сообщения или L------T-------
¦ ---------- потоки -----------¦
-------+------¬ -------+------¬
¦Тpанспоpтный ¦ ¦Тpанспоpтный ¦
¦ ¦ ¦ ¦
L------T------- дейтагpаммы (UDP) L------T-------
¦ --------- или сегменты (TCP) ------¦
-------+------¬ -------+------¬
¦Межсетевой ¦ ¦ Межсетевой ¦
¦(Интеpсеть) ¦ ¦ (Интеpсеть)¦
L------T------- L------T-------
¦ ---------- дейтагpаммы IP ------- ¦
-------+------¬ -------+------¬
¦Сетевой ¦ ¦ Сетевой ¦
¦интеpфеис ¦ ¦ интеpфейс ¦
L------T------- L------T-------
¦ ---------- кадpы сети ------------ ¦
¦ ¦
¦ ¦
¦ -----------------------¬ ¦
L-------+ Сетевая аппаpатуpа +------
L-----------------------
Рис.3.2.
уровни посылают свои пакеты непосредственно друг другу.
Например, прикладная программа, посылающая файлы с использова-
нием TCP, выполняет следующие операции:
- прикладной уровень передает поток байтов транспортному уровню
на исходном компьютере; - транспортный уровень делит поток на сег-
менты TCP, добавляя заголовок с последовательным номером сегмента
и передает сегмент межсетевому уровню (Internet-IP);
- уровень IP создает пакет с порцией данных, содержащий сегмент
TCP. Уровень добавляет заголовок пакета, содержащий адреса источ-
ника и получателя IP. Уровень определяет также физический адрес
компьютера - адресата или промежуточных компьютеров на пути к узлу
- адресату и передает пакет уровню логической связи;
- уровень звена данных передает пакет IP в порции данных кадра
уровня звена данных компьютеру - адресату. Здесь может иметь место
направление пакета IP промежуточными системами;
- на компьютере - адресате уровень звена данных удаляет заголо-
вок уровня звена данных и передает пакет IP уровню IP;
- уровень IP проверяет заголовок пакета IP. Если контрольная
сумма, содержащаяся в заголовке, не совпадает с контрольной сум-
мой, вычесленной уровнем IP, пакет уничтожается;