ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

一套典型的IM通信协议设计详解

2021-10-15 11:02:17  阅读:239  来源: 互联网

标签:协议 约定 通信协议 详解 IM 密钥 设计


本文要谈的IM通信协议指的是应用层通信“语言”,并非指传输层协议(如TCP、UDP)。IM通信协议的制定是IM开发中起点,也是贯穿设计、开发、运维始终的核心所在,通信协议设计的好坏,直接影响后绪环节的用户体验(数据流量、耗电量、通信速度)、兼容性(新老版本的无缝融合)、扩展性(后绪的版本升级怎么办)等,是个基础且极其重要的工作之一。本文将以理论联系实际的方式,详细讲解一套典型IM的通信协议设计的方方面面。

 

IM通信协议的分层设计

所谓“协议”是双方共同遵守的规则,例如:离婚协议,停战协议。

协议有语法、语义、时序三要素:

(1)语法:即数据与控制信息的结构或格式

(2)语义:即需要发出何种控制信息,完成何种动作以及做出何种响应

(3)时序:即事件实现顺序的详细说明

一套典型的IM通信协议设计分为三层:应用层、安全层、传输层。

即时通讯开发购买咨询

IM安全层协议设计

im协议,消息的保密性非常重要 ,谁都不希望自己聊天内容被看到,所以安全层是必不可少的。

1使用SSL

证书管理微微复杂,代价有点高。

2自行加解密

自己来搞加解密,核心在于密钥的生成与管理,密钥管理方式有多种,主要有这么三种:

(1)固定密钥

服务端和客户端约定好一个密钥,同时约定好一个加密算法(eg:AES ),每次客户端im在发送前,就用约定好的算法,以及约定好的密钥加密再传输,服务端收到报文后,用约定好的算法,约定好的密钥再解密。这种方式,密钥和算法对程序员都是透明的。

(2)一人一密钥

简单说来就是每个人的密钥是固定的,但是每个人之间又不同,其实就是在固定密钥的算法中包含用户的某一特殊属性,比如用户uid、手机号、qq号等。

(3)动态密钥(一session一密钥)

动态密钥,一Session一密钥的安全性更高,每次会话前协商密钥。密钥协商的过程要经过2次非对称密钥的随机生成,1次对称加密密钥的随机生成,具体详情这里不展开,有兴趣的同学可以看下SSL密钥协商额过程。

标签:协议,约定,通信协议,详解,IM,密钥,设计
来源: https://www.cnblogs.com/wecloudcn/p/15410071.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有