RFC908 - Reliable Data Protocol
http://www.ietf.org/rfc/rfc0908.txt?number=908
RFC1151 - Version 2 of the Reliable Data Protocol (RDP)
http://www.ietf.org/rfc/rfc1151.txt?number=1151
可靠数据协议 RDP 是一种面向连接的传输协议,其主要设计来为主机监控应用程序如下载 / 上传以及远程调试进行有效的大批数据传输。RDP 尝试只提供那些必需的服务,达到操作有效、尺度小的效果。其主要功能如下:
- RDP 为每个传输层连接端口提供一个全双工通信信道;
- RDP 尝试可靠发送所有用户信息,一旦发送失败,将向用户报告错误。RDP 扩展 IP 数据报服务使之能够可靠发送;
- RDP 尝试侦测并删除所有损坏的和重复的数据段,它在数据段头使用校验码及序列号实现这一过程;
- RDP 随意地提供数据段序列发送,必须在连接建立时就指定数据段的序列发送;
- RDP 会响应确认序列之外的数据段,这会释放发送端的资源。
与 TCP 相比,RDP 所支持的功能更为简单。RDP 的流控制,缓冲以及连接管理模式都是相当简单的。RDP 的目标就是能够简单有效地执行并能适合一系列的应用程序。
RDP 函数集也可能是子集从而进一步减小特殊执行的大小。例如,一台向其它主机请求下载的目标处理器可能执行一个仅支持默认的开放式函数和单连接的 RDP 模块。这个模块也可能选择不执行非顺序响应确认。
协议结构 |
RDP 第二版协议头结构如下:
1 | 2 | 3 | 4 | 5 | 6 | 8 | 16bit |
SYN | ACK | EAK | RST | NUL | 0 | Ver No | Header Length |
SourcePort | |||||||
DestinationPort | |||||||
Data Length | |||||||
Sequence Number | |||||||
Acknowledgement Number | |||||||
Checksum | |||||||
Variable header area … |
Control flags ― 8个控制位划分如下:
- SYN:SYN 位表示当前为同步段。
- ACK:ACK 位表示协议头有效的承认序号。
- EACK:EACK 位表示当前为扩展承认字段。.
- RST:RST 位表示该数据包为复位字段。
- NUL:NUL 位表示该数据包为空字段。
- 0:表示该字段的值必须设置为0。
- Ver no:版本号,当前版本号为2。
Header length ― RDP 协议头长度。
Source Ports ― 源地址,识别通信发生的过程。网络访问协议头中,源地址和目标地址的端口标识符的结合完全限定了连接并形成连接标识符。如此 RDP 可用于区分两台主机间的多连接。
Destination Ports ― 目标地址,识别通信中的目标过程。
Data Length ― 该字段中的数据长度(八位),该数据长度不包括 RDP 协议头。
Sequence number ― 该字段的序列号。
Acknowledgement number ― 如果 ACK 位设置在协议头部,这就是字段序列号,即该字段发送端最后正确按序列接收的顺序。一旦连接成功,就应该发送该字段。
Checksum ― 检验和确保完整性。
Variable Header Area ― 用于传输 SYN 和 EACK 字段的参数。