Я начинаю сетевое программирование с C ++ в ОС Windows. Я знаю, что такое стек сетевых протоколов (например, образовательная модель OSI и операционная модель TCP / IP). Кроме того, я знаю, как пакет маршрутизируется и коммутируется в сетевой среде, и много других понятий о сетевом программировании и самом обмене данными.
Однако теперь я знаю, что когда процесс на компьютере A хочет отправить сообщение другому процессу на компьютере B, сообщение должно проходить через уровни стека TCP / IP до тех пор, пока оно не будет готово для помещения на физический носитель длядостичь процесса назначения на компьютере B.
Пакет должен иметь IP-адрес назначения компьютера B, а также номер порта. Но я не смог выяснить ответ на следующие вопросы:
Почему мы должны указывать порт и как эти 6000+ портов в операционных системах (Windows) отличаются друг от друга?
Как реализован стек сетевых протоколов TCP / IP в ОС Windows? Это драйвер или что-то еще.
В операционных системах Windows каждый процесс имеет для себя протокол TCP / IP, или процесс Windows использует для них один и тот же стек протоколов TCP / IP?
Я знаю, что подобные вопросы не слишком хороши для фанатов StackOverflow, но, к сожалению, я не смог найти ответ на эти вопросы в книгах или даже в Google.