Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Сетевое программирование в ОС UNIX




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

Основным средством построения информационно-вычислительных сетей из ЭВМ, работающих под управлением ОС UNIX, является комплекс протоколов TCP/IP. Программное обеспечение, реализующее данные протоколы информационного обмена, как правило, входит в состав базового варианта любой современной версии этой ОС.

Для создания распределенных приложений в среде ОС UNIX наибольшее распространение получили следующие три средства:

- socket-интерфейс прикладной программы с модулем из состава ОС, реализующим сетевое взаимодействие;

- интерфейс транспортного уровня (TLI - Transport Level Interface);

- средства удаленного вызова процедур (RPC - Remote Procedure Call).

Причем socket-интерфейс и TLI обеспечивают возможность прикладным программам взаимодействовать, используя стандартные (или очень похожие на них) средства ввода-вывода ОС UNIX. RPC позволяет одной прикладной программе обращаться к другой (но функционирующей на другом узле сети) фактически так же, как одна функция традиционной программы на языке СИ обращается к другой.

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

Рассматриваемые средства предназначены для создания распределенных приложений, функционирующих, в первую очередь, согласно модели взаимодействия "клиент-сервер". Эта модель подразумевает, что из двух (в простейшем случае) параллельно выполняющихся на разных (а, возможно, на одном и том же) узлах сети программ одна является сервером (поставщиком услуг), способным решать некоторую задачу вычислительного или информационного характера, а другая - клиентом (потребителем услуг), который в ходе решения собственной проблемы сталкивается с необходимостью получения ответа на задачи, решаемые сервером. Программа-сервер пассивна - непосредственно к решению своей задачи она приступает только при поступлении к ней запроса от клиента, остальное же время она находится в состоянии ожидания такого запроса. После решения поставленной задачи сервер возвращает клиенту найденный ответ. В типичной ситуации программа-клиент приостанавливает свою работу после выдачи запроса серверу в ожидании получения ответа.

Одна программа-сервер может обслуживать (последовательно) несколько клиентов, организуя очередь запросов от них. Клиент и сервер могут меняться местами ролями (если того, конечно, требует логика решаемой проблемы) в разные моменты времени. Сервер, обрабатывая запрос какого-либо клиента, в свою очередь может стать клиентом, обращаясь за некоторой услугой к другому серверу.

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

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

- режим без установления соединения.

Первый режим подразумевает, что взаимодействие осуществляется в три этапа:

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

двусторонний, последовательный (потоковый, без учета каких-либо границ записей), надежный (без потери и дублирования) обмен данными;

закрытие связи (экстренное или с доставкой буферизованных на передающей стороне данных).

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

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

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

В сетях на основе TCP/IP для идентификации отдельного узла используется уникальное четырехбайтовое число. Только для удобства пользователей сети этим адресам (числам) в соответствие могут быть поставлены символические имена узлов сети. Информация о таком соответствии хранится в одной или нескольких специальных базах данных. Система программирования ОС UNIX предоставляет библиотеку вспомогательных функций, позволяющих работать с этими базами (транслируя, например, имена узлов в адреса и обратно).

Каналом выхода в коммуникационную среду, образуемую вычислительной сетью TCP/IP, для любой прикладной программы является так называемый "порт" - чисто абстрактное ("программное") понятие, не имеющее какого-либо соответствия в аппаратуре ЭВМ. Прикладная программа может использовать для общения с другими программами в сети любое количество портов. Каждый порт должен иметь уникальный номер. Номера портов от 1 до 1024 зарезервированы для "широко известных" приложений. Любой номер, больший 1024, может быть использован программистом для идентификации порта его приложения, необходимо лишь следить за его уникальностью в рамках отдельного узла сети.

В сетях TCP/IP для организации режима взаимодействия с логическим соединением используется протокол транспортного уровня TCP, а режима без установления соединения - протокол UDP. Причем два порта с одинаковым номером, но открытые для взаимодействия по разным протоколам транспортного уровня, считаются различными.

Таким образом: для идентификации партнера по взаимодействию любая сетевая прикладная программа должна специфицировать:

адрес узла сети, на котором функционирует партнер;

используемый для взаимодействия протокол транспортного уровня (TCP или UDP);

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

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

socket-интерфейс

TLI-интерфейс

средства удаленного вызова процедур

 




Поделиться с друзьями:


Дата добавления: 2017-02-01; Просмотров: 64; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopediasu.com - Студопедия (2013 - 2026) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.008 сек.