Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ВЗАИМОДЕЙСТВИЕ СЕТЕВЫХ ПРИЛОЖЕНИЙ.doc
Скачиваний:
51
Добавлен:
01.05.2014
Размер:
579.07 Кб
Скачать

Министерство общего и профессионального о образовании рф

Санкт-Петербургский государственный электротехнический

Университет (лэти)

Взаимодействие сетевых приложений

Методическое указания

к лабораторным работам

по дисциплинам

“ОРГАНИЗАЦИЯ ВЫЧИСЛДИТЕЛЬНЫХ ПРОЦЕССОВ”

И

“РАЗРАБОТКА СЕТЕВЫХ ПРИЛОЖЕНИЙ”

Санкт-Петербург – 1999

УДК 681.3

Взаимодействие сетевых приложений: Методические указания с лабораторным работам по дисциплинам “Организация вычислительный процессов” и “Разработка сетевых приложений” /Сост.: Г.В.Разумовский, В.С.Фомичев СПбГЭТУ (ЛЭТИ}. СПб., 1999. 32 с.

Приводятся описания лабораторных работ, связанных с изучением способен сетевого взаимодействия приложений, выполняющихся в рамках операционной системы LINUX. В лабораторных работах основное внимание уделяется системным вызовам Для обмена данными через сокеты и механизму запуск удаленных процедур.

Предназначены для студентов специальности 220100 и магистров по направлению 552800 “Информатики и вычислительная техника”.

Издание осуществлено при поддержке Федеральной целевой программы “Государственная поддержка интеграции высшего образования и фундаментальной науки” (проект № 142 - "Интегрированная система подготовки кадров и фундаментальных научных исследований в области информатики”.

Утверждено

Редакционно – издательским советом университета

в качестве методических указаний

СПбГЭТУ (ЛЭТИ), 1999

Введение

При разработке приложений, работающих в сети, необходимо знать способы организации их взаимодействия и уметь реализовать эти способы в конкретной ОС. Основными формами сетевого взаимодействии являются: обмен данными между параллельно работающими приложениями и запуск одним приложением другого с последующей передачей результатов выполнения вызывающей программе. Вторая форма взаимодействие получила название удаленный вызов процедур. Средства реализации обеих форм взаимодействия имеются во всех ОС, но в каждой ОС свой протоколы обмена и программный интерфейс, обеспечивающий связь между приложениями. Наиболее известным и поддерживаемым всеми ОС является протокол TCP/IP. Поэтому в лабораторных работах рассматривается программный Интерфейс доступа к протоколам ТCP/IP, а в качестве среды разработки сетевых Приложений - ОС LINUX, которая свободно распространяется и наиболее доступна в учебном процессе.

В ОС UINDX базовым механизмом для организаций сетевого взаимодействия программ являются сокеты. На основе сокетов реализуются такие протоколы прикладного уровня, как удаленный терминальный доступ, копирование удаленных файлов, передача почтовых сообщений и удаленный вызов процедур. Поэтому в первой лабораторной работе изучается программный интерфейс сокетов и способы передачи данных, которые могут быть реализованы с их помощью.

Вторая лабораторная работа посвящена построению клиентских и серверных программ с помощью компилятора rpcgen, позволяющего сократить затраты времени на разработку программ и уменьшить вероятность появления ошибок. В его состав входит библиотека XDR (eXternal Data Representation), которая содержит функции для преобразования различных типов данных в машинно-независимый вид, позволяющий производить обмен данными между разнородными системами. Компилятор автоматически генерирует модули, отвечающие за формирование и передачу сообщений между клиентом и удаленным сервером. Пользователи должны знать только правила написания интерфейсов удаленных процедур, серверных функций и их вызовов. Изучение этих правил и знакомство с системными функциями, поддерживающими механизм вызова удаленных процедур, является основной задачей дайной лабораторной работы.

В методических указаниях приводятся основные сведения, знакомство с которыми поможет студентам выполнить задания, имеющиеся в каждой работе. Для их выполнения необходимо знать язык С и некоторые системные функции ОС LINUX.

-3-

Лабораторная работа 1

ВЗАИМОДЕЙСТВИЕ ПРОЦЕССОВ ЧЕРЕЗ СОКЕТЫ

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

    1. Понятие сокета

Сокет – это объект ОС, через который можно передавать и принимать данные от процессов независимо от того, выполняется она на одном или разных компьютерных сетях. Сокет, также как и файл, характеризуется номером дескриптора и к нему применены файловые операции. Но в отличие от файла сокет существует лишь до момента, пока на него ссылается хотя бы один из процессов. Сокет передается по наследству и с ним могут быть связаны один или несколько процессов. Сокеты, имеющие одинаковые схемы адресации и семейство протоколов, группируются в домены. В системе LINUX поддерживается следующие домены:

AF_UNSPEC 0 /*не специфицированный*/

AF­_UNIX 1 /*для взаимодействия процессов внутри одной ЭВМ*/

AF_ INET_ 2 /*для взаимодействия через локальную сеть по протоколу TCP/IP*/

AF_ AX25 3 /*для взаимодействия аппаратному интерфейсу Х.25*/

AF­_IPX 4 /*для взаимодействия через сеть по протоколу IPX*/

Поскольку в лабораторных работах будет использоваться только домен AF­INET, то в дальнейшем приводится описание параметров и операций с сокетами только для этого домена.

В рамках одного домена сокеты могут иметь различный тип и протокол обмена. Тип сокета определяет способ передачи данных между процессами. В системе определены следующие типы сокетов:

SOCK_STREAM 1 /*потоковый сокет*/

SOCK_DGRAM 2 /*дейтаграммный сокет*/

SOCK_RAM 3 /*исходный сокет*/

SOCK_RDM 4 /*надежная передача сообщения*/

SOCK_SEQPACKET 5 /*последовательные пакеты*/

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

Дейтаграммный сокет не гарантирует надежную передачу и получение данных в той последовательности, в какой они посылались, но этот способ передачи более быстрый, поскольку для него не требуется сложные установочные операции. Этот тип сокетов не требует предварительной установки

-4-

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

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

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

Одна из сильных сторон программного интерфейса сокетов состоит в том, что в нем заложены средства для работы с различными сетевыми протоколами. Например, для домена AF_INET определены следующие типы протоколов:

IPPROTO_IP = 0, /* Dummy protocol for TCP*/

IPPROTO_ICMP = 1, /* Control Message Protocol*/

IPPROTO_IGMP = 2, /* Internet Gateway Management Protocol */

IPPROTO_IP IP = 4, /* IPIP tunnels (older KA9Q tunnels use 94)*/

IPPROTO_TCP = 8, /* Transmission Control Protocol*/

IPPROTO_PUP = 12, /* Exterior Gateway Protocol */

IPPROTO_UDP = 17, /* PUP protocol*/

IPPROTO_IDP = 22, /* User Datagram Protocol */

IPPROTO_PUP = 12, /* XNS IDP protocol*/

IPPROTO_RAW = 255, /* Raw IP packets*/

Для каждой допустимой комбинации домен - тип сокета в системе поддерживается умолчание на используемый протокол. Так, например, для домина AF_INET услуги виртуального канала выполняет протокол транспортной связи IPPROTO_TCP, а функции дейтаграммы – пользовательский дейтаграммный протокол IPPROTO_UDP: Для сокетов типа SOCK_RAW и SOCK_PACKET обязательно должен быть указан номер протокола суперпользователя.