一、引文
“协议”,英文为 protocol,解释为:计算机通信网络中两台计算机之间进行通信所必须共同遵守的规定或规则。无规矩不成方圆,改一下无协议就无通信,只有制定一套特定的协议,让大家在接收信息和发送信息的时候有一个统一的标准,人们之间日常的交流都遵守着特定的协议,像古代的四书五经,纲常伦理,也都是在学习一种协议,为什么古代妇女上不了厅堂,因为她们不懂得协议或者说协议上不允许她们这么做,说了这么多,就是想说没有协议我们的世界将会是一场无声的电影,因为大家都听不懂对方的话,为什么秦始皇有些伟大,why?他统一了货币啊,制订了协议,不然你的钱到了其它地方就成了纸,那是多么的悲剧啊,所以我断言,通货膨胀归根结底问题在于协议出现了问题,说的更大点,拉登与美国的战争不也是协议的问题,世界之大,莫非协议啊。
好吧,上面讲了那么多,还是来点实的吧,下面介绍一下我了解的通信协议。
二.通信协议
‘通信’这个名词顾名思义,就是两端客户在进行信息交互的过程,在这个过程中需要注意的是通信的方式以及格式问题,就好比打电话,方式就好比是用固定电话还是手机,格式就可以是电话接通后,被呼叫方会先说一句“喂”代表告诉呼叫方通信可以开始了,如果被呼叫方不知道对方是谁,还会问一句“who”,然后呼叫方就要自报家门,如果是呼叫方先问一句“who”, 被呼叫方肯定会感到惊讶,因为对方没有遵从协议,此时通信就有可能会被终止,人与人之间的通信存在随机应变,而电脑也就只会用随机变量,而且谁也不知道它的具体值,不然中彩票的人就太多了,计算机与计算机之间的通信需要人为的制定一套“规矩”,通信过程总体会分成两段,客户机—>服务器,服务器—>客户机,但协议一般都会基本一样,目的是让计算机能正确的发送和解析信息以实现远程交互,每一套通信体系一般都会有自己的通信协议,所以想要实现网络通信,首先得制定一份自己的通信协议,当然‘山寨’一下也可以。
三、XMPP VS BYTE Stream
1)XMPP
XMPP(Extensible Messaging and Presence Protocol)是一种以XML为基础的开放式实时通信协议,是经由互联网工程工作小组(IETF)通过的互联网标准。通信协议的核心其实就是消息的格式组成,XMPP消息类型主要是通过一系列的命令符,格式组成主要是:<msg>..<content>..</content>..</msg>
任何一个命令或者是一条信息都是由一对对对称的<type>..</type>符号组成,
下面简单介绍几组以上特定格式信息:
1. 用户名验证信息 :<msg><userName >...</userName></msg>
2. 密码验证信息 :<msg>< passWord >...</ passWord ></msg>
3. 登陆成功信息 :<msg><loginReply>...</loginReply></msg>
4. 聊天信息 :<msg><Rec>...</Rec><Con>...</Con></msg>
2)BYTE Stream
字节流协议,就是把所有的不同类型的信息都转化为字节的形式,这与网络中直接的字节传输不同,字节流协议会在传输之前进行一定的处理。字节流的信息结构主要包括以下两个部分:
1. 信息头:信息总长度(int)+信息类型(byte)+用户名(30byte)+[接受者(30byte)]
2. 信息体:主要包括具体信息的内容
下面是要实现两个客户机的交互:
客户机1 服务器 客户机2
1. 登陆 (0X01)..........应答(0X11)................. 登陆 (0X01)
2. 注册 (0X02)..........应答(0X12)................. 注册 (0X02)
3. 聊天 (0X03)..........应答(0X13)................. 聊天 (0X03)
4. 视频 (0X04)..........应答(0X14)................. 视频(0X04)
3)区别
1.这两种协议方式用起来都比较的比较方便;
2.当需要大规模的扩展信息的类型时,XMPP信息将会变得特别的繁长,解析也比较的麻烦,而对于字节流协议来说就方便很多了;
3.网络上信息的传输最终都会转化为字节的传输,XMPP信息在解析的时候,特别是在解析中文的时候容易出现乱码问题(解决方法肯定有,等找到了再贴上),字节流信息因为是事先定义好了字节的长度,只要准确的根据协议进行解析就可以了;
4.两种协议信息的读取过程必须特别注意,因为读取到的都是字节,所以很容易出现字节的缺失。
以上只是一点点自己的想法,还需要更多的拓展与改进.........