Что такое сетевой сокет

Обновлено: 21.11.2024

Сокет — это конечная точка двустороннего канала связи между двумя программами, работающими в сети. Сокет привязан к номеру порта, чтобы уровень TCP мог идентифицировать приложение, которому предназначены данные для отправки. Конечная точка представляет собой комбинацию IP-адреса и номера порта.

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

Представьте, что вы находитесь в своем доме из-за блокировки, и вам запрещено выходить из дома. Давайте опираться на это. Однажды, когда вам стало очень скучно, вы решили поговорить с соседом, и мы предположим, что в вашем доме есть окно. ( Нет! С него не спрыгнуть).

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

Давайте сравним его с нашим определением сетевых сокетов

  1. Здесь Хаус аналогичен компьютеру.
  2. Окно, о котором мы говорим, похоже на сокет, конечную точку, откуда вы можете отправлять или получать сообщения.
  3. разговор, который вы ведете, — это данные.

Сокет — это конечная точка двустороннего канала связи между двумя программами, работающими в сети.

Как и в нашем примере, окна являются конечными точками. если мы закроем окна или не будем иметь окон, то мы не сможем передать наши сообщения. (о, пожалуйста! Вам нельзя звонить.)

Поэтому я думаю, что это дает нам довольно четкое представление о том, что такое сетевой сокет. Перейдем к другим частям.

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

Также предположим, что в доме 6 комнат и в каждой комнате 6 членов семьи. Во всех комнатах есть окно и номер (от 1 до 6). Теперь, если сосед хочет поговорить с кем-то из членов семьи, ему также нужно будет указать номер комнаты.

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

Конечная точка представляет собой комбинацию IP-адреса и номера порта.

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

В нашей аналогии домов может быть много. Чтобы поговорить с кем-то, вам нужен его домашний адрес и номер окна, с которым вы хотите поговорить.

Что такое IP-адрес?

IP-адрес – это адрес, назначаемый каждому устройству в сети для его уникальной идентификации. Он может иметь вид 172.16.254.1 в IPv4 и 2001:db8:0:1234:0:567:8:1 в IPv6. вы можете прочитать больше здесь

Что такое IP?

IP относится к интернет-протоколу. Это набор правил, определяющих, как должно происходить общение в сети.

Давайте рассмотрим весь процесс шаг за шагом.

  1. Ваше приложение может прослушивать сообщения или отправлять сообщения в сеть или из сети, создав сокет.
  2. Чтобы создать сокет, нам нужно привязать его к порту.
  3. Кто-то в сети хочет общаться. Им нужен IP-адрес (чтобы однозначно идентифицировать наше устройство) и номер порта (порт, к которому мы привязали наш сокет, или в основном, где приложение прослушивает).
  4. Они отправляют нам сообщение. Сеть сначала узнает IP и пытается найти по нему устройство. он отправляет сообщение на устройство.
  5. На устройстве есть сетевой уровень, который просматривает входящие сообщения из Интернета. Он получает сообщения, анализирует номер порта и передает его этому сокету.
  6. Сокет получает сообщение, и приложение, создавшее сокет, теперь имеет доступ к сообщению, и все довольны.

Поток, изображенный здесь, является идеальным потоком. Есть много других протоколов, например, как сообщение будет упаковано и как оно будет маршрутизироваться. Как отправитель узнает, получена посылка или потеряна где-то посередине? А пока давайте посмотрим на TCP или UDP.

TCP и UDP

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

Для этого существует два основных протокола:

TCP: протокол управления передачей — это протокол, ориентированный на установление соединения, т. е. он гарантирует наличие надлежащего соединения до начала связи. Думайте об этом так, будто вы хотите поговорить с соседом, но начнете разговор только тогда, когда будете уверены, что он может вас слушать.

UDP: протокол пользовательских дейтаграмм — это протокол без установления соединения, который не заботится о правильном соединении, что делает его быстрым, но менее надежным. Например, у вас могли возникнуть задержки в игре из-за потери некоторых сообщений. Большая часть связи в реальном времени и VoIP осуществляется через UDP.

