Реферат: Интранет сети
ке, в котором он покидает отправителя. Перед началом передачи при-
ложения на обоих концах получают порты TCP от своих операционных
систем. Эти порты аналогичны тем, что использует протокол UDP.
Приложение, начинающее передачу, известно как активная сторона,
обычно получает порт динамически. Приложение, товечающее на запрос
передачи, известное как пассивная сторона, обычно использует широ-
ко известный порт TCP на пассивной стороне. Подобно дейтаграммам
UDP, сегменты TCPвключаются в дейтаграммы IP. TCP буферизует поток
ожиданием достаточного количества данных для заполнения большой
дейтаграммы перед ее посылкой. Поток неструктурирован, что означа-
ет, что посылающая и принимающая стороны (приложения) до передачи
должны установить соглашения относительно содержимого потока. TCP
использует полнодуплексную передачу.
Протокол TCP присваивает каждому сегменту последовательный но-
мер. На приемном конце виртуального канала приложение проверяеет
последовательность намеров для определения того, все ли сегменты
получены и обработаны в порядке последовательных номеров. Когда
приемный конец получает следующий сегмент последовательности, он
посылает квитанцию - подтверждение узлу - источнику. Когда узел -
источник получает подтверждение, он индицирует приложению то, что
сегмент успешно передан. Если узел - источник в течение определен-
ного таймаута не получает подтверждения, он повторно передает со-
ответствующий сегмент. Эта схема, называемая "положительное
подтверждение с повторной передачей", обеспечивает надежность пе-
редачи.
3.7. Транспортная система TCP/IP в NetWare версии 3.11
Транспортная система TCP/IP обеспечивает возможности подключе-
ния к сетям с этими протоколами для сетей фирмы Novell. На файло-
вом сервере TCP/IP включает в себя набор NLM для поддержки возмож-
ностей маршрутизации IP и построения интерсетей, поддержки функци-
онирования приложений, таких как NetWare NFS, возможность проклад-
ки туннелей IPX через интерсети IP. Дополнительно TCP/IP обеспечи-
вает транспортный интерфейс, используемый как NFS, так и другими
приложениями, написанными для интерфейсов типа сокет 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
(SNMP.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 ¦ ¦ Другие ¦¦
¦¦ приложения¦ ¦ ¦ ¦ ¦ ¦ приложения ¦¦
¦¦ TLI ¦ ¦ ¦ ¦ ¦ ¦ для сокетов ¦¦
¦L-----T------ L----T----- L-----T----- L------T-------¦
¦ ¦ L--------------+--------------+ ¦
¦ ¦ ¦ ¦
¦ ¦ г============¬ ¦ ¦
¦ \¦/ ¦ ¦ \¦/ ¦
¦--------------¬ ¦ ¦ -------+------¬¦
¦¦ Интерфейс ¦ ¦ NetWare ¦ ¦ Сокеты ¦¦
¦¦ транспортн ¦ ¦ NFS ¦ ¦ BSD ¦¦
¦¦ уровня TLI ¦ ¦ ¦ ¦ ¦¦
¦L-----T-------- L======T=====- L------T-------¦
¦ ¦ ¦ ¦ ¦
¦ \¦/ \¦/ \¦/ ¦
¦------+----------------------+--------------------+------¬¦
¦¦ Транспортная система TCP/IP NetWare ¦¦
¦L--------------------------T------------------------------¦
¦ ¦ ¦
¦ ----------------+----------------¬ ¦
¦ ¦Открытый интерфейс ODI ¦ ¦
¦ L----T----------T----------T------ ¦
¦ ----------- \¦/ L-----------¬ ¦
¦ -----+----¬ -------+------¬ ------+----¬ ¦
¦ ¦ Драйвер ¦ ¦ Драйвер ¦ ¦ Драйвер ¦ ¦
¦ ¦ Ethernet¦ ¦ Token Ring ¦ ¦ ARCnet ¦ ¦
¦ L----T----- L------T------- L-----T----- ¦
¦ \¦/ \¦/ \¦/ ¦
¦------+--------¬ --------+---------¬ -------+-----¬ ¦
¦¦ Адаптер ¦ ¦ Адаптер ¦ ¦ Адаптер ¦ ¦
¦¦ ¦ ¦ ¦ ¦ ¦ ¦
¦¦ Ethernet ¦ ¦ Token Ring ¦ ¦ Arcnet ¦ ¦
¦L--------------- L------------------ L------------- ¦
¦ ¦
L-----------------------------------------------------------
Рис.3.6.
Программное обеспечение TCP/IP позволяет реализовать различные
конфигурации сетей 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 ¦
L=========T======- L-------T-------
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. Кли-
енты UNIX могут использовать файловое пространство сервера с по-
мощью Netware NFS (рис.3.8.).
Подключение сетей TCP/IP и SPX/IPX к серверу
---------------------¬ --------------¬
¦Рабочая станция UNIX¦ ¦ Сервер UNIX ¦
L---------T----------- L-----T--------
¦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----
¦ ¦
-------+-------¬ -------+-------¬
¦Клиент NetWare¦ ¦Клиент NetWare¦
L--------------- L---------------
Рис.3.8.
Есть возможность маршрутизации пакетов IP через сервер NetWare.
На рис.3.9. TCP/IP в сервере Netware 1 обеспечивают маршрутизацию
пакетов IP, давая возможность клиентам UNIX из сети IP Ethernet
работать с сервером Netware 2.
Маршрутизация пакетов IP через сервер NetWare
---------------------¬ --------------¬
¦Рабочая станция 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------
¦ ¦ ¦
-------+-------¬ г=======¦========¬ -------+-------¬
¦Клиент NetWare¦ ¦Сервер NetWare 2¦ ¦Клиент NetWare¦
L--------------- L================- L---------------
Рис.3.9.
Включив в состав сети IP, изображенной на рис.3.10.-, маршрути-
затор IP можно обеспечить выход в глобальную интерсеть IP.
Средства прокладки туннелей IP обеспечивают прозрачное взаимо-
действие сетей IPX через интерсеть IP. Туннель IP представляет
стандартный интерфейс драйвера локальной сети для системы NetWare.
Сама интерсеть IP является средой передачи. В этом смысле адрес IP
выполняет в среде IP ту же функцию, что физический адрес в физи-
ческой среде. Пример использования туннеля IP для взаимодействия
сетей IPX через интерсеть IP приведен на рис.3.10.
Взаимодействие сетей NetWare через туннель IP
Туннель IP г============¬
¦ ¦ Сеть IPX ¦
¦ L======T=====-
¦ ¦
-----------------¬ ¦ г============¬ ----------+------¬
¦ Сервер NetWare +-+-¦Интерсеть IP¦---+ Сервер NetWare ¦
¦ +---¦ ¦-T-+ ¦
L--------T-------- L============- ¦ L-----------------
¦ ¦
¦ ¦
г========¦=======¬ Туннель IP
¦ Сеть IPX ¦
L================-
Рис.3.10.
4. ОБМЕН СООБЩЕНИЯМИ В СЕТИ.
Две программы, работающие на разных узлах сети, могут обмени-
ваться данными двумя способами: пересылка пакетов через низкоуров-
невый драйвер сети и пересылка сообщений через общий файл-сервер.
Пример программы, посылающей сообщение на консоль сервера :
Uses Dos;
var k : integer;
sendString : string;
Procedure SendToCon(Message : string);
var
reg : registers;
s : array [0..64] of byte;
i : integer;
begin
s[0] := 0;
s[1] := 4;
s[2] := $09;
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');
Writeln('Usage : ssend <message>');
halt;
end;
for k := 1 to paramcount do
begin
SendString := SendString + Paramstr(k) + ' ';
end;
SendToCon(sendString);
Writeln('Message send to console ...');
end.
Для передачи сообщения конкретному пользователю можно использовать
следующие функции :
{$F+,O+}
Unit UICNet;
Interface
Uses Dos;
Function GetUserName(ConnectionNumber : byte;
Var ObjectFree : boolean) : string;
Function LocalDisk : boolean;
Procedure SendBroadcastMessage(Message:string;ConnectionNumber:byte);
Implementation
Function GetUserName(ConnectionNumber : byte;
Var ObjectFree : boolean) : string;
var
WordPtr:^Word;
r : registers;
SendPacket : array[0..4] of byte;
ReplyPacket : array[0..64] of byte;
UserName : string;
ObjectType : word;
function GetWord(P: pointer): word;
var
WordPtr :^word;
begin
WordPtr := P;
GetWord := swap(WordPtr^);
end;
begin
SendPacket[2] := $16;
SendPacket[3] := ConnectionNumber;
WordPtr := addr(SendPacket);
WordPtr^:=2;
WordPtr := addr(SendPacket);
WordPtr^ := 62;
r.ah := $e3;
r.ds := seg(SendPacket);
r.si := ofs(SendPacket);
r.es := seg(ReplyPacket);
r.di := ofs(ReplyPacket);
intr($21,r);
if r.al = 0
then
begin
ObjectType := GetWord(addr(ReplyPacket[6]));
if ObjectType = 0 then ObjectFree := true
else
ObjectFree := false;
move(ReplyPacket[8],UserName[1],48);
UserName[0] := chr(48);
GetUserName := Username;
end;
end;
Function LocalDisk : boolean;
var r : registers;
begin
r.ah := $19;
intr($21,r);
r.dl := r.al+1;
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
r : registers;
WordPtr : ^word;
SendPacket : array [0..160] of byte;
ReplyPacket : array [0..103] of byte;
begin
SendPacket[2] := 0;
SendPacket[3] := 1;
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.ds := seg(SendPacket);