Jump to content

Сетевая розетка

(Перенаправлено из сетевых сокетов )

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

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

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

Использовать

[ редактировать ]

Использование термина «сокет» в программном обеспечении аналогично функции электрического разъема , аппаратного устройства для связи между узлами, соединенными между собой электрическим кабелем . Аналогично, термин порт используется для внешних физических конечных точек на узле или устройстве.

Интерфейс прикладного программирования (API) для стека сетевых протоколов создает дескриптор для каждого сокета, созданного приложением, обычно называемый дескриптором сокета . В Unix-подобных операционных системах этот дескриптор является разновидностью дескриптора файла . Он сохраняется процессом приложения для использования при каждой операции чтения и записи в канале связи.

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

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

На практике из-за распространения протоколов TCP/IP, используемых в Интернете, термин «сетевой сокет» обычно относится к использованию с интернет-протоколом (IP). Поэтому его часто еще называют Интернет-розеткой .

Адреса сокетов

[ редактировать ]

Приложение может взаимодействовать с удаленным процессом путем обмена данными по протоколу TCP/IP, зная комбинацию типа протокола, IP-адреса и номера порта. Эту комбинацию часто называют адресом сокета . Это сетевой дескриптор доступа к сетевому сокету. Удаленный процесс устанавливает сетевой сокет в своем собственном экземпляре стека протоколов и использует сетевой API для подключения к приложению, предоставляя свой собственный адрес сокета для использования приложением.

Выполнение

[ редактировать ]

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

Интерфейс прикладного программирования (API), который программы используют для связи со стеком протоколов с помощью сетевых сокетов, называется API сокетов . Разработка прикладных программ, использующих этот API, называется программированием сокетов или сетевым программированием . API-интерфейсы интернет-сокетов обычно основаны на стандарте сокетов Беркли . В стандарте сокетов Беркли сокеты представляют собой форму файлового дескриптора , что связано с философией Unix , согласно которой «все является файлом», и аналогиями между сокетами и файлами. Оба имеют функции чтения, записи, открытия и закрытия. На практике различия усложняют аналогию, и в сокете используются разные интерфейсы (отправки и приема). При межпроцессном взаимодействии каждый конец обычно имеет свой собственный сокет.

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

Сокет часто относится конкретно к интернет-сокету или TCP-сокету. Интернет-розетка минимально характеризуется следующим:

  • адрес локального сокета, состоящий из локального IP-адреса и (для TCP и UDP, но не IP) номера порта.
  • протокол: транспортный протокол, например TCP, UDP, необработанный IP. Это означает, что (локальные или удаленные) конечные точки с TCP-портом 53 и UDP-портом 53 являются отдельными сокетами, а IP не имеет портов.
  • Сокет, который был подключен к другому сокету, например, во время установления TCP-соединения, также имеет адрес удаленного сокета.

Определение

[ редактировать ]

Различия между сокетом (внутренним представлением), дескриптором сокета (абстрактным идентификатором) и адресом сокета (публичным адресом) невелики, и они не всегда различаются в повседневном использовании. Кроме того, конкретные определения сокета различаются у разных авторов. В IETF Request for Comments , Internet Standards , во многих учебниках, а также в этой статье термин сокет относится к сущности, которая однозначно идентифицируется номером сокета. В других учебниках [1] термин «сокет» относится к локальному адресу сокета, т.е. «комбинации IP-адреса и номера порта». В исходном определении сокета , данном в RFC 147, [2] поскольку это было связано с сетью ARPA в 1971 году, «сокет указывается как 32-битное число, где четные сокеты идентифицируют принимающие сокеты, а нечетные сокеты идентифицируют отправляющие сокеты». Однако сегодня связь через сокеты является двунаправленной.

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

Инструменты

[ редактировать ]

В Unix-подобных операционных системах и Microsoft Windows инструменты командной строки netstat или ss [3] используются для вывода списка установленных сокетов и связанной с ними информации.

Этот пример, смоделированный в соответствии с интерфейсом сокета Беркли, отправляет строку «Hello, world!» по TCP на порт 80 хоста с адресом 203.0.113.0. Он иллюстрирует создание сокета (getSocket), подключение его к удаленному хосту, отправку строки и, наконец, закрытие сокета:

Socket mysocket = getSocket(type = "TCP")
connect(mysocket, address = "203.0.113.0", port = "80")
send(mysocket, "Hello, world!")
close(mysocket)