Теперь, поскольку существует два типа протоколов, вы также должны указать, какой протокол вы хотите использовать, поэтому сокет, который вы создадите, будет либо сокетом UDP, либо сокетом TCP (я лгу, есть и другие!!). в основном слушающий сокет выглядит так

(Пожалуйста, не пытайтесь взломать мой компьютер).

Здесь мы видим протокол в первом столбце и порт вместе с IP в четвертом столбце.

Думаю, вы уже получили четкое представление о сетевых сокетах и ​​других основных понятиях. мы только что поцарапали поверхность, вы можете многое узнать. Я бы посоветовал вам больше узнать о модели TCP/IP и модели OSI. Однократное подробное изучение TCP и IP.

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

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

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

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

На стороне клиента, если соединение принято, сокет успешно создается, и клиент может использовать сокет для связи с сервером.

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

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

Конечная точка — это комбинация IP-адреса и номера порта. Каждое соединение TCP может быть однозначно идентифицировано двумя его конечными точками. Таким образом, вы можете иметь несколько соединений между вашим хостом и сервером.

Если вы пытаетесь подключиться к Интернету, класс URL и связанные с ним классы ( URLConnection , URLEncoder ), вероятно, более подходят, чем классы сокетов. На самом деле URL-адреса представляют собой относительно высокоуровневое соединение с Интернетом и используют сокеты как часть базовой реализации. Информацию о подключении к Интернету через URL-адреса см. в разделе Работа с URL-адресами.

Сетевой сокет – это программный компонент в узле компьютерной сети, выступающий в роли конечной точки для доставки и получения данных. Интерфейс прикладного программирования (API) для сетевой архитектуры определяет структуру и свойства сокета. Сокеты создаются только в течение жизненного цикла процесса в приложении на основе узла.

Поскольку протоколы TCP/IP были стандартизированы во время создания Интернета, слово "сетевой сокет" чаще всего используется в контексте набора интернет-протоколов, поэтому его называют "интернет-сокетом". В этом контексте адрес сокета, представляющий собой триаду транспортного протокола, IP-адреса и номера порта, используется для внешней идентификации сокета для других хостов.

Программная конечная точка внутриузлового межпроцессного взаимодействия (IPC), которая часто использует тот же API, что и сетевой сокет, часто называется сокетом.

Каналы создаются с помощью системного вызова Pipe, а сокеты — с помощью системного вызова socket.По сети сокет обеспечивает двунаправленную связь FIFO. На каждом конце соединения формируется сокет, подключающийся к сети. Каждый сокет имеет свой уникальный адрес. Этот адрес состоит из IP-адреса и номера порта.

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

Типы сокетов

Сокет дейтаграммы — сокет дейтаграммы — это тип сетевого сокета, в котором пакеты отправляются и принимаются без использования ссылки. Напоминает почтовый ящик. Письма (данные) собираются и доставляются (передаются) в почтовый ящик (приемный сокет). Это сокет без соединения.

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

Раздел 404 Закона Сарбейнса-Оксли (SOX) требует, чтобы все публичные компании установили внутренний контроль и процедуры.

Закон о защите конфиденциальности детей в Интернете от 1998 года (COPPA) – это федеральный закон, который налагает особые требования на операторов доменов .

План North American Electric Reliability Corporation по защите критически важной инфраструктуры (NERC CIP) представляет собой набор стандартов.

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

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

Метаморфное и полиморфное вредоносное ПО – это два типа вредоносных программ (вредоносных программ), код которых может изменяться по мере их распространения.

Медицинская транскрипция (МТ) – это ручная обработка голосовых сообщений, продиктованных врачами и другими медицинскими работниками.

Электронное отделение интенсивной терапии (eICU) — это форма или модель телемедицины, в которой используются самые современные технологии.

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

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

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

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

API облачного хранилища — это интерфейс прикладного программирования, который соединяет локальное приложение с облачным хранилищем.

Интерфейс управления облачными данными (CDMI) – это международный стандарт, определяющий функциональный интерфейс, используемый приложениями.

Износ флэш-памяти NAND — это пробой оксидного слоя внутри транзисторов с плавающим затвором флэш-памяти NAND.

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

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

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

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

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

Типы сокетов

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

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

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

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

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

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

Что дальше?

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

Читайте также: