通讯协议定义

PPTP V0.1通讯协议定义

开始:2003-7-19

初稿:2003-7-27

修改:2003-9-16

2003-9-20、24、25

1、前言及范围

本规范为P2P项目中所用到的通讯协议,简称为PPTP,现在的版本是草拟的1.0版。本规范描述了在本项目中客户(Peer)和服务器(Server)以及客户与客户(Peer to Peer)之间的相关消息的类型和定义。

本规范解释权属于本作者,有不合实际情况之处将及时更改。

本规范包括两方面的内容:

(1)客户与登录服务器之间的接口协议;

(2)客户与客户进行点到点传输的接口协议;

本规范应有一定通用性,便于扩展和增加新的功能,如语音和视频传输等;

2、缩略语

图1 P2P协议逻辑网络结构

如图1所示,服务器为各Peer的登录实体,所有的注册、信任、认证信息均必须从服务器发出(客户端一般可以缓存在线客户的信息);各Peer的地址,所提供的资源清单均必须反馈到服务器;

客户与客户之间可进行点到点传输,传输内容包括:文本信息、语音(暂未处理)、视频(暂未处理)、文件(包括小于1M的文件和大文件);

点到点传输的连接建立成功后,不需要服务器的参与。

4、PPTP功能概述

如前言所述,PPTP主要实现两方面的业务操作:

(1)客户与服务器之间(Client←→Server):

1) Peer 向Server发出连接请求(并在程序运行期间保持该连接,并测试连接是否Alive);

2)Server 向Peer 回发连接响应,即建立有效连接(1)和(2)可用于测试连接是否Alive;

3)Peer向Server发出终止连接请求;

4)Server向Peer回发终止连接的响应;

5)Peer 向Server提交注册请求;

6)Server向Peer回发注册响应,成功则Server记载必要信息并返回唯一的用户ID号

7)Peer向Server查询在线好友列表信息;

8)Server向Peer返回在线好友列表;

9)Peer向Server提交更改注册信息请求;

10)Server向Peer回发更改注册信息响应,成功则更新服务器上的用户信息并返回;

11)Peer 向Server 提交登录请求;

12)Server向Peer回发登录成功信息;

13)Peer 向Server提交查询用户详细信息请求;

14)Server向Peer回发该用户详细信息并返回其上线IP地址及共享列表;

15)Peer向Server查询特定用户是否在线信息;

16)Server向Peer返回该用户是否在线;

17)Peer向Server提交共享文件列表(每次改变都要提交一次);

18)Server向Peer回发接收共享文件响应信息,如共享文件的基本信息等;

19)Peer向Server搜索特定文件位置;

20)Server向Peer返回搜索结果;

21)Peer对Server提交接收到搜索结果的响应

22)Peer A添加好友Peer B

23)添加好友回复z

24)Pee A 删除好友Peer B

25)删除好友回复

(2)客户与客户之间(Peer ←→Peer):

1) Peer A 向Peer B发出连接请求(并在程序运行期间保持该连接,并测试连接是否Alive);

2) Peer B 向Peer A 回发连接响应,即建立有效连接(1)和(2)可用于测试连接是否Alive;

3)Peer A向Peer B发出终止连接请求(一般是由于终止一方下线、退出等原因);

4)Peer B向Peer A回发终止连接的响应;

5)Peer A向Peer B 提交搜索对方所有文件的请求(UDP);

6)Peer B向Peer A回发所有共享的文件列表(UDP);

7)Peer A 向peer B 提交发送文本消息的请求(UDP/TCP);无回应

8)Peer A向Peer B提交下载特定文件的请求(TCP);

9)Peer B向Peer A下发文件内容(UDP/TCP)暂未处理断点续传;

10)Peer B向PeerA 发一个文件内容包(文件负载不大于1K)

11)Peer A向Peer B发送一个接收OK的空包。采用应答式处理,Peer B只有接收到OK标志才继续Send。

保证文件的完整性

12)传输结束,发送FileSendEnd包停止文件传输

13)收到传输回发的FliesendendOk信号

14)接收到Upload后给予的回复信息

5. 收到文件结束标志协议栈

CMP接收到Upload后给予的回复信息P协议以TCP/IP/UDP作为底层通信承载,具体结构如下图4所示:

图4 PPTP协议栈

6. 通信方式

传输的协议包括TCP和UDP。用UDP传递视频、语音等实时性的数据,用TCP的长连接和短连接传递文本消息、命令帧、文件等数据。(视频、语音暂不处理)

客户与服务器之间、客户之间进行信息交互时,可以采用长连接方式,也可以采用短连接方式。所谓长连接,指在一个TCP连接上可以连续发送多个数据包,在TCP连接保持期间,如果没有数据包发送,需要双方发链路检测包以维持此连接。短连接是指通信双方有数据交互时,就建立一个TCP连接,数据发送完成后,则断开此TCP连接,即每次TCP连接只完成一对PPTP消息的发送。

对于客户之间发送的数据如音频、视频、文件、消息,也可以采用基于UDP的数据报协议,短消息、小文件、实时音频、实时视频可以采用短连接,大文件可以采用长连接进行传递。

6.1长连接

通信双方以客户-服务器方式建立TCP连接,用于双方信息的相互提交。当信道上没有数据传输时,通信双方应每隔时间C发送链路检测包以维持此连接,当链路检测包发出超过时间T后未收到响应,应立即再发送链路检测包,再连续发送N-1次后仍未得到响应则断开此连接。

参数C、T、N原则上应可配置,现阶段建议取值为:C=3分钟,T=60秒,N=3。

网关与SP之间、网关之间的消息发送后等待T秒后未收到响应,应立即重发,再连续发送N-1次后仍未得到响应则停发。现阶段建议取值为:T=60秒,N=3。

消息采用并发方式发送,加以滑动窗口流量控制,窗口大小参数W可配置,现阶段建

议为16,即接收方在应答前一次收到的消息最多不超过16条。

长连接的操作流程举例如图5所示:

图5 长连接一次操作流程

6.2 短连接

通信双方以客户-服务器方式建立TCP连接,应答与请求在同一个连接中完成。系统采用客户/服务器模式,操作以客户端驱动方式发起连接请求,完成一次操作后关闭此连接。

客户与服务器之间、客户之间的消息发送后等待T秒后未收到响应,应立即重发,再连续发送N-1次后仍未得到响应则停发。现阶段建议取值为:T=60秒,N=3。

短连接的操作流程举例如下图所示:

图6 短连接的操作流程

6.3 本协议中涉及的端口号

6.4交互过程中的应答方式

在客户与服务器、客户与客户之间的交互过程中均采用同步方式,即阻塞方式的套接字通讯。这是因为易于编程实现多线程通信、便于提高安全性,便于移植(Linux、UNIX中的TCP通讯均为Blocking方式),即任一个网元在发出请求时,只有收到响应消息时才会返回,而任一个网元收到请求消息后应立即回送响应消息。举例如图7所示:

d

图7 通信方式示意图

7.消息定义

7.1基本数据类型

7.2消息结构

7.3 消息头格式(Message Header)

7.4客户与服务器之间(Client Server)间的消息定义

1)PPTP_Connect: Peer 向Server发出连接请求(并在程序运行期间保持该连接,并测试连接

是否Alive);

2)PPTP_Connect_REP: Server 向Peer 回发连接响应,即建立有效连接(1)和(2)可用于测试连

接是否Alive;

3)PPTP_Terminate: Peer向Server发出终止连接请求;

4)PPTP_Terminate_REP: Server向Peer回发终止连接的响应;

5)PPTP_Register: Peer 向Server提交注册请求;

6)PPTP_Register_REP: Server向Peer回发注册响应,成功则Server记载必要信息并返回唯一的用

户ID号

7)PPTP_QueryOnline: Peer向Server查询在线好友列表信息;

8)PPTP_QueryOnline_REP: Server向Peer返回在线好友列表;

9)PPTP_Update: Peer向Server提交更改注册信息请求;

10)PPTP_Update_REP: Server向Peer回发更改注册信息响应,成功则更新服务器上的用户信息并返

