RTTlg

这是一个用来同时检测当前网络应用层/传输层/网络层双向时延(Round Trip Time, RTT)的接口,可用于评估网络中是否存在网络代理、CDN前置、传输层优化等特性。

使用场景

  1. 传输层代理检测:如应用层RTT明显高于传输层RTT,说明传输层可能存在代理。常见的传输层代理如类SOCKS代理和TCP透明代理。
  2. VPN检测:如网络层RTT明显小于传输层和应用层RTT,说明网络层可能做了NAT,且网关与终端设备存在明显距离、用户有可能使用VPN。
  3. 抖动排查:如应用层、传输层RTT明显抖动,但是网络层RTT非常稳定,通常说明是终端设备到网关的连接不佳。

注1:上述2和3假设了常见的IPv4 NAT场景,即终端设备不具有公网IP,通过网关NAT上网。

注2:现实中不同网络差异性大,通常需要综合考虑其他因素方可做出具体判断,本工具仅用于专业人士参考。

注3:还可以有很多其他用法。

技术原理

针对用户而言,只需要一个WebSocket连接就可以测量三个RTT。

  1. 应用层RTT:通过WebSocket模拟类似ICMP Request/Reply协议,网页里通过执行JS脚本模拟ping程序,所得到的RTT即应用层RTT。
  2. 传输层RTT:上述WebSocket所使用的下层传输层连接(通常是TCP)的RTT,通过getsocketopt函数得到。
  3. 网络层RTT:服务端ping客户端的公网IP所得到的RTT。

开始检测

应用层RTT

传输层RTT

网络层RTT