next up previous contents
Next: Создание и именование сокетов Up: Сокеты Previous: Сокеты   Contents

Общие сведения о сокетах

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

Сокеты находятся в областях связи (доменах). Домен сокета - это абстракция, которая определяет структуру адресации и набор протоколов. Сокеты могут соединяться только с сокетами в том же домене. Всего выделено 23 класса сокетов (см. файл <sys/socket.h>), из которых обычно используются только UNIX-сокеты и Интернет-сокеты. Сокеты могут использоваться для установки связи между процессами на отдельной системе подобно другим формам IPC.

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

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

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

Сервер   Клиент
Установка сокета socket()   Установка сокета socket()
$\Downarrow $   $\Downarrow $
Присвоение имени bind()   $\Downarrow $
$\Downarrow $   $\Downarrow $
Установка очереди запросов listen()   $\Downarrow $
$\Downarrow $   $\Downarrow $
Выбор соединения из очереди accept() $\Longleftrightarrow $ Установка соединения connect()
$\Downarrow $   $\Downarrow $
read() $\Longleftarrow $ write()
$\Downarrow $   $\Downarrow $
write() $\Longrightarrow $ read()


next up previous contents
Next: Создание и именование сокетов Up: Сокеты Previous: Сокеты   Contents
2004-06-22