回;

11)PPTP_Login: Peer 向Server 提交登录请求;

12)PPTP_Login_REP: Server向Peer回发登录成功信息;

13)PPTP_QueryDetail: Peer 向Server提交查询用户详细信息请求;

14)PPTP_QueryDetail_REP: Server向Peer回发该用户详细信息并返回其上线IP地址及共享列表;

15)PPTP_QueryOnline2: Peer向Server查询特定用户是否在线信息;

16)PPTP_QueryOnline2_REP: Server向Peer返回该用户是否在线;

17)PPTP_Share: Peer向Server提交共享文件列表(每次改变都要提交一次);

18)PPTP_Share_REP: Server向Peer回发接收共享文件响应信息,如共享文件的基本信息等;

19)PPTP_Search: Peer向Server搜索特定文件位置;

20)PPTP_Search_REP: Server向Peer返回搜索结果;

21)PPTP_ReceiveOK: Peer对Server提交接收到搜索结果的响应

22)PPTP_FriendAdd Peer A添加好友Peer B

23)PPTP_FriendADD_REP 添加好友回复

24)PPTP_FriendDel Pee A 删除好友Peer B

25)PPTP_FriendDel_REP 删除好友回复

消息体格式定义:

1)PPTP_Connect: Peer 向Server发出连接请求(并在程序运行期间保持该连接,并测试连接

是否Alive);

消息体内容为空,当服务器收到此消息,回发PPTP_Connect_REP数据包响应;

2)PPTP_Connect_REP: Server 向Peer 回发连接响应,即建立有效连接(1)和(2)可用于测试连

接是否Alive;

3)PPTP_Terminate: Peer向Server发出终止连接请求;

接,记载LOG;

4)PPTP_Terminate_REP: Server向Peer回发终止连接的响应;

5)PPTP_Register: Peer 向Server提交注册请求;

增加栏目,由函数处理,各项信息以特殊符号隔开,空信息以“-”代替)

6)PPTP_Register_REP: Server向Peer回发注册响应,成功则Server记载必要信息并返回唯一的用

户ID号

7)PPTP_QueryOnline: Peer向Server查询在线好友列表信息;

8)PPTP_QueryOnline_REP: Server向Peer返回在线好友列表;

9)PPTP_Update: Peer向Server提交更改注册信息请求;

增加栏目,由函数处理,各项信息以特殊符号隔开,空信息以“-”代替)

10)PPTP_Update_REP: Server向Peer回发更改注册信息响应,成功则更新服务器上的用户信息并返

回;

11)PPTP_Login: Peer 向Server 提交登录请求;

0:拨号上网(<56.6Kbps)

1:Cable Modem或ISDN(64-128Kbps)

2:以太网(10Mbps)

3:以太网(100Mbps)

4:广播

5以上:无定义

12)PPTP_Login_REP: Server向Peer回发登录成功信息;

13)PPTP_QueryDetail: Peer 向Server提交查询用户详细信息请求;

14)PPTP_QueryDetail_REP: Server向Peer回发该用户详细信息并返回其上线IP地址及共享列表;

15)PPTP_QueryOnline2: Peer向Server查询特定用户是否在线信息;

16)PPTP_QueryOnline2_REP: Server向Peer返回该用户是否在线;

17)PPTP_Share: Peer向Server提交共享文件列表(每次改变都要提交一次);

18)PPTP_Share_REP: Server向Peer回发接收共享文件响应信息,如共享文件的基本信息等;

19)PPTP_Search: Peer向Server搜索特定文件位置;

DecodeserchResultfile(payload:string)

20)PPTP_Search_REP: Server向Peer返回搜索结果;

息可以进行点到点的文件传递

21) PPTP_ReceiveOK: Peer对Server提交接收到搜索结果的响应

23)PPTP_FriendADD_REP 添加好友回复

24)PPTP_FriendDel Pee A 删除好友Peer B

25)PPTP_FriendDel_REP 删除好友回复

7.5客户与客户之间(Peer Peer)间的消息定义

网关之间互为客户/服务器,任一方都可在需要时建立连接进行数据传输。

1)PTP_Connect: Peer A 向Peer B发出连接请求(并在程序运行期间保持该连接,并测试连接是否Alive);

2)PTP_Connect_REP: Peer B 向Peer A 回发连接响应,即建立有效连接(1)和(2)可用于测试连接

是否Alive;

3)PTP_ Terminate : Peer A 向Peer B发出终止连接请求(一般是由于终止一方下线、退出等原因);

4)PTP_ Terminate_REP: Peer B向Peer A回发终止连接的响应;

5)PTP_Search: Peer A向Peer B 提交搜索对方所有文件的请求;

6)PTP_Search_REP: Peer B向Peer A回发所有共享的文件列表;

7)PTP_Msg: Peer A 向peer B 提交发送文本消息的请求(UDP/TCP);无回应

8)PTP_Download: Peer A向Peer B提交下载特定文件的请求;

9)PTP_Upload: Peer B向Peer A下发文件内容(UDP/TCP)暂未处理断点续传;

10)PTP_SendPacket Peer B向PeerA 发一个文件内容包(文件负载不大于1K)

11)PTP_ReceivePacketOK Peer A向Peer B发送一个接收OK的空包。采用应答式处理,Peer B只有接收

到OK标志才继续Send。保证文件的完整性

12)PTP_FileSendEnd 传输结束,发送FileSendEnd包停止文件传输

13)PTP_filesendEndOK 收到文件结束标志

14)PTP_Upload_REP 接收到Upload后给予的回复信息

消息体格式定义:

1)PTP_Connect: Peer A 向Peer B发出连接请求(并在程序运行期间保持该连接,并测试连

接是否Alive);

2)PTP_Connect_REP: Peer B 向Peer A 回发连接响应,即建立有效连接(1)和(2)可用于测试

连接是否Alive;

3)PTP_ Terminate : Peer A 向Peer B发出终止连接请求(一般是由于终止一方下线、退出等原

因);

4)PTP_ Terminate_REP: Peer B向Peer A回发终止连接的响应;

5)PTP_Search: Peer A向Peer B 提交搜索对方所有文件的请求;

6)PTP_Search_REP: Peer B向Peer A回发所有共享的文件列表;

7)PTP_Msg: Peer A 向peer B 提交发送文本消息的请求(UDP/TCP);无回应采用UDP

方式传输信息(2003-9-16 pengwei)

8)PTP_Download: Peer A向Peer B提交下载特定文件的请求;

9)PTP_Upload: Peer B向Peer A下发文件内容(UDP/TCP);

0:成功,数据传输

1:文件没有找到

2:权限禁止

3-5:未使用(考虑到错误检测)

6:错误的范围(断点续传时)

7:未知错误

10)实际的上传下载数据考虑用UDP实现,当然也可能是TCP,那就要增加协议,而PTP_DOWNLOAD

和PTP_Upload只是起通知作用的数据包;

实现文件传输的协议定义如下:

PTP_SendPacket Peer B向PeerA 发一个文件内容包(文件负载不大于1K)

11)PTP_ReceivePacketOK

Peer A向Peer B发送一个接收OK的空包。采用应答式处理,Peer B只有接收到OK标志才继续Send。保证文件的完整性

12)PTP_FileSendEnd 传输结束,发送FileSendEnd包停止文件传输

7.6系统定义

参考协议:

1、OICQ服务器系统通讯协议

协议说明:

协议由报文头(T)+发送者(T)+接收者(T)+报文类型(T)+报文长度(L)+报文内容组成

发送者和接收者是系统内的程序种类,OICQ服务器0x01,传真服务器0x02,WEB服务器0x03,打印服务器是

0x04,聊天服务器是0x05,OICQ用户是0x0A。

OICQ用户到OICQ服务器的通讯协议引导符(0x81+0x0A+0x01)

报文类型报文内容报文说明

