Mirror学习笔记(二) 传输协议

news2024/11/24 10:48:37

在这里插入图片描述

文章目录

  • 一、KCP传输协议
  • 二、Telepathy 传输协议
  • 三、WebSockets传输协议
  • 四、多路复用传输:
  • 五、延迟模拟传输:
  • 六、Ignorance协议
  • 七、LiteNetLib协议
  • 八、FizzSteamworks协议
  • 九、FizzyFacepunch协议
  • 十、加密协议
  • 十一、Edgegap协议


一、KCP传输协议

KCP是Mirror是默认的传输协议
在这里插入图片描述

协议优势:
1.100%兼容C#
2.适用于除了WebGL外的所有平台
3.重测覆盖率83.5%
4.速度极快
5.非常简单
6.几乎免费分享

KCP是一种可靠协议,可达到平均延迟降低30~40%,最大延迟减少3倍的传输效率。
代价是比TCP多消耗10~20%的带宽。采用纯算法实现,不负责底层收发,要求用户为低层数据自定义传输方式,并以回调的方式提供给CKP.

使用方式:
将CKP传输组件添加到NetworkManager中。
取消组织UDP(不是TCP),默认端口7777


二、Telepathy 传输协议

Telepathy设计参考了Kiss原则
Telepathy快速且可靠,专为MMO规模的网络而设计
Telepathy发送任何形式的内容都将以相同的方式接收
Telepathy使用原生C#编写,可直接应用于Unity
Telepathy可在GitHub上找到

Telepathy最初是在UDP中度过了地狱的三年后,为UMMORPG而设计的。
Telepathy在以下优势:
稳定无错:仅使用400行代码
高性能:可以处理数以千计的连接和包
并发:每一个连接都使用一个线程,它可以大量使用多梳处理器
很简单:Telepathy处理好一切,你只需要调用connect/GetNextMessage/Disconnect.
基于池:如发送10个字节后再发2个,那么另一端将收到10个再收到2个字节,而不会一次收到12个

MMORPG的制作非常困难,创建了Telepathy这样我们就不用再担心网络底层了


三、WebSockets传输协议

使用WebSocket协议的镜像传输,从Unity WebGl中构建,然后从浏览器中启用多人游戏。
在这里插入图片描述

SSL设置已过时,可能会在将来的版本中删除。

服务器设置:
指定基于websocket的游戏监听端口

客户端设置:
设置允许用户自定义Web游戏客户端行为。
如可以引入代理服务器。

载入记录:
支持的日志级别:
None、Error、Warn(默认)、Info、Verbose、Flood

可以使用下拉列表或代码设置日志级别。Mirror.SimpleWeb.Log.level
建议将级别设置为Verbose Flood Info Warn

将日志使用为None时要特别小心 .


四、多路复用传输:

多路复用本身不是传输,但他允许您组合其他传输,以便客户端可以通过其中一个连接到您的服务器。
常用的方式是同时监听WebGL和移动端/桌面端服务器。

实现方法:
1.如果尚未将有NetworkManager的游戏添加 场景中则将其添加到场景中
2.默认情况下Mirror会将CKP传输添加到您的NetworkManager游戏对像中
3.将 Multiplex Transport组件添加到游戏对像中
4.在NetworkManager中分配Multiplex管理
5.将Websocket传输组件添加到到游戏对像
6.将KCP传输逐渐作为第一个通路添加到Multiplex Transport中
7.将Websocket传输作用第二个通路添加到Multiplex Transport中
配置如下图所示:
在这里插入图片描述


五、延迟模拟传输:

Mirror的Latency Simulation提供了在非理想状态下测试项目的条件。
将其添加到NetworkManager,将其拖至NetworkManager.transport中
他可以模拟延迟(毫秒)、数据丢包、数据包加扰、重新排序等问题
在这里插入图片描述在这里插入图片描述


六、Ignorance协议

UPD被理解为一种“破碎”的数据传输协议,没有时序性,可靠性。
而Ignorance是一种可靠的UDP传输协议,并且它提供了可靠的和不可靠的UDP协议。
为什么Ignorance由于Unity LLAPI?
Unity旧的LLAPI效率底的可怕,大量测试更多项目中UnityLLAPI会降低性能。
而LLAPI是闭源的,这意味则Mirror无法对其进行修改,从而开发出了Ignorance协议。
谁在开发Ignorance?
Coburn是主要的开发商。
什么情况下使用可靠的UDP而不是TCP?
1.当你实时通讯更看重速度而不是可靠性时
2.当然需要频繁发送时
3.当你需要自定义消息时
4.如果您的游戏需要数据软管时
什么情况下使用TCP而不是用可靠的UDP ?
1.当你有关键任务时
2.如果你需要可行的网络协议
3.如果你是偏执逛
4.你需要让每个人都同步时


七、LiteNetLib协议

基于UDP拓展出的协议,略过…


八、FizzSteamworks协议

Mirror的FizzSteamworks传输协议,略过…


九、FizzyFacepunch协议

也是Mirror的FizzyFacepunch传输协议,略过…


十、加密协议

