HTTP GET下载时间因客户端而异

HTTP GET下载时间因客户端而异,http,post,download,get,transfer,Http,Post,Download,Get,Transfer,我们已经使用TI微处理器在嵌入式设备上用C实现了HTTP文件传输。 我们可以成功地在系统中发布和获取文件。 当使用各种客户机使用2Meg文件测试GET时,我发现下载速度有很大差异。 在苹果Mac、iOs设备或我的Xamarin UWP应用程序上,文件将在大约3秒钟内下载。 在个人电脑上使用任何浏览器,或在个人电脑或安卓设备上使用邮递员,都需要一分钟以上的时间。 我在Wireshark上嗅探到了这种情况,我发现不同之处在于,对于每个数据包(本例中为1024字节),快速系统客户端发送ACK大约需要2

我们已经使用TI微处理器在嵌入式设备上用C实现了HTTP文件传输。 我们可以成功地在系统中发布和获取文件。 当使用各种客户机使用2Meg文件测试GET时,我发现下载速度有很大差异。 在苹果Mac、iOs设备或我的Xamarin UWP应用程序上,文件将在大约3秒钟内下载。 在个人电脑上使用任何浏览器,或在个人电脑或安卓设备上使用邮递员,都需要一分钟以上的时间。 我在Wireshark上嗅探到了这种情况,我发现不同之处在于,对于每个数据包(本例中为1024字节),快速系统客户端发送ACK大约需要20秒,而在慢速系统上,ACK大约需要40毫秒。因此,2000个数据包X 40mS等于80秒。 有人知道是什么导致了这一切吗? 我想这可能与我们HTTP主机上的某些内容有关,因为所有这些客户机都需要大约相同的时间从传统主机下载文件


谢谢

好的,看起来它与使用Nagle算法的客户端相关。如果我在客户端关闭它,那么ACK延迟就会被消除,下载速度也会非常快。如果我理解正确的话,苹果使用了一种不同的实现方式,这将解释苹果设备的快速性能。我仍然在努力关闭Android设备上的Nagle,因为它看起来TCPSocet.NoDelay=true;没有为Xamarin Android build做工作