0x01 昵称(S)+肖像(M)+用户密码(S)+性别(T)+年龄(T)+真实姓名(S)+国家/地区(T)+省(T

)+市(S)+地址(S)+邮编(S)+学历(T)+毕业院校(S)+职业(T)+电话(S)+寻呼(S)+电邮(S

)+爱好(S)+说明(S)+身份验证(T)新用户注册,身份验证用于当有人要将他加入好友时询问是否允

0x02 服务号(L)+密码(S)+注册方式(T)老用户注册,方式分为0正常,1隐身

0x03 服务号(L)+对方服务号(L)+内容(S)发送信息到某人

0x04 服务号(L)+组号(L)+内容(S)广播信息,组号=0为全体

0x05 服务号(L)+朋友服务号(L)查看朋友资料

0x06 服务号(L)+组名称(S)增加组

0x07 服务号(L)+组编号(T)+组名称(S)修改组名称

0x08 服务号(L)+组编号(T)删除组

0x09 服务号(L)+移动人数(T)+{朋友服务号(L)+目的组号(T)} 移动组成员

0x0a 服务号(L)+起始编号(L)+回传个数(T)+查找标志(T) 看谁在线上

查找标志1=向小找2=向大找

0x0b 服务号(L)+SQL语句(S)自定义查找

0x0c 服务号(L)+朋友服务号(L)增加好友

0x0d 服务号(L)+朋友服务号(L)+加入原因(S)请求加入好友

0x0e 服务号(L)+朋友服务号(L)删除好友

0x10 服务号(L)+显示模式(T)更改显示方式1上线2隐藏3免打扰4离线

0x11 服务号(L)+监视服务号(L)监视某人谈话

0x12 服务号(L)+昵称(S)+肖像(M)+用户密码(S)+性别(T)+年龄(T)+真实姓名(S)+国家/地

区(T)+省(T)+市(S)+地址(S)+邮编(S)+学历(T)+毕业院校(S)+职业(T)+电话(S)+寻呼

(S)+电邮(S)+爱好(S)+说明(S)+身份验证(T)更改用户基本信息

0x13 服务号(L)+朋友服务号(L)+文件名(S)+文件长度(L) 请求发送文件

0x14 服务号(L)+朋友服务号(L)+允许/拒绝是否允许发送文件

0x15 服务号(L)+朋友服务号(L)+文件内容(B)发送文件

0x16 服务号(L)连接测试报文

0x17 服务号(L)+朋友服务号(L)+同意标志(T) 应答对方请求加入好友

0=拒绝

1=同意

OICQ服务器到OICQ的通讯协议

报文类型报文内容报文说明

0x01 成功/失败(T)+服务号(L)新用户注册结果返回

0x02 成功/失败(T)+组个数(T)+{组名称(S)+组编号(T)+朋友个数(T)+{朋友服务号(L)+肖像

编号(T)+朋友状态(T)+朋友昵称(S)} 老用户注册结果返回

朋友状态

1=上线=2隐藏=3免打扰4离线

0x03 标志(T) + 朋友服务号(L)+信息(S)+信息类型(T)标志1=系统2=用户

发送消息,服务号=0是系统消息

1=用户某某已经把你加为好友

2=用户某某请求你通过身份验证

3=用户某某同意了你的验证要求

4=用户某某拒绝了你的验证请求

0x04 成功/失败(T)+朋友服务号(L)+昵称(S)+肖像(M)+性别(T)+年龄(T)+真实姓名(S)+国家/

地区(T)+省(T)+市(S)+地址(S)+邮编(S)+学历(T)+毕业院校(S)+职业(T)+电话(S)+寻

呼(S)+电邮(S)+爱好(S)+说明(S)朋友信息回送

0x05 成功/失败(T)+组编号(T)+组名称(S)增加组结果回送1/0

0x06 成功/失败(T)+组编号(T)+组名称(S)修改组名称结果回送1/0

0x07 成功/失败(T)+组编号(T)删除组结果回送1/0

0x08 成功/失败(T)移动组成员结果回送1/0

0x09 成功/失败(T)+在线个数(T)+{服务号(L)+昵称(S)+肖像(M)+省(T)+市(S)} 查找在线

人员结果回送

0x0a 成功/失败(T)+找到个数(T)+{服务号(L)+昵称(S)+肖像(M)+省(T)+市(S)} 自定义查

找结果回送(最多50)

0x0b 标志(T)+朋友服务号(L)增加好友结果回送标志

0=数据库失败

=1成功

=2需要身份验证

=3对方不允许加入

=4需要身份验证且不在线

0x0c 朋友服务号(L)+昵称(S)+肖像号(M)+朋友状态(T) 给在线用户增加好友

0x0e 成功/失败(T)+朋友服务号(L)删除好友结果回送

0x10 服务号(L)+显示模式(T)显示模式回送=1上线=2隐藏=3免打扰4离线

0x11 成功/失败更改用户基本信息结果回送

0x12 朋友服务号(L)+文件名(S)+文件长度(L)请求发送文件

0x13 朋友服务号(L)+允许/拒绝是否允许发送文件1允许0拒绝

0x14 朋友服务号(L)+文件内容(B)发送文件

0x15 朋友服务号(L)+当前状态(T)朋友状态回送(系统发送)=1上线=2隐藏=3免打扰4离线

0x16 服务号(L)连接测试

TCP自定义通讯协议

一.设计 1.详细设计: 2个字节的起始字头,1个字节的命令字,1个字节的数据包编号,4个字节的报文总大小, 4个字节的传输数据总大小, 2个字节的文件名大小, 1个字节的保留(备用)字,若干字节的数据块. 2.详细内容 (1)报头的内容: 1.标志位, 2.命令字, 3.数据包的编号, 4.该报文的总大小, 5.该段传输 数据的大小, 6.文件名的大小, 1)命令字: 1.普通图片, 2.普通文档, 3.普通消息, 4.加密图片, 5.加密文档, 6.加密消息. 2)数据包编号: 1.对大文件或长消息体, 以一定的大小进行分割. 一次编号. 3)文件名大小: 1.数据包的数据块中, 刚开头的部位, 进行写文件名, 用来保证每段新数据写入对应的文件. 4)标志位: 1.消息体中需要对与报头,校验字相同的内容进行转义. (2)消息体: 1.文件名或消息名; 2.文件或消息的具体内容. 定义一个规则,发送的时候按照规则封装,接收的时候再按照这个规则解封装(TLV)。 二.TCP报文分段传输的依据: (1)MTU(最大传输单元) 是链路层中的网络对数据帧的一个限制,以以太网为例,MTU为1500个字节。 一个IP数据报在以太网中传输,如果它的长度大于该MTU值,就要进行分片传输,使得每片数据报的长度小于MTU。分片传输的IP数据报不一定按序到达,但IP首部中的信息能让这些数据报片按序组装。IP数据报的分片与重组是在网络层进完成的。

(2)MSS(最大分段大小) MSS是TCP里的一个概念(首部的选项字段中)。MSS是TCP数据包每次能够传输的最大数据分段,TCP报文段的长度大于MSS时,要进行分段传输。 TCP协议在建立连接的时候通常要协商双方的MSS值,每一方都有用于通告它期望接收的MSS选项(MSS选项只出现在SYN报文段中,即TCP三次握手的前两次)。 MSS的值一般为MTU值减去两个首部大小(需要减去IP数据包包头的大小20Bytes和TCP数据段的包头20Bytes)所以如果用链路层以太网,MSS的值往往为1460。而Internet 上标准的MTU(最小的MTU,链路层网络为x2.5时)为576; 如果不设置,则MSS的默认值就为536个字节。很多时候,MSS的值最好取512的倍数。TCP报文段的分段与重组是在运输层完成的。 TCP分段的原因是MSS,IP分片的原因是MTU,由于一直有MSS<=MTU,很明显,分段后的每一段TCP报文段再加上IP首部后的长度不可能超过MTU,因此也就不需要在网络层进行IP分片了。因此TCP报文段很少会发生IP分片的情况。 对于TCP协议来说,整个包的最大长度是由最大传输大小(MSS)决定,MSS就是TCP 数据包每次能够传输的最大数据分段。 为了达到最佳的传输效能TCP协议在建立连接的时候通常要协商双方的MSS值.这个值TCP协议在实现的时候往往用MTU值代替(需要减去IP数据包包头的大小20Bytes和TCP 数据段的包头20Bytes)所以往往MSS为1460。通讯双方会根据双方提供的MSS值得最小值, 确定为这次连接的最大MSS值。

