У вас есть межсетевой экран с отслеживанием состояния : он принимает входящие пакеты, если они принадлежат существующему соединению. Таким образом, вы можете подключаться к другим хостам (например, веб-серверам или пользователям P2P) и не должны явно разрешать входящие ответы.
(Порты не похожи на двери или окна - они больше похожи на метки на пакете, на основе которых межсетевой экран пропускает определенные пакеты. Один и тот же порт может быть "открытым" в том смысле, что программа ожидает подключения к этому порту, но "закрытым" в том смысле, что брандмауэр блокирует эти подключения, и наоборот.)
Однако, если вы подключаетесь, на этих других хостах должны быть разрешены необходимые порты в их брандмауэрах. С P2P-соединениями это может легко стать проблемой: если оба человека решат, что они в порядке только с исходящими соединениями, это также означает, что ни один из них не может принимать соединения от другого.
Таким образом, большую часть времени вы все еще можете загружать с пользователей P2P, у которых правильно настроены брандмауэры (и загружать, но только если вы подключаетесь первыми), но никто не сможет подключиться к вам.