目前很多多线程ftp下载工具,如FlashGet,NetAnt等,都是通过将一个文件分割为多个同时下载的方式来提高下载速度。
对早期的TCP/IP实现来说,其窗口大小最大只有64k,所以对于高速同时两端之间Round Trip Time大的文件传输来说特别划不来,因为发出64k的文件须时很短,大部分时间用来等ACK了,带宽没有充分利用。在此时用多线程文件传输当然是必要的。但后来有了RFC1323,一次发送的数据可达2的32次方字节,此时已经完全没必要用多线程传输了,因为单线程传输已经足够将带宽充满了。
相信目前所有的TCP/IP实现都支持RFC1323,那为何现在的数据传输还是多线程比单线程快呢?是因为ftp服务器限制了每个连接的速度,所以多线程快吗?但并不是所有的ftp服务器都限制速度啊。更何况很多ftp服务器限了每个连接传输速度后又不关闭多线程连接,甚至还鼓励用户多线程连接,这不等于没限速吗?迷惑ing。
问题1:既然RFC1323允许一次发送的数据可达2的32次方字节,那目前的多线程到底是抢了谁的带宽?如果已不是带宽问题,那么多线程到底是突破了什么瓶颈?
问题2:如果我自己写一个网络文件传输的软件,有没有做多线程的必要?我决不会去限制单个连接的传输速度。
对早期的TCP/IP实现来说,其窗口大小最大只有64k,所以对于高速同时两端之间Round Trip Time大的文件传输来说特别划不来,因为发出64k的文件须时很短,大部分时间用来等ACK了,带宽没有充分利用。在此时用多线程文件传输当然是必要的。但后来有了RFC1323,一次发送的数据可达2的32次方字节,此时已经完全没必要用多线程传输了,因为单线程传输已经足够将带宽充满了。
相信目前所有的TCP/IP实现都支持RFC1323,那为何现在的数据传输还是多线程比单线程快呢?是因为ftp服务器限制了每个连接的速度,所以多线程快吗?但并不是所有的ftp服务器都限制速度啊。更何况很多ftp服务器限了每个连接传输速度后又不关闭多线程连接,甚至还鼓励用户多线程连接,这不等于没限速吗?迷惑ing。
问题1:既然RFC1323允许一次发送的数据可达2的32次方字节,那目前的多线程到底是抢了谁的带宽?如果已不是带宽问题,那么多线程到底是突破了什么瓶颈?
问题2:如果我自己写一个网络文件传输的软件,有没有做多线程的必要?我决不会去限制单个连接的传输速度。
解决方案 »
- 大家帮看看为什么DeviceIoControl访问OID_802_11_BSSID_LIST老是失败
- 无法定位程序输入点 _except_handler4_common 于动态链接库 msvcrt.dll
- 使用API(sdk),如何添加二进制文件数据,删除二进制文件某段数据。
- MFC中如何比较两个已有的.wav文件是否相同,急,谢谢!~
- CWzdBitmap哪里有下载的的啊,还有CButtonST?
- 编电梯程序 需要哪些知识? 谢谢各位
- 用DAO编的数据库在别的机子上执行时,说“无法对DAO\jet db数据库初始化” 请问该怎么解决啊
- 关闭程序时出错
- 關於郵件的問題!!!!!!
- 模态对话框上控件指针
- 怎么在窗口中显示多行文本?
- Win32 SDK编程时可以用MFC吗?
TCP/IP协议是基于无连接的IP协议的,为了实现面向连接的协议TCP,就必须传送许多状态和控制信息,对所发送和接收的数据进行确认,这样每开一个连接就会有一定程度网络资源浪费,所以可能反而略有降低