Меню
  Список тем
  Поиск
Полезная информация
  Краткие содержания
  Словари и энциклопедии
  Классическая литература
Заказ книг и дисков по обучению
  Учебники, словари (labirint.ru)
  Учебная литература (Читай-город.ru)
  Учебная литература (book24.ru)
  Учебная литература (Буквоед.ru)
  Технические и естественные науки (labirint.ru)
  Технические и естественные науки (Читай-город.ru)
  Общественные и гуманитарные науки (labirint.ru)
  Общественные и гуманитарные науки (Читай-город.ru)
  Медицина (labirint.ru)
  Медицина (Читай-город.ru)
  Иностранные языки (labirint.ru)
  Иностранные языки (Читай-город.ru)
  Иностранные языки (Буквоед.ru)
  Искусство. Культура (labirint.ru)
  Искусство. Культура (Читай-город.ru)
  Экономика. Бизнес. Право (labirint.ru)
  Экономика. Бизнес. Право (Читай-город.ru)
  Экономика. Бизнес. Право (book24.ru)
  Экономика. Бизнес. Право (Буквоед.ru)
  Эзотерика и религия (labirint.ru)
  Эзотерика и религия (Читай-город.ru)
  Наука, увлечения, домоводство (book24.ru)
  Наука, увлечения, домоводство (Буквоед.ru)
  Для дома, увлечения (labirint.ru)
  Для дома, увлечения (Читай-город.ru)
  Для детей (labirint.ru)
  Для детей (Читай-город.ru)
  Для детей (book24.ru)
  Компакт-диски (labirint.ru)
  Художественная литература (labirint.ru)
  Художественная литература (Читай-город.ru)
  Художественная литература (Book24.ru)
  Художественная литература (Буквоед)
Реклама
Разное
  Отправить сообщение администрации сайта
  Соглашение на обработку персональных данных
Другие наши сайты
Приглашаем посетить
  Html (html.find-info.ru)

   

Интранет сети

Интранет сети

СОДЕРЖАНИЕ

1. Введение

3. Протоколы TCP/IP

4. Обмен сообщениями в сети

5. Работа с файлами в ЛВС

6. Вирусы в сети

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


1. Введение.

Накопленный опыт эксплуатации больших вычислительных сетей, та-

ких как ARPANET и TELENET, показывает, что около 80% всей генери-

руемой в таких сетях информации используется только тем же офисом,

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

предназначается лишь местным потребителям. Поэтому в последние

10-15 лет выделился специальный класс вычислительных сетей - ло-

кальные вычислительные сети (ЛВС), оптимально сочетающие в себе

простоту и надежность, высокую скорость передачи и большой набор

реализуемых функций.

Международный комитет IEEE 802 (институт инженеров по электро-

тизации в области ЛВС, дает следующее определение этим сетям: "...

Локальные вычислительные сети отличаются от других типов сетей

тем, что они обычно ограничены умеренной географической областью,

такой, как группа рядом стоящих зданий: склад, студенческий горо-

док, и в зависимости от каналов связи осуществляют передачу данных

в диапазонах скоростей от умеренных до высоких с низкой степенью

ошибок... Значения параметров области, общая протяженность, коли-

чество узлов, скорость передачи и топология ЛВС могут быть самыми

вплоть до нескольких километров длины, поддержки нескольких сотен

станций разнообразной топологии при скоростях порядка 1-20 и более

" .

Таким образом, отличительными признаками ЛВС можно считать: ох-

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

ность возникновения ошибок в коммуникационном оборудовании.


2. СЕТЕВЫЕ И МЕЖСЕТЕВЫЕ ПРОТОКОЛЫ

(слоев) коммуникационной системы. Каждый слой определяет соот-

ветствующее подмножество функций, необходимых для взаимодействия.

Каждый уровень взаимодействует только со смежными уровнями.

используемых для соединения различных сетевых компонент (например,

оптическое волокно, витой телефонный кабель, коаксиальный кабель и

Уровень управления каналом (слой 2) предназначен для передачи

данных в каждый тип передающей среды. В локальных сетях на этом

уровне решается проблема коллективного использования передающейц

среды и обнаружения и исправления ошибок.

Сетевой уровень (слой 3), часто называемый уровнем коммуникаци-

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

уровне осуществляется прокладка маршрутов пакетов в сети. .

Транспортный уровень (слой 4) обеспечивает надежный транспорт

данных между абонентами сети, включая средства управления потоком

и выявления и исправления ошибок.

Сеансовый уровень (слой 5) предназначен для управления коммуни-

новление, поддержка и окончание сеанса (сессии) обеспечиваются

именах.

Уровень представления (слой 6) предназначен для преобразования

данных в процессе их прохождения по сети. Кодировка, шифрование,

преобразование ASCII/EBCDIC, а также интерпретация управляющих

символов - примеры задач этого уровня.

раммный интерфейс к прикладным процессам. Этот слой обеспечивает

полный набор служб для управления связанными распределенными про-

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

равление сетью.

Существует два различных способа организации обмена данными в

сети - без установления логического соединения и с установлением

соединения.

Метод связи без логического соединения один из самых старых и

простейших в коммуникационной технологии. В таких системах каждый

жит адрес доставки и освобождает систему от предварительного обме-

на служебной информацией между передающим и принимающим узлами.

Примерами таких протоколов являются:

1. Прикладной дейтаграммный протокол Министерства

обороны США.

Ihe Dept. of Defense's User Datagram Protocol (UDP).

2. Протокол обмена пакетов сети Интернет фирмы Ксерокс.

3. Дейтаграммный протокол фирмы Apple.

Apple's Datagram Delivery Protocol (DDP).


Пример взаимодействия между абонентами без

установления соединения

------------------------------>

Клиент "A" Пакет данных 2 Клиент "B"

------------------------------>

Пакет данных 3

------------------------------>

Пример взаимодействия между клиентом "A" и клиентом "B" без ус-

тановления логического канала. Поскольку никакого предварительного

редаются только данные.

Связь без логического соединения характеризуется следующим:

а. Переполнения соединений в рабочих станциях, межсетевых

рутерах, мостах и серверах полностью исключены.

в. Имеется возможность одновременно посылать пакеты множеству

адресатов.

с. Синхронизация приемника и передатчика не является необходи-

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

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

Метод, ориентированный на логическое соединение, является более

поздней технологией. При этом методе устанавливается логический

канал между двумя клиентами перед собственно передачей данных. Па-

кеты запроса на соединение посылаются удаленному клиенту для уста-

новки логического канала. Если удаленный клиент "согласен", то

возвращается пакет подтверждения установления логического канала и

только после этого начинается обмен данными с управлением потоком,

сегментацией и исправлением ошибок. Когда обмен данными завершает-

ся, посылается пакет подтверждения клиенту - инициатору.

Примерами протоколов, ориентированных на соединение,(с установ-

кой логического канала являются):

1. Протокол управления передачей Министерства обороны США. Ihe

2. Протокол последовательных пакетов фирм Ксерокс Xerox's

Sequenced Packet Protocol (SPP). Примерами протоколов, ориентиро-

ванных на соединение,(с установкой логического канала являются):

1. Протокол управления передачей Министерства обороны США. Ihe

Dept. of Defenee's Transmission Control Protocol (TCP) 2. Протокол

последовательных пакетов фирм Ксерокс Xerox's Sequenced Packet

Protocol (SPP). 3. Протокол транзакции фирмы Эппл. Apple's

Appletalk Transaction Protocol (ATP)


установлением логического канала

Пакет запроса "вызов"

----------------------------------->

<----------------------------------

----------------------------------->

Клиент "A" Пакет данных 2 Клиент "B"

----------------------------------->

Пакет данных 3

----------------------------------->

<----------------------------------

"A" и клиентом "B" с пред-

варительной установкой логического канала. Пакет запроса "вызов",

пакет подтверждения вызова и пакет подтверждения данных являются

служебной информацией.

Связь с установлением соединения характеризуется большими нак-

ладными расходами, но обеспечивает значительно более высокий уро-

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

NetWare базируется на эффективном методе без установления логи-

ческого канала. Служба логических каналов базируется на системе,

использующей метод передачи без установления соединения, и пред-

назначается для приложений, нуждающихся в таком сервисе.

2. 1. Переадресация в интерсети

Схема адресации NetWare в интерсети изначально была определена

группой по сетевым системам фирмы Xerox (Xerox Network Systems

колы (Internet Datagram and Internet Transport Protocols).

Пакет межсетевого протокола разделен на две основные части: за-

головок (блок адресации) и блок данных. Блок адресации подразделя-

ется в свою очередь на три части: часть управления, адресная часть

Оба адреса - адрес доставки и адрес отправителя состоят из трех

полей: номера хост-системы, номера сети и номера порта (сокета).

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

безотносительно к составу конкретной интерсети.

Номер сети имеет разрядность 32 бита, что обеспечивает уни-

кальным идентификатором любую сеть в интерсети.

Номер порта (сокета) имеет разрядность 16 битов для идентифика-

ции запроса приема/передачи между процессами.

2. 2. Маршрутизация в интерсети.

Алгоритм маршрутизации в NetWare является распределенным таким

образом, что процессы принятия решения могут приниматься во мно-

жестве узлов интерсети - в любом из маршрутизаторов или сетевых

серверов NetWare. Алгоритм маршрутизации NetWare является адаптив-

При отказе сетевого сервера или моста , адаптивный маршрутиза-

тор ищет альтернативный маршрут. Если находятся несколько маршру-

2. 3. Алгоритм маршрутизации.

Сетевая операционная система NetWare использует распределенный

адаптивный алгоритм передачи пакетов в интерсети. NetWare быстро и

эффективно реагирует на динамические изменения в топологии интер-

ленно. Управление потоком обеспечивается Протоколом Обмена После-

довательными Пакетами (Sequenced Packet Exange Protocol), рассмат-

риваемым далее.

Алгоритм маршрутизации NetWare включает в себя: 1) процесс из-

мерения и идентификации для отслеживания за топологией интерсети,

и 2) протокол рассеивания информации о сетевых характеристиках со-

ответствующего узла. Маршрутизатор выполняет измерения посредством

кет от маршрутизатора (измерителя) по всем остальным маршрутизато-

рам интерсети с отметками интервала времени прохождения между ни-

ров, которые пакет возвращает измерителю. Серверы и маршрутизаторы

следят друг за другом посредством периодической посылки информации

о своем состоянии.

Во время инициализации каждый маршрутизатор запрашивает инфор-

мацию о маршрутах от всех других маршрутизаторов интерсети. Табли-

цы маршрутизаторов строятся во время инициализации и обновляются

по мере приема информации.

После инициализации маршрутизатор посылает широковещательно ин-

тевая информация включает в себя номер сети, удаленность и пример-

ное время передачи 576-байтового пакета от данного маршрутизаторра

В дополнение к данной информации, маршрутизатор передает обнов-

изменения включают в себя все удаления и включения других маршру-

тизаторов и серверов в таблицу, а также изменения в расстоянии

между серверами и маршрутизаторами. Как только изменение в таблице

обнаружено, сервер/маршрутизатор немедленно отсылает информацию об

изменении во все сети, к которым он подсоединен.

Когда теряется информация о сервере или сети, маршрутизатор пы-

тается выровнять ситуацию при помощи нового маршрута, который он

дится, маршрутизатор немедленно сообщает остальным маршрутизаторам

затор также оповещает об этом.

IPX обеспечивает сетевой уровень Advanced NetWare дейтаграммным

интерфейсом. IPX является реализацией Xerox's Interuetwork

Datagram PacKet Protocol (IDP). Назначение IPX - дать прикладным

взаимодействовать напрямую с другими рабочими станциями, серверами

или устройствами интерсети.

IPX позволяет прикладной программе присылать и принимать от-

ветствии с определением Xerox Network Systems (XNS). В среде ин-

пользуя IPX, рабочая станция NetWare может посылать и принимать

пакет от любой станции интерсети. Маршрутизация пакетов между уз-

лами, физически находящимися в сетях различной архитектуры, явля-

ется автоматической и прозрачной. Эта прозрачность обеспечивается

средствами маршрутизации в серверах и маршрутизаторах NetWare.

IPX-пакеты структурированы в точности как пакеты Xerox's XNS

Internet Datagram Protocol (IDP). Пакеты разбиваются на две логи-

ческие части: на заголовок и блок данных. Заголовок в свою очередь

Каждый пакет содержит длину полного пакета интерсети, который

является суммой длины блока заголовка и длока данных. Минимальной

длиной пакета принято считать 30 байтов.

ны:

1 : пакет информации о маршруте;

2 : эхо-пакет;

3 : пакет объявления об ошибке;

4 : пакет обмена пакетами;


Формат пакета обмена Интерсети (IPX)

0 1 15 ¦

¦---------+----------¦¦

¦- сеть доставки -¦¦

доставки ¦- хост доставки -¦¦

¦--------------------¦¦Заголовок

¦ порт доставки ¦+---------

¦ сеть отправителя ¦¦

¦--------------------¦¦

¦- -¦¦

¦--------------------¦¦

¦ порт отправителя ¦¦

--

г====================¬¬

¦ ¦¦

¦ ¦¦Данные

¦ прозрачных данных ¦+------

¦ ¦¦

¦ ---------¦¦

L===========¦========-¦

--

Рис. 2. 3.

2. 5. Программный интерфейс IPX

IPX использует блок управления событиями для координации и акти-

визации определенных операций. Могут возникать два типа событий:

события, связанные с приемопередачей и события специального назна-

чения, определяемые прикладной программой. Услуги IPX по приему и

a. открыть порт;

b. закрыть порт;

c. получить локальную цель;

d. послать пакет;

e. получить межсетевой адрес;

f. сбросить управление;

Asynchronons Event Sheduler (AES), встроенного в IPX. AES является

затраченного времени и переключения событий в соответствии с отме-

ренными интервалами времени. Программный интерфейс AES включает в

себя следующие услуги:

a. планирование события IPX;

c. планирование специального события;

d. получение маркера интервала.

Протокол IPX предназначен для использования в качестве фунда-

мента для построения сложных прикладных систем, включая серверы

связи, шлюзы или системы прямого взаимодействия.

Тест наличия IPX в памяти использует мультиплексное прерывание

новлен.

void far (*ipxspx)(void)

int ipxinstalled(void)

{

union REGS regs;

regs. x. ax =0x7a00;

int86x(0x2f,&regs,&regs,&sregs);

if (regs. h. al != 0xff)

return -1;

}

/*

*

*

*/

{

unsigned int checksum;

unsigned int length;

unsigned char transportcontrol;

unsigned int destnetworksocket;

unsigned char sourcenetworknumber [4];

unsigned char sourcenetworknode [6];

unsigned int sourcenetworksocket;

};

struct ECB

{

void far *linkaddress;

void far (*eventserviceroutine)(void);

unsigned char inuse;

unsigned int socketnumber;

unsigned int restofworkspace;

unsigned char driverworkspace [12];

unsigned char immediateaddress [ 6];

unsigned int packetcount;

void far *address;

unsigned int length;

};

int ipxspxinstalled(void);

int opensocket(unsigned int socket);

int getlocaltarget(unsigned char *destnetwork,

unsigned char *destnode,

unsigned char *bridgeaddress);

void letipxbreath(void);

void ipxsendpacket(struct ECB *ecbptr);

int getinternetaddress(unsigned char connectionnumber,

unsigned char *networknumber,

unsigned char *physicalnode);

unsigned int get1stconnectionnum (char *who);

unsigned char getconnectionnumber(void);

void getuserid(unsigned char connectionnumber,

unsigned char *userid);

/*

* IPX. C -- helper routines for accessing IPX services

*/

#include <stdlib. h>

#include <dos. h>

<mem. h>

<string. h>

#include <ipx. h>

void far (*ipxspx)(void);

int ipxspxinstalled(void)

{

union REGS regs;

regs. x. ax = 0x7a00;

&regs, &regs, &sregs);

if (regs. h. al != 0xff) return -1;

ipxspx = MKFP(sregs. es, regs. x. di);

_BX = 0x0010;

_AL = 0x00;

ipxspx();

if (_AL == 0x00) return 0;

return 1;

}

