这里主要挑几个字段分析:

标志字段,SYN=1、ACK=0表示该数据段没有使用捎带的确认域。

最大报文段长度(MMS)1460是怎么来的,链路层的以太网物理特性决定数据帧长度为1500(即MTU,最大传输单元),1460=1500-20(IP首部长度)-20(TCP首部长度)。不要被该报文首部长度32字节所迷惑,这只是建立连接过程。MSS与MTU关系见下图[2]:

图7 MSS与MTU关系

NOP字段,可以作为不足4倍数字节填充,也可作为选项间分隔,该报文段出现了3个NOP,具体功能见下图:

图8 TCP报文NOP字段

3、第二次握手

服务器响应客户端TCP报文段,此时确认号为1了,SYN=1、ACK=1表明连接应答捎带一个确认,Wireshark俘获分组如下:

图9 TCP连接第二次握手实例

为什么MSS是1452而不是1460?这是因为使用PPPoE(Point-to-Point over Ethernet,可以使以太网的主机通过一个简单的桥接设备连到一个无端的接入集中器上[3])拨号上网,PPoP首部是8个字节,所以PPPoE的MTU是1492,MSS也就为1492-40=1452。

那么,TCP连接建立后数据传输的MSS是多少呢,1460 or 1452 or 536 ?我的理解是默认值536,这样理解对吗?求指点!

4、第三次握手

客户机再次服务器的报文段,此时序列号和确认号都为1,没有选项字段,Wireshark俘获的分组信息如下:

图10 TCP连接第三次握手实例

值得注意的,因为窗口扩展大小协商未果,所以就不扩大窗口了,即窗口大小最大为65535。如此,TCP连接建立。


相关内容