UDP客户端 - 打开端口?

时间:2011-07-09 10:43:12

标签: networking network-programming udp ports

所以现在我只为我的客户端使用TCP - 它们连接到服务器,打开套接字并自由获取数据包。 但是如果我决定在我的游戏中使用UDP呢?他们会不得不打开港口?例如,如果他们使用常规WiFi,我可以在没有开放端口问题的情况下将UDP发送到客户端吗?

感谢。

1 个答案:

答案 0 :(得分:6)

TCP和UDP只是传输层实现的两个例子。它们都使用术语“端口”来确定哪个应用程序应该接收传入数据包,但路由器/交换机/防火墙/等可以对它们进行不同的路由/过滤。

所以答案是否定的。打开端口会遇到类似的问题。除了'TCP端口xxx应该打开'之外,您必须要求'UDP端口xxx应该打开'。

在大多数家庭网络中,防火墙规则允许传出数据包(请求)到任何远程端口(例如,在您的服务器上,应该打开此端口)。当这样的数据包通过路由器时 - 它会创建临时规则,允许答案返回到请求数据包的本地端口。

所以,正常情况是这样的:

  1. 数据包来自IP 5.5.5.5的家庭计算机。假设它有源UDP端口55555,源IP地址5.5.5.5和目标端口8888
  2. 数据包到达家庭路由器。当它从内部进入时 - 路由器允许它通过并创建规则说2分钟,以允许目标为5.5.5.5的数据包到UDP端口55555
  3. 数据包在服务器之前到达公司路由器。它具有为端口8888传递数据包的规则,因此允许数据包继续运行。
  4. 您的服务器收到数据包并对其进行处理。作为响应,它会为IP 5.5.5.5和UDP端口55555创建数据包。
  5. 企业路由器允许响应。
  6. 家庭路由器允许响应按照临时规则进行。
  7. 您的计算机收到回复。
  8. 企业计算机和路由器通常更具限制性以确保安全性,因此如果您的用户(IP 5.5.5.5)位于公司网络中,第二点可能会限制数据包。

    它非常简化,因为实际上几乎总是像NAT和规则这样的东西更复杂......但总的来说它给出了内部如何工作的想法。