发现个有意思的windows API
本帖最后由 server 于 2025-5-5 20:46 编辑hp-socket 作者 来看看。
可以取到 RTT 值。
可以通过RTT 推算出 大概的 RTO 值。
GetPerTcpConnectionEStats 函数 (iphlpapi.h) - Win32 apps | Microsoft Learn
TCP_ESTATS_FINE_RTT_RW_v0 (tcpestats.h) - Win32 apps | Microsoft Learn
MIB_TCPROW_LH (tcpmib.h) - Win32 apps | Microsoft Learn
IPHLPAPI_DLL_LINKAGE ULONG GetPerTcpConnectionEStats(
PMIB_TCPROW Row,
TCP_ESTATS_TYPE EstatsType,
PUCHAR Rw,
ULONG RwVersion,
ULONG RwSize,
PUCHAR Ros,
ULONG RosVersion,
ULONG RosSize,
PUCHAR Rod,
ULONG RodVersion,
ULONG RodSize
);TcpConnectionEstatsFineRtt
此值请求 TCP 连接的精细往返时间 (RTT) 估计统计信息。
此枚举值仅提供只读动态信息和读/写信息。
如果 Rw 参数不为 NULL 且函数成功,则 Rw 参数指向的缓冲区应包含 TCP_ESTATS_FINE_RTT_RW_v0 结构。
如果此 TCP 连接开启了细粒度的 RTT 估计统计,则 Rod 参数不为 NULL,且函数成功,则 Rod 参数指向的缓冲区应包含 TCP_ESTATS_FINE_RTT_ROD_v0 结构。typedef struct _TCP_ESTATS_FINE_RTT_ROD_v0 {
ULONG RttVar;
ULONG MaxRtt;
ULONG MinRtt;
ULONG SumRtt;
} TCP_ESTATS_FINE_RTT_ROD_v0, *PTCP_ESTATS_FINE_RTT_ROD_v0;
RttVar
类型: ULONG
启用 TCP 扩展统计信息功能时,接收窗口自动调整中使用的往返时间变化(以微秒为单位)。
MaxRtt
类型: ULONG
最大采样往返时间,以微秒为单位。
MinRtt
类型: ULONG
最小采样往返时间,以微秒为单位。
SumRtt
类型: ULONG
根据所有采样的往返时间计算得出的平滑值往返时间(以微秒为单位)。平滑是使用 RttVar 成员的加权加法函数。typedef struct _TCP_ESTATS_FINE_RTT_RW_v0 {
BOOLEAN EnableCollection;
} TCP_ESTATS_FINE_RTT_RW_v0, *PTCP_ESTATS_FINE_RTT_RW_v0;
EnableCollection
一个值,该值指示是否应收集 TCP 连接的扩展统计信息以进行精细的 RTT 估计统计信息。
如果此成员设置为 TRUE,则启用 TCP 连接的扩展统计信息。如果此成员设置为 FALSE,则禁用有关 TCP 连接的扩展统计信息。
未设置时,此成员的默认状态为 disabled。
dwLocalAddr类型:DWORD本地计算机上 TCP 连接的本地 IPv4 地址。值为零表示侦听器可以接受任何接口上的连接。dwLocalPort类型:DWORD本地计算机上 TCP 连接的网络字节顺序中的本地端口号。IP 端口号的最大大小为 16 位,因此只应使用较低的 16 位。高 16 位可能包含未初始化的数据。dwRemoteAddr类型:DWORD远程计算机上 TCP 连接的 IPv4 地址。当 dwState 成员MIB_TCP_STATE_LISTEN时,此值没有意义。dwRemotePort类型:DWORD远程计算机上 TCP 连接的远程端口号(按网络字节顺序排列)。当 dwState 成员MIB_TCP_STATE_LISTEN时,此成员没有意义。IP 端口号的最大大小为 16 位,因此只应使用较低的 16 位。高 16 位可能包含未初始化的数据。
不明觉厉 顶一下:噜阿噜:噜阿噜:噜阿噜 没什么用,不过有心了也许有人需要
页:
[1]