Сетевое взаимодействие средствами POSIX. Архитектура клиент-сервер. — КиберПедия 

Историки об Елизавете Петровне: Елизавета попала между двумя встречными культурными течениями, воспитывалась среди новых европейских веяний и преданий...

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

Сетевое взаимодействие средствами POSIX. Архитектура клиент-сервер.

2017-06-25 612
Сетевое взаимодействие средствами POSIX. Архитектура клиент-сервер. 0.00 из 5.00 0 оценок
Заказать работу

Общие сведения

Сокеты (англ. socket — углубление, гнездо, разъём) — название программного интерфейса для

обеспечения обмена данными между процессами. Процессы при таком обмене могут

исполняться как на одной ЭВМ, так и на различных ЭВМ, связанных между собой сетью. Сокет —

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

Интерфейс сокетов впервые появился в BSD Unix. Программный интерфейс сокетов описан в

стандарте POSIX.1 и в той или иной мере поддерживается всеми современными операционными

системами.

 


Сокеты могут динамически создаваться и уничтожаться. При создании сокета вызывающему

процессу возвращается дескриптор файла, который используется для установки или разрыва

соединения, а также чтения и записи данных.

Каждый сокет поддерживает определенный тип работы в сети, указываемый при его создании.

Наиболее распространенными типами сокетов являются:

· Надежный, ориентированный на соединение байтовый поток.

· Надежный, ориентированный на соединение поток пакетов.

· Ненадежная передача пакетов.

Первый тип сокетов позволяет двум процессам на различных машинах установить между собой

эквивалент «трубы» (канала между процессами на одной машине). Байты подаются в канал с

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

Второй тип сокетов отличается от первого тем, что он сохраняет границы между пакетами. Если

отправитель пять раз отдельно обращается к системному вызову write, каждый раз отправляя по

512 байт, а получатель запрашивает 2560 байт по сокету типа 1, он получит все 2560 байт сразу.

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

остальные байты, необходимо повторно прочитать данные из сокета с помощью функции read

еще четыре раза.

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

При создании сокета один из параметров указывает протокол, используемый для него. Для надежных байтовых потоков, как правило, используется протокол TCP (Transmission Control

Protocol – протокол управления передачей). Для ненадежной передачи пакетов обычно применяется протокол UDP (User Data Protocol – пользовательский протокол данных). Для надежного потока пакетов специального протокола нет.

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

Этот адрес может принадлежать к одному из нескольких пространств адресов. Наиболее распространенным пространством является пространство адресов Интернета, использующее 32-

разарядные числа для идентификации конечных адресатов в протоколе IPv4 и 128-разрядные числа в протоколе IPv6 (5-я версия протокола IP была экспериментальной системой, так и не выпущенной в свет).

Как только сокеты созданы на компьютере-источнике и компьютере-приемнике, между ними может быть установлено соединение (для ориентированной на соединение связи). Одна сторона обращается к системному вызову listen, указывая в качестве параметра локальный сокет. При этом системный вызов создает буфер и блокируется до тех пор, пока не прибудут данные. Другая сторона обращается к системному вызову connect, задавая в параметрах дескриптор файла для локального сокета и адрес удаленного сокета. Если удаленный компьютер принимает вызов, то система устанавливает соединение между двумя сокетами.

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


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

Особенности сооружения опор в сложных условиях: Сооружение ВЛ в районах с суровыми климатическими и тяжелыми геологическими условиями...

Историки об Елизавете Петровне: Елизавета попала между двумя встречными культурными течениями, воспитывалась среди новых европейских веяний и преданий...

Двойное оплодотворение у цветковых растений: Оплодотворение - это процесс слияния мужской и женской половых клеток с образованием зиготы...

Индивидуальные и групповые автопоилки: для животных. Схемы и конструкции...



© cyberpedia.su 2017-2024 - Не является автором материалов. Исключительное право сохранено за автором текста.
Если вы не хотите, чтобы данный материал был у нас на сайте, перейдите по ссылке: Нарушение авторских прав. Мы поможем в написании вашей работы!

0.007 с.