tcp_info结构说明
tcp_info是一个结构体,定义在<netinet/tcp.h>头文件中,用于获取TCP相关信息。它的定义如下:
struct tcp_info { __u8 tcpi_state; /* TCP状态 / __u8 tcpi_ca_state; / 拥塞控制状态 / __u8 tcpi_retransmits; / 重传次数 / __u8 tcpi_probes; / 探测次数 / __u8 tcpi_backoff; / 退避指数 / __u8 tcpi_options; / TCP选项 / __u8 tcpi_snd_wscale : 4, / 发送窗口缩放因子 / tcpi_rcv_wscale : 4; / 接收窗口缩放因子 */
__u32 tcpi_rto; /* 超时重传时间 */
__u32 tcpi_ato; /* 延迟确认时间 */
__u32 tcpi_snd_mss; /* 最大发送段大小 */
__u32 tcpi_rcv_mss; /* 最大接收段大小 */
__u32 tcpi_unacked; /* 未确认段数 */
__u32 tcpi_sacked; /* SACK段数 */
__u32 tcpi_lost; /* 丢失段数 */
__u32 tcpi_retrans; /* 重传段数 */
__u32 tcpi_fackets; /* FACK段数 */
/* Times. */
__u32 tcpi_last_data_sent; /* 最后一个数据包的发送时间 */
__u32 tcpi_last_ack_sent; /* 最后一个ACK包的发送时间 */
__u32 tcpi_last_data_recv; /* 最后一个数据包的接收时间 */
__u32 tcpi_last_ack_recv; /* 最后一个ACK包的接收时间 */
/* Metrics. */
__u32 tcpi_pmtu; /* Path MTU Discovery的路径MTU */
__u32 tcpi_rcv_ssthresh; /* 接收方拥塞窗口阈值 */
__u32 tcpi_rtt; /* 平滑往返时间 */
__u32 tcpi_rttvar; /* 往返时间变化 */
__u32 tcpi_snd_ssthresh; /* 发送方拥塞窗口阈值 */
__u32 tcpi_snd_cwnd; /* 发送方拥塞窗口 */
__u32 tcpi_advmss; /* 允许的最大段大小 */
__u32 tcpi_reordering; /* 段重排序个数 */
__u32 tcpi_rcv_rtt; /* 接收方平滑往返时间 */
__u32 tcpi_rcv_space; /* 当前接收缓冲区大小 */
__u32 tcpi_total_retrans; /* 总重传个数 */
__u64 tcpi_pacing_rate; /* pacing速率 */
__u64 tcpi_max_pacing_rate; /* 最大pacing速率 */
__u64 tcpi_bytes_acked; /* 已确认字节数 */
__u64 tcpi_bytes_received; /* 已接收字节数 */
__u32 tcpi_segs_out; /* 发送的段数 */
__u32 tcpi_segs_in; /* 接收的段数 */
};
其中,tcpi_state表示TCP的状态,tcpi_ca_state表示拥塞控制状态,tcpi_retransmits表示重传次数,tcpi_probes表示探测次数,tcpi_backoff表示退避指数,tcpi_options表示TCP选项,tcpi_snd_wscale表示发送窗口缩放因子,tcpi_rcv_wscale表示接收窗口缩放因子等等。
这些字段包含了TCP连接的状态信息、拥塞控制相关的信息、重传次数、延迟确认时间、最大发送/接收段大小、未确认段数、丢失段数、重传段数、平滑往返时间等等。
使用该结构体,可以通过调用getsockopt函数并传入TCP_INFO参数来获取TCP连接的详细信息
原文地址: https://www.cveoy.top/t/topic/isUy 著作权归作者所有。请勿转载和采集!