Почему мы должны указать порт для нашего сетевого подключения? - PullRequest
0 голосов
/ 19 октября 2019

Я начинаю сетевое программирование с C ++ в ОС Windows. Я знаю, что такое стек сетевых протоколов (например, образовательная модель OSI и операционная модель TCP / IP). Кроме того, я знаю, как пакет маршрутизируется и коммутируется в сетевой среде, и много других понятий о сетевом программировании и самом обмене данными.

Однако теперь я знаю, что когда процесс на компьютере A хочет отправить сообщение другому процессу на компьютере B, сообщение должно проходить через уровни стека TCP / IP до тех пор, пока оно не будет готово для помещения на физический носитель длядостичь процесса назначения на компьютере B.

Пакет должен иметь IP-адрес назначения компьютера B, а также номер порта. Но я не смог выяснить ответ на следующие вопросы:

  1. Почему мы должны указывать порт и как эти 6000+ портов в операционных системах (Windows) отличаются друг от друга?

  2. Как реализован стек сетевых протоколов TCP / IP в ОС Windows? Это драйвер или что-то еще.

  3. В операционных системах Windows каждый процесс имеет для себя протокол TCP / IP, или процесс Windows использует для них один и тот же стек протоколов TCP / IP?

Я знаю, что подобные вопросы не слишком хороши для фанатов StackOverflow, но, к сожалению, я не смог найти ответ на эти вопросы в книгах или даже в Google.

1 Ответ

0 голосов
/ 19 октября 2019

Номер порта используется для различения разных приложений, работающих на одном компьютере, друг от друга. Обычно все (по крайней мере, большинство) программ на одном компьютере будут взаимодействовать через один и тот же IP-адрес. Ядро должно знать, какие сообщения отправлять в какую программу, номер порта решает эту проблему. Каждая программа будет взаимодействовать через уникальный порт, поэтому, когда сообщение поступает на порт x, ядро ​​знает, в какую программу отправить сообщение. Без номера порта он должен был бы отправить сообщение всем программам, и они должны были бы выяснить, предназначено ли им какое-либо данное сообщение.

Что касается того, какие книги читать;Я бы порекомендовал " Иллюстрированный TCP / IP, том 1 через 3" и Сетевое программирование UNIX .

...