Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sockets 通过多个套接字传输文件是否比仅使用一个套接字更快?_Sockets_Tcp_Network Programming_Winsock - Fatal编程技术网

Sockets 通过多个套接字传输文件是否比仅使用一个套接字更快?

Sockets 通过多个套接字传输文件是否比仅使用一个套接字更快?,sockets,tcp,network-programming,winsock,Sockets,Tcp,Network Programming,Winsock,在这个旧版本(从2002年开始)中,它说如果你将一个文件分成多个块,然后使用不同的套接字传输每个块,那么它将比使用一个套接字作为一个整体传输要快得多。我还记得(很多年前)读到一些下载管理器也使用这种技术。这有多准确?考虑到带有大窗口或小RTT的单个TCP连接可能会使任何网络链路饱和,我看不出多个TCP会话有什么好处。每个新部件都将以慢速启动开始,因此传输速率低于已建立的连接 TCP已经有了用于高吞吐量、高延迟连接(“”)和处理数据包丢失的代码。尝试通过并行连接来改善这一点通常会产生负面影响,因为

在这个旧版本(从2002年开始)中,它说如果你将一个文件分成多个块,然后使用不同的套接字传输每个块,那么它将比使用一个套接字作为一个整体传输要快得多。我还记得(很多年前)读到一些下载管理器也使用这种技术。这有多准确?

考虑到带有大窗口或小RTT的单个TCP连接可能会使任何网络链路饱和,我看不出多个TCP会话有什么好处。每个新部件都将以慢速启动开始,因此传输速率低于已建立的连接

TCP已经有了用于高吞吐量、高延迟连接(“”)和处理数据包丢失的代码。尝试通过并行连接来改善这一点通常会产生负面影响,因为会出现更多的故障情况和更多的数据包丢失(由于单个连接上的TCP可以管理的拥塞)


多个TCP会话只有在您同时从不同的对等方进行抓取,并且网络瓶颈在您的本地网络之外(如bittorrent)或者服务器对每个连接进行带宽限制(此时您正在优化服务器,而不是TCP或网络)时才是有益的.

但是为什么该项目的作者在使用多个插座时会提到速度要快得多?@Steve:也许他只是不知道他在说什么?@Harry Johnston我的意思是他注意到速度要快得多。那篇文章中没有足够的上下文来猜测为什么会发生这种情况,甚至可以肯定他的方法是正确的。(例如,他可能在网络非常繁忙的时候尝试了一个套接字下载,然后将其与不繁忙的时候的多个套接字下载进行了比较。)一种可能是服务器繁忙,因此通过打开多个连接,他有效地获得了“多片带宽蛋糕”。也许他或服务器的TCP实现很差;那是2002年。老好人…:)