Wireshark 仅捕获设置了 RST 标志的 TCP 数据包

网络工程 tcp 线鲨 包分析
2022-02-10 17:13:52

我对网络很陌生,在阅读“实用数据包分析:使用 Wireshark 解决...”时遇到了困难。

第 61 页上写着:

一个常见的场景是只捕获设置了 RST 标志的 TCP 数据包。我们将在第 6 章详细介绍 TCP。现在,您只需要知道 TCP 数据包的标志位于偏移量 13 处。这是一个有趣的字段,因为它作为标志字段的大小共同为 1 字节,但是每个特定标志都由该字节中的单个位标识。在一个 TCP 数据包中可以同时设置多个标志,因此我们无法通过单个 tcp[13] 值有效地过滤,因为多个标志可能代表正在设置的 RST 位。因此,我们必须通过使用单个 & 符号 ( & ) 将该位置附加到当前原语来指定我们希望检查的字节内的位置。RST 标志位表示该字节内的数字 4,该位设置为 4 的事实告诉我们该标志已设置。过滤器如下所示:

tcp[13] & 4 == 4

但是当我在 wiki 上查看 TCP 标头时,我看到 RST 标志是第 13 个字节中的第 5 位(?)

在此处输入图像描述

我的问题:

  1. 为什么它在 13 字节 () 中寻找第 4 位tcp[13] & 4不应该是图片中标记的第五个吗?
  2. 为什么将标志的值与4进行比较?TCP 包含 9个 1 位标志flag 的值不应该是 0 或 1 吗?
  3. 为了检查 URG 标志,书中提到tcp[13] & 32 == 32了我真的没有得到的过滤器?

谢谢!

1个回答

RST 标志位于该字节内表示数字 4 的位

指第 2 位的数值 (2 2 = 4) - 这些位从 MSB 到 LSB 编号为 76543210,数值为 128、64、32、16、8、4、2、1。

以同样的方式,URG 是第 5 位和 2 5 = 32。