������ IPX ��� NOVELL-NETWARE����������� ����������������� ���������, ���� HTL��������� ������, 1991Rene Gilomen(������� � ����������: Valery Votintsev)����������1. ��������2. Novell-NetWare 3. ����������� ���������� 4. ��������� ������ 5. �������� ������� IPX_Setup IPX_Open_Socket IPX_Close_Socket IPX_Send IPX_Receive IPX_Done IPX_Internetwork_Address IPX_To_Addr IPX_From_Addr 6. ����������� � �������� ���������� 1. �������� � ���������� ������������� �������� "���������������", ��������������� ������������ ����������������� ���������� �� ����� ���������� ������� �������� � ������ ������. ��� ������ � ����������� ���������� �������� ������ � ��������� ����������� �������, ������ ����������, ����� ������������ ���� ����� ������������� �� ������������ �������, ����� ���������������� TURBO PASCAL, � ����� �� ���������� � ����������� ����������� Ethernet �����. �������� �������� �� ���� ��������� ����. 2. Novell-NetWare NOVELL-NETWARE [1] �������� ����� ���������������� ������� ������������ ��������, ������������ �� Xerox Network System (XNS) [2]. �������� ������� ������������������ NETWARE �������� ������� ���������� ��������� �����������, ������� �������� ���� ��� ��������� �����������. ��������, �������� ������� �� Entry Level (ELS) I � II (���������� ��� ����� ����� - �� 4 �� 8 �������������) �� NETWARE 386 ������ 3.x, �������������� �� 250 �������������. ����� ����, ���������� ����������� ����������� ������, ����������� ������������ � �������� ������� ������ ���� DEC-VAX. ���������� ���� NETWARE ����� ���� ������������ � ���� ��� ���������� OSI-������ [���. 1]. �� "����������" ������ � "������ ������" ������������ ��������� NOVELL-NETWARE Ethernet, IEEE 802.3, IEEE 802.5, ARCNET � ��� ������. �� "�������" � "������������" ������� ������������ ��������� Internetwork Packet Exchange (IPX) � Sequenced Packet Exchange (SPX). �� "������ ������" ����������� ������� ������� �������� �����-������ (Network Basic Input Output System - NETBIOS). �� ������ "�������������" � "����������" ������������ ��������� NETWARE Core Protocols (NCP), �������������� �������, �������� DOS � ��������� ���������� ���������.
���. 1. ���������� ����� ���������� � �������� ��������� ���������� ��������� [���. 2]. �� "�������" ������ �������� �������� IPX, �������������� ������������ ��� ������������� ����� ��������� � ����. �������������� �� "������������" ������ ������������ �������� SPX, �������������� ������������ � ������������ ��������������. NETBIOS-����������� ���������� ����� ���������� ��������������� � ������ "������". "Workstation Shell" - ��� ���-����������� ������� ��������� ������� �������, ����������� ������������ ������ ����� ������� �������� � ��������. ��� ��������������� ������������ ����������� ���������������� ����� ����� ����� Workstation Shell ����������.
����������� ����� "������ IPX ��� NOVELL-NETWARE" ������������ ������������ ����������� ������ ������� ����� �������� ��������� � ���� Ethernet IEEE 802.3, � ������������� ��� ����� ��� ����������� ������� �� ����� TURBO-PASCAL. ��� ������� �������� ����������� � "��������" ������ NOVELL-NETWARE �� ���� ���������� ��������� IPX. IPX �������� ����������, �� ��������� �����������, �.�. ���� ���� �� ������� ������� ������ ����������������� � ������ ��������, �� ��� ����� �� ��������� ������� �������������� ������������� ������� (��������, �������). IPX-������ �������� ����� ���������� � ������������ ��������������� � �������-����������. ������ ����� �������� ��������������� � �� ����� �������� ����������� ��������� � ������ �������. �������� IPX �������� ����� ��� ���������� ���������������� ������, ������� ���������� ������� ����� ����� ��������� ��� ������� ������. ��� �������� ������ ������ ������ ����������� ������ ������� �����, ������� ����� ����, ����� ����, � ����� ������. ������������ ��������� IPX:
���������� ��������� IPX:
3. ����������� ���������� ���������� ������������� ��� TURBO-PASCAL V6.0 [3]. (� ����� ������� �������� ���������� �� ��������.) TURBO-PASCAL ������������ ��� ���������� "������" (UNIT) - ��� ����������, ������� ������������� ��������, � ������������ � ������� ��������� � ������� ��������� USES. ��� ������������� ������ ���������� �������� � ��� ����� ��������� ������� Uses IPX;. ��� ���������� ������ ���������� ��������� �� ������� ���� ��� IBM PC ����������� ����������, ������������� ������� Ethernet ������. ���������� ������ ���� ��������� � ���� ���� � ������ (�� ��������� IEEE 802.3). ���������� ������ ��� ������ � ����������� �� ���������, ��� ��� � ������ ������ ����������� ����� ���� �����-����� (Peer to Peer). ����� ����, �� ������� �������� ������ ���� �������� IPX-�������. ���������� ������������ ��� ��������� IPX version 2.12. 4. ��������� ������ ��� ������ ��������� �� ����������� ���� ������� ������������� ��������� ������� ��������� ������ ���� RECORD, � ������� ����� ���������� ������������ ������ � �� �����: SData = RECORD Data : Data_Packet; Length : WORD; END; Network_Address = RECORD Network : S4Byte; Node : S6Byte; Socket : WORD; END; ����� ������ ��� ���� Data_Packet ���������� 546 ����; S4Byte - 4 �����; � S6Byte - �������������� 6 ����. �������� ��������, ��� �������� � ������ ���� ������ ���� � ������ ������� ������� �������� �� � ����������, � � �������� ����, �.�. ������ ���� ����� ��������� �������� �� ���� �� 255 ($00 - $FF). ����� ��������� ���� �������� ������������ �������� ��������� ���������� ���������: MAX_SOCKETS - ������������ ���������� ������������ �������.
MAX_DATA_SIZE - ������������ ����� ������������ ������.
NET_LENGTH - ����� ������ ���� (� ������).
NODE_LENGTH - ����� ������ ���� � ���� (� ������).
5. �������� ������� FUNCTION IPX_Setup : BYTE; ��������: ������� �������������� ������� ��������� ��� ������ � IPX. ��� ������ ������� ���������������� � ������ IPX-�������, � ������������ ��������� �������� ���� ����������� ����������. ������ ����� ����� �������� ������ ���� ��������� ������� ����������. ����������: ������ ������� ����������� ������ ���������� ������, �.�. �� ��������� � ��������� IPX-�������� � ���������. ������������ ��������: SUCCESS ������������� ������ �������. DEVICE_SW_ERROR ������� ������� �� �������� ��� ����������. ������: VAR State : BYTE; : : State := IPX_Setup; IF State <> SUCCESS THEN BEGIN Writeln ('IPX �� �������� !'); EXIT; END; : : FUNCTION IPX_Open_Socket ( VAR Socket : WORD ) : BYTE; ��������: ������� ��������� ��������� ���������������� �����. ���������: Socket = ����� ������������ ������ ����� � �������� ������� ������ ������������ ����� ������. ������ ����� ������ �������� � ����������������� �����. ���� ����� ������ ������ ������� ($0000), �� ������� ���� ������� � �������� Socket ����� ���������� ���������� ������. ����������: ��������� ������ ������� ��������������� ��� ������������ ������� �����, � ������������ ����������� �� ������������ ��� ����� ����� (��. ������������ �� Novell [1]). ������������ ��������: SUCCESS ���������������� ����� ������ �������. PARAMETER_ERROR ����� � ������ ������� ��� ��� ������ �����. DEVICE_SW_ERROR IPX ����������. SOCKET_TABLE_FULL ��� ��������� ������ ��� ������. ������: VAR State : BYTE; Socket : WORD; : : IPX_Setup .... : : Socket := $8000; : State := IPX_Open_Socket (Socket); IF State <> SUCCESS THEN BEGIN Writeln ('Socket Open Error'); EXIT; END; : : FUNCTION IPX_Close_Socket ( Socket : WORD ) : BYTE; ��������: ������� ��������� ��������� ���������������� �����. ��� �������� ������ ���������� ������������ ������� ������� ������. ���������: Socket = ����� ������������ ������ (������ � 16-������ �����) ������������ ��������: SUCCESS ����� ������ �������. PARAMETER_ERROR ������ � ��������� ������� �� ����������. ������: VAR State : BYTE; Socket : WORD; : : IPX_Setup ... : IPX_Open_Socket ... : State := IPX_Close_Socket (Socket); IF State <> SUCCESS THEN BEGIN Writeln ('Error '); EXIT; END; : : FUNCTION IPX_Send ( Socket : WORD; Dest_Addr : Network_Address; Buffer : SData) : BYTE; ��������: ������� �������� ������ ����� ��� ��� ���������� �������� � ����. ������ ����� ���������� ���� ���������� �������, ���� ����� ���� �������� � ������ "Broadcast". ������ ���� ������ ������ ������� �����. ��������, ��� ����� ���� �������� ������� ��������������� ��� ��������� Novell NetWare �� ������. ���� �������-���������� ��������� � ��� �� ����, ��� � ���������� �������, �� � ���� "Network" ����� ������ ������� �������� ($0000). ��� �������� ������ �� ��� ������� � ���� (����� Broadcast), � �������� ������ ���� ���������� ������� �������� $FFFFFFFFFFFF, �.�. �� ��� ����� ���� ������ ���� ������ ���� �������� �������� $FF. ������������ ����� ������������ ������ �� ������ ��������� 546 ����. ����������� ����� ������ ����� ����������� ���������. ���������: Socket = ����� ������, ����� ������� ���������� ������. (����� ������ ����������� � 16-������ �����) Dest_Addr = ������ ������� ����� �������-���������� (��� ���������� �����������). Buffer = ����� ��� ���������� ������������ ������ � �������� �� �����. ������������ ��������: SUCCESS ������ �� �������� ������ ������� ������ ��������� IPX. PARAMETER_ERROR ���� ��������� ����� �� ����������, ���� �� �������� ����� ����, ���� ����������� �������� �����. NO_DESTINATION �� ������ ���� � �������-����������. ������: VAR State : BYTE; Destination : Network_Address; Daten : SData; : : IPX_Setup ... : IPX_Open_Socket ... : WITH Destination DO BEGIN Network[1] := $00; Network[2] := $00; Network[3] := $00; Network[4] := $00; Node[1] := $02; Node[2] := $60; Node[3] := $8C; Node[4] := $13; Node[5] := $FF; Node[6] := $AB; Socket := $5000; END; : WITH Daten DO BEGIN Daten.Data := ... Daten.Length := ... END; : State := IPX_Send (Socket,Destination, Daten); IF State <> SUCCESS THEN BEGIN Writeln ('Error'); IPX_Close_Socket ... EXIT; END; : : FUNCTION IPX_Receive ( Socket : WORD ) : BYTE; ��������: ������� ��������� ������ �� ��������� �������. �������� ���������� ������ ������ �������������� � ������� ������� IPX_Done. ���������: Socket = ����� ������������ ������ (�������� � 16-���� �����). ������������ ��������: SUCCESS ������ �� ����� ������ ��������� ��������� IPX � �������� ���������������. PARAMETER_ERROR ��������� ����� �� ����������. DEVICE_SW_ERROR ������� IPX ����������. ������: VAR State : BYTE; Socket : WORD; : : IPX_Setup ... : IPX_Open_Socket ... : : State := IPX_Receive (Socket); IF State <> SUCCESS THEN BEGIN Writeln ('Error'); IPX_Close_Socket ... EXIT; END; : : FUNCTION IPX_Done ( Socket : WORD; Code : BYTE; VAR Source_Addr : Network_Address; VAR Buffer : SData ) : BYTE; ��������: ������� ���������� ������ ����� ���������� �������� � IPX. ��� ��������� ����������, ��������� ��� ��� ��������� �������� � ������ �������, � ����� - ������ �� ������ ��� ������. ���������: Socket = ����� ������, ��� �������� ����������� ���������� �������� (����� ������ ������ ����������� � 16-������ �����). Code = ��� ��������, ���������� ������� ����� �����������. ���� �������� ����� ����� ��������� ��������: SEND - ��� �������� ������� ������� IPX_Send; RECEIVE - ��� �������� ������� ������� IPX_Receive. Source_Addr = ������������ �������� �������� �������� ������ ��������� �������, �� ������� �������� ������. Buffer = �����, � ������� ���������� �������� ������. ������������ ��������: SUCCESS ��������� ������� ��������� �������. NOT_ENDED ��������� ������� ��� �� ���������. PARAMETER_ERROR �������� �������� ��� ������ �������, ��� ��������� ����� �� ����������. DEVICE_SW_ERROR ������� IPX ����������. DEVICE_HW_ERROR �������� ������ ��������� ���������� ��-�� ����������� ����. PACKET_BAD �������� ����� ������ (������ 30 ����, ��� ������ 546 ����). PACKET_UNDELIVERIABLE �������� ������ ���������� (��������, � ���� �� ������� �������-����������). PACKET_OVERFLOW �������� ����� ������� �����, � �� ���������� � Buffer. ������: VAR State : BYTE; Socket : WORD; Adresse : Network_Address; Daten : SData; : : IPX_Setup ... : IPX_Open_Socket ... : IPX_Send ... : State := IPX_Done (Socket, SEND, Adresse, Daten); WHILE State = NOT_ENDED DO State := IPX_Done (Socket, SEND, Adresse, Daten); : : ��� : : IPX_Receive ... : State := IPX_Done (Socket, RECEIVE, Adresse, Daten); IF State = SUCCESS THEN BEGIN Read Data ... : : FUNCTION IPX_Internetwork_Address ( VAR Network : S4Byte; VAR Node : S6Byte ) : BYTE; ��������: ������� ���������� ����� ���� � ����� ������������ ����, �.�. �������, �� ������� �������� �������. ���������: Network = ����� ���� Node = ����� ���� ������������ ��������: SUCCESS ������� ��������� �������. ������: VAR State : BYTE; Net : S4Byte; Node : S6Byte; : : IPX_Setup ... : State := IPX_Internetwork_Address (Net,Node); : : FUNCTION IPX_To_Addr ( Network : String; Node : String; Socket : String; VAR Addr : Network_Address; ) : BYTE; ��������: ������� ������������ ������� ������ � �������� ������ ���� Network_Address. ���������: Network = ����� ���� Node = ����� ���� Socket = ����� ������ Addr = ������������ ��������� ���������������. ������������ ��������: SUCCESS ��������������� ������ �������. PARAMETER_ERROR ������� ��������� �� ����� ���� ���������������. FUNCTION IPX_From_Addr ( Addr : Network_Address; VAR Network : String; VAR Node : String; VAR Socket : String; ) : BYTE; ��������: ������� ������������ ������ ������� ����� � ��������� ����������. ���������: Addr = ������ ������� ����� Network = ����� ���� Node = ����� ���� Socket = ����� ������ ������������ ��������: SUCCESS ��������������� ������ �������. PARAMETER_ERROR ��������� ����� �� ����� ���� ��������������. 6. ����������� � �������� ��� ������������� ���������� ������� �������� ������ �������� �� ��������� �������:
���������� [1] NetWare System Interface Technical Overview, Novell Incorporated, Novell Part # 100-000569-001. [1a] NetWare System Calls-DOS Volume I and II, Novell Development Products Division, Novell Part # 100-0005571-001. [2] LAN Protocol Handbook, Mark A. Miller, P.E., M&T Books, ISBN 1-55851-099-0 [3] Turbo Pascal Version 6.0. ����������� ������������, Borland Int. |
||||||||||||||||||||||||||||||||||||||
![]() |