自定义应用层通信协议

1.通信协议的概念及其要素 在OSI开放互联参考模型中,对等实体之间数据单元在发送方逐层封装,在接收方的逐层解析。发送方N层实体从N+1层实体得到的数据包称为服务数据单元(Service Data Unit,SDU)。N层实体只将其视为需要本实体提供服务的数据,将服务数据单元进行封装,使其成为一个对方能够理解的数据单元(Protocol Data Unit,PDU),封装过程实际上是为SDU增加对等实体间约定的控制信息(Protocol Control Information,PCI)的过程。为了保证网络的各个功能的相对独立性,以及便于实现和维护,通常将协议划分为多个子协议,并且让这些协议保持一种层次结构,子协议的集合通常称为协议簇。 网络协议的分层有利于将复杂的问题分解成多个简单的问题,从而分而治之。各层的协议由各层的实体实现,通信双方对等层中完成相同协议功能的实体称为对等实体。对等实体按协议进行通信,所以协议反映的是对等层的对等实体之间的一种横向关系,严格地说,协议是对等实体共同遵守的规则和约定的集合。 通信协议精确地定义了双方通信控制信息和解释信息:发送方能将特定信息(文本、图片、音频、视频)按协议封装成指定格式的数据包,最终以串行化比特流在网络上传输;接收方接收到数据包后,根据协议将比特流解析为本地化数据,从而获取对方发送过来的原始信息。通信协议包括三个要素: (1)语法:规定了信息的结构和格式; (2)语义:表明信息要表达的内容; (3)同步:规则涉及双方的交互关系和事件顺序。 整个计算机网络的实现体现为协议的实现,TCP/IP协议是Internet互联网的核心协议。2.通信协议开发步骤 (1)协议的开发主要包括协议设计、协议形式描述、协议实现和协议一致性测试。协议的开发过程与步骤如图1所示。 图1 协议开发过程与步骤 (2)协议设计过程中的分组发送接收模型如图2所示。

串行通信的基本概念

串行通信的基本概念 串行通信是指两个功能模块只通过一条或两条数据线进行数据交换。发送方需要将数据分解成二进制位,一位、一位地分时经过单条数据线传送。接受方需要一位一位地从单条数据线上接收数据,并且将它们重新组装成一个数据。串行通信数据线路少,在远距离传送时比并行通信的造价低。但是一个数据只有经过若干次以后才可以传送完,速度较慢。 串行通信时,需要解决以下问题: ●双方约定的发送与接受速率(波特率)。 ●约定采用的数据格式(贞格式)。 ●接受方怎样知道一批数据的开始、结束(贞同步)。 ●接受方怎样从数据流中采样每位数据(位同步)。 ●接受方怎样判断接收数据的正确性(数据校验),如何处理收发错误。 解决这些问题的方法大体有同步通信与异步通信两种。 (1)异步通信 异步通信以字符为单位传送,为了解决贞同步,每个字符都附加了一些控制信息,由4部分组成一位起始位(低电平)、5——8位数据位、一位奇偶校验位、1——2位停止位(高电平)。两个字符之间的间隔是任意的,中间可以填充空闲位(高电平)。 只要接受方检测到数据线上出现了由高电平向低电平的跳变,并且低电平能持续一段时间,就表明已经就收到一桢数据的开始。这时可以按照接受时钟从数据线上采样数据,直到接收到了停止位表明接受完一桢数据。接收方还可以通过奇偶校验位判断数据传送过程中是否出现错误。 异步传送控制比较简单,对发送与接收时钟要求不很严格,不会造成错误累积,但是由于每个数据在传送时都要附加控制信息,约有20%的冗余,传送效率并不高,为50——9600波特之间。 (2)同步通信 同步通信以数据块为单位进行传颂,为了解决贞同步,在每一批数据流之前,附加同步信息(1——2个同步字符),最后以校验字符结束。如果在数据传送过程中,发生数据断流(即发送方没有数据可发送)应以同步字符填充。 接收方检测到协议要求的1——2个同步字符后,就可以认为双方已经取得一致,之后就可以在严格的时钟控制下采样数据线接收数据。当然同步通信可以根据校验字符判断所接收的一批字符是否在传送过程中出现错误。 同步通信的传送速率较高,在1——2个同步字符的带领下,就可以源源不断的发送接收。但是同步通信对双方的时钟要求很严格,并且容易造成错误累积。 串行通信中的常用术语 (1)传送机制 穿行传送有单工、半双工、全双工三种传送方向。单工是指发送方与接收方只有一条数据线路,而且这条数据线路永远只能进行余个方向的传输。半双工是指发送方与接收方也只有一条数据线路,但这条数据线路可以在不同时刻进行两个方向的传输。全双工是指发送方与接收方有两条数据线路,同一时刻可以利用这两条数据线路进行不同方向的数据传输。 (2)调制与解调 计算机内使用的是数字信号,要求的频带很宽,而一般的通信线路如电话线路的频带只有

stm32串口通信协议简单教程

STM32串口通信协议简单教程 一、修改串口UART1IT工程模版 用Keil MDK打开短学期资料中的工程示例→串口→UART1IT示例,查看main.c代码如图1所示: 图1 UART1IT串口示例代码 打开文件列表中的stm32f10x_it.c文件,找到UART1中断函数如图2所示代码: 图2 UART1串口中断函数

为方便起见,将整个USART1_IRQHandler函数剪切到main.c文件末尾如图3所示。并删除stm32f10x_it.c文件中的sp变量定义,如图4所示。 图3 移动串口中断函数 图4 去除stm32f10x_it.c中的sp变量声明 重新编译一次工程,看看修改是否出现错误,编译失败出现错误则需仔细检查刚才的修改是否正确。编译成功,下载工程到实验板,关闭下载程序。将实验板BOOT跳线至正常运行模式并重新上电。打开串口调试助手,选择实验板USB虚拟串口并打开,如图5所示。可以看到图中窗口不停的接收到“Hello world!”这样的字符串数据。在发送区域输入字符1,点击发送按钮,可以观察到实验板的流水灯速度变快了很多。

在main函数之前,添加按键扫描代码如图6所示,然后在main函数中,添加sendstr 数组,key和oldkey两个整数变量,如图7所示。

图6 添加按键扫描函数 图7 添加相关变量 接下来,在main函数的while主循环中,添加发送按键状态代码如图8所示。同时,将main函数中的Hello world字符串发送行注释掉,如图9所示。为使按键响应灵敏,可以将main.c文件开头的sp变量初始值由100改为10。 注意,资料包里面的串口调试助手UartAssit软件容易造成虚拟串口占用,甚至使系统崩溃。考虑到使用方便,推荐使用sscom42软件。这里给大家一个下载地址https://www.360docs.net/doc/5718711513.html,/soft/53912.html

串口通信协议

