![]() |
|
|
Реферат: Интранет сетиreturn 1; } int ipx_cancel_event(struct ECB *ecb_ptr) { _ES = FP_SEG( (void far *) ecb_ptr); _SI = FP_OFF( (void far *) ecb_ptr); _BX = 0x0006; ipx_spx(); _AH = 0; return _AX; } void close_socket(unsigned int socket) { if (ipx_spx_installed() < 1) return; _BX = 0x0001; _DX = socket; ipx_spx(); } int open_socket(unsigned int socket) { if (ipx_spx_installed() < 1) return -1; _DX = socket; _BX = 0x0000; _AL = 0xFF; ipx_spx(); _AH = 0; return _AX; } int get_local_target(unsigned char *dest_network, unsigned char *dest_node, unsigned int dest_socket, unsigned char *bridge_address) { unsigned int temp_ax; struct { unsigned char network_number [4]; unsigned char physical_node [6]; unsigned int socket; } request_buffer; struct { unsigned char local_target [6]; } reply_buffer; memcpy(request_buffer.network_number, dest_network, 4); memcpy(request_buffer.physical_node, dest_node, 6); request_buffer.socket = dest_socket; _ES = FP_SEG( (void far *) &request_buffer); _SI = FP_OFF( (void far *) &request_buffer); _DI = FP_OFF( (void far *) &reply_buffer); _BX = 0x0002; ipx_spx(); _AH = 0; temp_ax = _AX; memcpy(bridge_address, reply_buffer.local_target, 6); return temp_ax; } void let_ipx_breath(void) { _BX = 0x000A; ipx_spx(); } void ipx_listen_for_packet(struct ECB *ecb_ptr) { _ES = FP_SEG( (void far *) ecb_ptr); _SI = FP_OFF( (void far *) ecb_ptr); _BX = 0x0004; ipx_spx(); } void ipx_send_packet(struct ECB *ecb_ptr) { _ES = FP_SEG( (void far *) ecb_ptr); _SI = FP_OFF( (void far *) ecb_ptr); _BX = 0x0003; ipx_spx(); } int get_internet_address(unsigned char connection_number, unsigned char *network_number, unsigned char *physical_node) { union REGS regs; struct SREGS sregs; struct { unsigned int len; unsigned char buffer_type; unsigned char connection_number; } request_buffer; struct { unsigned int len; unsigned char network_number [4]; unsigned char physical_node [6]; unsigned int server_socket; } reply_buffer; regs.h.ah = 0xe3; request_buffer.len = 2; request_buffer.buffer_type = 0x13; request_buffer.connection_number = connection_number; reply_buffer.len = 12; regs.x.si = FP_OFF( (void far *) &request_buffer); sregs.ds = FP_SEG( (void far *) &request_buffer); regs.x.di = FP_OFF( (void far *) &reply_buffer); sregs.es = FP_SEG( (void far *) &reply_buffer); int86x(0x21, ®s, ®s, &sregs); memcpy(network_number, reply_buffer.network_number, 4); memcpy(physical_node, reply_buffer.physical_node, 6); regs.h.ah = 0; return regs.x.ax; } unsigned int get_1st_connection_num (char *who) { union REGS regs; struct SREGS sregs; struct { unsigned int len; unsigned char buffer_type; unsigned int object_type; unsigned char name_len; unsigned char name [47]; } request_buffer; struct { unsigned int len; unsigned char number_connections; unsigned char connection_num [100]; } reply_buffer; regs.h.ah = 0xe3; request_buffer.len = 51; request_buffer.buffer_type = 0x15; request_buffer.object_type = 0x0100; request_buffer.name_len = (unsigned char) strlen(who); strcpy(request_buffer.name, who); reply_buffer.len = 101; regs.x.si = FP_OFF( (void far *) &request_buffer); sregs.ds = FP_SEG( (void far *) &request_buffer); regs.x.di = FP_OFF( (void far *) &reply_buffer); sregs.es = FP_SEG( (void far *) &reply_buffer); int86x(0x21, ®s, ®s, &sregs); if (regs.h.al != 0) return 0; if (reply_buffer.number_connections == 0) return 0; regs.h.ah = 0; regs.h.al = reply_buffer.connection_num[0]; return regs.x.ax; } unsigned char get_connection_number(void) { _AH = 0xDC; geninterrupt(0x21); return _AL; } void get_user_id(unsigned char connection_number, unsigned char *user_id) { union REGS regs; struct SREGS sregs; struct { unsigned int len; unsigned char buffer_type; unsigned char connection_number; } request_buffer; struct { unsigned int len; unsigned char object_id[4]; unsigned char object_type[2]; char object_name[48]; char login_time[7]; } reply_buffer; regs.h.ah = 0xe3; request_buffer.len = 2; request_buffer.buffer_type = 0x16; request_buffer.connection_number = connection_number; reply_buffer.len = 61; regs.x.si = FP_OFF( (void far *) &request_buffer); sregs.ds = FP_SEG( (void far *) &request_buffer); regs.x.di = FP_OFF( (void far *) &reply_buffer); sregs.es = FP_SEG( (void far *) &reply_buffer); int86x(0x21, ®s, ®s, &sregs); strncpy(user_id, reply_buffer.object_name, 48); } 2.6. Протокол последовательного обмена пакетами NetWare (SPX) Протокол обмена последовательными пакетами (SPX) строится на основе IPX и предлагает дополнительные услуги Xerox's Sequenced Packet Protocol (SPP). SPX дает возможность прикладным программам рабочей станции NetWare получать некоторые преимущества при ис- пользовании сетевых драйверов при прямых коммуникациях с другими рабочими станциями, серверами и устройствами интерсети с дополни- тельной гарантией достоверности и последовательности пакетов. Внутренне SPX построен на дейтаграммных примитивах IPX и дает простой интерфейс, ориентированный на установление соединения. В дополнение к структуре IPX, SPX включает 12 байтов блока уп- равления соединения. 2.7. Программный интерфейс SPX В дополнение к программному интерфейсу IPX, SPX предоставляет следующие функции: a. проверка установки SPX; b. установка соединения; c. прослеживание соединения; d. окончание соединения; e. разрыв соединения; f. получение состояния соединения; g. посылка последовательного пакета; h. прослушивание (ожидание) последовательного пакета. Эти функции управляют установкой, поддержанием, cбросом соеди- нения. Прикладные системы, использующие SPX не обязаны организовы- вать свои собственные схемы тайм-аутов для гарантирования воста- новления по обрыву установленного соединения, посылки последова- тельного пакета или по запросу об окончании соединения. Формат пакета протокола SPX 0 1 15 ¦ г====================¬¦ ¦ контрольная сумма ¦¦ ¦--------------------¦¦ ¦ длина ¦¦ ¦---------T----------¦¦ ¦упр.транс¦тип пакетদ ¦---------+----------¦¦ ¦- сеть доставки -¦¦ ¦--------------------¦¦ Сетевой адрес ¦- -¦¦ доставки ¦- хост доставки -¦¦ ¦--------------------¦¦Уровень 1 ¦ порт доставки ¦+--------- ¦--------------------¦¦адресация ¦- сеть отправителя-¦¦ ¦--------------------¦¦ Сетевой адрес ¦ -¦¦ отправителя ¦- хост отправителя -¦¦ ¦- -¦¦ ¦--------------------¦¦ ¦ порт отправителя ¦¦ L====================-¦ -+ г==========T=========¬¦ ¦упр.соедин¦тип потоꦦ ¦----------+---------¦¦ ¦идент.источ.соединен¦¦ ¦--------------------¦¦ ¦идент. приемника ¦¦Уровень 2 ¦--------------------¦+--------- ¦ номер пакета ¦¦протокол ¦--------------------¦¦последова- ¦номер подтверждения ¦¦тельных ¦--------------------¦¦пакетов ¦ номер размещения ¦¦ L====================-¦ -- г====================¬¦ ¦ 0 - 546 байтов ¦¦Уровень 3 ¦ ¦+--------- ¦ прозрачных данных ¦¦управление ¦ -----------¦¦ ¦ ¦доп.байт ¦¦ L=========¦==========-¦ -- гTTT======T==========¬ ¦¦¦¦резерв¦тип потока¦ L+++======¦==========- ¦¦¦¦конец сообщения ¦¦¦внимание ¦¦посылка подтверждений ¦системный пакет Рис.2.4 2.8. Управление потоком SPX Управление потоком является средством, позволяющим уменьшить количество повторных передач пакетов. В таких случаях, когда про- исходит тайм-аут без успешного подтверждения, SPX выполняет опти- мальное количество повторов, прежде чем декларирует обрыв соедине- ния. SPX автоматически выбирает оптимальный тайм-аут и значение количества повторов, которые наиболее подходят к физическим харак- тетистикам соответствующих сетевых устройств. SPX использует эв- ристический алгоритм тайминга для вычисления оптимального коли- чества повторов, адаптируясь под время задержки пакетов. Протокол SPX предназначен для использования в качестве фунда- мента для всевозможных сложных прикладных систем, включая коммуни- кационные серверы, шлюзы и системы пересылки сообщений рабочих станций интерсети. 2.9. Протокол объявления услуг Создавая открытую архитектуру, фирма Novell открывает разработ- чикам возможность добавлять к существующему набору сетевых услуг новые сервисы и услуги. Для облегчения таких разработок среда ин- терсети NetWare включает в себя протокол и механизм, который поз- воляет сетевым сервисным программам объявлять свои услуги по имени и типу интерсети NetWare. Серверы, использующие этот протокол, имеют свое имя, тип серви- са и адрес интерсети, та же самая информация существует в маршру- тизаторах NetWare. Данный механизм позволяет рабочей станции издать широковеща- тельный пакет запроса в локальную сеть для получения идентификации всех серверов любого типа, всех серверов специфического типа или только ближайшего сервера конкретного типа услуг. Дополнительно рабочая станция может запросить любой сервер для получения имен и адресов всех серверов данного конкретного типа. Весь этот механизм известен как протокол объявления услуг (SAP). Каждый сервер определенного типа имеет заданное уникальное имя, которое позволяет клиенту выбирать среди серверов определен- ный тип и определять желаемый сервер по имени, а не по адресу ин- терсети. 3. ПРОТОКОЛЫ TCP/IP Соотношение пpотоколов TCP/IP и Модели Откpытых Систем Уpовни МОС Пpотоколы TCP/IP ------------------¬ --------T----T-----T-----T---------¬ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦Пpикладной ¦ ¦Telnet ¦FTP ¦TFTP ¦SMTP ¦ DNS ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ +-----------------+ ¦ ¦ ¦ ¦ +---------+ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦Пpедставительный ¦ ¦ ¦ ¦ ¦ ¦ Дpугие ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ +-----------------+ +-------+----+---T-+-----+---------+ ¦ ¦ ¦ ¦ ¦ ¦Сеансовый ¦ ¦ TCP ¦ UDP ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦Тpанспоpтный ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ +-----------------+ +-------T--------+T----------------+ ¦ ¦ ¦ IP ¦ ICMP ¦ ---------------+ ¦Сетевой ¦ ¦ L---------- ¦ ARP RARP ¦ ¦ ¦ ¦ ¦ ¦ +-----------------+ +----------T--------+--T-----------+ ¦ ¦ ¦ ¦ ¦ ¦ ¦Канальный ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦Ethernet ¦Token Ring ¦ Дpугие ¦ +-----------------+ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦Физический ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ L------------------ L----------+-----------+------------ Рис.3.1. Уровневая структура модели позволяет разработчикам сетей сосре- доточиться на функциях конкретного уровня. Другими словами, нет необходимости создавать все механизмы для посылки информации по сети. Разработчикам нужно знать сервисы, которые должны быть обес- печены вышележащему уровню, какие сервисы нижележащего уровня дос- тупны, и какие протоколы модели обеспечивают эти сервисы. Сумму уровней протокольного набора часто называют протокольным стеком (protocol stack) - см. pис .3.2. Таблица иллюстрирует некоторые из наиболее общих протоколов TCP/IP и сервисы, обеспечиваемые ими. Каждый уровень протокольного стека исходного компьютера взаимо- действует с соответствующим уровнем компьютера-адресата как равный с равным. С точки зрения программного обеспечения или пользователя передача данных имеет место так, словно равноправные Пpотоколы TCP/IP Хост-ЭВМ - источник Хост-ЭВМ - адpесат ---------------¬ --------------¬ ¦ Пpикладной ¦ ¦ Пpикладной ¦ ¦ ¦ ¦ ¦ L-------T------- сообщения или L------T------- ¦ ---------- потоки -----------¦ -------+------¬ -------+------¬ ¦Тpанспоpтный ¦ ¦Тpанспоpтный ¦ ¦ ¦ ¦ ¦ L------T------- дейтагpаммы (UDP) L------T------- ¦ --------- или сегменты (TCP) ------¦ -------+------¬ -------+------¬ ¦Межсетевой ¦ ¦ Межсетевой ¦ ¦(Интеpсеть) ¦ ¦ (Интеpсеть)¦ L------T------- L------T------- ¦ ---------- дейтагpаммы IP ------- ¦ -------+------¬ -------+------¬ ¦Сетевой ¦ ¦ Сетевой ¦ ¦интеpфеис ¦ ¦ интеpфейс ¦ L------T------- L------T------- ¦ ---------- кадpы сети ------------ ¦ ¦ ¦ ¦ ¦ ¦ -----------------------¬ ¦ L-------+ Сетевая аппаpатуpа +------ L----------------------- Рис.3.2. уровни посылают свои пакеты непосредственно друг другу. Например, прикладная программа, посылающая файлы с использова- нием TCP, выполняет следующие операции: - прикладной уровень передает поток байтов транспортному уровню на исходном компьютере; - транспортный уровень делит поток на сег- менты TCP, добавляя заголовок с последовательным номером сегмента и передает сегмент межсетевому уровню (Internet-IP); - уровень IP создает пакет с порцией данных, содержащий сегмент TCP. Уровень добавляет заголовок пакета, содержащий адреса источ- ника и получателя IP. Уровень определяет также физический адрес компьютера - адресата или промежуточных компьютеров на пути к узлу - адресату и передает пакет уровню логической связи; - уровень звена данных передает пакет IP в порции данных кадра уровня звена данных компьютеру - адресату. Здесь может иметь место направление пакета IP промежуточными системами; - на компьютере - адресате уровень звена данных удаляет заголо- вок уровня звена данных и передает пакет IP уровню IP; - уровень IP проверяет заголовок пакета IP. Если контрольная сумма, содержащаяся в заголовке, не совпадает с контрольной сум- мой, вычесленной уровнем IP, пакет уничтожается; - если контрольные суммы совпадают, уровень IP удаляет Набоp пpотоколов TCP/IP ------------------------T---------------------------------¬ ¦ Пpотокол ¦ Сеpвис ¦ +-----------------------+---------------------------------+ ¦ ¦ ¦ ¦Internet Protocol (IP) ¦ Межсетевой пpотокол обеспечивает¦ ¦ ¦ се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ует физические ¦ ¦(RARP) ¦ адpеса в интеpсетевые ¦ ¦ ¦ ¦ ¦Transmission Control ¦ Пpотокол упpавления пеpедачей ¦ ¦Protocol (TCP) ¦ обеспечивает сеpвис надежной ¦ ¦ ¦ доставки потока между клиен- ¦ ¦ ¦ тами ¦ ¦ ¦ ¦ ¦User Datagram ¦ Пользовательский дейтагpаммный ¦ ¦Protocol (UDP) ¦ пpотокол обеспечивает ненадеж- ¦ ¦ ¦ ный сеpвис доставки пакетов без ¦ ¦ ¦ установления соединения между ¦ ¦ ¦ клиентами ¦ ¦ ¦ ¦ ¦File Transfer ¦ Пpотокол тpанспоpта файлов ¦ ¦Protocol (FTP) ¦ обеспечивает услуги тpанспоpта ¦ |
|
|||||||||||||||||||||||||||||
![]() |
|
Рефераты бесплатно, реферат бесплатно, курсовые работы, реферат, доклады, рефераты, рефераты скачать, рефераты на тему, сочинения, курсовые, дипломы, научные работы и многое другое. |
||
При использовании материалов - ссылка на сайт обязательна. |