Я думаю, как это реализовано в ОС. Windows должна будет отслеживать программы, которые объявили, что они прослушивают определенный порт X. Затем, когда пакет приходит, он проверяет его порт назначения, затем он проверяет, прослушивает ли какая-либо из программ в списке исключений этот порт, и если mygame.exe есть, он пересылает пакет в mygame.exe. Если в списке исключений нет соответствующей программы, она проверяет список открытых портов. Если порт назначения отсутствует в этом списке, пакет игнорируется.
Это как это работает?
Нет, это не так. Это на самом деле проще, чем это:
- Брандмауэр не имеет дело с пересылкой пакетов в программы - Winsock делает
- Существует только один свод правил
- Нет "порядка", в котором проверяются правила
Как работает брандмауэр Windows, подробно описано в этой статье Microsoft technet.
Когда входящий пакет достигает вашего компьютера, брандмауэр Windows проверяет пакет и определяет, соответствует ли он критериям, указанным в списке исключений брандмауэра Windows (комбинация таблицы сопоставления NAT и хранилища правил брандмауэра Windows). Если пакет соответствует записи в списке, брандмауэр Windows передает пакет в протокол TCP/IP для дальнейшей обработки. Если пакет не соответствует записи в списке, брандмауэр Windows автоматически отбрасывает пакет и создает запись в файле журнала брандмауэра Windows (если файл журнала включен в диалоговом окне «Параметры журнала» в брандмауэре Windows). Записи в списке исключений могут состоять из имен программ, имен системных служб, портов TCP и портов UDP. Невозможно создать запись в списке исключений на основе поля «Протокол IP» в заголовке IP.
По сути, в режиме по умолчанию брандмауэр действительно заботится только об отказе в пакетах. Если это не соответствует правилу, брандмауэр удаляет его. В противном случае брандмауэр просто ничего не делает, позволяя Winsock переслать его соответствующей программе.