socket сервер что это

Socket сервер что это

Сетевые сокеты — способ взаимодействия любого приложения с системой на которой оно работает. Сокет — это интерфейс, который по сути представляет собой совокупность адреса в сети и используемого порта. Также часто термин употребляется применительно к Socket API, о котором рассказывается во второй части статьи.

Клиентское приложение всегда работает на локальной машине, подключенной к сети

Интерфейс между приложением и хост-машиной (Network-Application Interface) определяет как приложение может использовать сеть.

Сетевые сокеты и клиент серверная модель

Приложение клиента (посылает например URL в случае с вебом или запрос к MySQL) на определенный сетевой адрес и порт. В примере это localhost и порт 3306 — сервер в свою отвечает приложению. К приложению при этом могут обращаться множество клиентов, запросы и использованием сокета приходят на один и тот же адрес и обрабатываются одним пакетом. Таким образом работает клиент-серверая модель взаимодействия.

Чтобы написать приложение, которое могло бы обслуживать множество клиентов (последовательно и параллельно) нужно сокет API

Socket API — интерфейс используемый всеми интернет приложениями.

Socket API при соединении 2-х приложений может работать с потоками и с датаграммами :

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

Один сокет не может использовать два приложения одновременно или два экземпляра одного приложения.

Вызовы в Socket API


SOCKET — вызов создает структуру

BIND — связывает локальный адрес с сокетом

LISTEN — заявляет о готовности установить соединение

ACCEPT — принимает входящее соединение

CONNECT — пробует установить соединение

SEND — отправляет данные в рамках соединения

RECEIVE — принимает информацию в рамках соединения

CLOSE — прерывает соединение

Источник

уПЛЕФЩ

пУОПЧЩ УПЛЕФПЧ

рТПУФТБОУФЧП ЙНЕО ПРТЕДЕМСЕФ, ЛБЛ ЪБРЙУБОЩ БДТЕУБ УПЛЕФБ ( socket addresses ). бДТЕУ УПЛЕФБ ЙДЕОФЙЖЙГЙТХЕФ ПДЙО ЛПОЕГ РПДЛМАЮЕОЙС УПЛЕФБ. оБРТЙНЕТ, БДТЕУБ УПЛЕФБ Ч МПЛБМШОПН РТПУФТБОУФЧЕ ЙНЕО СЧМСАФУС ПВЩЮОЩНЙ ЙНЕОБНЙ ЖБКМПЧ. ч РТПУФТБОУФЧЕ ЙНЕО йОФЕТОЕФ БДТЕУ УПЛЕФБ УПУФПЙФ ЙЪ йОФЕТОЕФ БДТЕУБ ( IP БДТЕУ) ЗМБЧОПЗП ЛПНРШАФЕТБ, РТЙУПЕДЙОЕООПЗП Л УЕФЙ Й ОПНЕТБ РПТФБ, ЛПФПТЩК ЙДЕОФЙЖЙГЙТХЕФ УПЛЕФ УТЕДЙ НОПЦЕУФЧБ УПЛЕФПЧ ОБ ФПН ЦЕ ЗМБЧОПН ЛПНРШАФЕТЕ.

уЙУФЕНОЩЕ ЧЩЪПЧЩ

уПЛЕФЩ РТЕДУФБЧМСАФУС ДЕУЛТЙРФПТБНЙ ЖБКМПЧ.

уПЪДБОЙЕ Й ХОЙЮФПЦЕОЙЕ УПЛЕФПЧ

у РПНПЭША ЖХОЛГЙК socket Й close УПЪДБАФУС Й ХОЙЮФПЦБАФУС УПЛЕФЩ. рТЙ УПЪДБОЙЙ УПЛЕФБ, ОЕПВИПДЙНП ПРТЕДЕМЙФШ ФТЙ РБТБНЕФТБ УПЛЕФБ: РТПУФТБОУФЧП ЙНЕО, УФЙМШ ЧЪБЙНПДЕКУФЧЙС Й РТПФПЛПМ.

дМС ХЛБЪБОЙС РТПУФТБОУФЧБ ЙНЕО ЙУРПМШЪХАФУС ЛПОУФБОФЩ, ОБЮЙОБАЭЙЕУС У PF_ (УПЛТБЭЕОЙЕ «УЕНЕКУФЧП РТПФПЛПМБ»). оБРТЙНЕТ, PF_LOCAL ЙМЙ PF_UNIX ПРТЕДЕМСАФ МПЛБМШОПЕ РТПУФТБОУФЧП ЙНЕО, Й PF_INET ПРТЕДЕМСЕФ йОФЕТОЕФ РТПУФТБОУФЧП ЙНЕО.

