Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Операционная система Unix.doc
Скачиваний:
1
Добавлен:
01.05.2019
Размер:
3.25 Mб
Скачать

21. Интерфейс сокетов

Socket

Впервые было реализовано в системе бсд юникс, и одновременно с этим стеком был создан программный интерфейс - гнезда беркли. В юникс он предстваляет средства ядра.

Коммуникационный домен - применяется в локальной области, он используется для локального взаимодействия внутри системы. Стек тцп/ип - область применения интернет.

Т.е. стек делится на области:

PF_LOCAL

PF_FILE

PF_UNIX

PF_INET

PF_INET6

PF_IPX

PF_PACKET

Первое что делается при создании сокета - определяется область, затем выбирают тип сокета:

1)Дейтаграмный - сообщения формируются и передаются в форме дейтаграмм, транспортный протокол может быть не надежным, пакеты могут пропадать SOCK_DGRAM

2)SOCK_STREAM - потоковый сокет, данные передаются потоком с гарантией надежности.

3)SOCK_RAW - сырой сокет, обеспечивается доступ на сетевой уровень, кадр канального уровня генерируется автоматически.

4)SOCK_PACKET - пакетный сокет, формирует все заголовки вплоть до канального уровня, при получении получаем все пакеты целиком.

Сокет адрес описан в заголовочном файле sys/socket.h и представляет структуру состоящую из 2 полей:

1)условное обозначение области

2)некий адрес который соответствует используемый в данной области.

В каждой области по своему описывается структура адреса.

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

После выполнения всех операций, функции close передаем дескриптор сокета.

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

При использовании дейтаграмных сокетов, эти действия более симметричны.

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

Для прекращения работы используется таже функция.

При работе с неструктурированными сокетами, та же схема работы.

Если в функцию приема данных указать флаг, то можно будет получать срочные данные. MSG_OOB

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

Существуют сигналы для общения с сокетами.

Отладка осуществляется сначала на уровне клиент - сервер в одной системе, затем переносятся в разные и устанавливается telnet соединение.>1

С помощью интерфейсов сокетов можно реализовывать другие интерфейсы. XDR позволяет преобразовывать представление данных, RPC - это интерфейс удаленного вызова процедур, позволяет через сеть вызывать процедуры т.е. применение процедур на мощных системах а также можно реализовать любой протокол прикладного уровня. Спомощью этих двух интрефейсов можно например реализвать NFS.

Поток XDR некоторый поток байтов

Декодирование и кодирование XDR выполняются фильтрами. Для управления потоками создается управляющая структура XDR.

XDR_ENCODE,XDR_DECODE.

NFS - простейший файловый сервер со службами обслужываемые демонами это mountd и nfsd(/etc/exports там указывается что монтировать и кому можно). Клиент и сервер встроены в ядро операционной системы. Чтение и запись кешируются, запись кешируется на стороне клиента, это обеспечивают демоны. Для монтирования используется команда mount [-t nfs] <host>:<server> <mountpoint>

Xwindow - графический интерфейс распределенный по сети. Текущая версия X11R7.

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

Эту же систему реализовали в MacOS который потом взяла Microsoft. Но при этом они убрали сетевую распределенность.

Отображение информации выполняет дисплей(некое устройство отображения с одним или несколькими экранами и устройства ввода). Дисплей содержит сочетания <host>:<№ дисплей>[.<№ экрана>]. Для программирования используется библиотека xlib, где как в окнах испльзуется слушанье сообщений. Над этой библиотекой надстраиваются другие интерфейсы, например xt, через которые создаются widget'ы. Также для программирования используется библиотека motif которую заменили qt и GTK.

Xlib

Консультация

1)Значение юникс в операционных системах и стандарты Posix. Для совместимости ОС вводят стандарты.

2) Что такое файловая система, составные части, понятие индексного дескриптера, понятие области данных, что где хранится, команды, ls -l.

3,4,6) Программные интерфейсы, защитай файлов, атрибуты файлов, категории владельцев, спец. атрибуты.

5)Функции реализуемые ядром системы, с помощью позицианирования указателя мы можем оперировать файлами, режимы открытия файлов, функция перенаправления ввода вывода.

7,8) Командный и программный интерфейс, как создавать процессы, fork. Выполнение других прогнамм в качестве другого процесса. Клонирование это выполнение тойже самой программы. Открытые файлы можем использовать в новой программе, все дескрипторы сохраняются. Атрибуты процессов

9,10) Программные каналы и сигналы.(если попадется разделяемые каналы и сообщения). Очереди в разный программах через файловые дескрипторы только для родственных процессов, для двустороннего обмена необходимо создавать 2 канала с 4 дескрипторами т.к. канал односторонний.Сигналы - простейшие процессы передачи, номера сигналов, типовые сигналы.(-kill, -HUP и т.д.) Сигнальные маски для определения множества блокируемых сигналов.

13) Демоны, процессы без терминала. Програмный интерфейс создания новых процессов - создаем процесс и теряем терминал, обычно создается pid для старт-стоп сигнала.

14,20) Прописываем пользователей в учетной базе passwd, как вручную так и через комманды. Рассказать что указываем при создании. Интерпретатор программы инициализируясь создает общую среду работы /etc/profile, затем текущим каталогом становится домашний каталог и используется локальный сценарий ~/.profile кроме того используется сценарий для своей оболочки типа ~/.bashrc. Для 20 также рассказать про ssh и telnet. Рассказать про inetd создающий сокеты на каждый порт сервиса, организуется состояние ожидание и при поступлении запроса создает процесс.

15,16) Как группировать команды в командной строке - в одной строке, канал, списки команды и составные команды, условное выполнение команд и асинхронное выполение. Рассказать про типовые конструкции - циклы, ветвления.

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

18)Схема клиент-серверной работы. СП/СБД. ПРоблема перехвата данных и их решение. Средства межпроцессорного взаимодействия, Итеративный сервер,паралельный, сервер состояния. Интерфейс сокетов.

21)Организация клиент-сервера для различных типов, основные вызовы.

22,23,24)Надстройки над интерфейсом сокетов, межплатформенный обмен, что такое фильтры, как они создаются. Понятие заглушек, как создавать клиент, как создавать сервер RPC.

25)Распределенный графический интерфейс. понятие X протокола. Программный интерфейс низкого уровня xlib.

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

-27

28)Что такое драйвер, типы драйверов, идендификация драйвера - целочисленное число в файле /proc/devices действующий в данный момент. Для доступа к драйверам создаются спец файлы со страшим и младшим байтом. Ядро является модульным хранящиеся /lib/modules/, lsmod список работающих модулей, insmod,rmmode - добавление/удаление модулей

30) конфигурирования интерфейса, конфигурирование таблицы маршрутизации.(ifconfig,route) Также для управления используются команды ifup ifdown которые используют сценарии драйверов.

В BSD сводится к правке файлов в /etc/rc.d Для системы 5 предусматривается на каждом уровне выполнения утилиты в который передается уровень для инициализации ссылок в /etc/rc<level>.d где первый символ S - start K - stop сценарии.

29)Процесс загрузки ОС - вначале получает управление загрузчик(может находится в MBR, может запускатся из под другой ОС), далее ядро помещается в память которое конфигурирует сетевые интерфейсы, монтируется корневая файловая система, создаются процессы - сначала с ид 0, далее путем клонирования создается процесс с ид1 в который загружается код из sbin/init который создает все остальные процессы из /etc/inittab.