ДВА ТИПА ИНТЕРНЕТ-СОКЕТОВ.




Оглавление

 

ВВЕДЕНИЕ. 3

ДВА ТИПА ИНТЕРНЕТ-СОКЕТОВ. 6

ПРИНЦИПЫСОКЕТОВ. 7

ФУНКЦИИ СОКЕТОВ. 8

SOCKET.. 8

BING.. 8

LISTEN.. 9

ACCEPT.. 9

CONNECT.. 9

МОДЕЛИ СОКЕТОВ. 11

INTEL. 11

AMD.. 12

ВВЕДЕНИЕ.

Web Sockets (веб-сокеты) — это технология, позволяющая создавать интерактивное соединение для обмена сообщения в онлайн-режиме. Соединение создаётся в сети между сервером и клиентом (браузером). В отличие от протокола HTTP веб-сокеты позволяют работать с 2-направленным потоком данных, поэтому можно с уверенностью сказать, что технология является уникальной. Для наилучшего понимания давайте разберём особенности работы сокетов и посмотрим, а чем они конкретно отличаются от HTTP.

Простыми словами, сокетом является небольшой разъём на материнской плате, где впоследствии осуществляется установка процессора. Когда речь идёт о «сокете процессора», то имеют в виду не только имеющийся разъём, но и поддержку этого элементами многими известными процессорами. Этот компонент понадобится для лёгкой замены процессора, если вдруг тот выйдет из строя, либо для апгрейда системы более мощным CPU. Сокеты по своей части могут иметь разное число контактов, их видов, расстояние между креплениями и другие параметры, которые, так или иначе, будут совместимы с тем или иным процессором. Есть также и технологические изменения: множество разных контроллеров, поддержание интегрированной графики в CPU.

Для наилучшего понимания давайте разберём особенности работы сокетов и посмотрим, а чем они конкретно отличаются от HTTP.

Про протокол HTTP (HTTPS) знает каждый, так как мы постоянно встречаемся с ним в своих браузерах. Как правило, браузер постоянно запрашивает у сервера, есть ли для него сообщения, а потом получает их. Здесь возможны различные типы запросов (POST, GET, PUT), причём каждый из них имеет своё назначение. Особенности работы хорошо видны на картинке:

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

Сокет применяется в том случае, если вы, к примеру, разрабатываете: — чат- и IoT-приложения; — программы, работающие в режиме реального времени; — многопользовательские игры.

 

 

ДВА ТИПА ИНТЕРНЕТ-СОКЕТОВ.

Один из них - "потоковый сокет", второй - "сокет дейтаграмм", в дальнейшем они будут называться " SOCK_STREAM " и " SOCK_DGRAM " соответственно

Потоковые сокеты обеспечивают надёжность своей двусторонней системой коммуникации. Если вы отправите в сокет два элемента в порядке "1, 2", они и "собеседнику" придут в том же порядке - "1, 2". Кроме того, обеспечивается защита от ошибок.

Telnet использует потоковый сокет. Все символы, которые вы печатаете, должны прибыть на другой конец в том же порядке, верно? Кроме того, браузеры используют протокол HTTP, который в свою очередь использует потоковые сокеты для получения страниц. Если вы зайдёте через telnet любой сайт, на порт 80 и наберёте что-то вроде "GET / HTTP/1.0" и нажмете ввод два раза, на вас свалится куча HTML

как потоковые сокеты достигают высокого уровня качества передачи данных? Они используют протокол под названием "The Transmission Control Protocol", иначе - "TCP". TCP гарантирует, что ваши данные передаются последовательно и без ошибок. Возможно, ранее вы слышали о TCP как о половине от "TCP/IP", где IP - это "Internet Protocol". IP имеет дело в первую очередь с маршрутизацей в Интернете и сам по себе не отвечает за целостность данных.


Дейтаграммные сокеты также используют IP для роутинга, но не используют TCP; они используют "User Datagram Protocol", или "UDP". Почему UDP не устанавливает соединения? Потому что вам не нужно держать открытое соединение с потоковыми сокетами. Вы просто строите пакет, формируете IP-заголовок с информацией о получателе, и посылаете пакет наружу. Устанавливать соединение нет необходимости. UDP как правило используется там, где стек TCP недоступен.