чЩЪПЧ connect

пФРТБЧЛБ ДБООЩИ

уЕТЧЕТЩ

чЩЪПЧ accept УПЪДБЕФ ОПЧЩК УПЛЕФ ДМС ЧЪБЙНПДЕКУФЧЙС У ЛМЙЕОФПН Й ЧПЪЧТБЭБЕФ УППФЧЕФУФЧХАЭЙК ДЕУЛТЙРФПТ ЖБКМБ. пТЙЗЙОБМШОЩК УПЛЕФ УЕТЧЕТБ РТПДПМЦБЕФ РТЙОЙНБФШ ОПЧЩЕ ЛМЙЕОФУЛЙЕ УПЕДЙОЕОЙС.

мПЛБМШОЩЕ УПЛЕФЩ

оБРТЙНЕТ, ПВТБФЙФЕ ЧОЙНБОЙЕ ОБ ОБЮБМШОХА s:

чЩЪПЧ unlink ХДБМСЕФ МПЛБМШОЩК УПЛЕФ, РТЙ ЪБЧЕТЫЕОЙЙ ТБВПФЩ У ОЙН.

рТЙНЕТ ЙУРПМШЪПЧБОЙС МПЛБМШОЩИ УПЛЕФПЧ

лМЙЕОФ-РТПЗТБННБ, РТЕДУФБЧМЕООБС Ч МЙУФЙОЗЕ 5.11, УПЕДЙОСЕФУС У МПЛБМШОЩН УПЛЕФПН Й РПУЩМБЕФ УППВЭЕОЙС. рХФШ Л УПЛЕФХ Й УППВЭЕОЙС РЕТЕДБtФУС ЮЕТЕЪ ЛПНБОДОХА УФТПЛХ.

рЕТЕД РЕТЕДБЮЕК УППВЭЕОЙС, РПУЩМБЕФУС ТБЪНЕТ УППВЭЕОЙС Ч ВБКФБИ Ч ЛБЮЕУФЧЕ РЕТЕНЕООПК length. уЕТЧЕТ УПИТБОСЕФ ТБЪНЕТ УППВЭЕОЙС, ДМС ЧЩДЕМЕОЙС РБНСФЙ РПД УППВЭЕОЙЕ. юФПВЩ ЧЩРПМОЙФШ ЬФПФ РТЙНЕТ, ОЕПВИПДЙНП ЪБРХУФЙФШ УЕТЧЕТ-РТПЗТБННХ Ч ПДОПН ПЛОЕ, ПРТЕДЕМЙФШ РХФШ Л УПЛЕФХ.

ч ДТХЗПН ПЛОЕ ЪБРХУФЙФШ ЛМЙЕОФ-РТПЗТБННХ ОЕУЛПМШЛП ТБЪ, ПРЕТЕДЕМСС ПДЙО Й ФПФ ЦЕ РХФШ УПЛЕФБ Й РПУЩМБС ЛМЙЕОФХ УППВЭЕОЙЕ:

уЕТЧЕТ-РТПЗТБННБ РПМХЮБЕФ Й РЕЮБФБЕФ ЬФЙ УППВЭЕОЙС. дМС ЪБЛТЩФЙС УПЕДЙОЕОЙС, ЛМЙЕОФ РПУЩМБЕФ УППВЭЕОЙЕ «quit»:

Internet-Domain УПЛЕФЩ

CПЛЕФЩ UNIX-domain ЙУРПМШЪПЧБФШУС ФПМШЛП ДМС ЧЪБЙНПДЕКУФЧЙС ДЧХИ РТПГЕУУПЧ ФПМШЛП ОБ ПДОПН ЛПНРШАФЕТЕ. уПЛЕФЩ Internet, ЙУРПМШЪХАФУС ДМС УПЕДЙОЕОЙС ОЕУЛПМШЛЙИ РТПГЕУУПЧ ОБ ТБЪМЙЮОЩИ НБЫЙОБИ, РПДЛМАЮЕООЩИ Л УЕФЙ.