串口通讯—通信协议 所谓通信协议是指通信双方的一种约定。约定包括对数据格式、同步方式、传送速度、传送步骤、检纠错方式以及控制字符定义等问题做出统一规定,通信双方必须共同遵守。因此,也叫做通信控制规程,或称传输控制规程,它属于ISO'S OSI七层参考模型中的数据链路层。 目前,采用的通信协议有两类:异步协议和同步协议。同步协议又有面向字符和面向比特以及面向字节计数三种。其中,面向字节计数的同步协议主要用于DEC公司的网络体系结构中。 一、物理接口标准 1.串行通信接口的基本任务 (1)实现数据格式化:因为来自CPU的是普通的并行数据,所以,接口电路应具有实现不同串行通信方式下的数据格式化的任务。在异步通信方式下,接口自动生成起止式的帧数据格式。在面向字符的同步方式下,接口要在待传送的数据块前加上同步字符。 (2)进行串-并转换:串行传送,数据是一位一位串行传送的,而计算机处理数据是并行数据。所以当数据由计算机送至数据发送器时,首先把串行数据转换为并行数才能送入计算机处理。因此串并转换是串行接口电路的重要任务。 (3)控制数据传输速率:串行通信接口电路应具有对数据传输速率——波特率进行选择和控制的能力。 (4)进行错误检测:在发送时接口电路对传送的字符数据自动生成奇偶校验位或其他校验码。在接收时,接口电路检查字符的奇偶校验或其他校验码,确定是否发生传送错误。 (5)进行TTL与EIA电平转换:CPU和终端均采用TTL电平及正逻辑,它们与EIA采用的电平及负逻辑不兼容,需在接口电路中进行转换。 (6)提供EIA-RS-232C接口标准所要求的信号线:远距离通信采用MODEM时,需要9根信号线;近距离零MODEM方式,只需要3根信号线。这些信号线由接口电路提供,以便与MODEM或终端进行联络与控制。 2、串行通信接口电路的组成 为了完成上述串行接口的任务,串行通信接口电路一般由可编程的串行接口芯片、波特率发生器、EIA 与TTL电平转换器以及地址译码电路组成。其中,串行接口芯片,随着大规模继承电路技术的发展,通用的同步(USRT)和异步(UART)接口芯片种类越来越多,如下表所示。它们的基本功能是类似的,都能实现上面提出的串行通信接口基本任务的大部分工作,且都是可编程的。才用这些芯片作为串行通信接口电路的核心芯片,会使电路结构比较简单。 3.有关串行通信的物理标准 为使计算机、电话以及其他通信设备互相沟通,现在,已经对串行通信建立了几个一致的概念和标准,这些概念和标准属于三个方面:传输率,电特性,信号名称和接口标准。 1、传输率:所谓传输率就是指每秒传输多少位,传输率也常叫波特率。国际上规定了一个标准波特率系列,标准波特率也是最常用的波特率,标准波特率系列为110、300、600、1200、4800、9600和19200。大多数CRT终端都能够按110到9600范围中的任何一种波特率工作。打印机由于机械速度比较慢而使传输波特率受到限制,所以,一般的串行打印机工作在110波特率,点针式打印机由于其内部有较大的行缓冲

通信电源规约CSU03B通信协议-通信局电源、空调及环境集中监控管理系统前端智能设备通信协议

CSU03B通信协议更改记录 2006-06-13:V1.0;其中历史告警记录有重大调整,其他与CSU03A兼容。

CSU03B通信协议 本协议以电信总局《通信局(站)电源、空调及环境集中监控管理系统前端智能设备通信协议》(一九九九年三月)为基础制定;与CSU03A通信协议兼容(历史数据和历史告警除外)。 一.物理接口 1.串行通信口采用RS232/RS485,数据传输速率2400bps; 2.信息传输方式为异步方式,起始位1位,数据位8位,停止位1位,无校验。 3.局站监控系统(SU)与设备监控单元(SM)的通信为主从方式。SU呼叫SM并下发命令,SM收到命令后返回响应信息。SU500ms内收不到SM响应或接收响应信息错误,则认为本次通信过程失败。 二.信息类型及协议的基本格式 1.信息分两种类型: (1) 由SU发出到SM的命令信息(简称命令信息); (2) 由SM返回到SU的响应信息(简称响应信息)。 基本格式的注解见表2.2、表2.3。 表2.2 协议的基本格式 说明: COMMAND INFO由以下控制命令码(其中一部分)组成: COMMAND GROUP(1字节):表示同一类型设备的不同组号; COMMAND ID(1字节):表示同一类型设备相同组内的不同监控点; COMMAND TYPE(1字节):表示不同的遥控命令或历史数据传输中的不同控制命令; COMMAND TIME(1字节):表示时间字段。 DA TA INFO由以下应答码(其中一部分)组成: DATAI:含有整型数的应答信息;

RUNSTATE:设备的运行状态; WARNSTA TE:设备的告警状态; DATAFLAG:标示字节;本协议中该字节无效,固定为00H; DATATIME:时间字段。 表2.3返回码RTN 3.数据格式 3.1 基本数据格式 在表2.1基本格式中各项除SOI和EOI是以十六进制解释(SOI=7EH,EOI=0DH),十六进制传输外,其它各项都是十六进制解释,十六进制—ASCII码的方式传输,每个字节用两个ASCII码表示,即高四位一个ASCII码表示,低四位用一个ASCII码表示。 例:CID2=4BH,传送时顺序发送34H和42H两个字节。 3.2 LENGTH数据格式 LENGTH共两个字节,由LENID和LCHKSUM组成,LENID表示INFO项的ASCII 码字节数,当LENID=0时,INFO为空,即无该项。LENGTH传输中先传高字节,再传低字节,分四个ASCII码传送。 校检码的计算:D11D10D9D8+D7DD6D5D4+D3D2D1D0,求和后模16余数取反加1。例:I NFO项的ASCII码字节数为18,即LENID=0000 0001 0010B。 D11D10D9D8+D7D6D5D4+D3D2D1D0=0000B+0001B+0010B=0011B,模16余数为0011B,0011B取反加1就是1101B,即LCHKSUM为1101B。 可得: LENGTH为1101 0000 0001 0010B,即D012H。 3.3 CHKSUM数据格式 CHKSUM的计算是除SOI、EOI和CHKSUM外,其他字符按ASCII码值累加求和,所得结果模65536余数取反加1。 例:收到或发送的字符序列是:“~1203400456ABCDFEFC72C C R R”(“~”为SOI,“C C R R”为EOI),则最后五个字符“FC72C C R R”中的FC72是CHKSUM,计算方法是: ‘1’+‘2’+‘0’+…+‘A’+‘B’+…+‘F’+‘E’ = 31H + 32H + 30H + …+ 41H + 42H + …+ 46H + 45H = 038EH 其中‘1’表示1的ASCII码值,‘E’表示E的ASCII码值。038EH模65536余数是

通讯协议标准

编号: 密级:内部 页数:__________基于RS485接口的DGL通信协议(修改) 编写:____________________ 校对:____________________ 审核:____________________ 批准:____________________ 北京华美特科贸有限公司 二○○二年十二月六日

1.前言 在常见的数字式磁致伸缩液位计中,多采用RS485通信方式。但RS485标准仅对物理层接口进行了明确定义,并没有制定通信协议标准。因此,在RS485的基础上,派生出很多不同的协议,不同公司均可根据自身需要设计符合实际情况的通信协议。并且,RS485允许单总线多机通信,如果通信协议设计不好,就会造成相互干扰和总线闭锁等现象。如果在一条总线上挂接不同类型的产品,由于协议不一样,很容易造成误触发,造成总线阻塞,使得不同产品对总线的兼容性很差。 随着RS485的发展,Modicon公司提出的MODBUS协议逐步得到广泛认可,已在工业领域得到广泛应用。而MODBUS的协议规范比较烦琐,并且每字节数据仅用低4位(范围:0~15),在信息量相同时,对总线占用时间较长。 DGL协议是根据以上问题提出的一种通信协议。在制定该协议时已充分考虑以下几点要求: a.兼容于MODBUS 。也就是说,符合该协议的从机均可挂接到同一总线上。 b.要适应大数据量的通信。如:满足产品在线程序更新的需要(未来功能)。 c.数据传输需稳定可靠。对不确定因素应加入必要的冗错措施。 d.降低总线的占用率,保证数据传输的通畅。 2.协议描述 为了兼容其它协议,现做以下定义: 通信数据均用1字节的16进制数表示。从机的地址范围为:0x80~0xFD,即:MSB=1; 命令和数据的数值范围均应控制在0~0x7F之间。即:MSB=0,以区别地址和其它数据。 液位计的编码地址为:0x82~0x9F。其初始地址(出厂默认值)为:0x81。 罐旁表的编织地址为:0xA2~0xBF。其初始地址(出厂默认值)为:0xA1。 其它地址用于连接其它类型的设备,也可用于液位计、罐区表地址不够时的扩充。 液位计的命令范围为:0x01~0x2F,共47条,将分别用于参数设定、实时测量、诊断测试、在线编程等。 通信的基本参数为:4800波特率,1个起始位,1个结束位。字节校验为奇校验。 本协议的数据包是参照MODBUS RTU 通信格式编写,并对其进行了部分修改,以提高数据传输的速度。另外,还部分参照了HART协议。其具体格式如下: 表中,数据的最大字节数为16个。也就是说,整个数据包最长为20个字节。 “校验和”是其前面所有数据异或得到的数值,然后将该数值MSB位清零,使其满足0~7F 的要求。在验证接收数据包的“校验和”是否正确时,可将所有接收数据(包括“校验和”)进行异或操作,得到的数据应=0x80。这是因为,只有“地址”的MSB=1,所以异或结果的MSB也必然等于1。 本协议不支持MODBUS中所规定的广播模式。 3.时序安排 在上电后,液位计将先延迟10秒,等待电源稳定。然后,用5秒的时间进行自检和测试数据。