加密协议本身不是协议,但允许加密流进行传输。
传输协议通过ECDH和HKDF-SHA256进行非对称秘钥交换,以安全地派生一个通用的256位对称秘钥,然后将其用于具有96位随机数和128位mac.
不依赖于连接协议,加密与顺序/可靠性,因此适用于各种传输。握手完成后,连接完全安全的。为了校验安全性,至少有一方需要验证公钥(通常是客户端验证服务器密钥)

当使用传输协议,您需要将协议添加到Inner字段中,然后将Encryption Transport分配给Network Manager中的Transport.中间通过了Encryption进行加密。

验证服务器公钥,如果不验证公钥,初始握手容易收到MITM攻击。官方建议尽量在所有托管模式下验证服务器密钥。

非常方便使用Mirror为用户提供了3种验证模式:
关闭:默认关闭,开发时使用
列表:公钥是在构建中受信任密钥列表进行验证的。
在这里插入图片描述

回调:在些模式下当客户端连接到时,它将调用毁掉,该回调应返回有效密钥。
EncryptionTransport.onClientValidateServerPubKey true
这提供了最大的灵活性,并允许您通过在连接之前交换公钥来验证,例如从大厅服务器或登录API进行验证。
客户端或服务器后端可以从中检索指纹(以及序列化公钥本身):
EncryptionTransport.EncryptionPublicKeyFingerprint
EncryptionTransport.EncryptionPublicKey


十一、Edgegap协议

Edgegap的分布式断电服务在世界各地的许多地点提供中断续传服务,而不必担心NAT或延迟问题。
为了使用中继服务,您需要设置自己的以按需要启动中继会话,或者可以使用Edgegap的Lobby或Matchmaker服务为您执行此操作:
Mirror提供以下创术来与中继服务进行交互:
EdgegapRelay:
使用KCP的准系统继电器传输,它需要你自己设置好拉力会话并与所有玩家沟通详细信息。
完成此操作后,再决定是否持有设置。
Edgegap Lobby:
使用Edgegap Lobby 提供了简单易用的中继服务
如果你只需要没有匹配的点对点/玩家托管的大厅,基本上不需要设置。
使用方式:
部署大厅服务,通过Edgegap API手册执行操作,也可以传输上内置的UI.
在这里插入图片描述

点击后弹窗:
在这里插入图片描述

只需要输入你的EdgegapAPI密钥和你选择的唯一大厅名字(LobbyName),然后点击创建,就会部署完成,然后将为填写上大厅的URL.
然后就准备好了

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1965896.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

脊髓小伙伴的饮食秘籍来啦!吃出满满活力,康复路上不孤单

Hey小伙伴们~👋 是不是有时候觉得,面对美食却有点无从下手,心里那个小小的声音在说:“我该怎么做,才能让身体更喜欢我呢?”别担心,今天就来给你种草一份超级实用的脊髓损伤患者饮食改善攻略&…

天地图电子地图矢量地图底图结合图像学实现风格底图地图

一、基础概念 天地图(TianDiTu),全称为“国家地理信息公共服务平台”,是中国国家测绘地理信息局主导建设的国家级地理信息服务平台。它提供了一系列的地图服务和地理信息数据,包括基础地理信息、专题地理信息、地…

个人健康数据管理小程序的设计

管理员账户功能包括:系统首页,个人中心,用户管理,知识科普管理,健康信息共享管理,健康计划管理,健康数据管理,数据分析管理,系统管理 微信端账号功能包括:系…

【Qt】多线程示例代码(QThread)

从QThread继承方式 1. qdicethread.h #ifndef QDICETHREAD_H #define QDICETHREAD_H#include <QObject> #include <QThread>class QDiceThread : public QThread {Q_OBJECT public:explicit QDiceThread(QThread *parent nullptr);void diceBegin();void dicePau…

公交信息在线查询小程序的设计

管理员账户功能包括&#xff1a;系统首页&#xff0c;个人中心&#xff0c;用户管理&#xff0c;线路信息管理&#xff0c;站点分类管理&#xff0c;站点信息管理&#xff0c;周边分类管理周边信息管理&#xff0c;系统管理 微信端账号功能包括&#xff1a;系统首页&#xff0…

数说故事 | 大数据洞察宠物消费市场数据

“班味”越来越重的年轻人正靠养宠物来“拯救”自己的生活。结束了一天的忙碌&#xff0c;推开家门&#xff0c;撸个猫、遛个狗&#xff0c;哪怕云吸一下&#xff0c;命就续上了&#xff0c;感觉瞬间焕发新生&#xff0c;能量值满满。 宠物对于铲屎官的意义&#xff0c;不止于…

软件统一过程(RUP)

