可能这个不是很有意义,但是很有意思,tcpip详解第178页讲了超时的东西,专门为此做了实验,首先阐述下环境:CentOS6.2。Ubuntu页做过,不过Ubuntu不知道咋了死在那里了。。
首先得做个arp映射,我在虚拟机下装的centos,IP:192.168.197.129,做了一个映射arp -s 192.168.197.100 01:01:01:01:00:00。因为只有这样子才可以做超时,否则不行。
然后开始计时
[root@localhost zhangjl]# date; telnet 192.168.197.100;date
2012年 07月 12日 星期四 23:17:47 CST
Trying 192.168.197.100...
telnet: connect to address 192.168.197.100: Connection timed out
2012年 07月 12日 星期四 23:18:50 CST
可以看出时间差为73秒,我做了几次,差不多都是这个数,但是tcpdump输出的不是这样子,我输出重点的给看官。
23:17:47.032562 IP CentOS.52707 > Dest.telnet: Flags [S], seq 3028557734, win 14600, options [mss 1460,sackOK,TS val 1129117 ecr 0,nop,wscale 5], length 0
23:17:48.032104 IP CentOS.52707 > Dest.telnet: Flags [S], seq 3028557734, win 14600, options [mss 1460,sackOK,TS val 1130117 ecr 0,nop,wscale 5], length 0
23:17:50.032472 IP CentOS.52707 > Dest.telnet: Flags [S], seq 3028557734, win 14600, options [mss 1460,sackOK,TS val 1132117 ecr 0,nop,wscale 5], length 0
23:17:54.032283 IP CentOS.52707 > Dest.telnet: Flags [S], seq 3028557734, win 14600, options [mss 1460,sackOK,TS val 1136117 ecr 0,nop,wscale 5], length 0
23:18:02.032661 IP CentOS.52707 > Dest.telnet: Flags [S], seq 3028557734, win 14600, options [mss 1460,sackOK,TS val 1144117 ecr 0,nop,wscale 5], length 0
23:18:18.031989 IP CentOS.52707 > Dest.telnet: Flags [S], seq 3028557734, win 14600, options [mss 1460,sackOK,TS val 1160117 ecr 0,nop,wscale 5], length 0
这里CentOS表示我自己的机子IP,Dest是刚才做的那个arp的映射(192.168.197.100)发现他一共发了6个SYN包,5个时间分别是:
23:17:47.032562
23:17:48.032104(0.99542)
23:17:50.032472(2.99991)(2.000368)
23:17:54.032283(6.999721)(3.999811)
23:18:02.032661(15.000099)(8.000378)
23:18:18.031989(30.999427)(15.999328)
差不多是这样子的趋势,格式第一个括号是与第一个SYN相隔时间,第二个括号是与上一个SYN相隔时间。刚开始1秒左右重发,接下来隔2s,4s,8s,16s重发。所以第一个包不太精确,具体的可能和Linux内核有关吧。但是原理应该和tcpip详解 179页说的500ms定时器差不多。希望高手可以告诉为什么和书上的不一样。
阅读(831) | 评论(0) | 转发(0) |