《wireshark网络分析就是这么简单》知识点与技巧
前言
本书强调的是技巧教学,顺便科普知识点
知识点包括tcp交互,tcp拥堵算法,窗口和rto调优(backlog调优没讲)
http, dns ,udp,arp, ip的identification, kerberos,ftp
这些知识都是通过抓包学习的。
尤其tcp的知识,通过统计分析,重传的细节等观察网路的质量。
知识点锦集
- 路由层发送ip包之前都会通过arp协议广播查询mac地址,通过查询的mac我们可以知道接收ip包的下一跳去了哪里。
- arp是通过在链路层广播来查询mac地址的。
- 子网掩码是配置在自己本机的,作用是用于判断本机发出去的ip包的destination的IP地址是否和自己同在一个子网,如果不在则需要把包发给网关。(换句话说,掩码是自己认亲用的,也就说存在这样的关系,你不认为B是亲人,但B可以认为你是亲人,因为B的掩码可以跟你不一样。)
- arp查到的mac会缓存,不用每次都差查。
-
【实用技巧】做实验的时候,用ping ip -l 1来分割每一个试验步骤,避免所有试验步骤的包丢在意思影响分析。(类似debug的埋点)
-
想要优化网速可以通过调RTO的重传时间和拥堵窗口优化网络(拥堵默认64k,有时通过窗口因子调大,在系统配置即可)
-
mss正常是1k左右,也可以通过端到端调节“LSO,LRO,TSO,UFO,GRO等扩大”,但网络质量不好,会影响性能。
-
tcp会累计ack,还会延迟ack。
-
RST包出现,意味着网络存在严重问题。
-
如果不用三次握手,容易产生很多没有对端的链接浪费资源。
-
由于规定一个tcp segment可以过活2分钟(MSL为2分钟),主动关闭要等time wait是要等一个包的往返,需要2MSL,但实际上不用那么长时间,一般都设置为1分钟或者30秒。当初这设4分钟是担心端口同时被两个链接复用了。(SO_REUSEADDR一般在服务器用,导致重启后出现timewait端口冲突异常)。
-
接收窗口可以自己调。
-
接收窗口需要结合拥堵与接收窗口决定。
-
每次发送都会开重传定时器(默认1000ms,最小调成200ms).
-
为了防止等太久重传定时器,可以通过收到3次重复Dack后快速重传(为什么要3次,而不是2次?因为避免把延迟误认为丢包,触发频繁的快速重传浪费流量)
-
重传的三种方案:1.整组flight包都重传(已发未ack都叫flight)。2.收一个ack补发一个(这个叫newreno,如果丢太多,性能差)。3.目前比较流行的SACK,每个ack会携带一个收已收区间,只需把丢包区间重发即可(RFC2018)。
-
重传定时器等ack期间不能川数据,而且影响拥堵窗口,对性能影响要命。
-
“慢启动”并不慢,如果网速好,提高临界窗口延长慢启动的时间有时候挺好的(也就是调大拥堵窗口)。
-
如果能够触发快速重传,说明并不拥堵,这个时候拥堵会触发“快速恢复”(了解一下就好,没啥意义)
-
作者说没见过nagle算法(“那哥算法”)出现过线上问题。
-
但延迟确认会导致 “拖延拥堵慢启动” “触发RTO” (如果开启SACK,RTO的问题会好转)
-
延迟确认不是错误,所以很难发现,可以用“tcp.analysis.ack_rtt > 0.2”初步过滤。
-
作者说如果用udp发大datagram会很恶心,理由:1.超过mtu导致ip层分组排序重组,性能差。2.组中有丢帧,会导致整组重传(tcp的话丢哪个传重哪个,很人性)。3.发大包时,黑客可以发more fragment为1的包,让包组装不了,消耗内存,影响会话。
-
所以别用udp传大包。
-
NAT会导致基于ip的各种白名单黑名单失效。(所以租IP池生意很好,一个月几十块)
-
LSO,NIC teaming等offload技术会导致乱序(毕竟网卡重组大包没小包那么快,所以乱序是正常的)
-
快速重传和SACK是优化拥堵网络的神器,尤其是记得把SACK开起来。
-
对awk和sed很熟?那把tshark也学一下,成为抓包高手,网络geek无敌手。
-
从DNS学到了递归与迭代的区别(递归就是你找我解决问题,我找别人帮你。迭代就是,你找我解决问题,我告诉你找谁可以帮到你。)
-
DNS的cname可以方便我们给多个同IP的域名改IP,A记录的A是address的意思。
总结
- 理论抽象的话,找个工具和工具教学的书可以帮我们快速获得实用的知识。
- 掩码是为本机服务的,理解这个很重要。
- offload网卡技术有时候也是个坑,不用就关掉配置。
- RST是危险信号。
- MSL调小点,服务器启用SO_REUSEADDR。
- 拥堵的话,调好两个窗口,临时窗口ssthresh, 接收窗口win,和一个重传rto+sack。
- udp不能传大包。
- 注意nat影响抓包和ip黑白名单。
- tshark用起来。
引用:
《对林沛满先生两本“Wireshark秘籍”的摘要与总结》https://zhuanlan.zhihu.com/p/137044525
《wireshark网络分析就是这么简单》林沛满