我正在编写一个使用TCP在网络上传输千兆字节数据的协议,试图自己教一些关于协议编程的知识。我不确定如何设计这种传输协议,以便以最快和最有效的方式传输数据。
我在Windows上使用Qt。
目前,我的应用程序协议设计(传输数据的部分)如下:
目前,当转移超过127.0.0.1时,我无法在同一台计算机上获得高于166KB /秒的速度。我一直在尝试阅读其他协议设计,但几乎没有关于数据传输协议的文档,可以为他们的应用程序编写。
协议设计是我发布错误还是遇到了一些严重问题? 协议是否应等待服务器确认每个数据包,还是应该连续写入?
答案 0 :(得分:0)
首先,我建议您花一些时间阅读TCP和Sliding Window Protocol。
我认为你的实现速度如此之慢有两个原因:首先,你等待每个数据包的确认 - 非常慢,你应该使用滑动窗口。 其次,您使用MD5校验和。这没有什么不对,但TCP已经实现了一些基本的校验和,你使用的MD5实现可能会非常慢。
最后,找出原因非常慢的典型方法是使用分析。