лПНБОДБ gethostbyname РТЕПВТБЪПЧЩЧБЕФ ХДПВПЮЙФБЕНЩЕ ЙНЕОБ ИПУФБ, ЮЙУМБ УП УФБОДБТФОПК ФПЮЕЮОПК ОПФБГЙЕК (ФЙРБ 10.0.0.1) ЙМЙ DNS ЙНЕОБ (ФБЛЙЕ ЛБЛ www.codesourcery.com) Ч 32-ТБЪТСДОЩЕ IP БДТЕУБ. ч ЛБЮЕУФЧЕ ТЕЪХМШФБФБ ЧПЪЧТБЭБЕФУС ХЛБЪБФЕМШ ОБ УФТХЛФХТХ struct hostent ; Ч РПМЕ h_addr ИТБОЙФУС IP БДТЕУ ЗМБЧОПЗП ЛПНРШАФЕТБ.

мЙУФЙОЗ 5.12 ЙММАУФТЙТХЕФ ЙУРПМШЪПЧБОЙЕ Internet-domain УПЛЕФПЧ. рТПЗТБННБ РПМХЮБЕФ ДПНБЫОАА УФТБОЙГХ ПФ Web УЕТЧЕТБ, ЙНС ИПУФБ ЛПФПТПЗП ПРТЕДЕМЕОП Ч ЛПНБОДОПК УФТПЛЕ.

дМС ПФПВТБЦЕОЙС УФТБОЙГЩ www.codesourcery.com, ОЕПВИПДЙНП ЪБДБФШ УМЕДХАЭХЕ ЛПНБОДХ

рБТЩ УПЛЕФПЧ

Источник

Сокеты¶

Сокеты (англ. socket — разъём) — название программного интерфейса для обеспечения обмена данными между процессами. Процессы при таком обмене могут исполняться как на одной ЭВМ, так и на различных ЭВМ, связанных между собой сетью. Сокет — абстрактный объект, представляющий конечную точку соединения.

Принципы сокетов¶

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

Каждый сокет имеет свой адрес. ОС семейства UNIX могут поддерживать много типов адресов, но обязательными являются INET-адрес и UNIX-адрес. Если привязать сокет к UNIX-адресу, то будет создан специальный файл (файл сокета) по заданному пути, через который смогут сообщаться любые локальные процессы путём чтения/записи из него (см. Доменный сокет Unix). Сокеты типа INET доступны из сети и требуют выделения номера порта.

Читайте также:  какие хищные птицы обитают в сибири

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

Основные функции¶

Общие
Socket Создать новый сокет и вернуть файловый дескриптор
Send Отправить данные по сети
Receive Получить данные из сети
Close Закрыть соединение
Серверные
Bind Связать сокет с IP-адресом и портом
Listen Объявить о желании принимать соединения. Слушает порт и ждет когда будет установлено соединение
Accept Принять запрос на установку соединения
Клиентские
Connect Установить соединение

socket()¶

Создаёт конечную точку соединения и возвращает файловый дескриптор. Принимает три аргумента:

domain указывающий семейство протоколов создаваемого сокета

type

protocol

Протоколы обозначаются символьными константами с префиксом IPPROTO_* (например, IPPROTO_TCP или IPPROTO_UDP). Допускается значение protocol=0 (протокол не указан), в этом случае используется значение по умолчанию для данного вида соединений.

Функция возвращает −1 в случае ошибки. Иначе, она возвращает целое число, представляющее присвоенный дескриптор.

Связывает сокет с конкретным адресом. Когда сокет создается при помощи socket(), он ассоциируется с некоторым семейством адресов, но не с конкретным адресом. До того как сокет сможет принять входящие соединения, он должен быть связан с адресом. bind() принимает три аргумента:

Возвращает 0 при успехе и −1 при возникновении ошибки.

Автоматическое получение имени хоста.

listen()¶

Подготавливает привязываемый сокет к принятию входящих соединений. Данная функция применима только к типам сокетов SOCK_STREAM и SOCK_SEQPACKET. Принимает два аргумента:

После принятия соединения оно выводится из очереди. В случае успеха возвращается 0, в случае возникновения ошибки возвращается −1.

accept()¶

Используется для принятия запроса на установление соединения от удаленного хоста. Принимает следующие аргументы:

Функция возвращает дескриптор сокета, связанный с принятым соединением, или −1 в случае возникновения ошибки.

connect()¶

Устанавливает соединение с сервером.

Некоторые типы сокетов работают без установления соединения, это в основном касается UDP-сокетов. Для них соединение приобретает особое значение: цель по умолчанию для посылки и получения данных присваивается переданному адресу, позволяя использовать такие функции как send() и recv() на сокетах без установления соединения.

Загруженный сервер может отвергнуть попытку соединения, поэтому в некоторых видах программ необходимо предусмотреть повторные попытки соединения.

