АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомДругоеЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция

Механизм Sockets ОС UNIX

Читайте также:
  1. II. Механизмы и условия социализации личности
  2. II. СЛОВО В ЯЗЫКОВОМ/РЕЧЕВОМ МЕХАНИЗМЕ ЧЕЛОВЕКА
  3. III. Описание основных целей и задач государственной программы. Ключевые принципы и механизмы реализации.
  4. III. Психофизиологические механизмы психических процессов и регуляции поведения личности
  5. VI. Факторы, вовлекающие механизмы, связанные с активацией комплемента.
  6. А. Механизмы небыстрого реагирования —
  7. Агенты, институты и механизмы социализации.
  8. Административно-правовой механизм охраны окружающей среды: форма реализации и мероприятия
  9. Анализ и синтез как механизм открытия и создания нового
  10. Аттенуация транскрипции один из возможных механизмов регуляции экспрессии генов.
  11. Б. в экономике не существует механизма, гарантирующего полную занятость
  12. Буферные системы, их состав и механизм действия. Расчет рН буферных систем. Буферная емкость, влияние на нее различных факторов. Биологическое значение буферных систем.

 

Механизм сокетов (sockets) впервые появился в версии 4.3 BSD UNIX (Berkeley Software Distribution UNIX — ветвь UNIX, начавшая развиваться в калифорний­ском университете Беркли). Позже он превратился в одну из самых популярных систем сетевого обмена сообщениями. Сегодня этот механизм реализован во мно­гих операционных системах, иногда его по-прежнему называют Berkeley Sockets, отдавая дань уважения его создателям, хотя существует большое количество его реализаций как для различных ОС семейства UNIX, так и для других ОС, на­пример для ОС семейства Windows, где он носит название Windows Sockets (WinSock).

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

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

Ø Использование абстрактной конечной точки соединения, получившей на­звание сокет (socket — гнездо). Сокет — это точка, через которукэ сообщения уходят в сеть или принимаются из сети. Сетевое соединение между двумя процессами осуществляется через пару сокетов. Каждый процесс пользуется своим сокетом, при этом сокеты могут находится как на разных компьютерах, так и на одном (в этом случае сетевое межпроцессное взаимодействие сводит­ся к локальному).

Ø Сокет может иметь как высокоуровневое символьное имя (адрес), так и низ­коуровневое, отражающее специфику адресации определенного коммуника­ционного домена. Например, в домене Интернета низкоуровневое имя пред­ставлено парой (IP-адрес, порт).

Ø Для каждого коммуникационного домена могут существовать сокеты различ­ных типов. С помощью типа сокета можно задавать определенный вид взаи­модействия, имеющий смысл для домена. Так, во многих доменах существу­ют дейтаграммные соединения (datagram) и соединения потоковые (stream), гарантирующие надежную упорядоченную доставку.

Для обмена сообщениями механизм сокетов предлагает следующие примитивы, реализованные как системные вызовы.

Создание сокета:

ü Процесс должен создать сокет перед началом его использования. Системный вызов socket создает новый сокет с параметрами, определяющими коммуни­кационный домен (domain), тип соединения, поддерживаемого сокетом (type), и транспортный протокол (например, TCP или UDP), который будет поддер­живать это соединение. Если транспортный протокол не задан, то система сама выбирает протокол, соответствующий типу сокета. Указание домена опреде­ляет возможные значения остальных двух параметров. Системный вызов socket возвращает дескриптор созданного сокета, который используется как идентификатор сокета в последующих операциях.

ü Связывание сокета с адресом:

Системный вызов bind связывает созданный сокет с его высокоуровневым име­нем либо с низкоуровневым адресом. Адрес addr относится к тому узлу, на котором расположен сокет. Для низкоуровневого адреса домена Интернета адресом будет пара (IP-адрес, порт). Третий параметр делает адрес доменно-независимым, позволяя задавать адреса различных типов, в том числе сим­вольные. Связывать сокет с адресом необходимо только в том случае, если на данный сокет будут приниматься сообщения.

ü Запрос на установление соединения с удаленным сокетом:

Системный вызов connect используется только в том случае, если предполага­ется передавать сообщения в потоковом режиме, который требует установ­ления соединения. Процедура установления несимметрична: один процесс (процесс-сервер) ждет запроса на установление соединения, а второй (про­цесс-клиент) — инициирует соединение, посылая такой запрос. Системный вызов connect является запросом клиента на установление соединения с сер­вером. Второй и третий аргументы вызова указывают адрес сокета сервера, с которым устанавливается соединение. После установления соединения сооб­щения по нему могут передаваться в дуплексном режиме, то есть в любом на­правлении. Системный вызов write, используемый для передачи сообщений в рамках установленного соединения, не требует указания адреса сокета полу­чателя, так как локальный сокет, через который сообщение отправляется, уже соединен с определенным удаленным сокетом. Способ, с помощью которого клиенты узнают адрес сокета сервера, не стандартизован.

ü Ожидание запроса на установление соединения:

Системный вызов listen используется для организации режима ожидания сер­вером запросов на установление соединения. Система обмена сообщениями после отработки данного системного вызова будет принимать запросы на установление, имеющие адрес сокета s, и передавать их на обработку другому системному вызову — accept, который решает, принимать их или отвергать.

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

ü Принятие запроса на установление соединения:

Системный вызов accept используется сервером для приема запроса на установление соединения, поступившего от системного вызова listen через сокет s от клиента с адресом client_addr (если этот аргумент опущен, то принимает­ся запрос от любого клиента). При этом создается новый сокет snew, через ко­торый и устанавливается соединение с данным клиентом. Таким образом, сокет s используется сервером для приема запросов на установление соедине­ния от клиентов, а сокеты snew — для обмена сообщениями с клиентами по индивидуальным соединениям.

ü Отправка сообщения по установленному соединению:

Сообщение длиной msg_len, хранящееся в буфере message, отправляется полу­чателю, с которым предварительно соединен сокет s.

ü Прием сообщения по установленному соединению:

Сообщение, поступившее через сокет snew, с которым предварительно соеди­нен отправитель, принимается в буфер buffer размером amount. Если сообще­ний нет, то процесс-получатель блокируется.

ü Отправка сообщения без установления соединения:

Так как сообщение отправляется без предварительного установления соеди­нения, то в каждом системном вызове sendto необходимо указывать адрес сокета получателя.

ü Прием сообщения без установления соединения:

Аналогично предыдущему вызову при приеме без установленного соедине­ния в каждом вызове recvfrom указывается адрес сокета отправителя, от кото­рого нужно принять сообщение. Если сообщений нет, то процесс-получатель блокируется.


1 | 2 |

Поиск по сайту:



Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Студалл.Орг (0.004 сек.)