《wireshark网络分析就是这么简单》知识点与技巧

《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网络分析就是这么简单》林沛满

你可能感兴趣的:(网络编程,分布式,wireshark,网络,tcp/ip)