Доступны несколько типов интернет-розеток:

Датаграммные сокеты
Сокеты без установления соединения , использующие протокол пользовательских дейтаграмм (UDP). [4] Каждый пакет, отправленный или полученный через дейтаграммный сокет, адресуется и маршрутизируется индивидуально. Порядок и надежность не гарантируются при использовании дейтаграммных сокетов, поэтому несколько пакетов, отправленных с одной машины или процесса на другую, могут прийти в любом порядке или не прийти вообще. может потребоваться специальная настройка . Для отправки широковещательных сообщений через дейтаграммный сокет [5] Чтобы получать широковещательные пакеты, сокет дейтаграммы не должен быть привязан к определенному адресу, хотя в некоторых реализациях широковещательные пакеты также могут приниматься, когда сокет дейтаграммы привязан к определенному адресу. [6]
Потоковые сокеты
Сокеты, ориентированные на соединение , которые используют протокол управления передачей (TCP), протокол управления потоком передачи (SCTP) или протокол управления перегрузкой дейтаграмм (DCCP). Сокет потока обеспечивает упорядоченный и уникальный поток безошибочных данных без границ записей с четко определенными механизмами создания и разрушения соединений и сообщения об ошибках. Потоковый сокет надежно передает данные по порядку и с возможностью внеполосного доступа . В Интернете потоковые сокеты обычно реализуются с использованием TCP, поэтому приложения могут работать в любых сетях с использованием протокола TCP/IP.
Необработанные розетки
Разрешить прямую отправку и получение IP-пакетов без какого-либо форматирования транспортного уровня для конкретного протокола. В других типах сокетов полезная нагрузка автоматически инкапсулируется в соответствии с выбранным протоколом транспортного уровня (например, TCP, UDP), и пользователь сокета не знает о существовании заголовков протокола , которые передаются вместе с полезной нагрузкой. При чтении из необработанного сокета обычно включаются заголовки. При передаче пакетов из необработанного сокета автоматическое добавление заголовка не является обязательным.
Большинство интерфейсов прикладного программирования сокетов (API), например основанные на сокетах Беркли , поддерживают необработанные сокеты. Windows XP была выпущена в 2001 году с поддержкой необработанных сокетов, реализованной в интерфейсе Winsock , но три года спустя Microsoft ограничила поддержку необработанных сокетов Winsock из соображений безопасности. [7]
Необработанные сокеты используются в приложениях, связанных с безопасностью, таких как Nmap . Одним из вариантов использования необработанных сокетов является реализация новых протоколов транспортного уровня в пользовательском пространстве . [8] Необработанные сокеты обычно доступны в сетевом оборудовании и используются для протоколов маршрутизации , таких как протокол управления группами Интернета (IGMP) и протокол открытого кратчайшего пути (OSPF), а также в протоколе управляющих сообщений Интернета (ICMP), который, среди прочего, используется пинг утилита . [9]

Другие типы сокетов реализуются через другие транспортные протоколы, такие как системная сетевая архитектура. [10] и сокеты домена Unix для внутреннего межпроцессного взаимодействия.

Состояния сокетов в модели клиент-сервер

[ редактировать ]

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

TCP-сервер может обслуживать несколько клиентов одновременно, создавая уникальный выделенный сокет для каждого клиентского соединения в новом дочернем процессе или потоке обработки для каждого клиента. Они находятся в установленном состоянии сокет-сокет , когда виртуальное соединение TCP или виртуальный канал (VC), также известный как сеанс , устанавливается с удаленным сокетом, обеспечивая дуплексный поток байтов .

Сервер может создать несколько одновременно установленных TCP-сокетов с одинаковым номером локального порта и локальным IP-адресом, каждый из которых сопоставлен своему собственному дочернему процессу сервера и обслуживает свой собственный клиентский процесс. Операционная система рассматривает их как разные сокеты, поскольку адрес удаленного сокета (IP-адрес клиента или номер порта) отличается; т.е. поскольку они имеют разные кортежи пар сокетов .

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

Пары разъемов

[ редактировать ]

Взаимодействующие локальные и удаленные сокеты называются парами сокетов . Каждая пара сокетов описывается уникальным четырехкортежным набором, состоящим из IP-адресов источника и назначения, а также номеров портов, т. е. адресов локальных и удаленных сокетов. [11] [12] Как обсуждалось выше, в случае TCP пара сокетов связана на каждом конце соединения с уникальным четырехкортежным элементом.

