Программирование сокетов в компьютерной сети
Компьютерная сеть
Программирование сокетов в компьютерной сети
Программирование сокетов в компьютерной сети
Обзор
Сокет s в компьютерных сетях используются для обеспечения передачи информации между двумя процессами одних и тех же машин или разных машин в сети. Сокет — это комбинация IP-адреса и номера программного порта, используемая для связи между несколькими процессами. Socket помогает распознать адрес приложения, которому должны быть отправлены данные, используя IP-адрес и номер порта.
Scope
- В этой статье мы изучим программирование сокетов и рассмотрим классы, используемые для программирования сокетов без установления соединения.
- Мы также изучим программирование сокетов двух протоколов транспортного уровня, т. е. TCP (протокол управления передачей) и UDP (протокол пользовательских дейтаграмм).
- Мы узнаем о типах интерфейса программирования сокетов.
Что такое программирование сокетов в компьютерных сетях?
Сокеты позволяют обмениваться данными между двумя процессами, работающими на одной или разных машинах. Сокеты — это конец двусторонней связи между двумя программами, работающими в сети.
- Сокеты в основном используются в архитектуре клиент-сервер для связи между несколькими приложениями.
- Программирование сокетов говорит нам, как мы можем использовать API сокетов для создания связи между локальными и удаленными процессами.
- Сокет создается комбинацией IP-адреса и номера порта программного обеспечения. При такой комбинации процесс знает системный адрес и адрес приложения, куда должны быть отправлены данные.
- : используется для разделения IP-адреса и номера порта. Например: 192.168.1.67:80, 155.2.12.23:77 и т. д.
На изображении ниже показан пример адреса сокета
Какие классы используются для программирования сокетов без установления соединения?
Услуга, ориентированная на установление соединения, предполагает установление соединения перед передачей данных и завершение соединения после передачи данных.
Услуга без установления соединения не требует установления и разрыва соединения для передачи данных по сети.- Для программирования сокетов без установления соединения используются классы DatagramSocket и DatagramPacket.
- Для программирования сокетов, ориентированного на соединение, используются классы Socket и ServerSocket.
Класс DatagramSocket представляет сокет без установления соединения для передачи пакетов дейтаграмм.
DatagramPacket — это сообщение, передаваемое между двумя взаимодействующими сторонами. DatagramPacket подобен контейнеру данных, который переносит данные между двумя взаимодействующими сторонами. Когда по сети отправляется несколько пакетов дейтаграмм, они могут поступать в любом порядке, независимо от порядка их отправки.
Программирование сокетов в TCP
TCP означает протокол управления передачей. TCP — это надежный протокол транспортного уровня, ориентированный на соединение. TCP устанавливает соединение перед передачей данных. Шаги по программированию сокета TCP для установки сокета TCP на стороне клиента:
- Первым шагом является создание сокета и использование функции socket() для создания сокета.
- Используйте функцию connect() для подключения сокета к адресу сервера.
- Передача данных между двумя взаимодействующими сторонами с помощью функций чтения() и записи().
- После завершения передачи данных закройте соединение с помощью функции close().
Ниже приведены шаги, которые необходимо выполнить для установки сокета TCP на стороне сервера:
- Используйте socket() для установки сокета.
- Используйте функцию bind() для привязки сокета к адресу.
- Затем для прослушивания клиентских подключений используйте функцию listen().
- Функция accept() используется для принятия подключения клиента.
- Передать данные с помощью функций read() и write().
На изображении ниже показано соединение TCP Socket
Программирование сокетов в UDP
UDP означает протокол дейтаграмм пользователя. UDP — это ненадежный протокол транспортного уровня без установления соединения. UDP не устанавливает соединение между двумя взаимодействующими сторонами перед передачей данных. Ниже приведены шаги, которые необходимо выполнить для установления соединения сокета UDP на стороне клиента 9.0005
- Использовать функцию socket() для создания сокета;
- Функции recvfrom() и sendto() используются для передачи данных между двумя взаимодействующими сторонами.
Шаги, которые необходимо выполнить для установления соединения сокета UDP на стороне сервера.
- Создайте сокет с помощью функции socket().
- Используйте функцию bind() для привязки сокета к адресу.
- Передайте данные с помощью функций recvfrom() и sendto().
На изображении ниже показано подключение сокета UDP
Типы интерфейса программирования сокетов
Существует три типа интерфейса программирования сокетов
Потоковые сокеты: Потоковые сокеты — наиболее распространенный тип интерфейса программирования сокетов. Общающиеся стороны сначала устанавливают соединение через сокет между собой, так что любые данные, проходящие через соединение, будут поступать в том порядке, в котором они были отправлены отправителем, благодаря службе, ориентированной на соединение.
Сокеты датаграмм: Предоставляет услуги без подключения. Перед передачей данных соединение не устанавливается. Сторона связи передает дейтаграммы по мере необходимости или ждет ответа. Данные могут быть потеряны во время передачи или могут поступать не по порядку. Реализация дейтаграмм обеспечивает большую гибкость по сравнению с использованием потоковых сокетов.
Необработанные розетки: Этот интерфейс сокетов обходит встроенную в библиотеку поддержку стандартных протоколов, таких как UDP (протокол пользовательских дейтаграмм) и TCP (протокол управления передачей). Необработанные сокеты — это интерфейсы программирования сокетов, которые используются для разработки пользовательских низкоуровневых протоколов.
Заключение
- Сокет представляет собой комбинацию IP-адреса и адреса программного порта, используемую для связи между двумя процессами.
- Классы Socket и ServerSocket — это классы, используемые для программирования сокетов, ориентированного на соединение.
- Классы DatagramSocket и DatagramPacket — это классы, используемые для программирования сокетов без установления соединения.
- UDP — ненадежный протокол транспортного уровня без установления соединения, а TCP — надежный протокол транспортного уровня с установлением соединения.
- Потоковые сокеты, сокеты дейтаграмм и сырые сокеты — это три типа интерфейса программирования сокетов.
- Функции socket(), connect(), read(), write(), close() используются на стороне клиента при программировании сокетов TCP.
- Функции socket(), bind(), listen(), read(), write(), accept() используются на стороне сервера при программировании сокетов TCP.
- Функции socket(), recvfrom(), sendto() используются на стороне клиента в программировании сокетов UDP.
- Функции socket(), recvfrom(), sendto(), bind() используются на стороне сервера при программировании сокетов UDP.
Общие сведения о сокетных соединениях в компьютерных сетях | Лукас ПензиМуг | Стартап
Понимание соединений сокетов в компьютерных сетях | Лукас ПензиМуг | Стартап | MediumОпубликовано в
·
Чтение: 4 мин.
·
24 мая 2019 г.
Photo by Neven Krcmarek on Unsplash в реализации я хотел закрепить свое понимание программных сокетов и той роли, которую они играют в отношениях клиент/сервер.Как и большинство программных терминов, сокет — это абстракция типа физического сокета (наподобие изображенного выше), которым мы все… 04 Разработчик программного обеспечения. Хлебопекарня.
Еще от Лукаса ПензиМуга и The Startup
Лукас ПензиМуг
в
Функционально анонимно: Лямбда-выражение в Java
Лямбда-функции не являются чем-то новым в мире программирования, ведь они впервые появились в LISP много лет назад.
Они (относительно)…·5 min read·Jun 14, 2019
Nitin Sharma
in
5
Держу пари, что 99% читателей не знакомы ни с одним из этих инструментов.
·Чтение через 6 мин·5 апреля
Zulie Rane
в
Если вы хотите стать творцом, удалите все (кроме двух) платформы социальных сетей
В октябре 2022 года, во время всего фиаско Илона Маска, я наконец удалил Twitter со своего телефона. Примерно в то же время я также вышел из…
· 8 минут чтения · 19 апреля
Lucas PenzeyMoog
in
OO Design Patterns: Composition Vs. Наследование
Как и в случае с техническим блогом каждого ученика, теперь моя очередь написать статью, сравнивающую и противопоставляющую два основных продукта…
·7 мин чтения·7 июня 2019 г.
Просмотреть все от Lucas PenzeyMoog
Рекомендовано Medium
Hussein Nasser
Как стать хорошим бэкэнд-инженером (основы)
Я был бэкендом инженер более 18 лет, и я был свидетелем того, как технологии приходят и уходят, но одна вещь всегда остается неизменной; Первый…
·11 мин. чтения·3 декабря 2022 г.
Александр Нгуен
в
Почему я постоянно терплю неудачу с кандидатами во время собеседований в Google…
Они не соответствуют планке.
·4 минуты чтения·13 апреля
The PyCoach
в
Вы используете ChatGPT неправильно! Вот как опередить 99% пользователей ChatGPT
Освойте ChatGPT, изучив технику быстрого доступа.
·7 минут чтения·17 марта
Santal Tech
Больше нет Leetcode: The Stripe Interview Experience
В свете недавних увольнений, с которыми, я думаю, Stripe справилась хорошо (примечание генерального директора для сотрудников ), я хотел поделиться своим опытом интервью с…
·5 min read·8 ноября 2022 г.