【问题标题】:Viewing Linux TCP TCB查看 Linux TCP TCB
【发布时间】:2013-06-19 19:37:19
【问题描述】:

我需要找出应该保存在 TCP 传输控制块 (TCB) 中的信息,特别是我需要找出用于任何特定会话的序列号。

我已在其他论坛上发帖,查看了 procfs,搜索了 Google,给自己发送了来自 lmgtfy (dot) com 的链接 :) 不走运。

如果procfs中没有工具或提示,是否有可能以某种方式找出此类信息在内存中的位置并从那里收集它,例如使用dd复制/dev/mem?

提前感谢您对此的任何帮助!!!!!

【问题讨论】:

  • 你看过内核源码吗?顺便说一句,我认为序列号不会通过 procfs 公开,因为它们太不稳定了,而且预测它们可以用作会话劫持 (IIRC) 的攻击媒介
  • 感谢您的评论。我希望有人曾经经历过这个并且有一个快速的答案或一些反馈。我没有查看源代码,说实话我不知道是否有人告诉我在源代码中的哪里可以找到它。
  • 我猜在 net/tcp/... 的某个地方。搜索 seq[uence] 可能会让你到达那里。

标签: linux networking linux-kernel


【解决方案1】:

好吧,我想你首先需要知道什么是序列号以及为什么使用它,然后你可以查看序列号生成的具体实现。

序列号是 32 位字段,它被用来唯一地标记每个数据包,就好像它们可以被确认一样。而且,被承认 很重要,它是 tcp 维护连接可靠性的一个重要特性。可以在 TCP rfc (http://www.ietf.org/rfc/rfc793.txt - 第 3.3 节) 中找到完整的详细信息。

现在,如果您需要了解 Linux 是如何做到的,您需要查看 net/ipv4/tcp_ipv4.c::tcp_v4_init_sequence(),它用于在建立新连接时生成 ISN(初始序列号)以及如何生成后面的序列号,这在 rfc 中进行了解释。因此,查看 tcp_v4_init_sequence() 和 rfc 的实现,这将有助于您有效地理解序列号的用途和实现。希望这会有所帮助!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-22
    • 1970-01-01
    • 2020-04-17
    • 2011-10-02
    • 2015-07-17
    • 2012-05-20
    相关资源
    最近更新 更多