无需端口转发即可接收 UDP 数据包

无需端口转发即可接收 UDP 数据包

我刚刚测试了 udp 发送器/接收器代码,但我不太理解端口转发。

A我的电脑是否处于非端口转发网络中,并且是我的 vps 上的一个 UDP 服务器,它是端口转发的。

  • 情况1:

A 开始监听端口上的 udp 数据包X. VPS(B)从端口发送数据包但是 A 没有收到它们,因为它没有端口转发。

  • 情况 2:

但是当 A 向服务器(B)发送某些内容并且服务器响应时,我就会得到响应。为什么这不需要端口转发?

A 可能位于具有多个连接设备的 LAN 中。路由器如何知道在情况 2 中数据包必须转发给 A,而在情况 1 中则不必转发?

答案1

A 可以位于具有多个连接设备的 LAN 中。路由器如何知道在情况 2 中数据包必须转发给 A,而在情况 1 中则不必?

由于路由器、防火墙和使用NAT(网络地址转换)有一个 NAT 表,用于跟踪将被 NAT 并发送到目的地的传入数据包。

NAT 表包括源设备 IP 地址、端口号和协议(TCP/UDP)。因此当A确实发送数据包到(vps),NAT 设备会在 NAT 表中添加一条记录,这样当数据包从,它读取目标 IP、端口和协议,并尝试在 NAT 表中找到匹配项,然后将响应 NAT 回服务器A

A 开始在端口 X 上监听 udp 数据包。vps(B)从端口 Y 发送数据包,但 A 无法收到这些数据包,因为它没有端口转发。

服务器A不会收到数据包,因为它会被路由器丢弃。因为没有端口转发,NAT 表不包含与目标 IP、端口和协议匹配的记录。

当你的设备位于防火墙或路由器后面,并且你正在使用 NAT 时,你需要使用端口转发,以便路由器知道从包括目标 IP 地址、端口号和服务器协议A,需要转发到服务器A,且未被丢弃。

我希望我回答了你的问题。

答案2

A开始对话。 但无法开始对话A

一次A已经开始与可以回应那个对话。但他仍然无法开始一个A

技术性更强

A您正在启动 UDP 套接字。一旦该 UDP 套接字启动,A可以发送包裹到可以通过将响应写入套接字来对其进行响应。A然后读取响应。 无法交谈A因为A不允许它与它们启动套接字。

他怎么知道是你?嗯不知道你是谁。路由器只是跟踪套接字关联,这导致A

这很像你浏览网页时的情况。你正在下载文件并查看它们。你正在打开一个连接,然后下载文件。而不是相反。网络服务器只是响应你的请求。

相关内容