我对网络很陌生,在阅读“实用数据包分析:使用 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 位(?)
我的问题:
- 为什么它在 13 字节 () 中寻找第 4 位
tcp[13] & 4?不应该是图片中标记的第五个吗? - 为什么将标志的值与4进行比较?TCP 包含 9个 1 位标志flag 的值不应该是 0 或 1 吗?
- 为了检查 URG 标志,书中提到
tcp[13] & 32 == 32了我真的没有得到的过滤器?
谢谢!
