如果接收端通告的窗口大小为0,那么接收端就不能发送数据了,为了防止接收端发送的窗口更新segment丢失,发送端会向接收端查询窗口大小,TCP通过启动一个称为Persist Timer的定时器来定时发送查询,这里Persist的含义是持之以恒、持久的意思,也就是说发送端永远不会放弃查询,直到接收端通告的窗口不为0为止
代码: 全选
0.000000 ( 0.000000) IP linux.47154 > macos.5555: flags [S], seq 133017518:133017518, win 64240, options [mss 1460,ts 3354223538 0,ws 7], length 0
0.000489 ( 0.000489) IP macos.5555 > linux.47154: flags [SA], seq 83378274:83378274, ack 133017519, win 33304, options [mss 1460,ws 3,ts 1408617785 3354223538], length 0
0.000544 ( 0.000055) IP linux.47154 > macos.5555: flags [A], seq 133017519:133017519, ack 83378275, win 502, options [ts 3354223538 1408617785], length 0
0.000661 ( 0.000117) IP linux.47154 > macos.5555: flags [PA], seq 133017519:133018543, ack 83378275, win 502, options [ts 3354223538 1408617785], length 1024
0.000706 ( 0.000045) IP linux.47154 > macos.5555: flags [A], seq 133018543:133019991, ack 83378275, win 502, options [ts 3354223538 1408617785], length 1448
0.000765 ( 0.000059) IP macos.5555 > linux.47154: flags [A], seq 83378275:83378275, ack 133018543, win 4035, options [ts 1408617785 3354223538], length 0
0.000783 ( 0.000018) IP linux.47154 > macos.5555: flags [PA], seq 133019991:133020591, ack 83378275, win 502, options [ts 3354223538 1408617785], length 600
0.000796 ( 0.000013) IP linux.47154 > macos.5555: flags [A], seq 133020591:133022039, ack 83378275, win 502, options [ts 3354223538 1408617785], length 1448
0.000806 ( 0.000010) IP linux.47154 > macos.5555: flags [PA], seq 133022039:133024935, ack 83378275, win 502, options [ts 3354223538 1408617785], length 2896
0.000859 ( 0.000053) IP macos.5555 > linux.47154: flags [A], seq 83378275:83378275, ack 133020591, win 5536, options [ts 1408617785 3354223538], length 0
0.000867 ( 0.000008) IP linux.47154 > macos.5555: flags [PA], seq 133024935:133032175, ack 83378275, win 502, options [ts 3354223538 1408617785], length 7240
0.000875 ( 0.000008) IP linux.47154 > macos.5555: flags [PA], seq 133032175:133032879, ack 83378275, win 502, options [ts 3354223539 1408617785], length 704
0.000905 ( 0.000030) IP macos.5555 > linux.47154: flags [A], seq 83378275:83378275, ack 133023487, win 5174, options [ts 1408617785 3354223538], length 0
0.000905 ( 0.000000) IP macos.5555 > linux.47154: flags [A], seq 83378275:83378275, ack 133024935, win 4993, options [ts 1408617785 3354223538], length 0
0.000957 ( 0.000052) IP macos.5555 > linux.47154: flags [A], seq 83378275:83378275, ack 133027831, win 4631, options [ts 1408617785 3354223538], length 0
0.000957 ( 0.000000) IP macos.5555 > linux.47154: flags [A], seq 83378275:83378275, ack 133030727, win 4269, options [ts 1408617785 3354223538], length 0
0.000957 ( 0.000000) IP macos.5555 > linux.47154: flags [A], seq 83378275:83378275, ack 133032175, win 4088, options [ts 1408617785 3354223538], length 0
0.000957 ( 0.000000) IP macos.5555 > linux.47154: flags [A], seq 83378275:83378275, ack 133032879, win 4000, options [ts 1408617785 3354223539], length 0
0.000977 ( 0.000020) IP linux.47154 > macos.5555: flags [PA], seq 133032879:133033903, ack 83378275, win 502, options [ts 3354223539 1408617785], length 1024
0.000987 ( 0.000010) IP linux.47154 > macos.5555: flags [A], seq 133033903:133035351, ack 83378275, win 502, options [ts 3354223539 1408617785], length 1448
0.001069 ( 0.000082) IP macos.5555 > linux.47154: flags [A], seq 83378275:83378275, ack 133033903, win 3872, options [ts 1408617785 3354223539], length 0
0.001083 ( 0.000014) IP linux.47154 > macos.5555: flags [PA], seq 133035351:133035951, ack 83378275, win 502, options [ts 3354223539 1408617785], length 600
0.001098 ( 0.000015) IP linux.47154 > macos.5555: flags [A], seq 133035951:133037399, ack 83378275, win 502, options [ts 3354223539 1408617785], length 1448
0.001105 ( 0.000007) IP linux.47154 > macos.5555: flags [PA], seq 133037399:133040295, ack 83378275, win 502, options [ts 3354223539 1408617785], length 2896
0.001114 ( 0.000009) IP linux.47154 > macos.5555: flags [PA], seq 133040295:133047535, ack 83378275, win 502, options [ts 3354223539 1408617785], length 7240
0.001129 ( 0.000015) IP linux.47154 > macos.5555: flags [PA], seq 133047535:133062015, ack 83378275, win 502, options [ts 3354223539 1408617785], length 14480
0.002829 ( 0.001700) IP macos.5555 > linux.47154: flags [A], seq 83378275:83378275, ack 133035951, win 3616, options [ts 1408617785 3354223539], length 0
0.002829 ( 0.000000) IP macos.5555 > linux.47154: flags [A], seq 83378275:83378275, ack 133038847, win 3254, options [ts 1408617786 3354223539], length 0
0.002829 ( 0.000000) IP macos.5555 > linux.47154: flags [A], seq 83378275:83378275, ack 133040295, win 3073, options [ts 1408617786 3354223539], length 0
0.002829 ( 0.000000) IP macos.5555 > linux.47154: flags [A], seq 83378275:83378275, ack 133043191, win 2711, options [ts 1408617786 3354223539], length 0
0.002829 ( 0.000000) IP macos.5555 > linux.47154: flags [A], seq 83378275:83378275, ack 133046087, win 2349, options [ts 1408617786 3354223539], length 0
0.002829 ( 0.000000) IP macos.5555 > linux.47154: flags [A], seq 83378275:83378275, ack 133047535, win 2168, options [ts 1408617786 3354223539], length 0
0.002829 ( 0.000000) IP macos.5555 > linux.47154: flags [A], seq 83378275:83378275, ack 133050431, win 1806, options [ts 1408617787 3354223539], length 0
0.002829 ( 0.000000) IP macos.5555 > linux.47154: flags [A], seq 83378275:83378275, ack 133053327, win 1444, options [ts 1408617787 3354223539], length 0
0.002850 ( 0.000021) IP linux.47154 > macos.5555: flags [PA], seq 133062015:133064879, ack 83378275, win 502, options [ts 3354223540 1408617785], length 2864
0.002906 ( 0.000056) IP macos.5555 > linux.47154: flags [A], seq 83378275:83378275, ack 133056223, win 1082, options [ts 1408617787 3354223539], length 0
0.002906 ( 0.000000) IP macos.5555 > linux.47154: flags [A], seq 83378275:83378275, ack 133059119, win 720, options [ts 1408617787 3354223539], length 0
0.002906 ( 0.000000) IP macos.5555 > linux.47154: flags [A], seq 83378275:83378275, ack 133062015, win 358, options [ts 1408617787 3354223539], length 0
0.003667 ( 0.000761) IP macos.5555 > linux.47154: flags [A], seq 83378275:83378275, ack 133064879, win 0, options [ts 1408617787 3354223540], length 0
// 下面是window probes
0.211649 ( 0.207982) IP linux.47154 > macos.5555: flags [A], seq 133064878:133064878, ack 83378275, win 502, options [ts 3354223749 1408617787], length 0
0.212492 ( 0.000843) IP macos.5555 > linux.47154: flags [A], seq 83378275:83378275, ack 133064879, win 0, options [ts 1408617993 3354223540], length 0
0.653414 ( 0.440922) IP linux.47154 > macos.5555: flags [A], seq 133064878:133064878, ack 83378275, win 502, options [ts 3354224191 1408617993], length 0
0.653753 ( 0.000339) IP macos.5555 > linux.47154: flags [A], seq 83378275:83378275, ack 133064879, win 0, options [ts 1408618432 3354223540], length 0
1.484679 ( 0.830926) IP linux.47154 > macos.5555: flags [A], seq 133064878:133064878, ack 83378275, win 502, options [ts 3354225022 1408618432], length 0
1.484958 ( 0.000279) IP macos.5555 > linux.47154: flags [A], seq 83378275:83378275, ack 133064879, win 0, options [ts 1408619260 3354223540], length 0
3.139554 ( 1.654596) IP linux.47154 > macos.5555: flags [A], seq 133064878:133064878, ack 83378275, win 502, options [ts 3354226677 1408619260], length 0
3.140043 ( 0.000489) IP macos.5555 > linux.47154: flags [A], seq 83378275:83378275, ack 133064879, win 0, options [ts 1408620912 3354223540], length 0
6.446848 ( 3.306805) IP linux.47154 > macos.5555: flags [A], seq 133064878:133064878, ack 83378275, win 502, options [ts 3354229984 1408620912], length 0
6.447465 ( 0.000617) IP macos.5555 > linux.47154: flags [A], seq 83378275:83378275, ack 133064879, win 0, options [ts 1408624210 3354223540], length 0
13.091919 ( 6.644454) IP linux.47154 > macos.5555: flags [A], seq 133064878:133064878, ack 83378275, win 502, options [ts 3354236630 1408624210], length 0
13.092627 ( 0.000708) IP macos.5555 > linux.47154: flags [A], seq 83378275:83378275, ack 133064879, win 0, options [ts 1408630835 3354223540], length 0
26.405423 (13.312796) IP linux.47154 > macos.5555: flags [A], seq 133064878:133064878, ack 83378275, win 502, options [ts 3354249943 1408630835], length 0
26.405857 ( 0.000434) IP macos.5555 > linux.47154: flags [A], seq 83378275:83378275, ack 133064879, win 0, options [ts 1408644125 3354223540], length 0
53.539589 (27.133732) IP linux.47154 > macos.5555: flags [A], seq 133064878:133064878, ack 83378275, win 502, options [ts 3354277077 1408644125], length 0
53.540193 ( 0.000604) IP macos.5555 > linux.47154: flags [A], seq 83378275:83378275, ack 133064879, win 0, options [ts 1408671224 3354223540], length 0
106.787819 (53.247626) IP linux.47154 > macos.5555: flags [A], seq 133064878:133064878, ack 83378275, win 502, options [ts 3354330325 1408671224], length 0
106.788233 ( 0.000414) IP macos.5555 > linux.47154: flags [A], seq 83378275:83378275, ack 133064879, win 0, options [ts 1408724333 3354223540], length 0
213.283748 (106.495515) IP linux.47154 > macos.5555: flags [A], seq 133064878:133064878, ack 83378275, win 502, options [ts 3354436821 1408724333], length 0
213.283997 ( 0.000249) IP macos.5555 > linux.47154: flags [A], seq 83378275:83378275, ack 133064879, win 0, options [ts 1408830564 3354223540], length 0
334.116210 (120.832213) IP linux.47154 > macos.5555: flags [A], seq 133064878:133064878, ack 83378275, win 502, options [ts 3354557654 1408830564], length 0
334.116433 ( 0.000223) IP macos.5555 > linux.47154: flags [A], seq 83378275:83378275, ack 133064879, win 0, options [ts 1408951116 3354223540], length 0
454.947503 (120.831070) IP linux.47154 > macos.5555: flags [A], seq 133064878:133064878, ack 83378275, win 502, options [ts 3354678485 1408951116], length 0
454.947731 ( 0.000228) IP macos.5555 > linux.47154: flags [A], seq 83378275:83378275, ack 133064879, win 0, options [ts 1409071707 3354223540], length 0
575.783983 (120.836252) IP linux.47154 > macos.5555: flags [A], seq 133064878:133064878, ack 83378275, win 502, options [ts 3354799322 1409071707], length 0
575.784589 ( 0.000606) IP macos.5555 > linux.47154: flags [A], seq 83378275:83378275, ack 133064879, win 0, options [ts 1409192339 3354223540], length 0
从上面的输出看,Persist Timer的时间间隔遵循指数退避算法:0.2、0.4、0.8、1.6 ... 120、120、120 ...