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所示: