递归火山软件开发平台
标题: 发现个有意思的windows API [打印本页]
作者: server    时间: 2025-5-5 20:38
标题: 发现个有意思的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,
 -   [out] PUCHAR          Rw,
 -         ULONG           RwVersion,
 -         ULONG           RwSize,
 -   [out] PUCHAR          Ros,
 -         ULONG           RosVersion,
 -         ULONG           RosSize,
 -   [out] 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。
 
 复制代码
作者: server    时间: 2025-5-5 20:48
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 位可能包含未初始化的数据。
作者: hrq520    时间: 2025-5-6 17:07
不明觉厉 顶一下:噜阿噜:噜阿噜:噜阿噜
作者: cdmmye    时间: 2025-5-6 19:06
没什么用,不过有心了也许有人需要
| 欢迎光临 递归火山软件开发平台 (https://bbs.voldp.com/) | 
Powered by Discuz! X3.4 |