ПРИНЦИПЫСОКЕТОВ.

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

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

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

 

 

ФУНКЦИИ СОКЕТОВ.

SOCKET

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

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

o AF_INET для сетевого протокола IPv4

o AF_INET6 для IPv6

o AF_UNIX для локальных сокетов (используя файл)

2. type

o SOCK_STREAM (надёжная потокоориентированная служба (сервис) или потоковый сокет)

o SOCK_DGRAM (служба датаграмм или датаграммный сокет)

o SOCK_RAW (Сырой сокет — сырой протокол поверх сетевого уровня).

3. protocol

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

BING

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

1. sockfd — дескриптор, представляющий сокет при привязке

2. serv_addr — указатель на структуру sockaddr, представляющую адрес, к которому привязываем.

3. addrlen — поле socklen_t, представляющее длину структуры sockaddr.

LISTEN

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

1. sockfd — корректный дескриптор сокета.

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

 

ACCEPT

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

1. sockfd — дескриптор слушающего сокета на принятие соединения.

2. cliaddr — указатель на структуру sockaddr, для принятия информации об адресе клиента.

3. addrlen — указатель на socklen_t, определяющее размер структуры, содержащей клиентский адрес и переданной в accept (). Когда accept () возвращает некоторое значение, socklen_t указывает сколько байт структуры cliaddr использовано в данный момент.

 

CONNECT

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

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

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

 

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

  • send
  • recv
  • sendto
  • recvfrom
  • sendmsg
  • recvmsg

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

 

 

МОДЕЛИ СОКЕТОВ.

INTEL.

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

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

Какие же модели можно рассматривать и чем они характеризуются?

1. Socket LGA 2011. Модель прекрасно работает с различными процессорами на архитектуре Ivy Bridge от Intel (Core i3, i5, i7). Изначально сокет использовался в качестве маркетингового хода, чтобы встрясти положение на рынке, и повысить стоимость на процессоры для него. Это было в первое время, затем стоимость таких процессоров упала. Однако на материнках с этим сокетом это не отразилось и стоимость их так, и осталась высокой в отличие от вариантов, которые будут рассмотрены ниже.

2. Socket LGA 1356, 1155, 1156. Эти модели применимы только для одной архитектуры Sandy Bridge 2, хоть и являются несовместимыми между собой. Наиболее эффективным оказалась модель 1155, которую использовали для большей части систем. Сокет 1366 был создан для мощнейших станций, который также отлично себя показал в работе.

Socket LGA 1155

3. Socket LGA 775. В некоторых системах они всё ещё используются, однако, стоит отдать должное, они уже сильно устарели. Системы, в которых можно их увидеть: Celeron, Core 2 Quad и Duo.

AMD

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

Некоторые модели сокетов от AMD.

1. Socket АМ3 и АМ3+. По специфике эти две модификации являются совместимыми друг с другом. Такие сокеты отлично подойдут для некоторых моделей CPU: Phenom, FX и Athlon 2. Сокеты для мощных процессоров сначала не оправдали ожиданий, однако, после спада цен устроили пользователей ввиду низкой стоимости и хорошей производительности. Эти две модификации сейчас хорошо используются как среди дешёвых систем, так и дорогих, что доказывает хороший уровень практичности этих моделей.

Socket АМ3+

2. Socket АМ2 и АМ2+. Эти модели сейчас являются несколько устаревшими, однако, используются еще во многих системах. Разрабатывались они для CPU: Sempron, Phenom и Athlon.

3. Socket FM1 и FM2. Изначально модификации создавались для процессоров из серии AMD Fusion, однако, впоследствии используются для тех, кто не хочет покупать дискретную карту, но желает иметь интегрированную графику.

 



Поделиться:




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

©2015-2024 poisk-ru.ru
Все права принадлежать их авторам. Данный сайт не претендует на авторства, а предоставляет бесплатное использование.
Дата создания страницы: 2021-04-15 Нарушение авторских прав и Нарушение персональных данных


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