工欲善其事,必先利其器——《wireshark网络分析的艺术》总结
今天推荐大家两本好书,由林沛满同学写的《wireshark网络分析的艺术》以及《wireshark网络分析就那么简单》。
推荐该书的原因是能把一个工具和实战结合,又能通俗易懂,非常令人钦佩。
至于什么是wireshark,我想只要是搞IT的,多少有过抓包的经验把,没听过的只能回去面壁思过了。
下面,介绍一下本书大致的内容,该书基本上围绕作者的一些抓包的实战案例来分析的。
我大致总结为两个部分:
说明,我安装的wireshark是mac版本,和win版本又一些区别。
一.掌握wireshark的基本要领
a)三板斧
1.统计->捕获文件属性,查看抓获包的摘要信息

2.分析->专家信息,查看包出错情况,重传情况等

3.统计->tcp流图形->时间序列,查看网络卡顿情况

4.统计->对话,查看协议传输情况

b)包过滤语法
wirshark支持灵活的语法来过滤符合情况的包,例如:
ip.addr==x.x.x.x
tcp.port==8081
tcp.flags.reset==1
等等,详情可以查看:
https://www.wireshark.org/docs/dfref/
二.网络基本知识点
tcp连接
连接中的seq为包的发送序号,ack为确认发送方的下个seq号。
例如发送方的seq=123,包长度为100,则ack为123+100=223
2.mtu,mss,分片
MTU:maximum transmission unit,最大传输单元,由硬件规定,如以太网的MTU为1500字节。
MSS:maximum segment size,最大分节大小,为TCP数据包每次传输的最大数据分段大小,一般由发送端向对端TCP通知对端在每个分节中能发送的最大TCP数据。MSS值为MTU值减去IPv4 Header(20 Byte)和TCP header(20 Byte)得到。
分片:若一IP数据报大小超过相应链路的MTU的时候,IPV4和IPV6都执行分片(fragmentation),各片段到达目的地前通常不会被重组(re-assembling)。IPV4主机对其产生的数据报执行分片,IPV4路由器对其转发的数据也执行分片。然而IPV6只在数据产生的主机执行分片;IPV6路由器对其转发的数据不执行分片。
2.tcp窗口
每个包在tcp层的win=xxx,代表接收窗口大小,至于发送窗口大小,需要综合分析。
一个发送窗口有n个包,不代表确认包也有n个,一般会少一些。
tcp的window scale约定窗口真正大小为:2的n次*窗口大小。这个大小在3次握手的时候确认,假如没抓到握手过程,则window size scaling factor有可能为-1.
3.重传问题
当网络拥塞的时候,就会暂停,有个RTO(发出原始包到重传的间隔)时间,这个时间有些系统可以调小,这样可以提升性能。
sack机制可以减少重传的包,提高重传效率。
4.延迟确认与nagle
都是为了减轻网络负担,并没有提高性能,用的不好反而会影响性能。
因为延迟确认的关系,抓到的包并不一定是按照理想的顺序展开的。
5.计算在途字节数(用于估算拥塞点)
发出去的包序号和确认包序号的差值,公式为
seq+len-ack
6.lso
直接把大于mss的分块传给网卡,由网卡进行分片和组装。
7.udp分包
udp不能把大块数据先进行分片,所以由可能被网络层分片,导致丢包。
ip层的more fragment代表后续是否还有分片。
8.mtu问题
巨帧如果带了don't fragment标志,则由可能大于mtu被丢弃。
可以用ping命令带-f参数做实验。
总结,不管解决什么问题,原理和重要,假如不知道原理,瞎用工具是解决不了任何问题的,另外,在工欲善其事必先利其器,假如你精通一种工具,那么在懂原理前提下,相当于如虎添翼了。知行合一,是我们永远追求的最高境界!
文/陈科 浏览次数:0次 2019-11-15 15:59:59
推荐该书的原因是能把一个工具和实战结合,又能通俗易懂,非常令人钦佩。
至于什么是wireshark,我想只要是搞IT的,多少有过抓包的经验把,没听过的只能回去面壁思过了。
下面,介绍一下本书大致的内容,该书基本上围绕作者的一些抓包的实战案例来分析的。
我大致总结为两个部分:
说明,我安装的wireshark是mac版本,和win版本又一些区别。
一.掌握wireshark的基本要领
a)三板斧
1.统计->捕获文件属性,查看抓获包的摘要信息

2.分析->专家信息,查看包出错情况,重传情况等

3.统计->tcp流图形->时间序列,查看网络卡顿情况

4.统计->对话,查看协议传输情况

b)包过滤语法
wirshark支持灵活的语法来过滤符合情况的包,例如:
ip.addr==x.x.x.x
tcp.port==8081
tcp.flags.reset==1
等等,详情可以查看:
https://www.wireshark.org/docs/dfref/
二.网络基本知识点
tcp连接
连接中的seq为包的发送序号,ack为确认发送方的下个seq号。
例如发送方的seq=123,包长度为100,则ack为123+100=223
2.mtu,mss,分片
MTU:maximum transmission unit,最大传输单元,由硬件规定,如以太网的MTU为1500字节。
MSS:maximum segment size,最大分节大小,为TCP数据包每次传输的最大数据分段大小,一般由发送端向对端TCP通知对端在每个分节中能发送的最大TCP数据。MSS值为MTU值减去IPv4 Header(20 Byte)和TCP header(20 Byte)得到。
分片:若一IP数据报大小超过相应链路的MTU的时候,IPV4和IPV6都执行分片(fragmentation),各片段到达目的地前通常不会被重组(re-assembling)。IPV4主机对其产生的数据报执行分片,IPV4路由器对其转发的数据也执行分片。然而IPV6只在数据产生的主机执行分片;IPV6路由器对其转发的数据不执行分片。
2.tcp窗口
每个包在tcp层的win=xxx,代表接收窗口大小,至于发送窗口大小,需要综合分析。
一个发送窗口有n个包,不代表确认包也有n个,一般会少一些。
tcp的window scale约定窗口真正大小为:2的n次*窗口大小。这个大小在3次握手的时候确认,假如没抓到握手过程,则window size scaling factor有可能为-1.
3.重传问题
当网络拥塞的时候,就会暂停,有个RTO(发出原始包到重传的间隔)时间,这个时间有些系统可以调小,这样可以提升性能。
sack机制可以减少重传的包,提高重传效率。
4.延迟确认与nagle
都是为了减轻网络负担,并没有提高性能,用的不好反而会影响性能。
因为延迟确认的关系,抓到的包并不一定是按照理想的顺序展开的。
5.计算在途字节数(用于估算拥塞点)
发出去的包序号和确认包序号的差值,公式为
seq+len-ack
6.lso
直接把大于mss的分块传给网卡,由网卡进行分片和组装。
7.udp分包
udp不能把大块数据先进行分片,所以由可能被网络层分片,导致丢包。
ip层的more fragment代表后续是否还有分片。
8.mtu问题
巨帧如果带了don't fragment标志,则由可能大于mtu被丢弃。
可以用ping命令带-f参数做实验。
总结,不管解决什么问题,原理和重要,假如不知道原理,瞎用工具是解决不了任何问题的,另外,在工欲善其事必先利其器,假如你精通一种工具,那么在懂原理前提下,相当于如虎添翼了。知行合一,是我们永远追求的最高境界!
相关阅读
评论:
↓ 广告开始-头部带绿为生活 ↓
↑ 广告结束-尾部支持多点击 ↑