int ipxcancelevent(struct ECB *ecbptr)

{

_ES = FPSEG( (void far *) ecbptr);

_SI = FPOFF( (void far *) ecbptr);

_BX = 0x0006;

ipxspx();

_AH = 0;

return _AX;

}

void closesocket(unsigned int socket)

{

if (ipxspxinstalled() < 1) return;

_BX = 0x0001;

_DX = socket;

ipxspx();

}

int opensocket(unsigned int socket)

{

if (ipxspxinstalled() < 1) return -1;

_DX = socket;

_BX = 0x0000;

_AL = 0xFF;

ipxspx();

_AH = 0;

}

int getlocaltarget(unsigned char *destnetwork,

unsigned char *destnode,

unsigned int destsocket,

unsigned char *bridgeaddress)

{

unsigned int tempax;

struct {

unsigned char networknumber [4];

unsigned char physicalnode [6];

unsigned int socket;

} requestbuffer;

struct {

} replybuffer;

memcpy(requestbuffer. networknumber, destnetwork, 4);

memcpy(requestbuffer. physicalnode, destnode, 6);

requestbuffer. socket = destsocket;

_ES = FPSEG( (void far *) &requestbuffer);

_SI = FPOFF( (void far *) &requestbuffer);

_DI = FPOFF( (void far *) &replybuffer);

_BX = 0x0002;

ipxspx();

_AH = 0;

memcpy(bridgeaddress, replybuffer. localtarget, 6);

return tempax;

}

void letipxbreath(void)

{

_BX = 0x000A;

}

void ipxlistenforpacket(struct ECB *ecbptr)

{

_ES = FPSEG( (void far *) ecbptr);

_SI = FPOFF( (void far *) ecbptr);

_BX = 0x0004;

ipxspx();

}

void ipxsendpacket(struct ECB *ecbptr)

{

_SI = FPOFF( (void far *) ecbptr);

_BX = 0x0003;

}

int getinternetaddress(unsigned char connectionnumber,

unsigned char *networknumber,

{

union REGS regs;

struct SREGS sregs;

unsigned int len;

unsigned char buffertype;

} requestbuffer;

struct {

unsigned int len;

unsigned char networknumber [4];

unsigned int serversocket;

} replybuffer;

regs. h. ah = 0xe3;

requestbuffer. len = 2;

requestbuffer. buffertype = 0x13;

requestbuffer. connectionnumber = connectionnumber;

regs. x. si = FPOFF( (void far *) &requestbuffer);

sregs. ds = FPSEG( (void far *) &requestbuffer);

&replybuffer);

sregs. es = FPSEG( (void far *) &replybuffer);

int86x(0x21, &regs, &regs, &sregs);

memcpy(networknumber, replybuffer. networknumber, 4);

memcpy(physicalnode, replybuffer. physicalnode, 6);

}

unsigned int get1stconnectionnum (char *who)

{

struct {

unsigned char buffertype;

unsigned char namelen;

unsigned char name [47];

} requestbuffer;

struct {

unsigned int len;

unsigned char numberconnections;

unsigned char connectionnum [100];

} replybuffer;

regs. h. ah = 0xe3;

requestbuffer. buffertype = 0x15;

requestbuffer. objecttype = 0x0100;

requestbuffer. namelen = (unsigned char) strlen(who);

strcpy(requestbuffer. name, who);

replybuffer. len = 101;

&requestbuffer);

sregs. ds = FPSEG( (void far *) &requestbuffer);

&replybuffer);

sregs. es = FPSEG( (void far *) &replybuffer);