Возвращает целое число, представляющее код ошибки: 0 означает успешное выполнение, а −1 свидетельствует об ошибке.

Передача данных¶

Для передачи данных можно пользоваться стандартными функциями чтения/записи файлов read и write, но есть специальные функции для передачи данных через сокеты:

Нужно обратить внимание, что при использовании протокола TCP (сокеты типа SOCK_STREAM) есть вероятность получить меньше данных, чем было передано, так как ещё не все данные были переданы, поэтому нужно либо дождаться, когда функция recv возвратит 0 байт, либо выставить флаг MSG_WAITALL для функции recv, что заставит её дождаться окончания передачи. Для остальных типов сокетов флаг MSG_WAITALL ничего не меняет (например, в UDP весь пакет = целое сообщение).

Источник

Сокеты

Сокеты — это технология передачи данных низкого уровня, на основе которой реализованы многие сетевые протоколы. UWP предоставляет классы сокетов TCP и UDP для клиент-серверных или одноранговых приложений, если устанавливаются долгосрочные подключения или установленное подключение не требуется.

В этом разделе основное внимание уделяется использованию классов сокетов универсальной платформы Windows (UWP), которые находятся в пространстве имен Windows.Networking.Sockets. Кроме того, сокеты Windows 2 (WinSock) можно использовать в приложении UWP.

Как последствие сетевой изоляции WIndows запрещает установку подключения сокета (Sockets или WinSock) между двумя приложениями UWP, работающими на одном компьютере, через локальный петлевой адрес (127.0.0.0) либо путем явного указания локального IP-адреса. Дополнительные сведения о механизмах, с помощью которых приложения UWP могут взаимодействовать друг с другом, см. в разделе Связь между приложениями.

Создание базового клиента и сервера сокета TCP

Для постоянных подключений сокет протокола TCP обеспечивает в сети низкоуровневую двунаправленную передачу данных. Сокеты TCP широко используются большинством сетевых протоколов в Интернете. Чтобы продемонстрировать базовые операции TCP, в следующем примере кода реализованы отправка и получение данных через TCP объектами StreamSocket и StreamSocketListener, на основе которых создаются эхо-клиент и сервер.

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

Эхо-клиент и сервер на основе сокетов TCP

Создайте StreamSocketListener и начните слушать входящие подключения TCP. Событие StreamSocketListener.ConnectionReceived создается всякий раз, когда клиент устанавливает подключение к прослушивателю StreamSocketListener.

Кроме того, создайте сокет StreamSocket, установите подключение к серверу, отправьте запрос и получите ответ.

Ссылки на StreamSockets в продолжениях C++ PPL (в первую очередь применимо к C++/CX)

Это неприменимо в случае использования сопрограмм C++/WinRT и передачи параметров по значению. Рекомендации по передаче параметров см. в разделе Параллельная обработка и асинхронные операции с помощью C++/WinRT.

StreamSocket остается активным, пока в его потоке ввода/вывода выполняются активные операции чтения/записи (рассмотрим для примера StreamSocketListenerConnectionReceivedEventArgs.Socket, доступ к которому осуществляется в обработчике событий StreamSocketListener.ConnectionReceived). При вызове DataReader.LoadAsync (или ReadAsync/WriteAsync/StoreAsync ) он хранит ссылку на сокет (через поток ввода сокета) до тех пор, пока обработчик событий Completed (при наличии) метода LoadAsync не завершит выполнение.

Библиотека параллельных шаблонов (PPL) не планирует встроенное продолжение задач по умолчанию. Другими словами, добавление задачи продолжения (с task::then() ) не гарантирует, что задача продолжения будет выполняться во встроенном режиме в качестве завершающего обработчика.

Читайте также:  анке на лице что такое

С точки зрения StreamSocket завершающий обработчик завершит выполнение (и сокет станет готовым к ликвидации) до запуска основной части продолжения. Таким образом, чтобы предотвратить удаление сокета, если вы хотите использовать его в этом продолжении, необходимо ссылаться на сокет напрямую (через захват лямбда-функции) и использовать его, или косвенно (продолжая осуществлять доступ к args->Socket внутри продолжения), или обеспечить принудительное выполнение задач продолжения в коде. Эту первую технику можно наблюдать в действии (захват лямбда-функции) в примере StreamSocket. Код C++/CX в разделе Создание базового клиента и сервера TCP-сокета выше использует второй способ. Он возвращает запрос в качестве ответа и осуществляет доступ к args->Socket из одного из продолжений самого глубокого уровня.

