简单高效可靠的自定义通信协议(传输协议)

来源:互联网 发布:java下载64位 编辑:程序博客网 时间:2024/05/22 12:47

取“高效简单可靠”这几个形容词还是很虚的,毕竟这是yy出来的东西。

设计的目的在于:在收发双方能够正常运行的情况下,尽可能高的利用网络传输能力(不使用一应一答),以及提高传输效率(无须对每个报文帧进行应答)。

对比Xmodem、Kermit,以及借鉴TCP的协议栈设计思想,设计一套通信协议:
1,定义发送方Sender、接收方Receiver;
2,Sender无需应答即不断地发送数据帧,直到Receiver报告的接收缓冲为空;
3,Receiver逐个处理接收到的数据帧,当接收缓冲区空闲大小大于总大小的一半,或超过1秒(这个时间可设定)未发送ACK时,则发送正响应ACK,正响应ACK中带有下一个期望接收的字节序列号(每个字节对应一个序列号)、可用接收缓冲大小等接收方信息。
4,当Receiver接收出现异常时,发送负响应ACK,带有下一个期望接收的字节序列号、可用缓冲大小、错误码。
5,Sender接收到负响应ACK后,从“下一个期望接收的字节序列号”开始重发数据。

0 0