软件统一过程(Rational Unifed Process&#xff0c;RUP)是 Rational 软件公司创造的软件工程方法。RUP 描述了如何有效地利用商业的、可靠的方法开发和部署软件&#xff0c;是一种重量级过程。 1. 统一过程概述 统一过程 统一过程&#xff08;RUP/UP&#xff0c;Rational Unif…

openEuler Repo

openEuler repo 前言 一键创建在线repo&#xff0c;脚本自动识辨系统无须更改&#xff0c;默认脚本走的是华为更改变量即可$repo_url即可。 openEuler Repo 一键更改脚本 兼容一键替换openEuler repo 20 21 22 23 24自动识辨清华大学 openEuler repo华为云源 openEuler repo…

2024.7.31(基于域名和IP地址的主机,上线商城)

将原有的nginx.conf文件备份 [roottomcat ~]# cp /usr/local/nginx/conf/nginx.conf /usr/local/nginx/conf/nginx.conf.bak [roottomcat ~]# grep -Ev "#|^$" /usr/local/nginx/conf/nginx.conf > /usr/local/nginx/conf/nginx.conf 一、基于域名的虚拟主机 创建…

C语言程序设计18

程序设计18 问题18_1代码18_1结果18_1 问题18_2代码18_2结果18_2 问题18_3代码18_3结果18_3 问题18_1 函数 f u n fun fun 的功能是&#xff1a;有 N N N\times N NN 的矩阵&#xff0c;根据给定的 m ( m < N ) m(m<N) m(m<N) 值&#xff0c;将每行元素中的值均右…

Spring Boot 使用 Spring AI 构建知识库服务

目录 前言 环境准备 JDK17 Spring Boot 3.2.4 Ollama PostgreSQL16 下载向量化模型 pom yml EmbeddingController 向量化示例 向量化文本 向量化检索 ChatController 知识库示例 前言 做 AI 大模型技术调研时&#xff0c;参考的开源项目 Maxkb&#xff0c;它基于…

数据结构7月31日作业

问题&#xff1a; 答案&#xff1a;

C语言 ——深入理解指针(1)

目录 1. 内存和地址2. 指针变量和地址2.1 取地址操作符&#xff08;&&#xff09;2.2 指针变量和解引用操作符&#xff08;*&#xff09;2.3 指针变量的大小 3. 指针变量类型的意义3.1 指针的解引用3.2 指针 - 整数3.3 void* 指针 4. const修饰指针4.1 const修饰变量4.2 co…

Flink 实时数仓(二)【DIM 层搭建】

1、DIM 层搭建 1.1、设计要点 DIM层设计要点&#xff1a; DIM层存的是维度表&#xff08;环境信息&#xff0c;比如人、场、货等&#xff09;DIM层的数据存储在 HBase 表中DIM层表名的命名规范为dim_表名 DIM 层表是用于维度关联的&#xff0c;要通过主键&#xff08;维度外…

Chapter 22 数据可视化——折线图

欢迎大家订阅【Python从入门到精通】专栏&#xff0c;一起探索Python的无限可能&#xff01; 文章目录 前言一、Pyecharts介绍二、安装Pyecharts三、全局配置项四、绘制折线图 前言 在大数据时代&#xff0c;数据可视化成为了分析和展示数据的重要手段。Pyecharts 是一个基于 …

微信小程序-获取手机号:HttpClientErrorException: 412 Precondition Failed: [no body]

问题&#xff1a; 412 异常就是你的请求参数获取请求头与服务器的不符&#xff0c;缺少请求体&#xff01; 我的问题&#xff1a; 我这里获取微信手机号的时候突然给我报错142&#xff0c;但是代码用的是原来的代码&#xff0c;换了一个框架就噶了&#xff01; 排查问题&am…

esp-07s 模块的WIFI 联网和MQTT AT指令测试,固件下载更新方法

安信可官网: https://docs.ai-thinker.com/start 一、wifi 联网测试指令 版本&#xff1a;AT version: 1.2.0.0 //1.重启模块 ATRST//2.设置当前 Wi-Fi 模式&#xff0c;不保存到 flash ATCWMODE_CUR1//3.设置 DHCP&#xff0c;不保存到 flash ATCWDHCP_CUR1,1//4.上电是否…

AIGC大模型产品经理高频面试大揭秘‼️

近期有十几个学生在面试大模型产品经理&#xff08;薪资还可以&#xff0c;详情见下图&#xff09;&#xff0c;根据他们面试&#xff08;包括1-4面&#xff09;中出现高频大于3次的问题汇总如下&#xff0c;一共32道题目&#xff08;有答案&#xff09;。 29.讲讲T5和Bart的区…

使用PhotoMaker V2产生明星香水广告照片

PhotoMaker V2 是一个令人兴奋的工具&#xff0c;可以帮助您快速生成逼真的个性化人物照片。您只需提供一张或几张面部照片以及一个文本提示&#xff0c;即可在几秒钟内获得定制的照片或绘画&#xff0c;无需进行额外的训练。这个模型还可以与其他基于 SDXL 的基础模型或其他 L…

干货 | 2024中国联通算力网络安全白皮书(免费下载)

本白皮书以国家整体安全观为指导&#xff0c;充分发挥网络安全现代产业链链长的主体支撑和融通带动作用&#xff0c;提出算力网络“新质安全、共链可信”的安全愿景和“构建开放融合内生免疫弹性健壮网安智治的一体化安全”的安全目标。从运营商开展网络建设和应用部署的角度出…