Третий способ подходит в тех случаях, когда не нужно выводить ответ. Параметр task_continuation_context::use_synchronous_execution() используется для принудительного выполнения основной части продолжения внутри PPL. Этот пример кода демонстрирует, как это сделать.

Это поведение применяется ко всем сокетам и классам WebSockets в пространстве имен Windows.Networking.Sockets. Но для сценариев на стороне клиента сокеты обычно сохраняются в переменных-членах, так что эта проблема наиболее применима для сценария StreamSocketListener.ConnectionReceived, как описано выше.

Создание простейших клиента и сервера для UDP-сокетов

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

Чтобы продемонстрировать базовые операции UDP, пример кода ниже показывает класс DatagramSocket, который используется для отправки и получения данных через UDP с целью формирования эхо-клиента и сервера. Создайте новый проект и поместите представленный ниже код клиента и сервера в один проект. Как и в случае с сокетом TCP, необходимо объявить возможность приложения Частные сети (клиент и сервер).

Создание эхо-клиента и эко-сервера с использованием сокетов UDP

Создайте сокет DatagramSocket, который будет выполнять роль эхо-сервера, привяжите его к определенному номеру порта, получите входящее сообщение UDP и передайте его обратно. Событие DatagramSocket.MessageReceived создается, когда сокет получает сообщение.

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

Фоновые операции и брокер сокета

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

Пакетные отправки

Каждый раз, когда вы выполняется запись в поток, связанный с сокетом, происходит переход из режима пользователя (обычный код) в режим ядра (где работает сетевой стек). Если записывается много буферов одновременно, повторяющиеся переходы создают значительную нагрузку. Чтобы отправлять несколько буферов данных одновременно, избегая такой нагрузки, можно собирать отправляемые данные в пакеты. Это особенно полезно, если ваше приложение поддерживает VoIP, VPN или другие задачи, предполагающие максимально эффективное перемещение больших объемов данных.

В этом разделе показано несколько техник пакетных отправок, которые можно использовать с сокетом StreamSocket или подключенным сокетом DatagramSocket.

Чтобы получить общее представление о процессе, рассмотрим, как эффективно отправить большое число буферов. Вот минимальная демонстрация, в которой используется StreamSocket.

Следующий пример подходит для любого языка UWP, а не только для C#. В его основе — поведение потоков StreamSocket.OutputStream и DatagramSocket.OutputStream, объединяющих отправки. Эта техника вызывает метод FlushAsync в потоке вывода, который начиная с Windows 10 гарантированно возвращается только после того, как все операции потока вывода завершены.

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

Совместное использование порта для DatagramSocket

Предоставление сертификата клиента с классом StreamSocket

Класс StreamSocket поддерживает возможность использования протокола SSL/TLS для проверки подлинности сервера, к которому обращается клиентское приложение. В некоторых случаях клиентское приложение также должно пройти проверку подлинности на сервере с помощью сертификата клиента SSL/TLS. Можно предоставить клиентский сертификат со свойством StreamSocketControl.ClientCertificate, прежде чем привязывать или подключать сокет (его необходимо задать до начала подтверждения протокола SSL/TLS). Доступ к экземпляру StreamSocketControl осуществляется из объекта StreamSocket через свойство StreamSocket.Control. Если сервер запрашивает сертификат клиента, Windows ответит, воспользовавшись предоставленным клиентским сертификатом.

Используйте переопределение метода StreamSocket.ConnectAsync, которое принимает значение SocketProtectionLevel, как показано в примере минимального кода.

Как указано в комментарии в примерах кода ниже, чтобы код работал, в проекте должна быть объявлена возможность приложения sharedUserCertificates.

Обработка исключений

Ошибка, обнаруженная в операции DatagramSocket, StreamSocket или StreamSocketListener, возвращается в виде значения HRESULT. Можно передать значение HRESULT методу SocketError.GetStatus, чтобы преобразовать его в значение перечисления SocketErrorStatus.

Большинство значений перечисления SocketErrorStatus соответствуют ошибке, возвращаемой стандартной операцией с сокетами Windows. Ваше приложение может включать значения перечисления SocketErrorStatus, чтобы по-разному действовать в зависимости от причины исключения.

Читайте также:  Что такое ксп в бухгалтерии

Конструктор HostName может создать исключение, если переданная строка не является допустимым именем узла. Например, он содержит недопустимые символы, что вероятно, если имя узла вводится в приложении пользователем. Создайте HostName внутри блока try/catch. В этом случае приложение может сообщить пользователю об ошибке и запросить новое имя узла.