Термин «сокет» появился в 1971 году, когда был опубликован RFC 147, когда он использовался в ARPANET. Большинство современных реализаций сокетов основаны на сокетах Беркли (1983 г.) и других стеках, таких как Winsock (1991 г.). API сокетов Беркли в дистрибутиве программного обеспечения Беркли (BSD) возник в операционной системе Unix 4.2BSD в качестве API. Однако только в 1989 году Калифорнийский университет в Беркли смог выпустить версии своей операционной системы и сетевой библиотеки, свободные от лицензионных ограничений компании AT&T, защищенной авторским правом Unix .

В ц. В 1987 году AT&T представила STREAMS (TLI) на основе интерфейс транспортного уровня в UNIX System V Release 3 (SVR3). [13] и продолжился в выпуске 4 (SVR4). [14]

Другие ранние реализации были написаны для TOPS-20 , [15] МВС , [15] ВМ , [15] IBM-DOS (PCIP). [15] [16]

Розетки в сетевом оборудовании

[ редактировать ]

Сокет — это прежде всего концепция, используемая на транспортном уровне набора протоколов Интернета или сеансовом уровне модели OSI . Сетевое оборудование, такое как маршрутизаторы , работающие на интернет-уровне , и коммутаторы , работающие на канальном уровне , не требуют реализации транспортного уровня. Однако сетевые брандмауэры с отслеживанием состояния , трансляторы сетевых адресов и прокси-серверы отслеживают активные пары сокетов. В многоуровневых коммутаторах и поддержке качества обслуживания (QoS) в маршрутизаторах потоки пакетов могут быть идентифицированы путем извлечения информации о парах сокетов.

Необработанные сокеты обычно доступны в сетевом оборудовании и используются для протоколов маршрутизации, таких как IGRP и OSPF , а также для протокола управляющих сообщений Интернета (ICMP).

См. также

[ редактировать ]
  1. ^ Программа Сетевой академии Cisco, Сопутствующее руководство CCNA 1 и 2, пересмотренное третье издание, P.480, ISBN   1-58713-150-1
  2. ^ RFC   147
  3. ^ Джек Уоллен (22 января 2019 г.). «Введение в командование СС» .
  4. ^ В.С. Багад, И.А. Дхотре (2008 г.), Компьютерные сети (5-е исправленное издание, изд. 2010 г.), Технические публикации Пуна, стр. 52
  5. ^ SO_BROADCAST , Microsoft , получено 12 декабря 2019 г.
  6. ^ Класс DatagramSocket , Oracle , получено 12 декабря 2019 г.
  7. ^ Ян Гриффитс для IanG on Tap. 12 августа 2004 г. В XP SP2 исчезли Raw Sockets
  8. ^ «raw(7): необработанные сокеты IPv4 — справочная страница Linux» . сайт die.net .
  9. ^ «Часто задаваемые вопросы о сетях Raw IP» . faqs.org .
  10. ^ «www-306.ibm.com — Руководство AnyNet по сокетам через SNA» . Архивировано из оригинала 3 мая 2008 г. Проверено 7 сентября 2006 г.
  11. ^ book.google.com - Сетевое программирование UNIX: API сетевых сокетов.
  12. ^ book.google.com - Разработка руткитов BSD: введение во взлом ядра
  13. ^ ( Goodheart 1994 , стр. 11)
  14. ^ ( Goodheart 1994 , стр. 17)
  15. ^ Перейти обратно: а б с д "historyofcomputercommunication.info - Книга: 9.8 TCP/IP и XNS 1981–1983" . Архивировано из оригинала 17 июня 2018 г. Проверено 18 февраля 2011 г.
  16. ^ Настольный компьютер как участник сети.pdf 1985 г.

Дальнейшее чтение

[ редактировать ]
  • Джонс, Энтони; Олунд, Джим (2002). Сетевое программирование для Microsoft Windows . Майкрософт Пресс. ISBN  0-7356-1579-9 .
[ редактировать ]
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: 1ede465829f4c71f23ca9ad35bf2cd0d__1721125740
URL1:https://arc.ask3.ru/arc/aa/1e/0d/1ede465829f4c71f23ca9ad35bf2cd0d.html
Заголовок, (Title) документа по адресу, URL1:
Network socket - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)