int86x(0x21, &regs, &regs, &sregs);

regs. h. ah = 0;

regs. h. al = replybuffer. connectionnum[0];

return regs. x. ax;

}

unsigned char getconnectionnumber(void)

{

geninterrupt(0x21);

return _AL;

}

void getuserid(unsigned char connectionnumber,

unsigned char *userid)

{

union REGS regs;

struct SREGS sregs;

struct {

unsigned int len;

unsigned char buffertype;

unsigned char connectionnumber;

} requestbuffer;

unsigned char objectid[4];

unsigned char objecttype[2];

char objectname[48];

char logintime[7];

} replybuffer;

requestbuffer. len = 2;

requestbuffer. buffertype = 0x16;

replybuffer. len = 61;

regs. x. si = FPOFF( (void far *) &requestbuffer);

&requestbuffer);

regs. x. di = FPOFF( (void far *) &replybuffer);

sregs. es = FPSEG( (void far *) &replybuffer);

int86x(0x21, &regs, &regs, &sregs);

}

основе IPX и предлагает дополнительные услуги Xerox's Sequenced

рабочей станции NetWare получать некоторые преимущества при ис-

рабочими станциями, серверами и устройствами интерсети с дополни-

Внутренне SPX построен на дейтаграммных примитивах IPX и дает

2. 7. Программный интерфейс SPX

В дополнение к программному интерфейсу IPX, SPX предоставляет

b. установка соединения;

c. прослеживание соединения;

e. разрыв соединения;

g. посылка последовательного пакета;

h. прослушивание (ожидание) последовательного пакета.

тельного пакета или по запросу об окончании соединения.


Формат пакета протокола SPX

¦--------------------¦¦

¦ длина ¦¦

¦---------T----------¦¦

¦упр. транс¦тип пакетদ

¦---------+----------¦¦

¦- сеть доставки -¦¦

¦--------------------¦¦

Сетевой адрес ¦- -¦¦

доставки ¦- хост доставки -¦¦

¦--------------------¦¦адресация

¦- сеть отправителя-¦¦

¦--------------------¦¦

Сетевой адрес ¦ -¦¦

отправителя ¦- хост отправителя -¦¦

¦- -¦¦

¦--------------------¦¦

¦ порт отправителя ¦¦

L====================-¦

-+

¦----------+---------¦¦

¦--------------------¦¦

¦идент. приемника ¦¦Уровень 2

¦--------------------¦+---------

¦--------------------¦¦последова-

¦номер подтверждения ¦¦тельных

L====================-¦

--

¦ 0 - 546 байтов ¦¦Уровень 3

¦ ¦+---------

¦ прозрачных данных ¦¦управление

¦ -----------¦¦

¦ ¦доп. байт ¦¦

L=========¦==========-¦

--

гTTT======T==========¬

L+++======¦==========-

¦¦¦внимание

¦¦посылка подтверждений

Рис. 2. 4


2. 8. Управление потоком SPX

Управление потоком является средством, позволяющим уменьшить

количество повторных передач пакетов. В таких случаях, когда про-

исходит тайм-аут без успешного подтверждения, SPX выполняет опти-

мальное количество повторов, прежде чем декларирует обрыв соедине-

количества повторов, которые наиболее подходят к физическим харак-

тетистикам соответствующих сетевых устройств. SPX использует эв-

ристический алгоритм тайминга для вычисления оптимального коли-

чества повторов, адаптируясь под время задержки пакетов.

Протокол SPX предназначен для использования в качестве фунда-

мента для всевозможных сложных прикладных систем, включая коммуни-

станций интерсети.

2. 9. Протокол объявления услуг

Создавая открытую архитектуру, фирма Novell открывает разработ-

чикам возможность добавлять к существующему набору сетевых услуг

воляет сетевым сервисным программам объявлять свои услуги по имени

и типу интерсети 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-+-----+---------+

¦ ¦ ¦ ¦ ¦

¦ ¦ ¦ ¦ ¦

¦ ¦ ¦ ¦ ¦

¦Тpанспоpтный ¦ ¦ ¦ ¦

¦ ¦ ¦ ¦ ¦

+-----------------+ +-------T--------+T----------------+

¦Сетевой ¦ ¦ L---------- ¦ ARP RARP ¦

¦ ¦ ¦ ¦ ¦

+-----------------+ +----------T--------+--T-----------+

¦ ¦ ¦ ¦ ¦ ¦

¦Канальный ¦ ¦ ¦ ¦ ¦

¦ ¦ ¦Ethernet ¦Token Ring ¦ Дpугие ¦

+-----------------+ ¦ ¦ ¦ ¦

¦ ¦ ¦ ¦ ¦ ¦

¦Физический ¦ ¦ ¦ ¦ ¦

L------------------ L----------+-----------+------------

Рис. 3. 1.

Уровневая структура модели позволяет разработчикам сетей сосре-

доточиться на функциях конкретного уровня. Другими словами, нет

сети. Разработчикам нужно знать сервисы, которые должны быть обес-

тупны, и какие протоколы модели обеспечивают эти сервисы.

стеком (protocol stack) - см. pис. 3. 2.

Таблица иллюстрирует некоторые из наиболее общих протоколов

Каждый уровень протокольного стека исходного компьютера взаимо-

действует с соответствующим уровнем компьютера-адресата как равный

передача данных имеет место так, словно равноправные


Пpотоколы TCP/IP

Хост-ЭВМ - источник Хост-ЭВМ - ад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 удаляет


Набоp пpотоколов TCP/IP

------------------------T---------------------------------¬

¦ Пpотокол ¦ Сеpвис ¦

+-----------------------+---------------------------------+

¦ ¦ ¦

¦Internet Protocol (IP) ¦ Межсетевой пpотокол обеспечивает¦

¦ ¦ узлами ¦

¦ ¦ ¦

¦Internet Control ¦ Межсетевой пpотокол упpавления ¦

¦Message Protocol (ICMP)¦ сообщениями упpавляет пеpедачей ¦

¦ ¦ упpавляющих сообщений и сообще- ¦

¦ ¦ ний об ошибках между хост-ЭВМ и ¦

¦ ¦ ¦

¦Address Resolution ¦ Пpотокол pазpешения адpесов ¦

¦Protokol (ARP) ¦ мапиpует межсетевые адpеса в ¦

¦ ¦ физические ¦

¦ ¦ ¦

¦Reverse Address ¦ Обpатный пpотокол pазpешения ¦

¦Resolution Protocol ¦ адpесов мапиpует физические ¦

¦ ¦ ¦

¦Transmission Control ¦ Пpотокол упpавления пеpедачей ¦

¦Protocol (TCP) ¦ обеспечивает сеpвис надежной ¦

¦ ¦ доставки потока между клиен- ¦

¦ ¦ тами ¦

¦ ¦ ¦

¦ ¦ ный сеpвис доставки пакетов без ¦

¦ ¦ ¦

¦File Transfer ¦ Пpотокол тpанспоpта файлов ¦

¦ ¦ файлов пользовательского уpовня ¦

¦ ¦ ¦

¦Telnet ¦ Эмуляция теpминала ¦

¦ ¦ ¦

L-----------------------+----------------------------------

заголовок пакета IP и передает сегмент TCP уровню TCP. Уровень

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

- уровень TCP подсчитывает контрольную сумму для заголовка TCP

и данных. Если вычесленная и принятая в заголовке контрольные сум-

уровень TCP посылает положительное подтверждение на компьютер -

источник;

передает полученные байта из сегмента прикладной программе;

- прикладная программа на компьютере - адресате получает поток

байтов так, словно она была связана непосредственно с прикладной

3. 1. Физические адреса и межсетевые адреса.

На уровне звена данных узлы в сети взаимодействуют с другими

узлами сети, используя адреса, специфичные для данной сети. Каждый

физический адрес в Ethernet является 6-байтным числовым значением,

лем аппаратуры. Сети X. 25 используют стандарт X. 121 физических ад-

ресов длиной в 14 цифр. Сети LocalTalk используют 3байтовые адре-

са, состоящие из 2-байтового номера сети и 1-байтового номера уз-

ла. В сети LocalTalk номер сети статический, а номер узла назнача-

ется динамически при запуске узла.

Адрес Межсетевого Протокола (адрес IP) для узла является логи-

ческим адресом - он не зависит от аппаратуры или конфигурации сети

и имеет одну и туже форму независимо от типа сети. Это 4байтное

(32 бита) числовое значение, которое идентифицирует как сеть, так

4-байтовый адрес IP обычно представляется десятичными числами

Узлы, использующие протоколы TCP/IP, транслируют адреса назна-

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

Каждая посылающая прикладная программа посылает свой адрес IP в

пользуя адрес IP источника из пакета.

Поскольку адреса IP не зависят от конкретного типа сети, они

гую сеть. В каждом типе сети программное обеспечение TCP/IP ставит

в соответствие физические адреса сети и адреса IP. Если пакет пе-

редается в другую сеть, адрес IP получателя транслируется в физи-

Сетевой адрес может быть определен одним из следующих способов:

- если Вы хотите соединить Вашу сеть с Интерсетью DARPA, Вы

должны получить зарегистрированный адрес Интерсети в следующей

организации: DDN Network Information Center SRI International

Ваша сеть не является частью Интерсети DARPA, Вы можете

выбрать произвольный сетевой адрес. При этом для всех узлов в

сети должны быть выполнены следующие требования:

- сетевая часть каждого адреса должна соответствовать адресу

сети, например, все узлы в сети 129. 47 должны использовать адреса

сети 129. 47;

- адрес IP для каждого узла должен быть уникальным внутри Вашей

сети.

3. 2. Трансляция межсетевых адресов в физические

Когда пакет IP передается по сети, он прежде всего включается в

физический кадр, используемый в данной сети, например, на рис. 3. 3.

показан пакет IP, включенный в кадр Ethernet. Пакет IP содержит