各种通信协议

分层及通信协议 协议软件是计算机通信网中各部分之间所必须遵守的规则的集合,它定义了通信各部分交换信息时的顺序、格式和词汇。协议软件是计算机通信网软件中最重要的部分。网络的体系结构往往都是和协议对应的,而且,网络管理软件、交换与路由软件以及应用软件等都要通过协议软件才能发生作用。 一、通信协议 1、什么是通信协议 通信协议(简称协议Protoco l),是指相互通信的双方(或多方)对如何进行信息交换所一致同意的一整套规则。一个网络有一系列的协议,每一个协议都规定了一个特定任务的完成。协议的作用是完成计算机之间有序的信息交换。 通信网络是由处在不同位置上的各节点用通信链路连接而组成的一个群体。通信网必须在节点之间以及不同节点上的用户之间提供有效的通信,即提供有效的接入通路。在计算机通信网中,将这种接入通路称为连接(connection)。建立一次连接必需要遵守的一些规则,这些规则也就是通信网设计时所要考虑的主要问题。 (l)为了能在两个硬件设备之间建立起连接,应保证在源、宿点之间存在物理的传输媒介,在该通路的各条链路上要执行某种协议。 如果传输线路使用电话线,则要通过调制解调器将信号从数字转换成模拟的,并在接收端进行反变换。 如果用的是数字传输线路,则在数据处理设备和通信设备之间,必须有一个数字适配器,以便将数字信号的格式转换成两种设备各自所期望的形式。 为了在两个端设备之间互换数据,需要协调和同步,调制解调器和数字适配器必须执行它们自己的协议。 无论是模拟的还是数字的通信设备,调制解调器和数字适配器的状态必须由接到节点上的设备来控制,这里必定有一个物理的或电气的接口来执行这种功能,执行某种适当的协议来达到这一控制目的。 (2)在计算机通信网中,许多信息源都是突发性的(bursty),问题是要利用信息的这种突发性质来降低消耗在线路上的费用,由此开发了许多共享通信资源的技术。所谓共享,是指允许多个用户使用同一通信资源,这就产生了多用户的接入问题。多路接入

串行通信技术基础知识

串行通信技术基础 在串行通信中,参与通信的两台或多台设备通常共享一条物理通路。发送者依次逐位发送一串数据信号,按一定的约定规则为接收者所接收。由于串行端口通常只是定义了物理层的接口规范,所以为确保每次传送的数据报文能准确到达目的地,使每一个接收者能够接收到所有发向它的数据,必须在通信连接上采取相应的措施。 由于借助串行通信端口所连接的设备在功能、型号上往往互不相同,其中大多数设备出了等待接收数据之外还会有其他的任务,例如,一个数据采集单元需要周期性地收集和存储数据;一个控制器需要负责控制计算机或向其他设备发送报文;一台设备可能会在接收方正在进行其他任务时向它发送信息。因此,必须有能应对多种不同工作状态的一系列规则来保证通信的有效性。这里所讲的保证串行通信的有效性的方法包括:使用轮询或者中断来检测、接收信息;设置通信帧的起始、停止位;建立连接握手;实行对接收数据的确认、数据缓存以及错误检查等。 一、串行通信基本概念 1、连接握手 通信帧的起始位可以引起接收方的注意,但发送方并不知道,也不能确定接收方是否已经做好了接收数据的准备。利用连接握手可以使收发双方确认已经建立了连接关系,接收方已经做好准备,可以进入数据收发状态。 连接握手过程是指发送者在发送一个数据块之前使用一个特定的握手信号来引起接收者的注意,表明要发送数据,接收者则通过握手信号回应发送者,说明它已经做好了接收数据的准备。 连接握手可以通过软件,也可以通过硬件来实现。在软件连接握手中,发送者通过发送一个字节表明它想要发送数据;接收者看到这个字节的时候,也发送一个编码来声明自己可以接收数据;当发送者看到这个信息时,便知道它可以发送数据了。接收者还可以通过另一个编码来告诉发送者停止发送。 在普通的硬件握手中,接收者在准备好了接收数据的时候将相应的握手信号线变为高电平,然后开始全神贯注地监视它的串行输入端口的允许发送端。这个允许发送端与接收者已准备好接收数据的信号端相连,发送者在发送数据之前一直在等待这个信号变化。一旦得到信号说明接收者已处于准备好接收数据的状态,便开始发送数据。接收者可以在任意时候将握手信号变为低电平,即便是在接收一个数据块的过程中间也可以把这根导线带入到低电平。当发送者检测到这个低电平信号时,就应该停止发送。而在完成本次传输之前,发送者还会继续等待握手信号线在此变为高电平,以继续被中止的数据传输。 2、确认 接收者为表明数据已经收到而向发送者回复信息的过程称为确认。有的传输过程可能会收到报文而不需要向相关节点回复确认信息。但是在许多情况下,需要通过确认告之发送者数据已经收到。有的发送者需要根据是否收到信息来采取相应的措施,因而确认对某些通信过程是必需的和有用的。即便接收者没有其他信息要告诉发送者,也要为此单独发一个数据确认已经收到的信息。 确认报文可以是一个特别定义过的字节,例如一个标识接收者的数值。发送者收到确认报文就可以认为数据传输过程正常结束。如果发送者没有收到所希望回复的确认报文,它就认为通信出现了问题,然后将采取重发或者其它行动。 3、中断 中断是一个信号,它通知CPU有需要立即响应的任务。每个中断请求对应一个连接到中断源和中断控制器的信号。通过自动检测端口事件发现中断并转入中断处理。 许多串行端口采用硬件中断。在串口发生硬件中断,或者一个软件缓存的计数器到达一个触发值时,表明某个事件已经发生,需要执行相应的中断响应程序,并对该事件做出及时的反应。这种过程也称为事件驱动。

PPTP V0.1通讯协议定义

PPTP V0.1通讯协议定义 开始:2003-7-19 初稿:2003-7-27 修改:2003-9-16 2003-9-20、24、25 1、前言及范围 本规范为P2P项目中所用到的通讯协议,简称为PPTP,现在的版本是草拟的1.0版。本规范描述了在本项目中客户(Peer)和服务器(Serv11er)以及客户与客户(Peer to Peer)之间的相关消息的类型和定义。 本规范解释权属于本作者,有不合实际情况之处将及时更改。 本规范包括两方面的内容: (1)客户与登录服务器之间的接口协议; (2)客户与客户进行点到点传输的接口协议; 本规范应有一定通用性,便于扩展和增加新的功能,如语音和视频传输等; 2、缩略语

