数据传输协议设计

时间:2012-12-28 07:51:28

标签: c++ qt sockets tcp protocols

我正在编写一个使用TCP在网络上传输千兆字节数据的协议,试图自己教一些关于协议编程的知识。我不确定如何设计这种传输协议,以便以最快和最有效的方式传输数据。

我在Windows上使用Qt。

目前,我的应用程序协议设计(传输数据的部分)如下:

  1. 首先拍摄登录详情。
  2. 写入4千字节的第一个数据包(进入套接字),然后等待服务器确认它已收到数据包。
  3. 当服务器确认收到数据包时(通过写入“1”),写下接下来的4千字节。
  4. 传输完所有数据后,将传输数据的md5sum发送到服务器。
  5. 如果服务器再次使用int 8确认,则数据传输完成。
  6. 目前,当转移超过127.0.0.1时,我无法在同一台计算机上获得高于166KB /秒的速度。我一直在尝试阅读其他协议设计,但几乎没有关于数据传输协议的文档,可以为他们的应用程序编写。

    协议设计是我发布错误还是遇到了一些严重问题? 协议是否应等待服务器确认每个数据包,还是应该连续写入?

1 个答案:

答案 0 :(得分:0)

首先,我建议您花一些时间阅读TCPSliding Window Protocol

我认为你的实现速度如此之慢有两个原因:首先,你等待每个数据包的确认 - 非常慢,你应该使用滑动窗口。 其次,您使用MD5校验和。这没有什么不对,但TCP已经实现了一些基本的校验和,你使用的MD5实现可能会非常慢。

最后,找出原因非常慢的典型方法是使用分析。