2

我最近注意到我不必为我玩的 mmorpg 转发端口。

我正在考虑开发一款人们可以在线玩的游戏并且有一个问题。

为什么会出现这种情况,因为它有一个不断来回发送数据的双向套接字连接?他们的服务器不需要通过我的防火墙才能连接到我吗?

4

5 回答 5

5

TCP 速成课:TCP 是双向协议。挑战在于至少需要一台主机启动。由于在 MMORPG 中,您自己的计算机永远不会充当服务器,因此没有人必须连接到它。所有关于游戏状态的信息都通过公司的面向公众的服务器传递,这些服务器具有面向公众的 IP 地址(嘿,也许他们实际上在那里使用端口转发,只是为了混淆我的解释......但你永远不必看到他们漂亮的网络内部结构、代理和其他魔法。)。

无论如何,当您连接到 Stackoverflow 时,您正在建立一个从服务器请求数据的出站连接,然后通过同一连接您将其接收回来。完全相同的场景,只是使用网络服务器而不是游戏。

于 2009-12-29T19:52:01.780 回答
2

UPnP允许您处理许多路由器。如果您可以访问不在路由器后面的第三方,还有NAT Punch-Through 。

无论哪种方式,仅当您希望充当服务器(或 P2P 关系中的发送者)时,才需要端口转发。客户端不需要转发端口。

于 2009-12-29T19:51:55.443 回答
1

尽管也有数据进来,但您也不需要转发端口来访问网络。

当你建立一个传出的 TCP 连接时,你的 NAT 路由器将连接放在一个表中,这样当数据进来时,它就知道你 LAN 中的哪台机器将数据包发送到。

于 2009-12-29T19:50:13.807 回答
1

每个人都提到 TCP,但 NAT 也适用于 UDP:第一个传出 UDP 数据包将该源端口与内部 IP 地址相关联,您的 NAT 设备会将传入该端口的流量转发到内部网络上的正确主机。

于 2009-12-29T19:53:46.640 回答
0

换句话说,如果您的计算机首先请求连接(出站),则路由器会自动打开端口,假设您要返回数据。但是,如果您希望远程用户在您的计算机不请求的情况下连接到您的计算机,路由器通常会丢弃数据包,因为它不知道将它们发送到哪里(它们是不请自来的)。因此,您需要告诉路由器将端口 N 上的任何未经请求的数据包传送到您的计算机。

很抱歉这么晚才添加另一个答案,我知道一个已经被接受,但我个人发现其他答案比这个简单的解释更令人困惑。

于 2010-01-23T21:04:51.773 回答