3.网络结构 图1 P2P协议逻辑网络结构 如图1所示,服务器为各Peer的登录实体,所有的注册、信任、认证信息均必须从服务器发出(客户端一般可以缓存在线客户的信息);各Peer的地址,所提供的资源清单均必须反馈到服务器; 客户与客户之间可进行点到点传输,传输内容包括:文本信息、语音(暂未处理)、视频(暂未处理)、文件(包括小于1M的文件和大文件); 点到点传输的连接建立成功后,不需要服务器的参与。 4、PPTP功能概述 如前言所述,PPTP主要实现两方面的业务操作: (1)客户与服务器之间(Client Server): 1) Peer 向Server发出连接请求(并在程序运行期间保持该连接,并测试连接是否Alive); 2)Server 向Peer 回发连接响应,即建立有效连接(1)和(2)可用于测试连接是否Alive; 3)Peer向Server发出终止连接请求; 4)Server向Peer回发终止连接的响应; 5)Peer 向Server提交注册请求; 6)Server向Peer回发注册响应,成功则Server记载必要信息并返回唯一的用户ID号 7)Peer向Server查询在线好友列表信息; 8)Server向Peer返回在线好友列表; 9)Peer向Server提交更改注册信息请求; 10)Server向Peer回发更改注册信息响应,成功则更新服务器上的用户信息并返回; 11)Peer 向Server 提交登录请求; 12)Server向Peer回发登录成功信息;

常用几种通讯协议

