是否可以通过监视正常的http请求来衡量Web浏览器的上载和/或下载速度?理想情况下,Web应用程序无需进行任何修改,也无需使用JavaScript/Java/Flash之类的客户端脚本,便能够告知客户端速度。因此,即使客户端使用诸如Curl之类的库访问该服务,它仍然可以工作。如果可能的话,怎么办?如果不可能,为什么呢?这种方法有多精确?
(如果可以假设使用PHP/Apache,但这确实是一个与平台无关的问题。此外,能够衡量上传速度对我来说更重要。)
最佳答案
概述
您在询问沿路径的通常所谓的“被动”可用带宽(ABW)测量(与测量单个链路的ABW相对)。有许多不同的技术可以使用被动观察或低带宽“主动” ABW探测技术来估计带宽。但是,生产服务中最常用的算法是主动ABW技术。他们观察来自两个不同端点的数据包流。
我最熟悉 yaz
,它从一侧发送数据包,并在另一侧测量延迟的变化。单侧无源路径ABW测量技术被认为是实验性的;没有可靠的算法AFAIK实现。
讨论
您要求执行的任务的问题在于,所有非介入式ABW测量技术都依赖于时序。可悲的是,在使用http时,计时是一件非常棘手的事情。
最后,主动ABW技术依赖于结构化的数据包流(wrt数据包大小和时序),这与标准http传输中看到的不同。
概括
总之,除非您仅为ABW测量设置专用的客户端/服务器/协议(protocol),否则我认为您会对结果感到沮丧。您可以将ABW套接字连接保持在TCP/80上,但是我见过的工具不会使用http3。
编者注:我的原始答案表明,带有http的ABW是可行的。经过进一步的思考,我改变了主意。
结束语:
yaz
)仅适用于udp。