межсетевой адрес узла, но кадр

ленным по сети. Следовательно, посылающий узел должен быть в сост-

оянии определить какой физический адрес в сети соответствует адре-

су IP, содержащемуся в пакете IP.

Адрес IP отображается в физический адрес с использованием Про-

токола Разрешения Адресов (ARP) на широковещательных сетях, таких

как Ethernet, Token Ring, ARCnet. Когда узел должен послать пакет

IP он должен определить какой физический адрес в сети соответству-

зического адреса узел посылает широковещательный пакет ARP, содер-

узла с данным адресом IP получателя. Узел с этим адресом посылает

свой физический адрес назад запрашивающему узлу.

Для быстрой передачи пакетов и уменьшения числа широковеща-

тельных запросов, каждый узел поддерживает кеш разрешения адресов.

лучает ответ, он создает вход в кеш-памяти разрешения адресов.

Вход отображает адрес IP в физический адрес. Когда узел нуждается

в посылке следующего пакета IP, он ищет адрес IP в кешпамяти. Если

данный адрес IP находится, узел использует соответствующий физи-

ческий адрес для пакета. Широковещательный запрос IP посылается

только если соответствующий адрес IP не обнаруживается в кеш-памя-

ти.


Включение дейтагpаммы IP в кадp Ethernet

¦дейтаграмма ¦

¦ IP ¦

г=======T========T========T========T=============T========¬

¦ Пpеам-¦ адрес ¦ адрес ¦ тип ¦ данные ¦контр. ¦

¦ була ¦ получа-¦ источ-¦ пакета¦ пакета ¦сумма ¦

¦ ¦ теля ¦ ника ¦ ¦ ¦Ethernet¦

L=======¦========¦========¦========¦=============¦========-

¦ ¦

¦------- заголовок кадра-----------¦--- данные---¦ ¦

¦ ¦ кадра ¦ ¦

¦ ¦

¦-------------------- кадр Ethernet-----------------------¦

Рис. 3. 3.

3. 3. Ненадежный сервис доставки пакетов

В наборе протоколов TCP/IP все пакеты доставляются ненадежным

сервисом доставки пакетов неориентированным на соединение Межсете-

вого Протокола. Сервис ненадежен, поскольку доставка пакета не га-

рантируется. Сервис не ориентирован на соединение, поскольку все

пакеты передаются независимо друг от друга. Приложения TCP/IP ис-

например, ожиданием ответов от узла получателя. Кроме того,

ошибках (ICMP) для информирования узлов о проблемах. Термин

"маршрутизация" относится к передаче дейтаграммы от одного узла к

другому на той же или другой сети. Термин относится также к путям,

которые выбираются для передачи дейтаграммы IP от источника к по-

лучателю на базе адреса IP, содержащегося в дейтаграмме. Существу-

ет два способа маршрутизации: прямая и непрямая.

рамках одной сети. Узел, посылающий дейтаграмму IP, может прямо

запросить другие узлы в сети о физическом адресе, соответствующем

адресу IP, включить дейтаграмму IP в физический кадр с данным фи-

сети.

Непрямая маршрутизация связана спередачей дейтаграммы из одной

таграмма посылается к узлу другой сети, сетевая часть адреса IP

источника и адреса IP получателя различны. Посылающий узел распоз-

нает эту разницу и посылает пакет к маршрутизатору, который соеди-

няет исходную сеть с другими сетями.

Посылающий узел имеет таблицу адресов IP для одного или больше

компьютеров в сети, которые функционируют в качестве маршрутизато-

ров к другим сетям. Узел ищет адрес IP маршрутизатора в своей таб-

лице и посылает широковещательный запрос ARP к маршрутизатору для

получения его физического адреса. Затем пакет, содержащий дейтаг-

IP принадлежит к сети, подключенной непосредственно к маршрутиза-

тору, последний посылает дейтаграмму непосредственно узлу назначе-

ния. Для всех других адресов сетей маршрутизатор имеет только ад-

рес другого маршрутизатора, который может направить пакет к полу-

чателю.

3. 4. Межсетевой Протокол IP

Межсетевой протокол определяет форму пакетов и способы под-

держки пакетов при передаче и приеме. Форма пакета называется дей-

ваемому по сети. Дейтаграмма имеет секцию заголовка, содержащую


Структура дейтаграммы IP

¦ Заголовок дейтаграммы IP ¦ Данные дейтаграммы IP ¦

¦ ¦ ¦

г=============T=============+==============T==============¬

¦ Информация ¦ Адрес ¦ Адрес ¦ Данные ¦

¦ заголововка¦ источника IP¦ получателя IP¦ ¦

L=============¦=============¦==============¦==============-

Рис. 3. 4.

В отличие от кадра сети, имеющего физическую длину, установлен-

ную в соответствии с характеристиками физической сети, длина дей-

таграммы устанавливается сетевым программным обеспечением. Прог-

раммное обеспечение IP на узле создает дейтаграмму, которая поме-

щается внутрь кадра сети. Двигаясь к узлу назначения, однако, дей-

таграмма может пройти по многим сетям различных типов с различными

длинами физических кадров. Для поддержки передачи пакета протокол

IP задает метод разбиения дейтаграмм на фрагменты на каждом узле,

ассемблирования пакетов на узле назначения. Так маршрутизатор,

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

лучаемые из одной сети, если вторая сеть имеет меньший размер фи-

зического кадра, чем первая. Будучи однажды фрагментированными,

пакеты не реассемблируются до достижения точки назначения.

3. 5. Сообщения об ошибках и управляющие сообщения

Другой протокол набора TCP/IP это Межсетевой Протокол Управляю-

щих Сообщений (ICMP). Пакеты ICMP содержат информацию об авариях в

сети: нефункционирующих узлах и шлюзах, проблемах с пакетами в

ICMP и затем предпринимает соответствующие действия в соответствии

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

ние ICMP может передаваться через несколько сетей для достижения

назначения, оно помещается в порцию данных дейтаграммы IP.

3. 6. Протоколы транспортного уровня: UDP и TCP

Два протокола составляют транспортный уровень набора TCP/IP: м

Пользовательский Дейтаграммный Протокол (UDP) и Протокол Управле-

ния Передачей (TCP). UDP обеспечивает ненадежный сервис доставки

без соединений для посылки и получений сообщений. TCP добавляет

надежные потоковые сервисы доставки над ненадежным сервисом доста-

ки пакетов без соединений IP.

В наборе TCP/IP UDP позволяет приложениям обмениваться индиви-

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

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

типа протокольных портов: хорошо известное назначение портов и ди-

TCP/IP резервирует соответствующие номера портов для соответст-

вующих приложений. Порты сномерами от 1 до 255 являются хорошо из-

вестными номерами портов и назначаются соответствующим широко из-

вестным приложениям. В случае динамически связанных портов прило-

жение, запрашивающее сервисы у процесса, должны прежде всего зап-

росить узел для идентификации порта, который использует процесс.

Он может в дальнейшем направлять дейтаграммы UDP этому порту.

Дейтаграмма UDP включается в одну или более дейтаграмм IP, ко-

торые в свою очередь включаются в кадр сети, например, Ethernet

как показано на рис. 3. 5. В этом примере адрес IP

Включение дейтаграммы UDP

¦ Заголовок ¦ Данные ¦

¦ UDP ¦ UDP ¦

г======T=====T=+==========¬

¦Порт ¦Порт ¦ ¦ Данные ¦

¦ ¦

¦

г=========+=========================¬

¦Заголовок¦ ¦

¦ IP ¦ ¦

L=========¦=========================-

¦ ¦

¦--------- Дейтаграмма IP ----------¦

¦ ¦

г==========+===================================+==========¬

¦Заголовок ¦ ¦ Контр. ¦

¦кадра ¦ ¦ сумма ¦

L==========¦===================================¦==========-

¦ ¦

¦------------------- Кадр Ethernet -----------------------¦

¦ ¦

Рис. 3. 5.

программное обеспечение IP извлекает дейтаграмму UDP и доставляет

ее программному обеспечению уровня UDP. Программное обеспечение

уровня UDP доставляет данные UDP и управляющую информацию к задан-

ному протокольному порту назначения. Процесс на этом порту ис-

пользует данные из дейтаграммы UDP. Дейтаграмма UDP также содержит

Для приложений, которые нуждаются в посылке значительных

объемов данных, ненадежная передача может создать трудности. Прик-

ладные программисты будут должны разрабатывать дорогие процедуры и

модули обеспечения надежной передачи. Набор протоколов TCP/IP об-

ходит эти проблемы через использование Протокола Управления Пере-

дачей (TCP) - надежного протокола с потоковой доставкой. Он уста-

приложениями и посылает поток байтов получателю в том же поряд-

систем. Эти порты аналогичны тем, что использует протокол UDP.

Приложение, начинающее передачу, известно как активная сторона,

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

передачи, известное как пассивная сторона, обычно использует широ-

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

ожиданием достаточного количества данных для заполнения большой

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

ет, что посылающая и принимающая стороны (приложения) до передачи

должны установить соглашения относительно содержимого потока. TCP

использует полнодуплексную передачу.

получены и обработаны в порядке последовательных номеров. Когда

приемный конец получает следующий сегмент последовательности, он

посылает квитанцию - подтверждение узлу - источнику. Когда узел -

источник получает подтверждение, он индицирует приложению то, что

сегмент успешно передан. Если узел - источник в течение определен-

ного таймаута не получает подтверждения, он повторно передает со-

ответствующий сегмент. Эта схема, называемая "положительное

", обеспечивает надежность пе-

редачи.

3. 7. Транспортная система TCP/IP в NetWare версии 3. 11

Транспортная система TCP/IP обеспечивает возможности подключе-

вом сервере TCP/IP включает в себя набор NLM для поддержки возмож-

онирования приложений, таких как NetWare NFS, возможность проклад-

