
为什么需要公网 IP 呢? 理论上来说,就算是内网 ip,经过 nat 转换,不也是公网 ip 吗? 你有什么解决方法呢?
1 takanasi Oct 17, 2017 头一次听说 |
2 googlebot Oct 17, 2017 via iPad bt 下载一样,nat 别人无法给你传数据, |
3 ChristopherWu OP @googlebot 知道的只是别人的内网 ip,而不是经过 nat 出来的公网 ip ? |
4 nekoyaki Oct 17, 2017 switch 目前我知道的游戏里,马车和 splatoon 都是 udp p2p 方式联机的,没公网 ip 也可以连,但是需要至少是端口受限锥形 NAT。 参考资料: http://strawhatfy.github.io/2015/08/03/nat-napt/ 一般二级运营商是对称 NAT 类型( Symmetric NAT ),因此无法联机。一级运营商一般不会这么搞,这也就容易给人一种“没公网 IP 联不了机”的错觉。 |
5 nekoyaki Oct 17, 2017 对了,switch 能直接在网络选项里看到 NAT type,如果有公网 IP 或者完全锥形 NAT 对应的是 A,端口受限或者 IP 锥形 NAT 对应的可能是 B 或者 C。再往下我没成功联机过,比如长宽的对称 NAT 我是 F 或者 E,不知道是按什么标准判断的。 3DS 不像 switch,没有相关的菜单和说明,但我估计和 switch 应该是相同的。 |
6 ChristopherWu OP @nekoyaki 已经铜币,感谢详细回答,学习了。 https://www.zhihu.com/question/38729355 我在上面链接里看了下几种 NAT 类型,我是光纤对应对称型 NAT, 可以理解。 》对于对等型 NAT,同一内网主机同一端口号,每一次与不同的外网主机通讯,就重新分配另一个端口号 就算是这样, 也不会导致联机问题啊?每次跟别人联机虽然端口不一样,但是走公网 ip,一样可以转发回来。我还是不理解~ |
7 stanjia Oct 17, 2017 因为 PS 3ds 联机游戏是用户和用户之前对连 ,所以至少要有一个做为服务器的 PS 或 3ds 主机有公网 IP 且端口被映射出来 不像 WOW, WOW 是用户和网易连接。 网易有公网 IP 和端口映射, 所以所有人都可不必有公网 IP |
8 ChristopherWu OP @stanjia 如果是游戏商联机是直接粗暴的内网对内网,而不是公网对公网,那可以理解。 所以他们就是这样做?为什么不公网对公网? |
9 nekoyaki Oct 17, 2017 @ChristopherWu 光纤不一定是对称型 NAT,其实这个主要是看运营商,会不会把你“发往不同 IP 的包,经过不同的公网 IP 路由出去”。如果会,就是对称 NAT,在 switch 和 3ds 的场景下就很可能无法联机。 如果你本来就能联机,你自己在一级运营商的光猫后头架一个路由器,应该也是可以联机的(未证实,但多一层 NAT 也许网络会不稳定) |
我也是不懂这些平台为什么没有服务器 |
11 ChristopherWu OP @nekoyaki 已经在光猫后加了路由器,机器连 wifi,不行。 》发往不同 IP 的包,经过不同的公网 IP 路由出去 就算这样,我跟对方连时,对方是固定的公网 ip,我也会有固定的公网 ip 路由给他呀? |
12 raysonx Oct 17, 2017 因为很多游戏需要用户与用户之间建立 P2P 连接。而 NAT 下的用户使用的是内网 IP,不能接受入站连接。 NAT 后的公网 IP 不是你一个人享有的,而是和很多用户共享。向 NAT 设备的公网 IP 主动发起连接往往会被无情地拒绝。 虽然业界研究出一些 NAT 打洞技术来绕过这个限制,而在某些 NAT 类型(比如对称 NAT )下或者多层 NAT 下,打洞成功率非常低。 如果不需要用户间建立 P2P 连接,而是提供一台有公网 IP 的中心服务器进行数据中转,则不需要考虑 NAT 的问题。然而,这需要成本。 |
13 nekoyaki Oct 17, 2017 @ChristopherWu 我的意思是,如果你本来能联机,即使加一层路由器 NAT,应该也能连,所以和运营商给不给公网 IP 不是完全强相关。如果你现在已经是对称 NAT,那肯定不行。 运营商路由 udp 的规则也许和 tcp 不一样吧,对称 NAT 的必须得紧接着发出去的 IP 和端口去回,可能二级运营商设置了什么实效性或者别的什么规则影响了。 |
14 raysonx Oct 17, 2017 举个不太恰当的例子,内网的机器就像公司里的内线电话。 员工使用自己的分机都可以向外拨号,但接听方通过来电显示看到的号码都是公司总机的号码。回拨的话会打到公司的总机,而不是员工的分机。 |
15 RqPS6rhmP3Nyn3Tm Oct 17, 2017 via iPad @nekoyaki 你的回复很有价值,之前我没有往这方面思考过。 有一个问题,是什么使得任天堂采用 p2p 作为联机使用?一般的网游都是客户端和服务端通过 udp 连接,p2p 的意义是什么? |
16 b821025551b Oct 17, 2017 @nekoyaki #13 PS4 上的地狱老司机,有段时间死活连不上,后来破了一下光猫开启 uPnP,神奇的连上了。 |
18 stanjia Oct 17, 2017 @ChristopherWu e... 简单的讲, 就是互链一定要有一个在公网。 2 个都在内网的话, 是不行的。 你在内网能访问 V2EX 是因为 V2EX 有公网 IP 和端口。 你玩 WOW 和你的朋友, 是因为 WOW 有公网 IP 你们都联到 WOW 的公网服务器上进行游玩, 相应的你要 交钱。 因为公网服务器是要钱维护的。 你玩 PS4 和 你的朋友联机, 是没有一个像 WOW 那样的服务器, 你和你朋友联机时,PS4 会协商谁做主机, 一般就是有公网 IP 和端口的做主机, 然后所有人链接到这个人的 PS4 一起游玩。 |
19 RqPS6rhmP3Nyn3Tm Oct 17, 2017 via iPad @nekoyaki ……有理有据,令人信服 |
22 ChristopherWu OP |
23 ChristopherWu OP 如果理解有误,还请指教。 如果是以上的问题,那么让运营商允许外网发起连接到我的内网 ip,是否无需公网,问题就可以解决了? |
24 |
25 zjqzxc Oct 17, 2017 @BXIA 我觉得,更大的可能是:对于这些一次付费,又没有内购的游戏,游戏开发商只能收一次钱,而全球部署服务器在整个公司的生命周期里都需要持续付出成本,应该是觉得不划算。如果能按月收费,或者可以插广告,我相信他们也会部署官方游戏服务器的。(毕竟没有什么问题是钱解决不了的;如果解决不了,就再多加点) 而现在这种模式下,只需要部署一台服务器,用来交换下玩家数据就行了,服务器开销会小得多。 |
26 ChristopherWu OP @zjqzxc ps:任天堂的联网是做的很差, 没有语音, 没有对话功能,只有连上了就玩玩玩。。 |
27 bianchensz Oct 17, 2017 @yexm0 还是有人能拿到公网 IP 只是越来越难了 |
28 RqPS6rhmP3Nyn3Tm Oct 17, 2017 via iPhone @zjqzxc 我倒是觉得这个不会是主要原因。其他买断制的网游,比如守望先锋,采用的也是传统服务端。而且考虑到任天堂游戏非常贵(还不打折),可能还是技术上的考虑。 之前 FF14 出了大面积的连接问题,想想日厂的运营能力还是比较落后的。 |
29 raysonx Oct 17, 2017 @ChristopherWu `让运营商允许外网发起连接到我的内网 ip`就是要让运营商帮你做 DMZ 或者映射一部分端口给你,然而这通常是不可能的。合同里面没有约定的事情你是不能指望运营商做的,他们才是大爷。 |
30 coolcoffee Oct 18, 2017 刚好最近有玩 PS4 的仁王联机, 但那破游戏的联机机制也有点迷,某些玩家之间能连上,某些玩家联机抛错就永远抛错。 我猜测那游戏就是 P2P 联机的,游戏的主服务器只负责撮合玩家互相连接,然后数据都在玩家之间交换,不经过游戏服务器。 而玩家互相连接,至少要有一个人是公网 IP 充当服务器才能保证长链接不中断,两个人都是内网的话,除非运营商做静态路由,否则不可能直连通信。 |
31 skylancer Oct 18, 2017 @ChristopherWu 妈的这中文看的我蛋疼不已,是什么鬼,然后一看英文噢噢噢是这个啊.. |
32 ChristopherWu OP @skylancer 不懂你说啥。。 |
33 FeifeiJin Oct 18, 2017 长城宽带直接暴死了。 |