TODO: 此篇比较杂乱, 待整理 !!!
术语解释
解决网络问题的思路
流控理论
网络性能问题
拥塞重传
RTO: 丢包的 Retransmission Timeout 被触发 -> 进入超时重传阶段
超时重传
快速重传
选择重传: SACk
延迟确认: Delayed ACK
- 来自: <<一篇关于Vmware的文章>> , <<来点有深度的>>
- 含义: 当需要发送 ACK包时, 不立即发送, 等待片刻, 当有数据需要发送时, 捎带ACK, 这样省掉一个纯粹的ACK包
- 优点: 少一些确认包可以节省带宽
- 缺点: 凭空多出一些延迟; 该发送的ACK包未及时发送, 当出现网络拥塞时(延迟确认+网络拥塞), 可能会严重影响网络性能 (某种TCP协议栈的实现有200毫秒的延时)
- 过滤条件 检测: tcp.analysis.ack_rtt > 0.2 && tcp.len == 0
慢启动
小包问题:
- 来自: <<最经典的网络问题>>
- 含义:又叫愚笨窗口综合症, 当小包频繁发送时会严重浪费流量, 占用带宽, 拖垮网络性能
- 解决方法: 纳格算法: Nagle 提出的
- 注意: Nagle 算法 不要和 延迟确认一起使用, 否则网络效率非常低 !
DDOS攻击
来自: <<三次握手的小知识>>
含义: Distributed Denial of Service, 分布式拒绝服务攻击
种类: 有很多种, 最流行的 就是 基于三次握手的 SYN flood
解决网络问题的思路
网络不通时的查找方向
- - 分析其中的数据包: arp, rarp, mac地址, TTL, icmp, dns ...
- - 比较异常点
- - 分析,推测 网络结构, 网络配置, socket 配置
网络可联通, 但效率低的查找方向
1. 抓包: 在两侧(客户端,服务器端)都抓包, 两端抓到的包可能不太一样, 有利于排查问题;
2. 对抓到的包 认真分析, 推测可能原因;
3. 运用 三板斧 (性能问题)
- 板斧一: Statistics -> Summary : 统计 -> 摘要总结
- 目的: 查看整体情况
- 板斧二: Analyze -> Expert Infos : 分析 -> 专家信息
- 目的: 查看 error, warnings, ...
- 板斧三: 选定一个tcp流, Statistics -> TCP StreamGraph -> TCP Sequence Graph(Stevens)
- 目的: 查看 时间, 总流量的 坐标图, 分析瓶颈
4. 分析其他
- 请求包和响应包之间的延时, 某个方向的两个包的延时, 如果延时较大, 就需要检查配置;