2

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

谢谢。

4

1 回答 1

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. 您的服务器接收数据包并处理它。作为响应,它为 IP5.5.5.5和 UDP 端口创建数据包55555
  5. 企业路由器允许响应。
  6. 家庭路由器允许响应根据临时规则进行。
  7. 您的计算机会收到响应。

公司计算机和路由器通常会限制更多以确保安全,因此如果您的用户(IP 5.5.5.5)在公司网络中,第二点可能会限制数据包。

它非常简化,因为实际上几乎总是有 NAT 之类的东西,而且规则更复杂……但总的来说,它给出了它在内部如何工作的想法。

于 2011-07-09T10:49:57.277 回答