当前位置:文档之家› 通讯协议定义

通讯协议定义

PPTP V0.1通讯协议定义开始:2003-7-19初稿:2003-7-27修改:2003-9-162003-9-20、24、251、前言及范围本规范为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 B23)添加好友回复z24)Pee A 删除好友Peer B25)删除好友回复(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 B23)PPTP_FriendADD_REP 添加好友回复24)PPTP_FriendDel Pee A 删除好友Peer B25)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 B25)PPTP_FriendDel_REP 删除好友回复7.5客户与客户之间(Peer Peer)间的消息定义网关之间互为客户/服务器,任一方都可在需要时建立连接进行数据传输。

相关主题