蓝牙联机游戏是如何实现电脑主机有蓝牙吗到电脑主机有蓝牙吗之间通信?

NAT的四种类型及类型检测

考虑到UDP的無状态特性目前针对其的NAT实现大致可分为Full Cone、Restricted Cone、Port Restricted Cone和Symmetric NAT四种。值得指出的是对于TCP协议而言,一般来说目前NAT中针对TCP的实现基本上是一致的,其间并不存在太大差异这是因为TCP协议本身 便是面向连接的,因此无需考虑网络连接无状态所带来复杂性

1.内部Tuple:指内部电脑主机有蓝牙嗎的私有地址和端**所构成的二元组,即内部电脑主机有蓝牙吗所发送报文的源地址、端口所构成的二元组


2.外部Tuple:指内部Tuple经过NAT的源地址/端口轉换之后所获得的外部地址、端口所构成的二元组,即外部电脑主机有蓝牙吗收到经NAT转换之后的报文时它所看到的该报文的源地址(通常是NAT设备的地址)和源端口
3.目标Tuple:指外部电脑主机有蓝牙吗的地址、端口所构成的二元组,即内部电脑主机有蓝牙吗所发送报文的目标哋址、端口所构成的二元组

1. Full Cone NAT:所有来自同一 个内部Tuple X的请求均被NAT转换至同一个外部Tuple Y而不管这些请求是不是属于同一个应用或者是多个应用嘚。除此之外当X-Y的转换关系建立之后,任意外部电脑主机有蓝牙吗均可随时将Y中的地址和端口作为目标地址 和目标端口向内部电脑主機有蓝牙吗发送UDP报文,由于对外部请求的来源无任何限制因此这种方式虽然足够简单,但却不那么安全

2. Restricted Cone NAT: 它是Full Cone的受限版本:所有来自同┅个内部Tuple X的请求均被NAT转换至同一个外部Tuple Y这与Full Cone相同,但不同的是只有当内部电脑主机有蓝牙吗曾经发送过报文给外部电脑主机有蓝牙吗(假设其IP地址为Z)后,外部电脑主机有蓝牙吗才能以Y中的信息作为目标地址和目标端口向内部 电脑主机有蓝牙吗发送UDP请求报文,这意味著NAT设备只向内转发(目标地址/端口转换)那些来自于当前已知的外部电脑主机有蓝牙吗的UDP报文,从而保障了外部请求来源的安 全性

3. Port Restricted Cone NAT:它昰Restricted Cone NAT的进一步受限版只有当内部电脑主机有蓝牙吗曾经发送过报文给外部电脑主机有蓝牙吗(假设其IP地址为Z且端口为P)之后,外部电脑主機有蓝牙吗才能以Y中的信息作为目标地址和目标端 口向内部电脑主机有蓝牙吗发送UDP报文,同时其请求报文的源端口必须为P,这一要求進一步强化了对外部报文请求来源的限制从而较Restrictd

4. Symmetric NAT:这是一种比所有Cone NAT都要更为灵活的转换方式:在Cone NAT中,内部电脑主机有蓝牙吗的内部Tuple与外蔀Tuple的转换映射关系是独立于内部电脑主机有蓝牙吗所发出的UDP报文中的目标地址及端口的即与目标Tuple无关; 在Symmetric NAT中,目标Tuple则成为了NAT设备建立转換关系的一个重要考量:只有来自于同一个内部Tuple 、且针对同一目标Tuple的请求才被NAT转换至同一个外部Tuple否则的话,NAT将为之分配一个新的外部Tuple;咑个比方当内部电脑主机有蓝牙吗以相 同的内部Tuple对2个不同的目标Tuple发送UDP报文时,此时NAT将会为内部电脑主机有蓝牙吗分配两个不同的外部Tuple並且建立起两个不同的内、外部 Tuple转换关系。与此同时只有接收到了内部电脑主机有蓝牙吗所发送的数据包的外部电脑主机有蓝牙吗才能姠内部电脑主机有蓝牙吗返回UDP报文,这里对外部返回报文来源的限制是与Port Restricted Cone一致的不难看出,如果说Full Cone是要求最宽松NAT UDP转换方式那么,Symmetric NAT则是偠求最严格的NAT方式其不仅体现在转换关系的建立上,而且还体现在对外部报文来源的限制方面


第二部分:NAT类型检测

第一部分: NAT介绍 PublicIP-2且Port-1等于Port-2。此外如果任何外部电脑主机有蓝牙吗想要发送数据给这个内网电脑主机有蓝牙吗,那么它首先应该收到内网电脑主机有蓝牙吗发給他的数据然后才能往回发送,否则即使他知道内网电脑主机有蓝牙吗的一个(PublicIP,Port)也不能发送数据给内网电脑主机有蓝牙吗这种NAT无法实现UDP-P2P通信。

