首页 > 解决方案 > UDP、防火墙和 nat

问题描述

我正在调试一些使用 UDP 通信的代码。我的客户位于 NAT 和防火墙后面。我的服务器是我打开上述 UDP 端口的 AWS 机器。但是,该协议的一部分涉及服务器回答我的客户端。我预计不会工作(NAT和防火墙)。令我惊讶的是,我的客户端正在从服务器接收数据包!

这怎么可能?我的意思是,TCP(通过 UDP)有一个连接的概念,所以我猜 NAT 和路由器可以将传入的 UDP 数据包关联为对出口连接的回复。但是这对于纯 UDP 协议是如何(以及为什么)起作用的呢?我的 NAT/防火墙会让随机 UDP 进入我的客户端机器吗?

标签: networkingudp

解决方案


这怎么可能?

这就是 NAT 的工作原理。您写道,服务器正在回答您的客户端。这意味着客户发起了对话。使用 UDP 而不是 TCP 并不重要。NAT 设备仍会创建适当的映射以让答案通过。否则,所有 UDP 都会在 NAT 之后被破坏。

我的意思是,TCP(通过 UDP)有一个连接的概念,所以我猜 NAT 和路由器可以将传入的 UDP 数据包关联为对出口连接的回复。但是这对于纯 UDP 协议是如何(以及为什么)起作用的呢?

UDP不是面向连接的事实是无关紧要的。当然,TCP 有会话的概念,但两者都有端口号,而这正是 NAT 所需要的。

我的 NAT/防火墙会让随机 UDP 进入我的客户端机器吗?

这不是“一些随机的 UDP”。它是来自客户端发送内容的相同 IP 和端口号的 UDP 段。


推荐阅读