如果防火墙内的客户端通过 TCP 连接到公共服务器,一旦连接形成,防火墙就允许双向通信。这是我们在日常使用中通常看到的。我的问题是:这也适用于 UDP 吗?
由于UDP没有连接,我将稍微修改一下问题......
假设防火墙内的客户端向公共服务器发送 UDP 数据包,服务器是否可以使用传入数据包的源地址和端口通过防火墙进行响应?
如果防火墙内的客户端通过 TCP 连接到公共服务器,一旦连接形成,防火墙就允许双向通信。这是我们在日常使用中通常看到的。我的问题是:这也适用于 UDP 吗?
由于UDP没有连接,我将稍微修改一下问题......
假设防火墙内的客户端向公共服务器发送 UDP 数据包,服务器是否可以使用传入数据包的源地址和端口通过防火墙进行响应?
是的,这称为 NAT 遍历(或 UDP 穿透),其工作方式与 TCP 类似 - 有状态 NAT 设备知道您最近从内部某个端点向外部某个端点发送了一个 UDP 数据包,并且一段时间内将接受来自同一外部端点的 UDP 数据包并将它们转发到同一内部端点。
我总是更喜欢 IETF 文档,而不是大量相互矛盾的信息(包括在这个网站上):
https://www.rfc-editor.org/rfc/rfc5128
更新:“UDP 打孔”还有其他技术,例如 UPnP 的 Internet 网关协议和 PCP。每个都有其优点和缺点,恐怕没有一种解决方案适用于所有 NAT!