最后更新:2022-05-24 21:07:58 手机定位技术交流文章
认为自己在即时通信界很活跃的开发者非常清楚,即时通信方案(如IM聊天应用程序、实时短信应用程序等)是IM(特别是移动终端IM)的关键评估指标。
在发展流动客户方面,与服务端的互动至关重要。就整个App来说,通过http请求,通过文本协议以json格式传送数据也符合大多数要求。在业务不断增加,当用户数量增加时,用户经验也越来越重要。对于需要经常上网查询的应用程序,互联网上需要更多的信息。为了优化网络传输,增加应用程序的反应时间。改进用户经验的重要工具。这就是为什么经常使用二元协议的原因。来减小数据包。

传统的文本协议方案
诸如json 或 xml 等文本协议通常用于在 http 上的数据请求。 数据量小于 xml, 协议字段可以添加、 删除, 并更加灵活 。
Natalie模块以及集成的H5和WEB管理采用了统一的PHP后端,文本协议访问层在http+json上。
当 http 请求在 App 级别启动时,http://header.这不是传递某些共同信息的唯一方法。在用户代理中,他们主要撰写应用程序和移动电话。例如,操作系统版本、机器类型、App版本等等。登录状态保存在 cookie 中 。
所要求的反应数据载于返回的JSON,该数据根据与后台达成的协议归还给后台,基本建议包括返回代码、错误代码和操作的相关业务数据。
JSON有诸如: - status return code, 1 成功0 - Data returned business data dies data returned business data, 当出现内部问题时收到错误代码 。
虽然json数据格式相当基本,但它仍然使用属性名称,如状态和数据a,以及用于表示数据类型的宽括弧和引号标记,而且数据中有更多的冗余。
因为书面协议结构合理,含义明确所以方便解读,然而,存在着严重的安全危险。以苹果的后台服务来说API的泄漏也很简单。冒充接入服务器的第三方客户危及我们的服务或程序。因此,需要具体的安全核查和加密方法。

最初,访问层认证请求的合法性:我们的App文本协议应用程序确认请求来自官方客户,并且有效。
以Get的形式,HTTP调用需要转移两个参数:签字参数(sn)和时间戳(time_st)。
签名参数的构造是首先根据参数名词典的顺序对 http 请求中的所有参数进行排序。参数的名称和参数的值将合并为字符串。将 md5 值添加到带有设备专用签名密钥的签名参数( sn) 。签名密钥是 Sn_key 。它来自使用用户设备 ID 的后端。使用签名注册界面从服务器上检索数据,后台和客户是分开的签字登记接口使用与App预先商定的初始密钥进行验证。保证签名安全性。签名参数包括所有Get参数和员额参数。在收到客户请求后,后台使用相同的签名生成 sn 参数。请求是根据请求书中规定的参数处理的。此外,对于时间戳参数,在给定时间后, 服务器将拒绝请求 。防止请求重放攻击。
例如请求request为:?param_b=1¶m_a=2&time_st=123,sn_key=aaa
sn = md5 (' 参数_a2 参数_b1time_st123aa') 符号参数
其次,为防止接触所需数据中的敏感信息,要求利用《https协议》加密文本协议内容:在我们App文本协议中,在 CBC 模式中,所需的数据使用 AES 加密。AES加密算法是一种对称加密技术。同一钥匙可用于对信息进行加密和解密。将签名注册界面与 Sn_key 合并后返回加密密钥pub_key 。后台和客户 都持有公用钥匙 加密和解密。客户端和服务器之间的初始密钥加密协议可用于解密签名注册界面 。此密钥仅用于一次签名登记接口 。
文本协议网络请求的安全主要在签字核查和数据加密后得到保证。
为了改进App的网络请求性能并尽量缩小软件包的规模,我们将能够适应C++框架, 在一个名为“与访问级别后台有关”的文章中适应C++框架。我们应用程序所使用的访问层网络数据传输协议已被转换为二进制协议。协议数据包的定义一致,将协议头目与业务包(协议内容)合并。协议头部使用一组比特定义的 versforth 数字、 数据包长度等等 。
二元协议软件包括许多网络都要求同一域名。根据命令单词参数,在所要求的结构中再次传送信息。由于基于客户的数据组群要求种类繁多,它通常是一个服务接口。因此,需要处理多指挥合并请求。数据一并返回。此外,为进一步尽量减少数据包在整个网络的传输,协议可能考虑到压缩。与此同时,需要确保数据安全。还需要数据加密。
所请求的协议协议的协议信头包括商业标志、协议版本号和数据包长度,服务端只处理从商业标志开始的数据集:
(1) 在拦截协议头部后,使用PkkReq结构拆分协议头按规定长度的数据包。
2) PkkReq包含明确的协议头目Pkkreqhead以及代码的二元流。
3) PkkReq Head将由客户生成的信息组成,如请求序列号、密码加密、压缩技术等,用于解开加密压缩的PkkReqBody。
(4) PkkReqBody包括一般请求数据阵列Reqhead和商业请求数据阵列ReqBody。
5) reqhead大多保存关于用户设备、App版本信息、账户信息、网络环境等的基本信息。请求书和业务请求结构包含在ReqBody中。
6)当有许多命令单词时,将不止一个reqBody,但只有一个reqHead。
7) 后台路径级别将业务ReqBody字段从 ReqBody 发送到指定的后台服务,以便根据 ReqBody CDMDD 命令词进行后台处理。
8) Reqhead创建了导航字段。后台将保存用户的设备信息, 并为用户指定唯一的guid 。当客户收到指南时,下列需求不需要不断报告设备信息领域。我们必须张贴指南。后端可以根据导航系统的要求获取用户设备信息。减小请求数据量。
协议答复与请求协议的一般格式相当。因为答案需要客户端获得错误代码或返回代码并且存在合并请求,因此,制定了两个层次的回返守则。Rsphead有完整的返回代码 iRet 。每一个RspBody都因整个路由层的缘故而复位。与命令词匹配的后台服务结果 。当 iRet 和 ret 都有效时, 每个 RspBody 的 BusinessRspBody 可以用命令单词的相关响应结构包装 。
此外,在列表中,必须定义命令词。协议中指挥词的名称与业务请求结构和业务响应结构的名称对称。如果GetSetting请求相当于GetSetting回应,GetSetting=1001 是命令单词 。允许将请求和回答与命令词相匹配的反射 。
文本议定书与双向议定书相似。必须解决数据安全问题。二进制协议基于一个概念,即正在转让的数据集是一个二进制流。包不直接看结构。例如,我们接受了jce协定。在能够解构原始数据之前,必须理解完整的数据格式。我们还利用协议内容数据的安全保障网站https作为PkkReqBoody/PkkRspBody, 首次压缩和加密软件。
本文由 在线网速测试 整理编辑,转载请注明出处。