如何在Linux用户空间中获取TCP初始序列号?

3
为了跟踪TCP会话在网络中的传输,我想知道会话的初始序列号(Initial Sequence Number,ISN)。我编写了一些代码,当创建TCP会话时,简单地将ISN复制到tcp_sock结构中,然后添加了代码,将该值复制到getsockopt()返回的tcp_info结构中。这似乎可以工作,但我想知道是否有更好的方法。我看到snt_isn和rcv_isn存储在tcp_request_sock结构中。是否有办法从getsockopt()中的tp结构访问tcp_request_sock结构?
提前感谢 bvs

1
如果您正在网络上跟踪它,您可以从SYN数据包中获取ISN。请注意,序列号不保证唯一性:您需要使用连接5元组(协议、源IP、源端口、目标IP、目标端口)来限定它。 - Brian White
1个回答

0
没有,用户空间无法通过套接字API(例如setsockopt或tcp_info)获取(或设置)序列号。
唯一的方法是通过使用tcpdump捕获跟踪来读取它。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接