使用 p2p 软件(例如 torrent 客户端或 emule)时,即使我在防火墙中允许它们并在 NAT 配置中转发它们,也无法打开端口。即使做了这两件事,p2p 软件仍会说端口已关闭。
但是我仍然可以下载,那么它是如何工作的,如果软件能够接收数据包,即使它们检测到传入端口已关闭,我们为什么还要关心端口?
答案1
你有一个有状态的防火墙:如果传入数据包属于现有连接,则接受它们。这样,您就可以连接到其他主机(例如 Web 服务器或 P2P 用户),而不必明确允许回复传入。
(端口不像门或窗户 - 更像是数据包上的标签,防火墙根据该标签允许特定的数据包通过。同一端口可以是“打开的”,表示程序正在等待与该端口的连接,也可以是“关闭的”,表示防火墙阻止这些连接,反之亦然。)
然而,如果你连接出去,那些其他主机需要允许必要的端口他们的防火墙。P2P 连接很容易出现问题:如果双方都认为只接受传出连接,那么这也意味着双方都无法接受对方的连接。
因此大多数时候你仍然可以从 P2P 用户那里下载有他们的防火墙设置正确(并上传,但前提是你先连接)——但没有人能够连接到你。