【问题标题】:does packet capturng bypass part of TCP/IP stack?数据包捕获是否绕过 TCP/IP 堆栈的一部分?
【发布时间】:2020-06-11 20:22:45
【问题描述】:

当我在 Linux 上使用wiresharktcpdump 捕获网络数据包时,它通常会保存分段的TCPwireashark 可以重新组合(只要 Edit->Preferences->Protocols ... 有这个选项检查协议,例如 HTTP)。

但是,我认为 TCP/IP 堆栈会在 将数据包传递给用户应用程序之前重新组装数据包,例如一个WEB浏览器。

所以我的问题是:捕获数据包是否绕过了 TCP/IP 堆栈的某些部分?

【问题讨论】:

  • 查看this了解有关libpcap使用的套接字类型,并查看PF_PACKEThere的描述。

标签: tcp wireshark packet packet-sniffers


【解决方案1】:

简短回答:是的

更长的答案:“数据包捕获”不会干扰正常的数据包处理——它只是在数据包通过内核的地方复制数据包。发生这种情况的正常位置是在设备驱动程序和网络堆栈之间,但根据您设置过滤的方式,它也可能发生在其他位置。

【讨论】:

  • 感谢您的反馈。 “取决于您如何设置过滤”是指 netfilter 规则可以在 TCP/IP 处理完数据包并重定向到 PF_SOCKET 后拾取数据包吗?
  • 这取决于你的操作系统和它启用的功能——但是在 TCP 处理之后,只有一个字节流没有“数据包”的概念,所以没有真正的“数据包过滤”方式这样做,但您可以使用 ptrace 来拦截用户级进程从套接字获取的内容。
  • @Mark,如果您使用netfilter 来发送数据包到用户空间并使用libipq 处理它们,那么您将看不到碎片。 netfilter 和大多数防火墙一样,需要对重组的数据包进行操作以进行有效过滤。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-08-20
  • 2016-12-07
  • 1970-01-01
  • 2014-08-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多