Открыть сервисСервис

Сокет в информатике и электротехнике

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

Сетевые сокеты

Общие сведения

Понятие сокета в сетевом программировании введено в операционной системе BSD 4.2 в 1983 году (интерфейс BSD sockets). Сокет идентифицируется комбинацией трёх параметров: IP-адреса, номера транспортного протокола (TCP или UDP) и номера порта. Совокупность этих данных образует уникальный адрес сокета, например 192.168.1.10:8080.

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

Типы сокетов

Тип сокетаПротоколОсобенности
SOCK_STREAMTCPНадёжная, потоковая, ориентированная на соединение передача
SOCK_DGRAMUDPДатаграммная передача без установления соединения
SOCK_RAWIPДоступ к протоколам нижнего уровня, требует повышенных привилегий
SOCK_SEQPACKETSCTPПакетная передача с сохранением границ сообщений

Системные вызовы

Основные системные вызовы для работы с сокетами в POSIX-системах:

  • socket() — создание сокета;
  • bind() — привязка сокета к локальному адресу и порту;
  • listen() — перевод сокета в режим прослушивания (только для TCP);
  • accept() — принятие входящего соединения и создание нового сокета;
  • connect() — установление соединения с удалённым узлом;
  • send() / recv() — передача и приём данных;
  • close() — закрытие сокета.

В Windows аналогичный интерфейс реализован в библиотеке Winsock (Windows Sockets API), совместимом с POSIX-сокетами.

Асинхронная работа

Для обслуживания множества соединений в одном процессе используются механизмы мультиплексирования: select(), poll(), epoll (Linux), kqueue (BSD/macOS), IOCP (Windows). Эти механизмы позволяют отслеживать готовность сокетов к чтению или записи без блокирующих вызовов. Многие языки программирования (Python, Java, C#) предоставляют собственные обёртки над сокетами, а современные фреймворки (Node.js, asyncio) строятся на асинхронной модели работы с сокетами.

Применение

Сокеты лежат в основе большинства сетевых протоколов и приложений: HTTP-серверы, почтовые клиенты (SMTP, IMAP, POP3), системы мгновенного обмена сообщениями, потоковая передача мультимедиа, удалённое управление серверами (SSH). Протокол WebSocket, используемый в браузерах для двусторонней связи, также реализуется поверх TCP-сокетов.

Сокеты в электротехнике

В электротехнике сокет (от англ. socket — гнездо) — это разъёмное соединение, состоящее из гнезда (сокета) и вставляемого в него штепселя. Сокеты применяются в бытовой и промышленной электротехнике: розетки, разъёмы питания, гнёзда для ламп накаливания (E27, E14, G9 и другие), разъёмы для подключения периферийных устройств.

По типу контактов различают сокеты с винтовым соединением, пружинные, с самозажимными клеммами. Стандартизация размеров и форм обеспечивает взаимозаменяемость: стандарты МЭК и ГОСТ определяют геометрию и электрические параметры соединений.

См. также

Источники

  • Стивенс, Р. UNIX Network Programming. — 2-е изд.
  • Таненбаум, Э. Компьютерные сети. — 5-е изд.
  • ГОСТ Р МЭК 60884-1 — Электровилки и розетки для бытовых целей.
  • RFC 793 — Transmission Control Protocol.
Заметили ошибку или не согласны с информацией в статье? Напишите нам support@bfometr.ru