Источник

Cокет

Cокет известно как тип программного обеспечения, которое действует как конечная точка, которая функционирует при установлении двунаправленного сетевого соединения между конечной точкой сервера и программой-получателем клиента. [1] Ее также часто называют одной конечной точкой в канале двусторонней связи. Эти сокеты изготавливаются и мобилизуются вместе с набором программных запросов, которые идентифицируются как вызовы функций, которые технически называются интерфейсом прикладного программирования (API). Сокет может упростить работу программы, поскольку теперь программистам остается только беспокоиться о том, как управлять функциями сокета, и это позволяет им полагаться на операционную систему для корректной передачи сообщений по сети. [2]

Cодержание

Функциональность

Как правило, сокет придерживается определенного потока событий, чтобы он работал. Для модели клиент-сервер с ориентацией на подключение, сокет на сервере ожидает запроса от клиента. Для этого серверу необходимо в первую очередь установить адрес, который клиенты могут использовать для поиска и подключения к серверу. После успешного установления соединения сервер будет ждать, пока клиенты запросят услугу. Обмен данными между клиентом и сервером будет происходить, если клиент подключится к серверу через разъем. Затем сервер ответит на запрос клиента и отправит ответ. [3]

В большинстве случаев URL-адреса и их соединения используются для доступа в Интернет. Программы требуют простой связи между клиентом и сервером программы. Эта роль связана с сокетами, которые помогут связать клиентские и серверные части программы. Если клиент начинает устанавливать связь с сервером, то надежное соединение с сервером и клиентом будет осуществляться по каналу связи TCP. При таком типе связи и клиент, и сервер могут читать и писать на разъемах, привязанных к определенному каналу связи.[^04]

Типы розеток

Ниже перечислены различные типы розеток:

Розетки датаграммы

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

Сырьевые розетки

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

Последовательные розетки пакетов Гнезда

Это похоже на сокет потока, за исключением того, что границы записи сохраняются. Этот тип сокета позволяет пользователям управлять протоколом последовательностей пакетов (SPP) или заголовками протокола интернет-протокола датаграмм (IDP) в пакете или даже группе пакетов. Этот сокет также позволяет пользователю получать заголовки входящих пакетов.

Розетки для ручьев

Этот тип сокета полагается на TCP для передачи данных. Если доставка данных невозможна, отправитель получит сообщение о том, что соединение привело к ошибке. Записи данных не имеют границ. [4] Этот разъем обеспечивает ориентированный на подключение, последовательный и уникальный поток данных без границ записи, с четко определенными механизмами для создания и/или разрушения соединений и обнаружения ошибок. Он передает надежные данные в порядке и без использования внеполосных возможностей. Предполагается, что процессы взаимодействуют только между розетками одного типа, но нет никаких ограничений, препятствующих взаимодействию между этими розетками разных типов.

Активное гнездо

Это разъемное соединение с активными удаленными разъемами через открытое соединение для передачи данных. Если это соединение будет закрыто, активные розетки в каждой точке также будут разрушены. Используется клиентами, которые хотят инициировать запросы на подключение для подключения. Однако, это активное гнездо также может быть преобразовано в пассивное гнездо путем привязки имени к гнезду с помощью bind-macro и путем указания готовности принимать соединения с микрофоном listen-macro.

Пассивная розетка

Эта розетка не подключена, а ждет входящего соединения, которое вызовет новую активную розетку. Используется серверами для того, чтобы принимать запросы на соединение с микрофоном Connect-macro. Эта пассивная розетка не может использоваться для инициирования запросов на подключение. Понятия активных и пассивных сокетов для потоковых сокетов не применимы к другим типам сокетов, таким как сокеты датаграммы. [5]

Порты и розетки

История

Термин «розетка» начал употребляться с 1971 года, когда он использовался при разработке ARPANET. Большинство розеток, реализуемых сегодня, основаны на розетках Беркерли, которые были разработаны в 1983 году. Однако розетки, используемые для подключения к Интернету, созданы по образцу моделей Winsock, которые были сделаны в 1991 году. Гнезда Беркерли также известны как гнезда BSD. В 1989 году Berkerley выпустила версии своей операционной системы и сетевой библиотеки, свободные от лицензионных ограничений. Другие ранние версии были написаны для TOPS-20, MVS, VM и IBM-DOS.

Источник

Информ портал о технике и не только