我最近注意到我没有为我玩的mmorpg转发端口。
我正在考虑开发一款人们可以在线玩游戏并且有问题的游戏。
为什么这是一个双向套接字连接,它不断地来回发送数据?他们的服务器是否需要通过我的防火墙才能连接到我?
答案 0 :(得分:5)
TCP崩溃课程:TCP是一种双向协议。挑战是至少需要一个主机启动。因为在MMORPG中,您自己的计算机从不充当服务器,没有人必须连接到它。有关游戏状态的所有信息都通过公司面向公共的服务器传递,这些服务器具有面向公众的IP地址(嘿,也许他们实际上在那里使用端口转发,只是为了混淆我的解释......但你永远不必看到他们漂亮的网络内部,代理和其他巫术。)。
无论如何,当您连接到Stackoverflow时,您正在建立一个从服务器请求数据的出站连接,然后通过您正在接收它的同一连接。同样的情况,只有网络服务器而不是游戏。
答案 1 :(得分:2)
UPnP允许您处理许多路由器。如果您有权访问不在路由器后面的第三方,那么还有NAT Punch-Through。
无论哪种方式,只有当您希望充当服务器(或P2P关系中的发送方)时才需要端口转发。客户端不需要转发端口。
答案 2 :(得分:1)
您也不需要转发端口来访问网络,尽管数据也来自 。
当您建立传出TCP连接时,您的NAT路由器会将连接放在一个表中,这样当数据进入时,它就会知道您的LAN中要将数据包发送到哪台机器。
答案 3 :(得分:1)
每个人都提到TCP,但NAT也适用于UDP:第一个传出UDP数据包将该源端口与内部IP地址相关联,并且您的NAT设备会将进入该端口的传输流量转发到内部网络上的正确主机。
答案 4 :(得分:0)
换句话说,如果您的计算机首先请求连接(出站),路由器会自动打开端口,前提是您需要返回数据。但是,如果您希望远程用户在没有计算机请求的情况下连接到您的计算机,路由器通常会丢弃数据包,因为它不知道将数据发送到何处(它们是未经请求的)。因此,您需要告诉路由器将端口N上的任何未经请求的数据包传送到您的计算机。
很抱歉这么晚才添加另一个答案,我知道其中一个已被接受,但我个人认为其他答案比这个简单的解释更令人困惑。