ки туннелей IPX через интерсети IP. Дополнительно TCP/IP обеспечи-

приложениями, написанными для интерфейсов типа сокет 4. 3BSD UNIX

или AT&T Streams Transport Layer Interface (TLI). NetWare v3. 11

TCP/IP включает следующие загружаемые модули и файлы базы данных:

NLM NetWare TCP/IP (TCPIP. NLM)

The Simple Network Management Protocol NLM

The SNMP event logger NLM (SNMPLOG. NLM)

The TCP/IP Console NLM (TCPCON. NLM)

The IP configuration NLM (IPCONFIG. NLM)

The IPX/IP Tunnel module (IPTUNNEL. LAN)

Sample Internet database files (GATEWAYS, HOSTS,

NETWORKS, PROTOCOL, and SERVICES)

Архитектура TCP/IP приведена на рис. 3. 6.


Архитектура TCP/IP в NetWare

-----------------------------------------------------------¬

¦ ¦

+----------------------------------------------------------+

¦------------¬ ----------¬ -----------¬ --------------¬¦

¦¦ Другие ¦ ¦ TCPCON ¦ ¦ SNMPLOG ¦ ¦ Другие ¦¦

¦¦ приложения¦ ¦ ¦ ¦ ¦ ¦ приложения ¦¦

¦L-----T------ L----T----- L-----T----- L------T-------¦

¦ ¦ L--------------+--------------+ ¦

¦ ¦ ¦ ¦

¦ ¦ г============¬ ¦ ¦

¦ \¦/ ¦ ¦ \¦/ ¦

¦--------------¬ ¦ ¦ -------+------¬¦

¦¦ уровня TLI ¦ ¦ ¦ ¦ ¦¦

¦L-----T-------- L======T=====- L------T-------¦

¦ ¦ ¦ ¦ ¦

¦------+----------------------+--------------------+------¬¦

¦¦ Транспортная система TCP/IP NetWare ¦¦

¦L--------------------------T------------------------------¦

¦ ¦ ¦

¦ L----T----------T----------T------ ¦

¦ ----------- \¦/ L-----------¬ ¦

¦ -----+----¬ -------+------¬ ------+----¬ ¦

¦ ¦ Драйвер ¦ ¦ Драйвер ¦ ¦ Драйвер ¦ ¦

¦ L----T----- L------T------- L-----T----- ¦

¦ \¦/ \¦/ \¦/ ¦

¦------+--------¬ --------+---------¬ -------+-----¬ ¦

¦¦ Адаптер ¦ ¦ Адаптер ¦ ¦ Адаптер ¦ ¦

¦¦ ¦ ¦ ¦ ¦ ¦ ¦

¦¦ Ethernet ¦ ¦ Token Ring ¦ ¦ Arcnet ¦ ¦

¦L--------------- L------------------ L------------- ¦

¦ ¦

L-----------------------------------------------------------

Рис. 3. 6.

конфигурации сетей IP IPX.

Сеть IP (серверы и клиенты UNIX) могут взаимодействовать между

собой, используя протокол TCP/IP, в одной физической сети с серве-

рами и клиентами NetWare. Пример такой сети Ethernet с адресом се-

ти IP 129. 1. 0. 0 и с адресом сети IPX 84404556 приведен на рисунке

3. 7.


Совместная работа TCP/IP и SPX/IPX

г================¬

¦ NetWare Server ¦ ---------------¬

¦ ¦ ¦ UNIX Server ¦

129. 1. 0. 3 ¦ ¦ 129. 1. 0. 1

¦ ¦

¦IPX Net=84404556 ¦ IP Net=129. 1. 0. 0

------T---+------------T----+------------T-------------

¦ ¦ ¦

¦ ¦ ¦

------+--------¬ -----+---------¬ ¦ 129. 1. 0. 2

¦NetWare Client¦ ¦NetWare Client¦ -----+-----------¬

¦ ¦ ¦ ¦ ¦UNIX Workstation¦

L--------------- L--------------- L-----------------

Рис. 3. 7.

Сети IP и IPX могут подключаться к одному серверу NetWare. Кли-

мощью Netware NFS (рис. 3. 8.).

Подключение сетей TCP/IP и SPX/IPX к серверу

---------------------¬ --------------¬

¦129. 1. 0. 2 ¦129. 1. 0. 1

¦ ¦

¦ ¦Сеть IP=129. 1. 0. 0

-----------+----------------T------+-------------------

129. 1. 03 ¦

¦ Сервер NetWare ¦

L=========T========-

¦

Сеть IPX = 84404556 ¦ Сеть Token Ring

------------------------+-----------------------¬

L------T------------------------------------T----

¦ ¦

-------+-------¬ -------+-------¬

L--------------- L---------------

Рис. 3. 8.

Есть возможность маршрутизации пакетов IP через сервер NetWare.

работать с сервером Netware 2.

---------------------¬ --------------¬

¦Рабочая станция UNIX¦ ¦ Сервер UNIX ¦

L---------T----------- L-----T--------

¦129. 1. 0. 2 ¦129. 1. 0. 1

¦ ¦

¦ ¦Сеть IP=129. 1. 0. 0

-----------+----------------T------+-------------------

129. 1. 03 ¦

г========¦=========¬

¦ Сервер NetWare 1¦

L=========T========-

¦

Сеть IPX = 84404556 ¦ Сеть Token Ring

------------------------+-----------------------¬

L----T------------------T-----------------T------

¦ ¦ ¦

-------+-------¬ г=======¦========¬ -------+-------¬

Включив в состав сети IP, изображенной на рис. 3. 10. -, маршрути-

затор IP можно обеспечить выход в глобальную интерсеть IP.

Средства прокладки туннелей IP обеспечивают прозрачное взаимо-

действие сетей IPX через интерсеть IP. Туннель IP представляет

стандартный интерфейс драйвера локальной сети для системы NetWare.

Сама интерсеть IP является средой передачи. В этом смысле адрес IP

выполняет в среде IP ту же функцию, что физический адрес в физи-

ческой среде. Пример использования туннеля IP для взаимодействия

сетей IPX через интерсеть IP приведен на рис. 3. 10.

Туннель IP г============¬

¦ L======T=====-

¦ ¦

¦ Сервер NetWare +-+-¦Интерсеть IP¦---+ Сервер NetWare ¦

¦ +---¦ ¦-T-+ ¦

L--------T-------- L============- ¦ L-----------------

¦ ¦

¦ ¦

г========¦=======¬ Туннель IP

¦ Сеть IPX ¦

L================-

Рис. 3. 10.

4. ОБМЕН СООБЩЕНИЯМИ В СЕТИ.

Две программы, работающие на разных узлах сети, могут обмени-

невый драйвер сети и пересылка сообщений через общий файл-сервер.

Пример программы, посылающей сообщение на консоль сервера :

Uses Dos;

var k : integer;

sendString : string;

var

reg : registers;

s : array [0.. 64] of byte;

i : integer;

begin

s[0] := 0;

s[1] := 4;

s[3] := length(Message);

for i := 1 to Length(Message) do

s[i+3] := ord(Message[i]);

reg. ah := $0E1;

reg. bx := reg. ds;

reg. ds := seg(s);

reg. si := ofs(s);

intr($21,reg);

reg. ds := reg. bx;

end;

begin

If ParamCount = 0 then

begin

Writeln('Send message to console utility by S. Perevoznik, 1993');

<message>');

halt;

end;

begin

SendString := SendString + Paramstr(k) + ' ';

end;

SendToCon(sendString);

Writeln('Message send to console... ');

end.

следующие функции :

{$F+,O+}

Interface

Uses Dos;

Function GetUserName(ConnectionNumber : byte;

Var ObjectFree : boolean) : string;

Function LocalDisk : boolean;

