通信协义.docx
- 文档编号:8286355
- 上传时间:2023-01-30
- 格式:DOCX
- 页数:30
- 大小:99.34KB
通信协义.docx
《通信协义.docx》由会员分享,可在线阅读,更多相关《通信协义.docx(30页珍藏版)》请在冰豆网上搜索。
通信协义
PPTPV0.1通讯协议定义
1、前言及范围
本规范为P2P项目中所用到的通讯协议,简称为PPTP,现在的版本是草拟的1.0版。
本规范描述了在本项目中客户(Peer)和服务器(Server)以及客户与客户(PeertoPeer)之间的相关消息的类型和定义。
本规范解释权属于本作者,有不合实际情况之处将及时更改。
本规范包括两方面的内容:
(1)客户与登录服务器之间的接口协议;
(2)客户与客户进行点到点传输的接口协议;
本规范应有一定通用性,便于扩展和增加新的功能,如语音和视频传输等;
2、缩略语
英文缩写
英文全称
说明信息
P2P
PeertoPeer
点到点传输技术
PPTP
TheprotocolofPeertoPeer
实现P2P技术的自定义协议PPTP
P
Peer
端,既可为服务器又可为客户端
S
Server
登录服务器
3.网络结构
图1P2P协议逻辑网络结构
如图1所示,服务器为各Peer的登录实体,所有的注册、信任、认证信息均必须从服务器发出(客户端一般可以缓存在线客户的信息);各Peer的地址,所提供的资源清单均必须反馈到服务器;
客户与客户之间可进行点到点传输,传输内容包括:
文本信息、语音(暂未处理)、视频(暂未处理)、文件(包括小于1M的文件和大文件);
点到点传输的连接建立成功后,不需要服务器的参与。
4、PPTP功能概述
如前言所述,PPTP主要实现两方面的业务操作:
(1)客户与服务器之间(ClientServer):
1
1
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)PeerA添加好友PeerB
23)添加好友回复z
24)PeeA删除好友PeerB
25)删除好友回复
(2)客户与客户之间(PeerPeer):
PEERB
PEERA
1)PeerA向PeerB发出连接请求(并在程序运行期间保持该连接,并测试连接是否Alive);
2)PeerB向PeerA回发连接响应,即建立有效连接
(1)和
(2)可用于测试连接是否Alive;
3)PeerA向PeerB发出终止连接请求(一般是由于终止一方下线、退出等原因);
4)PeerB向PeerA回发终止连接的响应;
5)PeerA向PeerB提交搜索对方所有文件的请求(UDP);
6)PeerB向PeerA回发所有共享的文件列表(UDP);
7)PeerA向peerB提交发送文本消息的请求(UDP/TCP);无回应
8)PeerA向PeerB提交下载特定文件的请求(TCP);
9)PeerB向PeerA下发文件内容(UDP/TCP)暂未处理断点续传;
10)PeerB向PeerA发一个文件内容包(文件负载不大于1K)
11)PeerA向PeerB发送一个接收OK的空包。
采用应答式处理,PeerB只有接收到OK标志才继续Send。
保证文件的完整性
12)传输结束,发送FileSendEnd包停止文件传输
13)收到传输回发的FliesendendOk信号
14)接收到Upload后给予的回复信息
5.收到文件结束标志协议栈
CMP接收到Upload后给予的回复信息P协议以TCP/IP/UDP作为底层通信承载,具体结构如下图4所示:
图4PPTP协议栈
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所示:
建立TCP连接
对PPTP消息2的响应
对PPTP消息1的响应
PPTP消息2
服务器端
客户端
PPTP消息1
滑动窗口不大于WW
......
链路检测包
链路检测包响应
......
拆除TCP连接
图5长连接一次操作流程
6.2短连接
通信双方以客户-服务器方式建立TCP连接,应答与请求在同一个连接中完成。
系统采用客户/服务器模式,操作以客户端驱动方式发起连接请求,完成一次操作后关闭此连接。
客户与服务器之间、客户之间的消息发送后等待T秒后未收到响应,应立即重发,再连续发送N-1次后仍未得到响应则停发。
现阶段建议取值为:
T=60秒,N=3。
短连接的操作流程举例如下图所示:
......
服务器/客户端
客户端/服务器端
建立TCP连接
PPTP消息2
对PPTP消息2的响应
拆除TCP连接
图6短连接的操作流程
6.3本协议中涉及的端口号
端口号
应用
8580
登录服务器的长连接端口号(客户服务器)
8581
登录服务器的短连接端口号(客户服务器)
8480
客户端的长连接端口号(客户客户)
8481
客户端的短连接端口号(客户客户)
8680
客户端之间进行UDP传输的端口号(客户客户)
6.4交互过程中的应答方式
在客户与服务器、客户与客户之间的交互过程中均采用同步方式,即阻塞方式的套接字通讯。
这是因为易于编程实现多线程通信、便于提高安全性,便于移植(Linux、UNIX中的TCP通讯均为Blocking方式),即任一个网元在发出请求时,只有收到响应消息时才会返回,而任一个网元收到请求消息后应立即回送响应消息。
举例如图7所示:
PeerA
PeerC
SERVER
PeerB
PPTP请求消息
PPTP响应消息
d
图7通信方式示意图
7.消息定义
7.1基本数据类型
UnsignedInteger
无符号整数(简注为Unsigned)
Integer
整数,可为正整数、负整数或零
OctetString
定长字符串,位数不足时,如果左补0则补ASCII表示的零,如果右补0则补二进制的零
7.2消息结构
项目
说明
MessageHeader
消息头(所有消息公共包头)
MessageBody
消息体
7.3消息头格式(MessageHeader)
字段名
字节数
类型
描述
Version
4
Unsigned
协议的版本号.0
P_Type
4
Integer
0:
PPTP协议(Client-Server)或1:
PTP协议(Client-Client)
Total_Length
4
Unsigned
消息总长度(含消息头及消息体)
Command_Id
4
Unsigned
命令或响应类型(每个帧的代码各不相同,标识了该帧的功能)
Sequence_Id
4
Unsigned
消息流水号,顺序累加,步长为1,循环使用(一对请求和应答消息的流水号必须相同z)
7.4客户与服务器之间(ClientServer)间的消息定义
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_FriendAddPeerA添加好友PeerB
23)PPTP_FriendADD_REP添加好友回复
24)PPTP_FriendDelPeeA删除好友PeerB
25)PPTP_FriendDel_REP删除好友回复
消息体格式定义:
1)PPTP_Connect:
Peer向Server发出连接请求(并在程序运行期间保持该连接,并测试连接是否Alive);
字段名
字节数
属性
描述
消息体内容为空,当服务器收到此消息,回发PPTP_Connect_REP数据包响应;
2)PPTP_Connect_REP:
Server向Peer回发连接响应,即建立有效连接
(1)和
(2)可用于测试连接是否Alive;
字段名
字节数
属性
描述
IsSuccess
4
Integer
成功标志(0:
成功,其它:
失败)
消息体内容为空,当客户端收到此消息,表示已成功建立连接;
3)PPTP_Terminate:
Peer向Server发出终止连接请求;
字段名
字节数
属性
描述
消息体内容为空,当服务器收到此消息,回发PPTP_Terminate_REP数据包响应,同时断开与客户端连接,记载LOG;
4)PPTP_Terminate_REP:
Server向Peer回发终止连接的响应;
字段名
字节数
属性
描述
IsSuccess
4
Integer
成功标志(0:
成功,其它:
失败)
消息体内容为空,当客户端收到此消息,表示已成功断开连接,当前状态为离线状态;
5)PPTP_Register:
Peer向Server提交注册请求;
字段名
字节数
属性
描述
Info
<1KB
OctetString
客户的详细信息(一定格式存储)
Info为客户的详细信息,一般包括呢称、密码、邮件等其它信息(现在设计比较简单,根据客户需要可增加栏目,由函数处理,各项信息以特殊符号隔开,空信息以“-”代替)
6)PPTP_Register_REP:
Server向Peer回发注册响应,成功则Server记载必要信息并返回唯一的用户ID号
字段名
字节数
属性
描述
UserCode
8
OctetString
成功返回客户的号码
(去除两端的零)失败则返回0
向客户返回唯一的用户ID号,用户可根据此ID和用户的密码进行登录;
7)PPTP_QueryOnline:
Peer向Server查询在线好友列表信息;
字段名
字节数
属性
描述
UserCode
8
OctetString
查询者的用户ID
查询在线好友信息,向服务器递交本人的ID号;
8)PPTP_QueryOnline_REP:
Server向Peer返回在线好友列表;
字段名
字节数
属性
描述
UserCode
8
OctetString
用户的识别ID
FriendCount
4
Integer
在线好友个数
FriendList
<1KB
OctetString
好友列表(以一定格式存储)
服务器返回的在线好友列表,好友列表存储好友的ID号,以特殊符号分隔开;
9)PPTP_Update:
Peer向Server提交更改注册信息请求;
字段名
字节数
属性
描述
UserCode
8
Octetstring
用户的识别ID
Info
<1KB
OctetString
客户的详细信息(一定格式存储)
Info为客户的详细信息,一般包括呢称、密码、邮件等其它信息(现在设计比较简单,根据客户需要可增加栏目,由函数处理,各项信息以特殊符号隔开,空信息以“-”代替)
10)PPTP_Update_REP:
Server向Peer回发更改注册信息响应,成功则更新服务器上的用户信息并返回;
字段名
字节数
属性
描述
IsSuccess
4
Integer
成功标志(0:
成功,其它:
失败)
11)PPTP_Login:
Peer向Server提交登录请求;
字段名
字节数
属性
描述
UserCode
8
OctetString
用户的识别ID
UserPass
20
OctetString
10位密码(PGP加密处理)
MinSpeed
4
Integer
最小速度(在客户端设置)
最小速度定义:
0:
拨号上网(<56.6Kbps)
1:
CableModem或ISDN(64-128Kbps)
2:
以太网(10Mbps)
3:
以太网(100Mbps)
4:
广播
5以上:
无定义
12)PPTP_Login_REP:
Server向Peer回发登录成功信息;
字段名
字节数
属性
描述
IsSuccess
4
Integer
成功标志(0:
成功,其它:
失败)
13)PPTP_QueryDetail:
Peer向Server提交查询用户详细信息请求;
字段名
字节数
属性
描述
UserCode
8
OctetString
客户的用户ID
14)PPTP_QueryDetail_REP:
Server向Peer回发该用户详细信息并返回其上线IP地址及共享列表;
字段名
字节数
属性
描述
UserCode
8
Octetstring
所查询的客户ID
Info
<1KB
OctetString
客户的详细信息(一定格式存储)
LastIP
4
Unsigned
客户最后的IP地址
LastPort
4
Integer
客户最后的Port端口号
ShareCount
4
Integer
共享列表项目总数
ShareList
<3Kb
OctetString
共享列表(以一定格式存储)取前面的几条记录详细记录需向对方查询用PTP_SEARCH
(深色部分已取消2003-9-22pengwei)
15)PPTP_QueryOnline2:
Peer向Server查询特定用户是否在线信息;
字段名
字节数
属性
描述
UserCode
8
OctetString
特定客户的用户ID
16)PPTP_QueryOnline2_REP:
Server向Peer返回该用户是否在线;
字段名
字节数
属性
描述
UserCode
8
OctetString
特定客户的用户ID
IsOnline
4
Integer
上线标志(0:
上线,其它:
离线)
当用户处于离线状态时,无法进行点到点传输,因为没有登录进服务器;
17)PPTP_Share:
Peer向Server提交共享文件列表(每次改变都要提交一次);
字段名
字节数
属性
描述
UserCode
8
OctetString
特定客户的用户ID
ShareCount
4
Integer
共享列表项目总数
ShareList
<3Kb
OctetString
共享列表(以一定格式存储)
CurrRecord
4
Integer
当前第几个列表(20030916加)
18)PPTP_Share_REP:
Server向Peer回发接收共享文件响应信息,如共享文件的基本信息等;
字段名
字节数
属性
描述
UserCode
8
OctetString
特定客户的用户ID
IsSuccess
4
Integer
成功标志(0:
成功,其它:
失败)
ShareCount
4
Integer
共享列表项目总数
19)PPTP_Search:
Peer向Server搜索特定文件位置;
字段名
字节数
属性
描述
UserCode
8
OctetString
特定客户的用户ID(用于计费)
SourceIP
4
Unsigned
客户端的IP
SourcePort
4
Unsigned
客户端的端口号
MinSpeed
4
Ineger
最小速度定义
QueryLength
2
Inetger
Sql语句的长度
SQLstr
<=256
Octetstring
搜索文件的SQL语句
DecodeserchResultfile(payload:
string)
20)PPTP_Search_REP:
Server向Peer返回搜索结果;
字段名
字节数
属性
描述
ServerUser
8
OctetString
文件所在的在线客户ID
ServerIP
8
OctetString
客户所在的IP地址
ServerPORT
4
Integer
端口号
ServerSpeed
4
Integer
最小速度(要求匹配才能传送)
PayloadLength
4
Unsigned
文件列表的长度
Payload
<1Kb
Path//size//path//size文件列表
ResultCount
4
Integer
找到的结果总数
CurrentResult
4
Integer
当前的结果数目
每次传递一个结果,标出对方IP及PORT和用户ID,以及传输速率、地址等;获取本信息可以进行点到点的文件传递
21)PPTP_ReceiveOK:
Peer对Server提交接收到搜索结果的响应
字段名
字节数
属性
描述
IsSuccess
4
Integer
是否成功,如果不成功可以再传一次
IsStop
4
Integer
是否停止,如果用户中断,则传输不再继续
22)PPTP_FriendAddPeerA添加好友PeerB
字段名
字节数
属性
描述
Uid1r
8
OctetString
加好友者PeerA
Uid2
8
OctetString
被加好友者peerB
23)PPTP_FriendADD_REP
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 通信
![提示](https://static.bdocx.com/images/bang_tan.gif)