龙空技术网

从联机游戏学习NAT类型

匪匪无敌 79

前言:

目前你们对“nat类型strict怎么改open”大概比较注重,看官们都需要分析一些“nat类型strict怎么改open”的相关文章。那么小编也在网络上网罗了一些有关“nat类型strict怎么改open””的相关内容,希望看官们能喜欢,同学们快快来学习一下吧!

联机游戏模式

联机游戏模式一般有server-based模式和P2P模式,它们之间有一些区别,主要包括以下几点:

数据传输方式:在server-based模式中,游戏数据是通过游戏服务器传输的,玩家之间的数据交换都是通过游戏服务器来实现的。而在P2P模式中,玩家之间的数据交换是直接的,不需要经过游戏服务器。稳定性和延迟:由于在server-based模式中,所有的数据传输都需要经过游戏服务器,因此稳定性和延迟可能会受到服务器的影响。而在P2P模式中,玩家之间的数据交换直接,稳定性和延迟可能更好,但是需要确保网络环境和设备配置等方面的兼容性和稳定性。安全性和防作弊:在server-based模式中,游戏服务器可以对游戏进行更加严格的管理和监控,以保障游戏的安全性和防作弊。而在P2P模式中,玩家之间的数据交换是直接的,可能更容易被攻击或作弊。

server-based模式和P2P模式并非互相排斥的,实际上很多联机游戏都是采用了这两种模式的混合模式,例如游戏中使用服务器进行匹配和部分数据传输,同时使用P2P模式进行玩家之间的实时数据传输。

Server-base 简易图

P2P连接游戏简易图

简言之:server-based模式是一(Server)对多(Player)的关系,通常为TCP链接,P2P模式时点(Player)对点(Player)的关系,通常为UDP链接。

联机游戏协议

很多游戏都是采用了TCP和UDP混合的方式来实现联网,例如使用TCP传输游戏数据和命令,使用UDP传输实时的游戏操作等。一般来说:

TCP的使用场景:游戏大厅、匹配等需要频繁通信的场景。TCP具有可靠性强、传输数据不丢失和不重复等特点,适合用于频繁通信的场景,例如游戏大厅、匹配、聊天室等。需要确保数据传输正确性的场景。TCP具有可靠性强、流量控制和拥塞控制等特点,适合用于需要确保数据传输正确性的场景,例如上传和下载游戏数据、保存游戏进度等。数据量较小的场景。TCP的头部相对较大,传输效率较低,适合用于数据量较小的场景,例如发送命令、请求数据等。UDP的使用场景:实时性要求高的场景。UDP具有传输速度快、实时性高的特点,适合用于实时性要求高的场景,例如在线游戏中的移动、射击等操作。大量数据传输的场景。UDP不具有TCP的流量控制和拥塞控制等特点,但具有传输效率高的优势,适合用于大量数据传输的场景,例如游戏中的实时音视频传输、战斗画面渲染等。一些非关键性数据传输的场景。UDP不具有可靠性强、数据不丢失和不重复等特点,适合用于一些非关键性数据传输的场景,例如游戏中的统计数据、广告等。

通常来说,TCP一般是Server-based,只要官服够强,你就不会有不好的体验。影响联机体验的是UDP模式下P2P连接。所以有时候你会觉得,匹配非常快,但游戏卡的一P,或者游戏流畅度还不错,但是存档就上传不上去。

由于IP的稀有性,不可能每个人都有独立IP,一般来说,我们ipv4接入点上网都是经过NAT转换的,减少了IP的使用,同时增加了安全性(相对)。上面P2P连接示意图就变成了下面:

NAT 转换后,不同的Player无法直接连接

玩家对玩家无法互相发现,导致连接缓慢甚至失败。

NAT类型对联机质量的影响

NAT类型是影响联机质量的一个重要因素。不同类型的NAT对联机质量产生的影响也不同。

NAT1(全锥形NAT):联机质量较好,可以实现快速的P2P连接和数据传输。上图NAT2(可穿透NAT):联机质量较好,可以实现P2P连接和数据传输,但连接速度和稳定性可能受到一定的影响。NAT3(完全对称型NAT):联机质量较差,无法实现P2P连接和数据传输。在NAT3网络环境下,需要使用中继服务器等额外的技术手段来建立连接。

在游戏中进行P2P联机对战时,通常会使用NAT类型为NAT2的网络环境,因为NAT2类型的限制比较少,通常可以让游戏玩家之间进行P2P通信,而无需使用中继服务器或其他技术。

