TCP层机制及wireshark分析方法
| 收端 | 中间节点 | 发端 | |||
| TCP机制 | 1.一般收2个包回1个ACK,除非第2包在200ms内没有收到(Delayed-ACK timer)。 2.丢包后,后续包回重复ACK。 3.重传包收到后,会和之前收到的所有包一起回ACK。 |
1.收到ACK,触发发新包,慢启动发3个包,稳态和快速恢复发2个包 2.RTO内,收不到ACK,则重传数据 |
|||
| 多点抓包 | 所有抓包点做tcp trace图,都以tcp流的开始时间为0,直接比较。(2倍RTT以外有定量,以内只能定性) | ||||
| 单点抓包 | 结果 | 表现 | |||
| 数据源正常 | 收到ACK立即触发数据的发送(慢启动发3个包,稳态和快速恢复发2个包),间隔为0,flight数据量接近窗口 | ||||
| 数据源不足 | 收到ACK到触发的数据(近似找最近的)的间隔 大,导致flight数据量减少或掉底 | 收到ACK不及时触发数据的发送或包数少,导致flight数据量减少或掉底 | |||
| 缓存:输入>输出 | RTT和flight逐渐变大,可能产生丢包 | RTT和flight逐渐变大,可能产生丢包 | |||
| 减存:输入<输出 | RTT和flight逐渐变小,无丢包 | RTT和flight逐渐变小,无丢包 | |||
| 快速重传:上游丢包 | - | 收到重复Ack包之后,才有数据包 | |||
| 快速重传:下游丢包 | 收到数据包之后,才有重复Ack包,后有重传包 | - | |||
| 上游乱序 | - | 收包乱序,重复ACK;逆序数>2,则有重传(快速) | |||
| 下游乱序 | 收包按序,重复ACK;有重传,则逆序数>2 | - | 只有中间节点,无法区分 快速重传的下游丢包 | ||
| RTT大 | 直接看RTT | 只有中间节点,无法区分数据还是ACK慢 | |||
| RTT大导致重传 | Data->重传数据->ACK,且重传间隔大 | ||||
| 数据包上游或ACK包下游慢 | 数据包间隔先于ACK包间隔变大 | ||||
| 数据包上游慢导致超时重传 | 重传在ACK之后,且初传与前包的间隔变大 | 初传与前包的间隔变大 & 数据包间隔先于ACK包间隔变大;Data->ACK->重传数据,且RTT相比重传间隔小 | 重传前,发包间隔小;重传时,大。先有重传,后有ACK | ||
| ACK包下游慢导致超时重传 | 重传在ACK之后,且重传与初传的间隔变大 | 初传与前包的间隔不变 & 数据包间隔先于ACK包间隔变大;Data->ACK->重传数据,且RTT相比重传间隔小 | 重传前,发包间隔小;重传时,大。先有重传,后有ACK | ||
| 重传 | ip.id 增长,但tcp.seq变小 | ||||
| 乱序 | ip.id & tcp.seq 变小,且逆序数>1 | ||||

浙公网安备 33010602011771号