Function GetUserName(ConnectionNumber : byte;

var

WordPtr:^Word;

r : registers;

SendPacket : array[0.. 4] of byte;

ObjectType : word;

function GetWord(P: pointer): word;

var

begin

end;

begin

WordPtr := addr(SendPacket);

WordPtr^:=2;

WordPtr := addr(SendPacket);

r. ds := seg(SendPacket);

r. es := seg(ReplyPacket);

then

begin

ObjectType := GetWord(addr(ReplyPacket[6]));

if ObjectType = 0 then ObjectFree := true

else

ObjectFree := false;

move(ReplyPacket[8],UserName[1],48);

GetUserName := Username;

end;

end;

Function LocalDisk : boolean;

begin

r. ah := $19;

r. ah := $e9;

r. al := 0;

r. dh := 0;

intr($21,r);

if r. ah = 128 then localdisk := true

else localdisk := false;

end;

Procedure SendBroadcastMessage(Message:string; ConnectionNumber:byte);

var

SendPacket : array [0.. 160] of byte;

begin

SendPacket[2] := 0;

SendPacket[4] := ConnectionNumber;

SendPacket[5] := length(Message);

move(Message[1],SendPacket[6],length(Message));

WordPtr := addr(SendPacket);

WordPtr^ := Length(Message) + 4;

r. ah := $e1;

r. si := ofs(SendPacket);

r. es := seg(ReplyPacket);

r. di := ofs(ReplyPacket);

intr($21,r);

end;

end.

Следующая программа демонстрирует возможность получения списка поль-

зователей, подключенных к сети:

uses Dos;

function GetWord(P: pointer): word;

var

begin

WordPtr := P;

GetWord := swap(WordPtr^);

end;

Function GetLong(P:Pointer): longint;

type long= record

case integer of

1:(Long1: Longint);

2:(Word1,Word2:word);

end;

var LongPtr :^Long;

L : long;

begin

LongPtr := P;

L. Word2 := swap(LongPtr^. Word1);

GetLong:= L. Long1;

end;

Function GetConnectionInformation(ConnectionNumber:byte;

Var ObjectName : string; var ObjectType : word;

var ObjectID : longint; var LoginTime : string): byte;

var

WordPtr:^Word;

r:registers;

SendPacket : array[0.. 4] of byte;

ReplyPacket : array[0.. 64] of byte;

begin

SendPacket[2] := $16;

SendPacket[3] := ConnectionNumber;

WordPtr^:=2;

WordPtr := addr(SendPacket);

r. ah := $e3;

r. ds := seg(SendPacket);

r. si := ofs(SendPacket);

intr($21,r);

if r. al = 0

then

begin

ObjectID := GetLong(addr(ReplyPacket[2]));

move(ReplyPacket[8],ObjectName[1],48);

ObjectName[0] := chr(48);

LoginTime[0] := chr(7);

end;

GetConnectionInformation := r. al;

end;

var

ObjectName,LoginTime : string;

ObjectType : word;

ObjectID : longint;

ConnectionNumber, CCode : byte;

begin

ConnectionNumber := 1;

CCode := GetConnectionInformation(ConnectionNumber,

ObjectName,ObjectType,ObjectID,LoginTime);

while (CCode <> 253) and (ConnectionNumber<255)

do

begin

if CCode <> 0

then

writeln('Cod ',CCode,ConnectionNumber)

else if ObjectType <>0 then begin

Writeln(ConnectionNumber,' ',ObjectType,' ',ObjectID);

Writeln(ObjectName);

end;

inc(ConnectionNumber);

CCode := GetConnectionInformation(ConnectionNumber,

ObjectName,ObjectType,ObjectID,LoginTime);

end;

end.

для обслуживания файловой системы:

; Данная библиотека процедур разработана для использования в прог-

; раммах, написанных на Турбо-Паскале версии 4. 0 и выше.

; Joe R. Doupnik and Sergey V. Perevoznik, 1988 - 1993

lprog equ 1 ; 0 for small memory, 1 for large memory model

if lprog

else

endif

begin macro name ; begin a function, near or far

public name

if lprog

name proc far

else

name proc near

endif

endm

; define Borland Pascal segments

; use neither Group nor Class

data segment word public

cseg segment byte public

assume cs:cseg, ds:data, es:nothing

;--------------------------------

; Extended Open a File func(61) (3DH)

;

; var

; Mode, Handle, RetCode : Integer;

; Filename : String[n];

;

; RetCode := xtndopn(Mode, Handle, Filename);

;

begin xtndopn

push bp

mov bp,sp

push ds

lds si,[bp+x+8] ; put the mode in ax

lds dx,[bp+x] ; ptr to ASCIIZ string

inc dx ; add 1 to get to the beginning of the string

int 21h

jc xtndopx ; carry set means failure

lds di,[bp+x+4] ; put the handle into the variable

mov [di],ax ; if there is no error and

xor ax,ax ; return a 0

pop bp

ret 14

xtndopn endp

;--------------------------------

;

; var

; Func, Attribute, ErrCode : Integer;

; Filename : String[n];

;

;ErrCode := setattr(Func, Attribute, Filename);

;

begin setattr

push bp

mov bp,sp

push ds

lds si,[bp+x+8] ; put the subfunction in ax

mov ax,[si]

mov ah,043h ; put the function in ah

lds dx,[bp+x] ; ptr to var desc block for ASCIIZ string

inc dx ; add 1 to get the address of the string

lds si,[bp+x+4] ; put the attribute to set in cx

mov cx,[si]

int 21h

jc setattx ; carry set means failure

lds di,[bp+x+4] ; put the returned attributes in the

mov [di],cx ; variable if there is no error

xor ax,ax ; and return zero

setattx:mov ah,0

pop bp

ret 14

setattr endp

;--------------------------------

; End of Job Flag Status func(187) (BBH)

;

; var

;

;

begin eojstat

push bp

mov bp,sp

push ds

lds si,[bp+x] ; put the flag in ax

mov ax,[si]

mov ah,0BBh ; put the function in ah

mov ah,0

mov [di],ax

ret 6

eojstat endp

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

;

;

; var

; ErrCode,FileHandle,HiByteOffset,LoByteOffset : Integer

; HiLockLen,LoLockLen,Flags,TimeOut : Integer

;

;ErrCode := PRLHLog(FileHandle,HiByteOffset,LoByteOffset,HiLockLen,

; LoLockLen,Flags,TimeOut);

;

begin PRLHLog

push bp

mov bp,sp

push ds

lds si,[bp+x+24] ; FileHandle

mov bx,[si]

lds si,[bp+x+20] ; ByteOffset

mov cx,[si]

lds si,[bp+x+16]

lds si,[bp+x+4] ; AL = Log Flags

mov ax,[si]

lds si,[bp+x+12] ; LockLen

mov si,[si]

lds di,[bp+x+8]

mov di,[di]

lds bp,[bp+x] ; time out

mov bp,[bp]

mov ah,0BCH

int 21H

mov ah,0 ; clear the high byte of the return

pop ds

pop bp

ret 30

PRLHLog endp

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

;

; Physical Record Lock: Release Rec BDH

;

; var

; FileHandle,HiByteOffset,LoByteOffset,ErrCode,

; HiWordLen,LoWordLen : integer;

; ErrCode := PRLHRel(FileHandle,HiByteOffset,LoByteOffset,HiWordLen,

; LoWordLen:integer);

begin PRLHRel

push bp

mov bp,sp

push ds

lds si,[bp+x+16] ; FileHandle

mov bx,[si]

lds si,[bp+x+12] ; HiByteOffset

lds si,[bp+x+8] ; LoByte

mov dx,[si]

lds si,[bp+x+4] ; HiWordLen

mov si,[si]

lds di,[bp+x] ; LoWordLen

mov di,[di]

mov ah,0BDH

int 21H

mov ah,0

pop ds

pop bp

PRLHRel endp

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

;

; Physical Record Lock: Release Clr BEH

;

; var

; HiWordLen,LoWordLen : integer;

; ErrCode := PRLHRel(FileHandle,HiByteOffset,LoByteOffset,HiWordLen,

; LoWordLen:integer);

;

begin PRLHClr

push bp

mov bp,sp

push ds

lds si,[bp+x+16] ; FileHandle

mov bx,[si]

lds si,[bp+x+12] ; ByteOffset

mov cx,[si]

lds si,[bp+x+8]

mov si,[si]

lds di,[bp+x] ; LoWordLen

mov ah,0BEH

int 21H

mov ah,0

pop ds

pop bp

ret 22

PRLHClr endp

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

;

;

; var

; ErrCode,fcb,HiByteOffset,LoByteOffset : Integer;

; HiLockLen,LoLockLen,Flags,TimeOut : Integer;

;

; ErrCode := PRLFLog(fcb,HiByteOffset,LoByteOffset,HiLockLen,LoLockLen,Flags,TimeOut);

;

begin PRLFLog

push bp

mov bp,sp

push ds

lds si,[bp+x+24] ; FCB

mov dx,[si]

lds si,[bp+x+20] ; ByteOffset

mov bx,[si]

lds si,[bp+x+16]

mov cx,[si]

lds si,[bp+x+4] ; AL = Log Flags

mov ax,[si]

mov di,[si]

lds si,[bp+x+12] ; hi lock length

mov bp,[bp]

int 21H

mov ah,0

pop ds

pop bp

ret 28

PRLFLog endp

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

;

; Physical Record Lock: Rel Rec FCB C0H

;

; var

; ErrCode,fcb,HiByteOffset,LoByteOffset : Integer;

;

; ErrCode := PRLFRel(fcb,HiByteOffset,LoByteOffset);

;

begin PRLFRel

push bp

mov bp,sp

push ds

lds si,[bp+x+4] ; ByteOffset

lds si,[bp+x]

mov cx,[si]

mov ah,0C0H

int 21H

mov ah,0

pop ds

pop bp

ret 12

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

;

; Physical Record Lock: Clr Rec FCB C1H

;

; var

;

; ErrCode := PRLFclr(fcb,HiByteOffset,LoByteOffset);

;

begin PRLFClr

mov bp,sp

lds dx,[bp+x+8] ; FCB

lds si,[bp+x+4] ; ByteOffset

mov bx,[si]

lds si,[bp+x]

mov cx,[si]

mov ah,0C0H

pop ds

pop bp

ret 12

PRLFClr endp

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

;

; Lock Record Set C2H

;

; var

; ErrCode, Flags, TimeOut : Integer;

;

; ErrCode := PRLSLck(Flags,TimeOut);

;

begin PRLSLck

push bp

mov bp,sp

push ds

lds si,[bp+x+4] ; AL = Lock flag bits

mov ax,[si]

mov bp,[si]

mov ah,0C2h

mov ah,0

pop ds

pop bp

PRLSLck endp

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

;

; Release Record Set C3H

;

; var

; ErrCode : Integer;

;

; ErrCode := PRLSRel;

;

begin PRLSRel

mov ah,0C3h

mov ah,0

ret

PRLSRel endp

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

;

; Clear Record Set C4H

;

; var

; ErrCode : Integer;

;

; errcode := PRLSClr;

;

begin PRLSClr

mov ah,0C4h

mov ah,0

ret

PRLSClr endp

;--------------------------------

; Semaphores func(197) (C5H) subfunction 00h

;

; var

; RetCode,SemaValu,HiHandle,LoHandle,OpenCnt : Integer;

; Sema4 : String[n];

;

; RetCode := OpenSem(Sema4,SemaValu,HiHandle,LoHandle,OpenCnt);

;

begin OpenSem

push bp

mov bp,sp

push ds

lds dx,[bp+x+16] ; ptr to Semaphore string

; inc dx ; add 1 to get the address of the string

mov cx,[si]

mov ax,0C500h ; set the function

int 21h

mov bh,00h

lds di,[bp+x] ; return the open count

mov [di],bx

lds di,[bp+x+4] ; return low handle

mov [di],cx

lds di,[bp+x+8] ; return high handle

mov [di],dx

mov ah,00h

pop ds

pop bp

ret 22

;

; var

; RetCode,HiHandle,LoHandle,SemaValu,OpenCnt : Integer;

;

; RetCode := ExamSem(HiHandle,LoHandle,SemaValu,OpenCnt);

;

begin ExamSem

push bp

mov bp,sp

lds si,[bp+x+12] ; hi handle

mov dx,[si]

lds si,[bp+x+8] ; lo handle

mov ax,0C501h ; set function

int 21h

lds di,[bp+x+4] ; return semaphore value

mov [di],cx

mov dh,00h

lds di,[bp+x]

mov [di],dx ; return open count

mov ah,00h

pop bp

ret 16

ExamSem endp

;--------------------------------

; Semaphores func(197) (C5H) subfunction 02h

;

; var

;

; RetCode := WaitSem(HiHandle,LoHandle,TimeOut);

;

begin WaitSem

push bp

mov bp,sp

push ds

lds si,[bp+x+8] ; hi handle

mov dx,[si]

lds si,[bp+x+4] ; lo handle

mov cx,[si]

lds si,[bp+x]

mov bp,[si] ; set time out

mov ax,0C502h ; set function

int 21h

pop ds

pop bp

ret 12

WaitSem endp

;--------------------------------

;

; var

; RetCode,HiHandle,LoHandle : Integer;

;

; RetCode := SigSem(HiHandle,LoHandle);

;

begin SigSem

push bp

mov bp,sp

push ds

lds si,[bp+x+4] ; hi handle

mov dx,[si]

lds si,[bp+x] ; lo handle

mov cx,[si]

mov ax,0C503h ; set function

int 21h

pop ds

pop bp

ret 8

SigSem endp

;--------------------------------

; Semaphores func(197) (C5H) subfunction 04h

;

; var

; RetCode,HiHandle,LoHandle : Integer;

;

; RetCode := ClosSem(HiHandle,LoHandle);

;

begin ClosSem

push bp

push ds

lds si,[bp+x+4] ; hi handle

mov dx,[si]

mov cx,[si]

mov ax,0C504h ; set function

mov ah,00h

pop bp

ret 8

ClosSem endp

;--------------------------------

;

; var

;

; Mode := setlck(Func);

;

begin setlck

push bp

mov bp,sp

push ds

lds si,[bp+x]

mov ah,0C6h ; set the function

int 21h

mov ah,0

pop ds

pop bp

ret 4

setlck endp

;--------------------------------

; Transactional Backout func(199) (C7H)

;

; var

; RetCode, Func : Integer;

;

; RetCode := BakOuts(Func);

;

push bp

mov bp,sp

push ds

lds si,[bp+x] ; set the subfunction

mov ax,[si]

mov ah,0C7h ; set the function

int 21h

mov ah,0

pop ds

pop bp

ret 4

;--------------------------------

; Begin transaction func(200) (C8H)

;

; var

; RetCode,Mode : Integer;

;

; RetCode := btrans(Mode);

;

begin btrans

mov ah,0C8h

call arg1t

ret 4

btrans endp

;--------------------------------

; End Transaction func(201) (C9H)

;

; var

; RetCode : Integer;

;

; RetCode := etrans;

;

begin etrans

mov ah,0C9H

int 021h

mov ah,00h

ret

etrans endp

;--------------------------------

; Exc. log File (202) (CA)

;

; var

; RetCode, FcbAddr : Integer;

;

; RetCode := exclog(FcbAddr);

;

begin exclog

mov ah,0CAH

call arg1f

ret 4

;--------------------------------

; Exc Lock Set func(203) (CBH)

;

; var

; RetCode, Mode : Integer;

;

; RetCode := exclcks(Mode);

;

begin exclcks

mov ah,0CBH

ret 4

exclcks endp

;--------------------------------

; Exclusive file unlock (204) (CC)

;

; var

;

; RetCode := exculkf(FcbAddr);

;

begin exculkf

mov ah,0CCH

ret 4

exculkf endp

;--------------------------------

; Exclusive Unlock Set (205)(CD)

;

; var

; RetCode : Integer;

;

; RetCode := exculks;

;

begin exculks

mov ah,0CDH

int 21h

mov ah,00h

ret

exculks endp

; Exc Clear file func(206) (CEH)

;

; var

; RetCode, FcbAddr : Integer;

;

; RetCode := excclrf(FcbAddr);

;

begin excclrf

mov ah,0CEH

call arg1f

ret 4

excclrf endp

;--------------------------------

; Exc Clear Set func(207) (CFH)

;

; var

; RetCode : Integer;

;

; RetCode := excclrs;

;

begin excclrs

mov ah,0CFH

int 21h

mov ah,00h

ret

;--------------------------------

; Log Record(s) func(208) (D0H)

;

; var

; RetCode, Flag, Timeout : Integer ;

;

; RetCode := reclog(RecStr,Flag,Timeout);

;

push bp

push ds

lds si,[bp+x+4] ; load flags

mov ax,[si]

mov si,[si]

lds dx,[bp+x+8] ; get ptr to string

; inc dx

mov bp,si ; move timeout to BP

mov ah,0D0h

mov ah,0

pop bp

reclog endp

;--------------------------------

; Record Lock func(209) (D1H)

;

; var

;

; RetCode := reclck(Mode);

;

begin reclck

push bp

push ds

lds si,[bp+x]

mov bp,[si]

mov ah,0D1h

int 21h

mov ah,0

pop ds

pop bp

ret 6

;--------------------------------

; Record Unlock func(210) (D2H)

;

; var

;

; RetCode := reculk(Semaphore);

;

begin reculk

mov ah,0D2H

call arg1a

ret 4

reculk endp

;--------------------------------

; Unlock Record Set func(211) (D3H)

;

; var

; RetCode : Integer;

;

; RetCode := reculks;

;

begin reculks

mov ah,0D3H

int 21h

ret

reculks endp

;--------------------------------

; Record Clear func(212) (D4H)

;

; var

; RetCode : Integer;

; Semaphore : String[n];

;

; RetCode := recclr(Semaphore);

;

begin recclr

mov ah,0D4H

call arg1a

ret 4

recclr endp

;--------------------------------

; Clear record set func(213) (D5H)

;

; var

;

; RetCode := recclrs;

;

mov ah,0D5H

int 21h

mov ah,00h

ret 4

recclrs endp

; End of Job func(214) (D6H)

;

; var

;

; RetCode := eoj;

;

begin eoj

int 21h

ret 4

eoj endp

;

; var

;

; RetCode := sysout;

;

mov ah,0D7H

int 21h

mov ah,00h

ret 4

sysout endp

;--------------------------------

; Vol Statistics func(218) (DAH)

;

; var

; RetCode,volume : Integer;

;

; RetCode := volstat(volume, reply);

begin volstat

mov ah,0DAh

push bp

mov bp,sp

push ds

push es

lds si,[bp+x+4] ; addr for the volume number

mov dx,[si] ; get the volume number

inc di ; add 1 to get the address of the string

int 21h

mov ah,00h

pop es

pop ds

pop bp

ret 8

volstat endp

;--------------------------------

; Local Disks func(219) (DBH)

;

; var

; NumDisks : Integer;

;

; NumDisks := locdrv;

;

begin locdrv

mov ah,0DBH

int 21h

mov ah,00h

ret

;--------------------------------

; WorkStation ID func(220) (DCH)

;

; note: This routine returns the station number as an integer.

;

; var

;

;

begin wsid

int 21h

mov ah,00h

ret

wsid endp

;--------------------------------

; Set Error mode func(221) (DDH)

;

; var

;

; errmode(mode);

;

begin errmode

mov ah,0DDH

ret 4

errmode endp

;--------------------------------

;

; var

;

; bcsmode(mode);

;

begin bcsmode

mov ah,0DEH

call arg1

ret 4

bcsmode endp

;--------------------------------

; Modify LST Device func(223) (DFH)

;

; var

; RetCode, Mode : Integer;

;

; RetCode := ctlspl(Mode);

;

begin ctlspl

mov ah,0DFh

call arg1

ret 4

ctlspl endp

;--------------------------------

; Spool Request func(224) (E0H)

;

; var

; ErrCode : Integer;

;

; ErrCode := splreq(RequestBlock, Reply);

;

begin splreq

mov ah,0E0h

ret 8

splreq endp

;--------------------------------

; Pipe Request func(225) (E1H)

;

; var

; ErrCode : Integer;

;

; ErrCode := pipreq(RequestBlock, Reply);

;

mov ah,0E1h

call reqrep

ret 8

pipreq endp

;--------------------------------

;

; var

; ErrCode : Integer;

; RequestBlock, Reply : String[n];

;

;

mov ah,0E2h

call reqrep

ret 8

;--------------------------------

; Login system func(227) (E3H)

;

; var

; ErrCode : Integer;

; RequestBlock, Reply : String[n];

;

;

begin syslog

mov ah,0E3h

call reqrep

ret 8

syslog endp

;--------------------------------

; Set File Attribute func(228) (E4H)

;

; var

;

; RetCode := fattr(FcbAddr, Attribute);

;

begin fattr

push bp

mov bp,sp

push ds

lds si,[bp+x]

lds dx,[bp+x+4] ; dx = address of fcb

mov ah,0E4h

int 21h

mov ah,0

pop ds

pop bp

ret

fattr endp

;--------------------------------

; Update file size func(229) (E5H)

;

; var

; ErrCode,FcbAddr : Integer;

;

; ErrCode := updfcb(FcbAddr);

;

mov ah,0E5H

call arg1f

ret 4

updfcb endp

;--------------------------------

; Copy File to File func(230) (E6H)

;

; var

; RetCode,FcbSource,FcbDest : Integer;

; CountLow, CountHigh : Integer;

;

; RetCode := cpyfile(FcbSource, FcbDest, CountLow, CountHigh)

;

;

begin cpyfile

push bp

push ds

push es

lds si,[bp+x] ; addr of the high byte cnt

lds si,[bp+x+4] ; addr low word of byte cnt

mov cx,[si] ; cx=low 16 bits of count

les di,[bp+x+8] ; address of dest fcb

lds si,[bp+x+12] ; address of the source fcb

mov ah,0

pop es

pop ds

pop bp

cpyfile endp

;--------------------------------

; get time / date string func(231) (E7H)

;

; var

;

; nettod(time);

;

;

begin nettod

mov ah,0E7h

call arg1a

ret 4

;--------------------------------

; Set Close mode func(232) (E8H)

;

; var

; mode : Integer;

;

; clsmode(mode);

;

begin clsmode

mov ah,0E8H

call arg1wor

ret 4

clsmode endp

;--------------------------------

; Shell Base Status func(233) (E9H)

;

; var

; RetFlags, drive : Integer;

;

; RetFlags := drvmap(drive);

;

begin drvmap

mov ax,0E900h

call arg1

ret 4

; Return Shell Version func(234) (EAH)

;

; var

; RetCode, Mode : Integer;

; EnvirStr : String[n];

;

;

begin retshl

push bp

mov bp,sp

push ds

push es

inc di ; point di at the start of the data area

lds si,[bp+x] ; put the mode into al

mov ax,[si]

mov ah,0EAh

int 21h

mov ah,00h

pop es

pop ds

pop bp

ret 8

retshl endp

;--------------------------------

; ascii log File (235) (EB)

;

; var

; Asciiz : String[n];

;

; RetCode := asclog(Flags, TimeOut, Asciiz);

;

begin asclog

mov bp,sp

push ds

lds si,[bp+x+8]

mov ax,[si] ; flags into al

lds dx,[bp+x] ; pointer to the asciiz string

mov bp,[si] ; time out into bp

mov ah,0EBH

pop ds

pop bp

ret 12

asclog endp

; ASCIIZ file unlock (236) (EC)

;

; var

; RetCode : Integer;

;

; RetCode := asculkf(Asciiz);

;

begin asculkf

call arg1a

ret 4

asculkf endp

;--------------------------------

;

; var

; RetCode : Integer;

; Asciiz : String[n];

;

; RetCode := ascclrf(Asciiz);

;

begin ascclrf

mov ah,0EDH

call arg1a

ret 4

ascclrf endp

;

; Get Physical Station Number EEH

;

; var

; StationNo : Integer;

;

;

begin GetPSN

mov ah,0EEh

int 21h

mov ah,0

ret

GetPSN endp

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

;

; Get Shell Table Addresses (239) EFH

;

; var

; Mode,Segment,Offset : Integer;

;

; GetSTA(Mode,Segment,Offset);

;

push bp

mov bp,sp

mov si,[bp+x+8] ; get the mode

mov ax,[si]

mov ah,0EFh ; set the function

int 21h

lds di,[bp+x] ; store the offset location

mov [di],si

pop bp

ret 12

GetSTA endp

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

;

; Set Preferred File Server (240) F0H

;

; var

; RetServer, Mode, NewServ : Integer;

;

; RetServer := SetServ(Mode,NewServ);

;

begin SetServ

push bp

mov bp,sp

mov si,[bp+x+4] ; get the mode

mov ax,[si]

mov di,[bp+x] ; set the preferred server number

mov dx,[di]

mov ah,0F0h ; set the function

int 21h

pop bp

ret 6

SetServ endp

;

;

; var

; RetCode, Mode, NewServ : Integer;

;

; RetCode := ModServ(Mode,NewServ);

;

begin ModServ

push bp

mov bp,sp

mov dx,[di]

mov ah,0F1h ; set the function

pop ds

ret 6

ModServ endp

;-------------------------------

; Place a single integer argument into dx

; with a return code

arg1 proc near

push bp

mov bp,sp

push ds

lds si,[bp+x+2]

mov dx,[si] ; dx gets the argument

int 21h

mov ah,0 ; clear ah for al return code

pop ds

ret

arg1 endp

; Place a single integer argument into bp

; for use with time outs - with a return code

arg1t proc near

push bp

mov bp,sp

push ds

mov bp,[si] ; dx gets the argument

int 21h

mov ah,0 ; clear ah for al return code

pop ds

pop bp

ret

arg1t endp

;--------------------------------

; Process an fcb address in a

; function call with a return code

arg1f proc near

push bp

push ds

lds dx,[bp+x+2] ; dx gets the argument

mov ah,0 ; clear ah for al return code

pop ds

pop bp

ret

arg1f endp

;--------------------------------

; Process a single string argument in a

; function call with a return code

push bp

mov bp,sp

push ds

lds dx,[bp+x+2] ; ptr to parameter string

; inc dx ; add 1 to get the address of the string

int 21h

mov ah,0 ; clear ah for al return code

pop ds

ret

arg1a endp

;----------------------------

; Perform a single integer argument

; but without a return code

arg1wor proc near

push bp

mov bp,sp

push ds

lds si,[bp+x+2]

mov dx,[si] ; dx gets the arg (or ptr)

pop ds

pop bp

ret

;----------------------------

; Perform a single string argument

; but without a return code

arg1awor proc near

push bp

mov bp,sp

lds dx,[bp+x+2]

inc dx ; add 1 to get the start of the string

int 21h

pop ds

pop bp

ret

arg1awor endp

; Handle a request$ and reply$ function

; with error code

reqrep proc near

push bp

mov bp,sp

push ds

push es

lds si,[bp+x+6] ; ptr to req. string

inc si ; add 1 to get the address of the string

les di,[bp+x+2] ; ptr to var desc block for reply buf

inc di ; add 1 to get the address of the string

pushf ; save the direction flag

popf

mov ah,0

pop es

pop ds

ret

end

6. В И Р У С Ы И N E T W A R E

вания сетевого дискового пространства используется "прозрачный ре-

жим". Пользователь за комьютером видит сетевые диски в виде допол-

нительных винчестеров (F: G: ...). Особенностью этих винчестеров

является то, что для них поддерживаются все операции над файлами и

не поддерживаются операции пямого доступа к секторам диска. Драй-

вера устойств для этих дополнительных букв не существуют и все

операции над ними иммитируются путем перехвата различных прерыва-

ний.

Проблема поведения вирусов на сетевых дисков сразу же распада-

ется на две в зависимости от ответа на вопрос: выполняется ли ви-

рус на машине управляющей сетью (и содержащей сетевые диски) или

нет.

Если вирус выполняется на управляющей машине, то он имеет дост-

уп в MBR, BOOT и к секторам диска. Пока нет подтвержденной инфор-

NetWare. Попытка "не грамотного" вируса записаться на диск NetWare

сколько для NetWare. Поэтому для защиты от BOOT-вирусов рекоменду-

ется сохранять 0-ю дорожку. На этой дорожке содержется не только

ет. В случае неуспеха еще остается тонкий анализ содержимого ста-

рой и поврежденной 0-й дорожки. Если такой анализ удастся провес-

ти, то возможно ручное восстановление потеянной информации.

Если на управляющей машине вместе с сетью работает DOS, то воз-

можно нарушение работы NetWare в памяти и, как следствие, разнооб-

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

локальной сети следует относится особенно серьезно.

Если вирус выполняется на другой машине, то он не имеет физи-

ческого доступа к диску. Разговор в этом случае может идти только

о файловых вирусах. При этом нужно учесть, что пользователь сети

обычно не имеет доступа на запись ко всем файлам (особенно систем-

Покрайней мере пока в системе защиты нет явных проколов админист-

"люки" в защите NetWare.

успешно функционирует в сети; - те кто заражает файлы на локальных

дисках, но отказывается заpажать файлы в сети (среди них есть та-

кие которые самоочищаются при копировании в сеть зараженного файла

при активном вирусе); - и те кто теряет работоспособность при ак-

тивной сети.

Распределение вирусов по этим группам можно обьяснить следующи-

ми обстаятельствами. В первую группу попадают наиболее примитивные

файловые вирусы котоые законно используют функции DOS для своих

жевыми средствами. Во вторую группу попадают вирусы которые пыта-

обходят и поэтому работа с сетью для них не видна. В эту группу

попадает наверное большинство "СТЕЛС"-вирусов. Третью группу сост-

работать из-за конфликтов с оболочкой NetWare.


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

1. Aнгло-русский словарь терминов NetWare. (13 cтр.)

Чусов В. Е.

Чусов В. Е.

3. Введение в локальные вычислительные сети. (45 стр.)

Груздев А. Ю.

4. Texничecкиe cpeдcтвa лoкaльныx ceтeй. (27 стр.)

Гaвpилoв A. B.

5. Введение в сетевые операционные системы NetWare

фирмы Novell. (55 стр.) Груздев А. Ю.

6. Концепции построения и основные особенности системы

NetWare 386. (49 стр.) Груздев А. Ю.

8. Установка рабочей станции DOS ODI в сети NetWare 386.

9. Cтpyктypa кaтaлoгa, cтpyктypa пoльзoвaтeлeй и cиcтeмa

зaщиты ceти NetWare (62 cтp.) Чycoв B. E.

10. Интерфейс пользователя с системой.

Утилиты меню и утилиты командной строки NetWare 386.

11. Печать в сетевой операционной системе NetWare 386.

(83 стр.) Милентьев А. Д

12. Оперативное управление работой сетевой ОС NetWare 386.

(51 стр.) Поваров А. В.

13. Средства построения гетерогенных комплексов

фирмы Novell. (42 стр.) Коровкин С. Д.

(47 стр.) Коровкин С. Д.

15. Проектирование, создание и использование баз данных,

реализованных с применением продуктов фирмы Novell.

(79 стр.) Зимин В. В.

16. Практическое сравнение различных средств управления

данными в среде сетевой ОС NetWare фирмы Novell.

17. Использование FoxBase+ и Clipper в локальной сети.

18. Барри Нанс, Программирование в локальных сетях