NAT3类型的限制较多,对于P2P通信有一定的限制,需要使用中继服务器或其他技术来进行穿透,因此在游戏联机对战中使用NAT3类型的网络环境可能会导致连接速度变慢或连接不稳定的问题。

还有个NAT4类型,基本与P2P游戏和小JJ无缘了。那么这几个NAT类型有什么区别呢?

Oh my god

NAT,NAT2,NAT3,NAT4 的区别NAT(Open):这种NAT类型也被称为全锥形NAT(Full Cone NAT),这种NAT类型将内部网络的IP地址映射到一个或多个公共IP地址上,并允许内部网络中的设备访问互联网。这种NAT类型比较简单,没有太多的限制,因此通常也被称为"开放型NAT"。NAT2(Moderate):这种NAT类型也叫限制锥形NAT(Restricted Cone NAT)和NAT类似,这种NAT类型会将所有的入站数据包都映射到同一个内部地址和端口上,并将发送方的地址和端口号记录下来。但是,只有在先前已经向该地址和端口发送过数据包时,才能将数据包转发到该地址和端口上。这种NAT类型通常可以让用户进行基本的P2P通信。。NAT3(Strict):这种NAT类型也被称为完全对称型NAT(Symmetric NAT),它会限制入站数据流,从而使得两个在不同NAT后面的设备无法直接通信。为了解决这个问题,需要使用中继服务器或其他技术来进行穿透。NAT4:这种NAT类型也被称为端口限制锥形NAT(Port Restricted Cone NAT),它会限制入站数据包必须来自于之前已经向该地址和端口发送过数据包的IP地址和端口号。这种NAT类型对P2P通信有一定限制。

通常来说,家用宽带是NAT3模式。使用动态独立IP一般是NAT1(Open),可以打电话给运营商申请。

NAT2可以通过打洞实现有限的P2P,游戏联机体验会收到影响,但是NAT3,在进行P2P游戏的时候,基本连不上,一般来说,需要上加速器才能获的良好效果。

有了动态独立IP,还是NAT2或者NAT3?

在申请完独立IP之后,NAT类型还是2或者3。原因是路由器,一般来说,使用的路由器拨号,你的路由器是NAT1,但是路由器后边就变成了NAT2。这时候,就需要做端口映射,把路由器上的端口直接映射到PS或者Xbox上,实现NAT1。

主要方案有三种:

UPnP和NAT-PMP,都是用于网络设备之间的端口映射的协议,用于帮助应用程序在NAT设备之间穿透,实现P2P连接和数据传输,他们的区别是:标准不同:UPnP是一种开放标准,由UPnP论坛制定,而NAT-PMP是苹果公司开发的一种专有协议。平台支持不同:UPnP协议被广泛支持,包括Windows、Linux、macOS等不同平台,而NAT-PMP只被苹果公司的操作系统所支持。传输方式不同:UPnP使用SOAP(简单对象访问协议)和HTTP(超文本传输协议)进行通信,而NAT-PMP使用UDP协议进行通信。端口映射方式不同:UPnP使用动态端口映射方式,即当应用程序需要使用某个端口时,会通过UPnP协议向NAT设备请求一个端口映射,使用完成后会自动释放端口映射。而NAT-PMP使用静态端口映射方式,即应用程序需要使用某个端口时,需要事先在NAT设备上进行手动配置。

需要注意的是,这两种方法需要游戏软件本身的支持,大部分联机游戏都内置了,这就意味着即使是NAT2也能成功联网。

开启方法以华硕路由器为例:

NAT类型选择全锥形,开启UPnP

手动映射基本用不到,但是在PlayStation串流的时候,如果你路由器不支持UPnP可以使用。因为不同的游戏需要的端口是不一样的。路由器高级功能,这里还是以华硕路由器为例,他内置了很多游戏所需要的端口映射,等于是把手动映射做一个数据库,当检测到不同host时候,映射到不同的端口,这样即使是游戏不支持UPnP也可以NAT2类型。

华硕NAT映射

如果您喜欢这篇文章,麻烦点个赞。挖个坑,下次可以聊聊怎么使用Tailscale或者headscale突破NAT2或者NAT3的限制,实现远程开发Android。

标签: #nat类型strict怎么改open #nat改为open #nat类型怎么改为全锥形