第二部:NAT类型检测

第一步:检测客户端是否有能力进行UDP通信以及客户端是否位于NAT后

客户端建立UDP socket然后用这个socket向服务器的(IP-1,Port-1)发送数据包偠求服务器返回客户端的IP和Port, 客户端发送请求后立即开始接受数据包,要设定socket Timeout(300ms)防止无限堵塞. 重复这个过程若干次。如果每次都超时無法接受到服务器的回应,则说明客户端无法进行UDP通信可能是防火墙或NAT阻止UDP通信,这样的客户端也就 不能P2P了(检测停止)


当客户端能夠接收到服务器的回应时,需要把服务器返回的客户端(IP,Port)和这个客户端socket的 (LocalIPLocalPort)比较。如果完全相同则客户端不在NAT后这样的客户端具囿公网IP可以直接***UDP端口接收数据进行通信(检 测停止)。否则客户端在NAT后要做进一步的NAT类型检测(继续)

客户端建立UDP socket然后用这个socket向服务器嘚(IP-1,Port-1)发送数据包要求服务器用另一对(IP-2,Port-2)响应客户端的请求往回 发一个数据包,客户端发送请求后立即开始接受数据包,要设定socket Timeout(300ms)防止无限堵塞. 重复这个过程若干次。如果每次都超时无法接受到服务器的回应,则说明客户端的NAT不是一个Full Cone NAT具体类型有待下一步检测(继续)。如果能夠接受到服务器从(IP-2,Port-2)返回的应答UDP包则说明客户端是一个Full Cone NAT,这样的客户端能够进行UDP-P2P通信(检测停止)

客户端建立UDP socket然后用这个socket向服务器的(IP-1,Port-1)发送数据包要求服务器返回客户端的IP和Port, 客户端发送请求后立即开始接受数据包,要设定socket Timeout(300ms)防止无限堵塞. 重复这个过程直到收到回应(一萣能够收到,因为第一步保证了这个客户端可以进行UDP通信)

客户端建立UDP socket然后用这个socket向服务器的(IP-1,Port-1)发送数据包要求服务器用IP-1和一个不同于Port-1的端口发送一个UDP 数据包响应客户端, 客户端发送请求后立即开始接受数据包,要设定socket Timeout(300ms)防止无限堵塞. 重复这个过程若干次。如果每次都超時无法接受到服务器的回应,则说明客户端是一个Port Restricted Cone NAT如果能够收到服务器的响应则说明客户端是一个Restricted Cone NAT。以上两种NAT都可以进行UDP-P2P通信

注:鉯上检测过程中只说明了可否进行UDP-P2P的打洞通信,具体怎么通信一般要借助于Rendezvous Server另外对于Symmetric NAT不是说完全不能进行UDP-P2P达洞通信,可以进行端口预测咑洞不过不能保证成功。

虽然索尼已经发售了 和 游戏机泹对于国内广大玩家而言,最熟悉且最具影响力的还是上一代的便携机皇 PSP!因 PSP 有过一段不短的鼎盛时期因此有着大量超级的游戏大作。

洳战神、最终幻想、怪物猎人、合金装备、GTA 侠盗猎车手、讨鬼传、噬神者、小小大星球、啪嗒砰、王国之心、山脊赛车、机战等等如今通过 模拟器,你可以在 、 手机、平板或 Windows、、 电脑上重温这些经典的 PSP 了!

  • 等待命令行运行并***完成 (如果不行请后再试)
  • 完成后 SDL 就已经***恏了
  • 在本文结尾处下载 Mac 版的 PPSSPP 即可正常运行了
  • 可能很多80后、90后的同学在 PSP 游戏机流行的时候因为各种原因没有入手或者没什么时间玩,错过了佷多 PSP 随着索尼 PSP 停产后,除了淘宝找二手外咱们又多了一个重温经典 PSP 游戏的好机会了。

    PPSSPP 模拟器毫无疑问是一款其实力毋需多言。如果伱喜欢在手机、平板上玩游戏又不堪忍受各种“内购为王”的手游,不妨用 PSP 模拟器重新体验一番 PSP 上的高品质游戏大作吧!而且好消息是PSP 的汉化中文游戏非常多,大家可以玩足瘾了

    注意:PPSSPP 只是模拟器,你还需另外下载 PSP 游戏的 iso 文件才能玩耍


异次元软件世界、iPcFun.com 网站创始人

夲来名字很酷,但很无辜地被叫成小X瞬间被萌化了。据说爱软件爱网络,爱游戏爱数码,爱科技各种控,各种宅不纠结会死星囚,不折腾会死星人此人属虚构,如有雷同纯属被抄袭……

参考资料

 

随机推荐