常用几种通讯协议 Modbus Modbus技术已成为一种工业标准。它是由Modicon公司制定并开发的。其通讯主要采用RS232,RS485等其他通讯媒介。它为用户提供了一种开放、灵活和标准的通讯技术,降低了开发和维护成本。 Modbus通讯协议由主设备先建立消息格式,格式包括设备地址、功能代码、数据地址和出错校验。从设备必需用Modbus协议建立答复消息,其格式包含确认的功能代码,返回数据和出错校验。如果接收到的数据出错,或者从设备不能执行所要求的命令,从设备将返回出错信息。 Modbus通讯协议拥有自己的消息结构。不管采用何种网络进行通讯,该消息结构均可以被系统采用和识别。利用此通信协议,既可以询问网络上的其他设备,也能答复其他设备的询问,又可以检测并报告出错信息。 在Modbus网络上通讯期间,通讯协议能识别出设备地址,消息,命令,以及包含在消息中的数据和其他信息,如果协议要求从设备予以答复,那么从设备将组建一个消息,并利用Modbus发送出去。 BACnet BACnet是楼宇自动控制系统的数据通讯协议,它由一系列与软件及硬件相关的通讯协议组成,规定了计算机控制器之间所有对话方式。协议包括:(1)所选通讯介质使用的电子信号特性,如何识别计算机网址,判断计算机何时使用网络及如何使用。(2)误码检验,数据压缩和编码以及各计算机专门的信息格式。显然,由于有多种方法可以解决上述问题,但两种不同的通讯模式选择同一种协议的可能性极少,因此,就需要一种标准。即由ISO(国际标准化协会〉于80年代着手解决,制定了《开放式系统互联(OSI〉基本参考模式(Open System Interconnection/Basic Reference Model简称OSI/RM)IS0- 7498》。 OSI/RM是ISO/OSI标准中最重要的一个,它为其它0SI标准的相容性提供了共同的参考,为研究、设计、实现和改造信息处理系统提供了功能上和概念上的框架。它是一个具有总体性的指导性标准,也是理解其它0SI标准的基础和前提。 0SI/RM按分层原则分为七层,即物理层、数据链路层、网络层、运输层、会话层、表示层、应用层。 BACnet既然是一种开放性的计算机网络,就必须参考OSIAM。但BACnet没有从网络的最低层重新定义自己的层次,而是选用已成熟的局域网技术,简化0SI/RM,形成包容许多局 域网的简单而实用的四级体系结构。 四级结构包括物理层、数据链路层、网络层和应用层。

串口通信协议

串口通信协议 串口通信的概念非常简单,串口按位(bit)发送和接收字节。尽管比按字节(byte)的并行通信慢,但是串口可以在使用一根线发送数据的同时用另一根线接收数据。

的检查数据,简单置位逻辑高或者逻辑低校验。这样使得接收设备能够知道一个位的状态,有机会判断是否有噪声干扰了通信或者是否传输和接收数据是否不同步。 什么是RS-232 RS-232(ANSI/EIA-232标准)是IBM-PC及其兼容机上的串行连接标准。可用于许多用途,比如连接鼠标、打印机或者Modem,同时也可以接工业仪器仪表。用于驱动和连线的改进,实际应用中RS-232的传输长度或者速度常常超过标准的值。RS-232只限于PC串口和设备间点对点的通信。RS-232串口通信最远距离是50英尺。 DB-9针连接头 9针串口连接口顺序图 从计算机连出的线的截面。 RS-232针脚的功能: 数据: TXD(pin 3):串口数据输出(Transmit Data) RXD(pin 2):串口数据输入(Receive Data) 握手: RTS(pin 7):发送数据请求(Request to Send) CTS(pin 8):清除发送(Clear to Send) DSR(pin 6):数据发送就绪(Data Send Ready) DCD(pin 1):数据载波检测(Data Carrier Detect) DTR(pin 4):数据终端就绪(Data Terminal Ready) 地线: GND(pin 5):地线 其他 RI(pin 9):铃声指示 什么是RS-422 RS-422(EIA RS-422-AStandard)是Apple的Macintosh计算机的串口连接标准。RS-422使用差分信号,RS-232使用非平衡参考地的信号。差分传输使用两根线

(参考)应用层网络协议分析

HTTP网页访问的协议分析 在协议模型中,应用层是用户与计算机进行实际通信的地方,只有当马上就要访问网络时,才会实际上用到这一层。例如,我们可以从系统中卸载掉任何联网组件,如TCP/IP、网卡(NIC)等,仍可以使用IE来浏览本地的HTML文档。可如果我们试图浏览必须使用HTTP 的文档,或者用FTP下载一个文件,事情就没那么容易了。此时,IE将尝试访问应用层来响应这一类请求。因此,应用层也可被看作是实际应用程序和下一层(OSI模型中为表示层,TCP/IP模型中为传输层)之间的接口,它通过某种方式把应用程序的有关信息送到协议栈的下面各层。 应用层协议则是实现用户和系统之间接口的工具,用户可通过这些协议方便地访问网络资源,实现信息共享,HTTP则是其中一种。 HTTP(超文本传输协议)是客户端浏览器或其他程序与Web服务器之间的应用层通信协议。在Internet上的Web服务器上存放的都是超文本信息,客户机需要通过HTTP协议传输所要访问的超文本信息。HTTP包含命令和传输信息,不仅可用于Web访问,也可以用于其他因特网/内联网应用系统之间的通信,从而实现各类应用资源超媒体访问的集成。 HTTP是基于请求/响应方式的。它的运作方式很简单:一个客户机与服务器建立连接后,发送一个请求给服务器,服务器接到请求后,给予相应的响应报文。其中,“客户”与“服务器”是一个相对的概念,只存在于一个特定的连接期间,即在某个连接中的客户在另一个连接中可能作为服务器。因此,当网络中的任一台拥有可被访问的页面的计算机被其它计算机访问时,它便是服务器,而当它访问其它浏览非本地的HTTP文档时,它便是客户端。因此,我们可以在局域网中搭建简单的环境来观察分析访问HTTP的工作流程。 最简单的情况可能是在用户和服务器之间通过一个单独的连接来完成,如图1-1: 图1-1 根据图连接好以及配好相应IP后,测试网络互通。而后,在server上建立HTTP服务器。首先在控制面板\添加删除程序\添加删除Windows组件中查看Internet信息服务(IIS)是否装上,若没有则安装,若安装好,则可以进入管理工具\Internet服务管理器,在默认WEB站点下建立自己的站点及目录。而后,在client浏览器地址栏中键入http://31.0.0.1便可浏览位于server端默认站点目录下网页。 在此过程中,我们通过Ethereal所抓的数据包如下: 1、数据链路层:

串口基本常识

串口引脚图.jpg 串口通信的基本概念 1,什么是串口? 2,什么是RS-232? 3,什么是RS-422? 4,什么是RS-485? 5,什么是握手? 1,什么是串口 串口是计算机上一种非常通用设备通信的协议(不要与通用串行总线Universal Serial Bus或者USB混淆)。大多数计算机包含两个基于RS232的串口。串口同时也是仪器仪表设备通用的通信协议;很多GPIB兼容的设备也带有RS-232口。同时,串口通信协议也可以用于获取远程采集设备的数据。 串口通信的概念非常简单,串口按位(bit)发送和接收字节。尽管比按字节(byte)的并行通信慢,但是串口可以在使用一根线发送数据的同时用另一根线接收数据。它很简单并且能够实现远距离通信。比如IEEE488定义并行通行状态时,规定设备线总常不得超过20米,并且任意两个设备间的长度不得超过2米;而对于串口而言,长度可达1200米。 典型地,串口用于ASCII码字符的传输。通信使用3根线完成:(1)地线,(2)发送,(3)接收。由于串口通信是异步的,端口能够在一根线上发送数据同时在另一根线上接收数据。其他线用于握手,但是不是必须的。串口通信最重要的参数是波特率、数据位、停止位和奇偶校验。对于两个进行通行的端口,这些参数必须匹配: a,波特率:这是一个衡量通信速度的参数。它表示每秒钟传送的bit的个数。例如300波特表示每秒钟发送300个bit。当我们提到时钟周期时,我们就是指波特率例如如果协议需要4800波特率,那么时钟是4800Hz。这意味着串口通信在数据线上的采样率为4800Hz。通常电话线的波特率为14400,28800和36600。波特率可以远远大于这些值,但是波特率和距离成反比。高波特率常常用于放置

基于串口自定义协议的数据通信方式设计

基于串口自定义协议的数据通信方式设计 ?引言 计算机与计算机之间的数据交换不仅可以采用常用的通信协议进行联网方式交换,还可以采用串行通信方式或并行通信方式通过非常规的通信协议方式交换。不同安全等级的计算机之间需要进行数据传输(出于安全考虑,多数是从安全等级高的计算机向安全等级低的计算机单向传输数据) ,而不同安全等级的计算机是不允许进行直接网络连接的,由此设计了自定义通信协议下通过串行通信端口RS2232 实现处于不同安全等级的计算机之间进行数据传输。 1.RS232 串行端口 一组比特数据在多条线上同时被传送的传输方式被称为并行传输。在传输过程中各数据位可并行传送,传送速度快、效率高,多用于要求实时、快速的场合。但是有多少数据位就需要多少根数据线,传送成本高。而串行端口通信是数据通过一根传输线逐位传送,数据传送按位顺序进行,至少只需要一根传输线即可完成,节省传输线。由于串行通信方式使用线路少、成本低,特别是在远程传输时,避免了多条线路特性的不一致而被广泛采用. 1.1 RS 2232 端口简介 RS232 串行通信端口属于PC 机(个人计算机)及电信应用领域中最为成功的串行数据标准。它被定义为一种在低速率串行通信中增加通信距离的单端标准,是目前PC 机与通信工业中应用最广泛的一种串行通信接口。现在的PC机一般有1 到2 个串行通信端口COM1 及COM2 ,这些串行通信端口均为9 个引脚,即异步通信的9 个信号。在通信速率低于20 kbit / s时,与其直接连接的电缆最大物理距离为15 m(即直接传输距离) 。RS232 标准规定,若不使用Modem ,在码元畸变小于4 %的情况下,数据终端设备(DTE)和数据通信设备(DCE)之间最大传输距离为15 m。一般应用中当通信距离小于12 m 时,可以用电缆线直接连接标准RS232 端口。若距离较远, 须附加调制解调器(Modem) 。本方案中传输数据的2 台计算机距离很近,采用最基本的接法,将RS232 端口的关键引脚直接用电缆线相连。 RS2232 端口引脚说明见表1。

所谓通信协议是指通信双方的一种约定

所谓通信协议是指通信双方的一种约定。约定包括对数据格式、同步方式、传送速度、传送步骤、检纠错方式以及控制字符定义等问题做出统一规定,通信双方必须共同遵守。因此,也叫做通信控制规程,或称传输控制规程,它属于ISO'S OSI 七层参考模型中的数据链路层,其主要完成的作用如下: (1)实现数据格式化:因为来自CPU勺是普通的并行数据,所以,接口电路应具有实现不同串行通信方式下的数据格式化的任务。在异步通信方式下,接口自动生成起止式的帧数据格式。在面向字符的同步方式下,接口要在待传送的数据块前加上同步字符 ( 2)进行串-并转换:串行传送,数据是一位一位串行传送的,而计算机处理数据是并行数据。所以当数据由计算机送至数据发送器时,首先把串行数据转换为并行数才能送入计算机处理。因此串并转换是串行接口电路的重要任务。 ( 3)控制数据传输速率:串行通信接口电路应具有对数据传输速率——波特率进行选择和控制的能力。 ( 4)进行错误检测:在发送时接口电路对传送的字符数据自动生成奇偶校验位或其他校验码。在接收时,接口电路检查字符的奇偶校验或其他校验码,确定是否发生传送错误。 (5)进行TTL与EIA电平转换:CPU和终端均采用TTL电平及正逻辑,它们与 EIA采用的电平及负逻辑不兼容,需在接口电路中进行转换。 (6)提供EIA-RS-232C接口标准所要求的信号线:远距离通信采用MODE时, 需要9根信号线;近距离零MODE方式,只需要3根信号线。这些信号线由接口 电路提供,以便与MODE或终端进行联络与控制。 (7)为了完成上述串行接口的任务,串行通信接口电路一般由可编程的串行接 口芯片、波特率发生器、EIA与TTL电平转换器以及地址译码电路组成。其中, 串行接口芯片,随着大规模继承电路技术的发展,通用的同步(USRT和异步(UART接口芯片种类越来越多,它们的基本功能是类似的,都能实现上面提出的串行通信接口基本任务的大部分工作,且都是可编程的。选用这些芯片作为串行通信接口电路的核心芯片,会使电路结构比较简单。 1.. 现场总线同RS-232/485/422 的区别与应用

串口通信协议程序

主机程序: /* 主机主要处理: 主—>从 1.给从机发送命令 2.给从机发送数据 3.命令从机向主机发送数据 从—>主由中断程序处理根据从机发送过来的请求类型 0.请求主机发送命令(包括主到从的1,2命令) 1.请求主机接收数据 2,3保留 */ #include #include #define uchar unsigned char #define uint unsigned int #define slav1_addr 0x01 #define slav2_addr 0x02 #define COMEND 0 #define REC_DATE 1 //主机向从机发送多数据命令高四位为1111,所以其他命令高四位不能为1111 #define cmd_X 0x12 #define cmd_rec_data 0x11 sbit signal=P3^2; uchar temp_addr,num,rec,style,re_addr; uchar buf[20]; uchar rec_data[10]; void delay(unsigned int i) { while(i--); } void init_uart(void) { TMOD=0x20; //定时器方式2--8位reload模式 TH1=0xfd; TL1=0xfd; PCON=0; //波特率不加倍 SCON=0xf0; //方式三 TB8=1; //发送地址时第九位为1 SM2=1; //接收到第九位为1时才能接收数据

TR1=1; //要在设置scon后开定时 ES=1; //开中断 EA=1; } //发送命令 void uart_send_cmd(uchar addr,uchar cmd)//uchar *date) { while(signal==0); //检查总线是否被占 signal=0; //占用总线 EA=0;//关中断 do { do { SBUF=addr; //发送从机地址 while(TI!=1); TI=0; } while(RI!=1); //一直等待从机响应 //while循环里可加入出错处理temp_addr=SBUF; RI=0; } while(temp_addr!=addr); //一直等到从机回应的地址相同 //while循环里可加入出错处理 TB8=0; //发送数据第9位为0 // SM2=0; // 接收到第九位为1时才置位RI //每次一个数据 SBUF=cmd; while(TI!=1); TI=0; TB8=1; // SM2=1; RI=0; TI=0; //不处理期间发生的中断 EA=1; signal=1; //释放总线 }

相关文档
最新文档