使用一个云服务器改善GTA5的联机网络

本文所有内容未经证实,全是作者本人的猜测,仅供参考,尚待完善。

0. 前言

GTA5 online使用的联机方式是P2P的UDP,使用UDP端口6672,可以查看官方的文章

0.1 名词约定

R星服务器:指R星官方的服务器
GTA服务器:某个玩家的电脑,该玩家在P2P联机中充当服务器。

1. 预实验

经过和好友抓包测试,我们发现:

  1. 当联机好友中有能打洞或者有人有公网IP时,会把他当作服务器,都连接他的6672端口
  2. 如果无法互联,会使用R星的一些免费服务器中转,中转无法保证质量和延迟

2. 6672端口的具体用处

gta5启动后就会监听udp 6672端口,游戏发送数据时使用的源端口是6672,目的端口是R星服务器告诉的端口(这个端口最终会被映射到“GTA服务器”的6672);GTA服务器接收数据也是从6672端口接收

3. 尝试的解决方案

我们猜测从点击进入在线模式后,发生的内容:

  1. 本地给R星服务器发消息,问问有没有在线服务器
  2. 本地用源端口6672给R星的第一个IP发消息,尝试给源端口6672打洞,R星用2号IP给打洞后的端口回消息
    2.1 本地收到了2号IP的回应,打洞成功,给R星服务器汇报该端口可用,本机可作为服务器
    2.2 本地没收到2号IP的回应,打洞失败。给R星服务器汇报,无法打洞,若要加入本机,需要R星官方的服务器给穿透。

我们的解决方案:(1)拦截第2步发出的数据包,让云服务器使用源端口A发送给R星;(2)R星返回给端口A的数据包,转发给本机的6672端口。

其中,(2)就是个普通的内网穿透,好办,关键是(1)

我们的做法是:在云服务器上搭建一个L2TP服务器,本地新建一个猥皮恩,路由R星的所有网址到云服务器上,这样,就让云服务器替我们转发发给R星服务器的数据包,在R星看来,我们的外网IP就是云服务器的外网IP。

关于以上内容,博主有兴趣阅读GTA5源码,来进行确认,但是由于磁盘空间不足,暂时无法进行。

posted @   王冰冰  阅读(79)  评论(2编辑  收藏  举报
相关博文:
点击右上角即可分享
微信分享提示
💬
评论
📌
收藏
💗
关注
👍
推荐
🚀
回顶
收起