递归火山软件开发平台

标题: 发现个有意思的windows API [打印本页]

作者: server    时间: 7 天前
标题: 发现个有意思的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

  1. IPHLPAPI_DLL_LINKAGE ULONG GetPerTcpConnectionEStats(
  2.         PMIB_TCPROW     Row,
  3.         TCP_ESTATS_TYPE EstatsType,
  4.   [out] PUCHAR          Rw,
  5.         ULONG           RwVersion,
  6.         ULONG           RwSize,
  7.   [out] PUCHAR          Ros,
  8.         ULONG           RosVersion,
  9.         ULONG           RosSize,
  10.   [out] PUCHAR          Rod,
  11.         ULONG           RodVersion,
  12.         ULONG           RodSize
  13. );
复制代码
  1. TcpConnectionEstatsFineRtt
  2. 此值请求 TCP 连接的精细往返时间 (RTT) 估计统计信息。
  3. 此枚举值仅提供只读动态信息和读/写信息。

  4. 如果 Rw 参数不为 NULL 且函数成功,则 Rw 参数指向的缓冲区应包含 TCP_ESTATS_FINE_RTT_RW_v0 结构。

  5. 如果此 TCP 连接开启了细粒度的 RTT 估计统计,则 Rod 参数不为 NULL,且函数成功,则 Rod 参数指向的缓冲区应包含 TCP_ESTATS_FINE_RTT_ROD_v0 结构。
复制代码
  1. typedef struct _TCP_ESTATS_FINE_RTT_ROD_v0 {
  2.   ULONG RttVar;
  3.   ULONG MaxRtt;
  4.   ULONG MinRtt;
  5.   ULONG SumRtt;
  6. } TCP_ESTATS_FINE_RTT_ROD_v0, *PTCP_ESTATS_FINE_RTT_ROD_v0;

  7. RttVar

  8. 类型: ULONG

  9. 启用 TCP 扩展统计信息功能时,接收窗口自动调整中使用的往返时间变化(以微秒为单位)。

  10. MaxRtt

  11. 类型: ULONG

  12. 最大采样往返时间,以微秒为单位。

  13. MinRtt

  14. 类型: ULONG

  15. 最小采样往返时间,以微秒为单位。

  16. SumRtt

  17. 类型: ULONG

  18. 根据所有采样的往返时间计算得出的平滑值往返时间(以微秒为单位)。平滑是使用 RttVar 成员的加权加法函数。
复制代码
  1. typedef struct _TCP_ESTATS_FINE_RTT_RW_v0 {
  2.   BOOLEAN EnableCollection;
  3. } TCP_ESTATS_FINE_RTT_RW_v0, *PTCP_ESTATS_FINE_RTT_RW_v0;

  4. EnableCollection

  5. 一个值,该值指示是否应收集 TCP 连接的扩展统计信息以进行精细的 RTT 估计统计信息。

  6. 如果此成员设置为 TRUE,则启用 TCP 连接的扩展统计信息。如果此成员设置为 FALSE,则禁用有关 TCP 连接的扩展统计信息。

  7. 未设置时,此成员的默认状态为 disabled。
复制代码







作者: server    时间: 7 天前
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    时间: 6 天前
不明觉厉 顶一下:噜阿噜:噜阿噜:噜阿噜
作者: cdmmye    时间: 6 天前
没什么用,不过有心了也许有人需要




欢迎光临 递归火山软件开发平台 (https://bbs.voldp.com/) Powered by Discuz! X3.4