Учебники

Что такое сокет?

Сокеты обеспечивают связь между двумя разными процессами на одной и той же машине. Точнее, это способ общения с другими компьютерами с использованием стандартных файловых дескрипторов Unix. В Unix каждое действие ввода / вывода выполняется путем записи или чтения файлового дескриптора. Дескриптор файла – это просто целое число, связанное с открытым файлом, и это может быть сетевое соединение, текстовый файл, терминал или что-то еще.

Для программиста сокет выглядит и ведет себя как низкоуровневый дескриптор файла. Это связано с тем, что такие команды, как read () и write (), работают с сокетами так же, как с файлами и каналами.

Сокеты были впервые введены в 2.1BSD и впоследствии уточнены в их текущем виде с 4.2BSD. Функция сокетов теперь доступна в большинстве текущих версий UNIX.

Где используется гнездо?

Unix Socket используется в среде клиент-серверных приложений. Сервер – это процесс, который выполняет некоторые функции по запросу клиента. Большинство протоколов уровня приложений, таких как FTP, SMTP и POP3, используют сокеты для установления соединения между клиентом и сервером, а затем для обмена данными.

Типы сокетов

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

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

  • Stream Sockets – доставка в сетевом окружении гарантирована. Если вы отправите через потоковый сокет три элемента «A, B, C», они будут поступать в том же порядке – «A, B, C». Эти сокеты используют TCP (протокол управления передачей) для передачи данных. Если доставка невозможна, отправитель получает индикатор ошибки. Записи данных не имеют границ.

  • Datagram Sockets – Доставка в сетевом окружении не гарантируется. Они не имеют соединения, потому что вам не нужно иметь открытое соединение, как в потоковых сокетах – вы создаете пакет с информацией о получателе и отправляете его. Они используют UDP (протокол пользовательских дейтаграмм).

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

  • Последовательные сокеты пакетов – они похожи на потоковые сокеты, за исключением того, что границы записей сохраняются. Этот интерфейс предоставляется только как часть абстракции сокета Network Systems (NS) и очень важен в большинстве серьезных приложений NS. Сокеты с последовательными пакетами позволяют пользователю манипулировать заголовками протокола пакетной последовательности (SPP) или протокола дейтаграмм Интернета (IDP) в пакете или группе пакетов, либо записывая заголовок прототипа вместе с любыми данными, которые должны быть отправлены, либо с помощью указание заголовка по умолчанию, который будет использоваться со всеми исходящими данными, и позволяет пользователю получать заголовки входящих пакетов.

Stream Sockets – доставка в сетевом окружении гарантирована. Если вы отправите через потоковый сокет три элемента «A, B, C», они будут поступать в том же порядке – «A, B, C». Эти сокеты используют TCP (протокол управления передачей) для передачи данных. Если доставка невозможна, отправитель получает индикатор ошибки. Записи данных не имеют границ.

Datagram Sockets – Доставка в сетевом окружении не гарантируется. Они не имеют соединения, потому что вам не нужно иметь открытое соединение, как в потоковых сокетах – вы создаете пакет с информацией о получателе и отправляете его. Они используют UDP (протокол пользовательских дейтаграмм).

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

Последовательные сокеты пакетов – они похожи на потоковые сокеты, за исключением того, что границы записей сохраняются. Этот интерфейс предоставляется только как часть абстракции сокета Network Systems (NS) и очень важен в большинстве серьезных приложений NS. Сокеты с последовательными пакетами позволяют пользователю манипулировать заголовками протокола пакетной последовательности (SPP) или протокола дейтаграмм Интернета (IDP) в пакете или группе пакетов, либо записывая заголовок прототипа вместе с любыми данными, которые должны быть отправлены, либо с помощью указание заголовка по умолчанию, который будет использоваться со всеми исходящими данными, и позволяет пользователю получать заголовки входящих пакетов.

Что дальше?

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