重点
- 熟悉各个菜单中的 各个子项的用法
- 熟练运用这些来解决问题
需要阅读的资料
- Help -> Content
- Help -> Manual -> tshark / wireshark ...
- 重点: 过滤规则, BPF语法
- ...
衍生拓展功能
- 直接利用已有功能, 分析网络质量, 查找网络问题
- 基于 wirshark 源码: 直接使用 编译好的 动态库
- 插件编写: LUA, C
- ...
快捷键
含义 | 快捷键 | 使用场景 | 其他 |
---|---|---|---|
跳到指定包 | Ctrl + G | ||
跳到下一个包 | Ctrl + Down | ||
跳到上一个包 | Ctrl + Up | ||
历史包: 上一个 | Alt + Left | ||
历史包: 下一个 | Alt + Right | ||
会话包: 上一个 | Ctrl + , | ||
会话包: 下一个 | Ctrl + . | ||
查找包: 查上一个 | Ctrl + B | ||
查找包: 查下一个 | Ctrl + N | ||
标记包 | Ctrl + M | ||
标记包: 上一个 | Ctrl + Shift + B | ||
标记包: 下一个 | Ctrl + Shift + N | ||
放大 | Ctrl ++ | ||
缩小 | Ctrl +- | ||
展开 子树 | Shift + Right | ||
收缩 子树 | Shift + Left | ||
展开 所有树 | Ctrl + Right | ||
收缩 所有树 | Ctrl + Left | ||
颜色规则 | Ctrl + 1 .. 9 | ||
Wireshark 的提示
TCP报文( tcp dup ack 、TCP Retransmission): 写的不错 !
[TCP ACKed unseen segment] : 未抓到 (几乎都是正常的)
- 前面的包(ACKed)未抓到时的提示
- 这是最常见的 wireshark 提示, 它几乎是永远可以忽略的 !
[TCP Out-Of-Order] : 先到
- wireshark 发现 后一个包的Seq = 前一个包的Seq+Len 时, 认为正常
- wireshark 发现 后一个包的Seq < 前一个包的Seq+Len 时, 认为乱序, 会做此标记; (但三次握手, 四次挥手除外)
[TCP Previous segment not captured] : 晚到/丢包
- wireshark 发现 后一个包的Seq = 前一个包的Seq+Len 时, 认为正常
- wireshark 发现 后一个包的 Seq > 前一个包的Seq+Len时, 认为中间丢失了一段数据.
- 实际情况有两种: 真的丢了 OR 实际上没丢, 但被抓包工具漏掉了
- 验证方法: 直接看对方回复的ACK就行了, 如果该ACK包含了没抓到的那个包, 则就是抓包工具漏掉了, 否则即真丢失了
[TCP Retransmission] : "超时重传"
- 丢包后, 有没有后续包可在接收方触发[Dup Ack], 只能利用 "超时重传", 这个标记就标识超时重传
[TCP Fast Retransmission] : "快速重传"
- 当发送方收到 >=3个 [TCP Dup ACK], 就意识到之前的包可能丢了, 于是 "快速重传"
[TCP Dup ACK XXX#X] : "快速重传" 时会出现
- 表示第X次重新请求第XXX个包, 丢包或者乱序的情况下,会出现该标志
[Continuation to #] : 未打开 tcp 上层PDU重组选项
[TCP segment of a reassembled PDU] : 已打开 tcp 上层PDU重组选项
[TCP zerowindow] : 0窗口
- 当tcp包中的 win=0 时, wireshark 提示此标志
表示此包的发送方接收数据的缓存区已经满了(为0), 不能再收了, 传输暂停
[TCP window Full] : Full窗口
- "在途字节数" == 对端声明的接收窗口的大小 时, wireshark 提示此标志
- 注意: "在途字节数" 是 wireshark 自己计算的, 不是包中本来就有的 !
...