
Сокеты Мохов.ppt
- Количество слайдов: 20
Операционные системы: СОКЕТЫ ЮРГТУ(НПИ) Мохов В. А.
Соединители Беркли n n n Современные ОС в настоящее время базируются на идеологии сокетов (socket) Изначально технология сокетов была разработана в университете г. Беркли (США) для системы Unix. Ппоэтому сокеты называют соединителями Беркли (berkeley sockets) Сокеты Windows (Winsock) – это интерфейс прикладного программирования, разработанный на основе сокетов Беркли. Сокеты Беркли используются на различных ОС, а Winsock – для ОС семейства Windows Сокеты реализуют механизм взаимодействия процессов как в распределенных, так и в централизованных ЭВМ Технология сокетов лежит в основе современного сетевого программирования
IP-адрес и порт IP-адрес – это уникальный числовой идентификатор вычислительной системы, состоящий из 4 -х 8 -разрядных чисел разделенных точками Порт – число от 1 до 65535, указывающее, какому приложению предназначен пакет полученных/передаваемых данных
Понятие «сокет» Система, ориентированная на соединение ЭВМ № 1 Вычислительный процесс А ЭВМ № 2 сокеты канал связи между двумя процессами IP 1 СА 1 PA IP 2 СА 2 PB Вычислительный процесс B Сокет = IP-адрес + номер порта
Этапы работы с сокетами 1. Создание 2. Настройка на заданный режим работы 3. Применение для организации обмена 4. Ликвидация
Прикладные программы n В прикладных программах сокет является не только комбинацией «IP-адрес + номера порта» . n Сокет – это указатель на структуру данных, где хранятся параметры виртуального канала.
Формирование сокета оператор – socket возвращает – дескриптор сокета, который указывает на элемент таблицы дескрипторов вид элемента таблицы дескрипторов n n n код семейства протоколов; код типа сервиса; локальный IP-адрес; удаленный IP-адрес; номер локального порта; номер удаленного порта. Эта структура позволяет осуществлять несколько соединений между рабочей станцией и, например, WEBсервером, в том числе имеющих разный уровень приоритета
Связь с другим процессом оператор – connect возвращает – значение true (в случае успеха соединения) false (иначе)
Присвоиение определенного IP-адреса заданному сокету оператор – bind возвращает – значение true (в случае успеха присвоения) false (иначе) Для того чтобы определить присвоенный адрес после выполнения оператора bind приложение может выполнить операцию getsockname
Установка сокета в режим ожидания оператор – listen возвращает – true или false При вызове в качестве параметра для организации очереди приходящих запросов требует указание максимального размера очереди
Извлечение запроса из очереди оператор – accept возвращает – true или false Когда входная очередь сформирована, программа реализует процедуру accept и переходит в режим ожидания запросов
Разновидности TCPсокетов Серверный – ожидает запросы на установление соединений. Клиентский - инициирует соединение. После установления соединения между сокетами, клиент и сервер могут передавать и принимать данные или закрыть это соединение.
Схема использования сокетов Вариант соединения N клиентов с одним WEBсервером (при этом клиент № 1 сформировал два соединения) Клиенты WEB-сервер IPclient 1: Port 1 IPserver: Port(80) IPclient 1: Port 2 IPserver: Port(80) IPclient 2: Port 1 IPserver: Port(80) IPclient 3: Port 1 IPserver: Port(80) IPclient. N: Port 1 IPserver: Port(80) ……. . .
Ориентация на соединение С интерфейсом сокетов могут работать два вида протоколов: n n ориентированные на соединение (протокол типа TCP, образующий надежный двунаправленный канал передачи данных); не ориентированные на соединение (протокол типа UDP, ненадежный, с пакетами фиксированного размера). При этом каждый тип протокола обслуживается различными наборами функций.
Ориентация на соединение Схема организации взаимодействия между сокетами с протоколами ориентированными на соединение В этом режиме программе клиента не нужно знать номер порта, поэтому она не обращается к процедуре bind, а для установления связи сразу вызывает оператор connect. Для многих видов услуг в Интернет выделены строго определенные номера портов. С клиентской стороны при этом используются номера портов со значениями из диапазона 1024 -5000. Для каждого нового клиентского запроса в ЭВМ-сервере, как правило, формируется новый процесс. Для пересылки данных могут использоваться команды write, read, send, recv.
Отсутствие ориентации на соединение Сервер вызывает socket и bind, после чего обращается к процедуре recvfrom (вместо read или recv). Программа-клиент в данной схеме обращается к оператору bind и совсем не использует оператор connect (предварительного соединения не нужно). Для передачи запросов и приема откликов здесь служат операторы sendto и recvfrom, соответственно. Схема организации взаимодействия между сокетами с протоколами неориентированными на соединение
Оператор select n n n Помимо рассмотренных операторов для работы с сокетами имеется еще один - select, довольно часто используемый серверами. Оператор select позволяет процессу отслеживать состояние одного или нескольких соединителей. Для каждого соединителя вызывающая программа может запросить информацию о статусе read, write или error.
Оператор closesocket n Последним важным оператором является closesocket(s), который закрывает канал соединителя с одной из сторон.
Обмен данными Лишь при успешной реализации всех перечисленных операций может начаться обмен данными. Для пересылки информации могут использоваться команды n write n read n send n recv
Выводы n n n Сокет — это абстрактное представление конечной точки сетевого соединения. Разработчики интерфейса сокетов приспособили его для работы не только с сетями на базе TCP/IP. Интерфейс сокетов пользуется понятиями группы (семейства) протоколов и сетевых адресов для того, чтобы иметь возможность работать с различными сетями. С интерфейсом сокетов могут работать как ориентированные, так и не ориентированные на соединение протоколы. Однако каждый тип протокола обслуживается различными наборами функций. При помощи интерфейса сокетов можно разрабатывать как программы-серверы, так и программы-клиенты, однако каждый тип приложения обслуживается различными функциями. До того как настроить сокет на сетевое соединение, программа должна создать его, вызвав функцию socket. Для соединения сокета с партнером на другом конце недостаточно толькоисоздать его. Кроме функции socket должна вызываться функция connect. То, какие функции вызываются для настройки сокета, зависит от того, серверу или клиенту предназначен этот сокет, а также от того, ориентирован или не ориентирован на соединение выбранный протокол. Для передачи данных в интерфейсе сокетов предназначены пять различных функций. На каждую функцию по передаче данных в интерфейсе сокетов приходится соответствующая функция для приема данных. При помощи интерфейса сокетов можно разрабатывать серверы как с последовательной, так и с параллельной обработкой данных.