Wireshark网络分析工具(二)

一、TCP三次握手过称

Wireshark网络分析工具(二)

1. 第一次握手的数据包

客户端发送一个TCP,标志位为SYN,序列号为0, 代表客户端请求建立连接。 如下图:

Wireshark网络分析工具(二)

Wireshark网络分析工具(二)

2. 第二次握手的数据包

服务器发回确认包, 标志位为 SYN,ACK. 将确认序号(Acknowledgement Number)设置为客户的I S N加1以.即0+1=1, 如下图:

Wireshark网络分析工具(二)

3. 第三次握手的数据包

客户端再次发送确认包(ACK) SYN标志位为0,ACK标志位为1.并且把服务器发来ACK的序号字段+1,放在确定字段中发送给对方.并且在数据段放写ISN的+1,如图:

Wireshark网络分析工具(二)

二、TCP头部中几种常用的标记位

l  SYN:用来表示打开连接;

l  FIN:用来表示拆除连接;

l  ACK:用来确认(通过TCP连接)收到的数据;

l  RST:用来表示立刻拆除连接;

l  PSH:用来表示应将数据提交给末端应用程序(进程)处理。

三、Wireshark提示

- [packet size limited during capture] 标记这个包没有抓全 
- [tcp previous segment
not captured]网络包没有抓到:一种是真的丢包了,一种是抓包工具没有抓到。看对方回复的确认ack就能判断 
- [tcp asked unseen
segment] 几乎可以忽略,只抓到了后面的ack,没有抓到前面的数据包 
- [tcp out-of-order]乱序 
- [tcp dup ack]发生乱序或丢包了 
- [tcp fast
retransmission] 发送方收到3个或以上tcp dup ack,进入快速重传 
- [tcp retransmission]发生丢包,又没有后续包触发dup ack 
- [tcp zerowindow] win= 表示发送方当前还有多少缓冲区可以接收数据 
- [tcp window full] 发送方已经把接收方的窗口耗尽了,不能再发送数据了 
- [tcp segment of a
reassembled pdu] 这是启用了
edit—>preferences—>protocols—>tcp 菜单里的allow sub dissector to reassemble tcp streams,在最后一个包把所有的包虚拟的集中起来,方便复制整个应用层的edu (copy—>bytes—>printable
text only) 
- [continuation to #]则是上面选项没启用 
- [time-to-live exceeded]未收全包 无法组装

四、性能问题分析

- statistics->summary (查看统计信息,比如平均流量)

- statistics->service Response Time->ONC-RPC->program:NFS
Version:3—>create stat(衡量服务器性能)

- analyze—>expert info composite (查看重传统计、连接的建立、重置统计等等) 
- statistics->tcp stream graph->tcp sequence graph (生成统计图,考虑选择时间的长度)

五、分析命令

tcp.analysis.ack_rtt > 0.2 and tcp.len == 0 过滤是否存在延迟包

握手失败一般分两种类型,要么被拒绝,要么是丢包了。

表达式1:flags.reset ==1) && (tcp.seq ==1)

表达式2:(tcp.flags.syn ==1) && (tcp.analysis.retransmission)

六、重传

当发现网络包重传时,需要先检查重传出现的时间,即Wireshark抓包文件显示的发生TCP重传的时间点,与受监控服务器(生成的)日志显示的发生应用程序报告的时间点吻合,则可以判断TCP重传是服务器程序报错有关,与网络无关。

上一篇:wireshark的提示


下一篇:Python学习---Django重点之静态资源配置