Что такое сетевые порты внутри?
Я знаю, что будет несколько портов в хосте / вычислительной машине для каждой из служб, которые я размещаю в сети.
Но я хочу понять, что это за порты внутри?
Ниже мое понимание сетевых портов. Поправь меня, если я ошибаюсь. Добавьте детали, чтобы сделать это более понятным.
Это может быть программная конструкция, в основном очередь / буфер внутри сетевого компонента ОС, создаваемая динамически всякий раз, когда на компьютере размещается сетевая служба (веб-служба, служба передачи файлов и т. Д.). И каждый из сетевых сервисов будет прослушивать свой порт соответственно (для получения данных), а также имеет доступ для записи этого порта (для отправки данных). [Так же, как проблема ограниченного буфера]
Когда данные должны быть отправлены
Сетевая служба (Приложение) будет выполнять системный вызов ОС (скажем, send()) для записи данных в буфер и информирования транспортного протокола. Так что протокол TCP/UDP будет брать данные из буфера, сегментировать их и передавать по сетевому стеку.
Когда данные должны быть получены-
Когда данные поступают на хост через сетевую карту, данные будут считываться из какого-либо сетевого компонента низкого уровня в ОС и передаваться по сетевому стеку. И когда компонент транспортного уровня ОС читает его, он помещает данные в очередь, связанную с этим конкретным портом №. так что приложение (услуга сети), слушающее этот порт, может читать данные.
1 ответ
Почти, но не совсем правильно.
Сокеты - это программная конструкция с буферами (каждый сокет имеет отдельные очереди отправки и получения). Для TCP каждое соединение использует отдельный сокет.
Порты - это только числовые метки, используемые для демультиплексирования - помогая ОС выбирать, какой сокет (или какой приемный буфер) должен принимать входящий пакет.
Каждый сокет связан с несколькими параметрами - протоколом, локальными и удаленными адресами и локальными и удаленными портами - и все они используются при поиске полученного пакета. (Когда адреса идентичны, хотя бы один из портов должен быть другим. Но если адреса разные, то несколько сокетов могут использовать одинаковые порты.)