TCP详解——连接建立与断开
一、报文结构介绍 在开始讲TCP连接过程时,还是先看看TCP报文的格式如图1所示。IP数据报此时由IP头部+TCP头部+TCP数据组成。不带选项的TCP头部是20字节长,而带选项的,TCP头部最长可达60字节。常见的选项包括最大的大小(MSS),时间戳(传输控制时使用)、窗口缩放(流量控制时使用)、选择性ACK(传输控制时使用)。我们来具体看下TCP头部字段如图2所示。 图1 IP数据报中TCP封装 图2所示的即是TCP头部的详细结构。源端口与目的端口和源IP及目的IP这四元组唯一标识每个TCP连接。序列号(Sequence Number)字段标识TCP的一端到另一端的数据流的第一个开始字节(例如发送端发送的数据总字节长度为1000字节,假定序列号从1开始,总的序列号是1-1000,TCP会给每个字节赋予一个序列号)。通过序列号来代表发送端到接收端的数据,接收端接收到数据后,即可通过确认号(ACK)来发送给发送端,让发送端知道数据已被接受。这个ACK号是由接收到的数据的序列号加1,代表接收端希望接收的下一个数据的序列号。(注:ACK是不占用序列号的,原因是接收端发送ACK给发送端后,发送端的ISN是等于此时接收到的ACK号)。 图2 TCP头部结构 头部长度的单位32bit,所以这也定义了TCP的长度最大为4*15=60字节。八个标志位中(CWR、ECE。。。等)