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