WireShark安装
wireshark在windows和mac上的安装方式都比较简单,下面是Linux下的安装方式
sudo apt-add-repository ppa:wireshark-dev/stable
sudo apt-get update
sudo apt-get install wireshark
#以root权限启动
sudo wireshark
WireShark的名字解析
- L2层的名字解析,对Mac地址进行解析,返回机器名
- L3层 ip解析为域名
- L4层 端口号解析为协议端口号
Wireshark抓到的包更改时间格式
查看EndPoint
点击Statistics->EndPoints,可以查看每一个捕获文件里的每个端点
查看网络会话
Statistics->Conversations. 查看地址A和地址B,以及每个设备发送或收到的数据包和字节数
基于协议分层结构的统计数据
Statistics->Protocol Hierarchy
跟随流功能
右键选中一个数据包,然后右键,follow。比如我在这里跟随一个tcp流
//这里也可以使用decode as解码功能,但是没有例子,暂不附图
查看IO图
Statistics->IO Graphs
双向时间图
Statistics->TCP Stream Graph -> Round Trip Time Graph
数据流图
Statistics->Flow Graph
专家信息
Analyze->Expert Info Composite
触发的专家信息
对话消息
- 窗口更新 由接收者发送,用来通知发送者TCP接收窗口的大小已被改变
注意消息
- TCP重传输 数据包丢失的结果,发生在收到重复的ACK,或者数据包的重传输计时器超时的时候
- 重复ACK 当一台主机没有收到下一个期望序列的数据包时,它会生成最近收到一次数据的重复ACK
- 零窗口探查ACK 用来响应零窗口探查数据包
- 窗口已满 用来通知传输主机及其接收者的TCP接收窗口已满
警告消息
- 上一段丢失 指明数据包丢失,发生在当数据流中一个期望的序列号被跳过时。
- 收到丢失数据包的ACK 发生在当一个数据包已经确认丢失但受到了其ACK数据包时
- 保活 当一个连接的保活数据包出现时触发
- 零窗口 当接收方已经达到TCP接收窗口大小时,发出一个零窗口通知,要求发送方停止传输数据
- 乱序 当数据包被乱序接收时,会利用序列号进行检测
- 快速重传输 一次重传会在收到一个重复ACK的20ms内进行
WireShark性能
Statistics -> Summary 查看平均速度
Analyze -> Expert Infos
Statistics -> TCP StreamGraph -> TCP Sequence Graph(Stenens)
TCP Previous segment not captured
在TCP传输过程中,同一台主机发出的数据段应该是连续的,即后一个包的Seq号等于前一个包的Seq + Len. 如果在网络包中没有找到,就会出现这个错误
TCP ACKed unseen segment
Wireshark发现被Ack的那个包没被wireshark捕获
TCP Out-of-Order
在TCP传输过程中,同一台主机发出的数据段应该是连续的,即后一个包的Seq号等于前一个包的Seq + Len.当Wireshark发现后一个包的Seq号小于前一个包的Seq+Len 就乱序le
TCP Dup ACK
当乱序或者丢包的时候,接收方会收到Seq号比期望值大的包,每收到一个这种包就会Ack一次期望的Seq值
TCP Fast Retransmission
当发送方收到3个或以上TCP Dup ACK,就意识到之前发的包可能丢了,触发快速重传
TCP Retransmission
没有触发tcp超时重传,超时重传
TCP zerowindow
缓存区已满,不能再接收数据了
TCP window FUll
Wireshark检测到,发送方发送的数据会把接收方的接收窗口耗尽