В чем разница между портом и сокетом? - PullRequest
823 голосов
/ 30 сентября 2008

Этот вопрос был задан одним из разработчиков программного обеспечения в моей организации. Я заинтересован в самом широком определении.

Ответы [ 35 ]

0 голосов
/ 22 октября 2018

Сокет - это программная абстракция конечной точки сети, используемая в качестве интерфейса для приложения. В Java, C # он представлен объектом, в Linux, Unix это файл.

Порт - это просто свойство сокета, который вы указываете, если хотите установить связь. Чтобы получить пакет из сокета, вы должны привязать его к определенному локальному порту и NIC (с локальным IP-адресом) или ко всем NIC (INADDR_ANY указано в вызове bind). Для отправки пакета необходимо указать порт и IP удаленного сокета.

0 голосов
/ 28 января 2010

Представлен сокет подключения (fd) для локального адреса + локальный порт + адрес узла + порт узла. Обрабатывать получение / отправку данных через абстрактный сокет. Прослушивающий сокет (fd) представлен для локального адреса + локальный прослушивающий порт. Процесс может принять новое соединение через сокет.

0 голосов
/ 30 сентября 2008

Порт обозначает конечную точку связи в транспортах TCP и UDP для сетевого протокола IP. Сокет - это программная абстракция для конечной точки связи, обычно используемая в реализациях этих протоколов (API сокетов). Альтернативная реализация - API XTI / TLI.

Смотри также:

Стивенс, В. Р. 1998, Сетевое программирование в UNIX: Сетевые API: Сокеты и XTI; Том 1, Прентис Холл.
Stevens, W.R., 1994, TCP / IP Illustrated, том 1: Протоколы, Эддисон-Уэсли.

0 голосов
/ 19 августа 2015

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

Порт - это, по сути, общедоступный сокет, некоторые из которых общеизвестны / общеприняты, обычный пример - 80, посвященный HTTP. Любой, кто хочет обмениваться трафиком с использованием определенного протокола, в данном случае HTTP, канонически переходит на порт 80. Конечно, 80 не является физически выделенным для HTTP (это не что-то физически, это просто число, логическое значение), и может использоваться на некотором конкретном компьютере для какого-либо другого протокола ad libitum, если те, кто пытается подключиться, знают, какой протокол (который может быть довольно закрытым) использовать.

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

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

0 голосов
/ 05 марта 2015

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

Существует 4 типа розеток:

  • потоковые розетки
  • датаграммные сокеты
  • сырые розетки
  • последовательные пакетные сокеты.

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

...