TCP连接的建立过程
TCP是一个面向连接和协议,在发送数据之前,任何交互都要基于连接才能完成。本博文讨论连接的建立过程。
我在本机上打开一个端口,然后对这个端口telnet,连接之后,会将其断开,并用tcpdump对其TCP数据传输进行输出,如果对TCP首部不是特别了解,可以参考博文【TCP/IP:认识TCP】
一,测试输出
调用telnet
19:02:19.526955 IP 192.168.1.105.38890 > 4.38.89.117.broad.nj.js.dynamic.163data.com.cn.8625: S 1446215798:1446215798(0) win 5840 <mss 1460,sackOK,timestamp 1562973 0,nop,wscale 7>19:02:22.529755 IP 192.168.1.105.38890 > 4.38.89.117.broad.nj.js.dynamic.163data.com.cn.8625: S 1446215798:1446215798(0) win 5840 <mss 1460,sackOK,timestamp 1565973 0,nop,wscale 7>19:02:28.532807 IP 192.168.1.105.38890 > 4.38.89.117.broad.nj.js.dynamic.163data.com.cn.8625: S 1446215798:1446215798(0) win 5840 <mss 1460,sackOK,timestamp 1571973 0,nop,wscale 7>19:02:40.537427 IP 192.168.1.105.38890 > 4.38.89.117.broad.nj.js.dynamic.163data.com.cn.8625: S 1446215798:1446215798(0) win 5840 <mss 1460,sackOK,timestamp 1583973 0,nop,wscale 7>19:03:04.583216 IP 192.168.1.105.38890 > 4.38.89.117.broad.nj.js.dynamic.163data.com.cn.8625: S 1446215798:1446215798(0) win 5840 <mss 1460,sackOK,timestamp 1607973 0,nop,wscale 7>19:03:53.302771 IP 192.168.1.105.38890 > 4.38.89.117.broad.nj.js.dynamic.163data.com.cn.8625: S 1446215798:1446215798(0) win 5840 <mss 1460,sackOK,timestamp 1655973 0,nop,wscale 7>从上面的输出,可以看到:第一次连接没有应答后,隔3秒之后,又发送一个SYN报文,然后是6秒,12秒,24秒,48秒。。。。。。,直到达到最大的一个重新发送的次数,这个时间间隔,在不同的TCP实现机器上是不一样的,比如有些是48秒就直接认为连接超时,有些是75秒之后,才连接超时