TCP首部由20字节的固定字段和长度可变的选项字段构成,如图6-10所示。其中各字段的含义如下。
图6-10 TCP首部
1)源端口号:16bit字段,标识着发送方用户的应用程序。
2)目的端口号:16bit字段,标识着接收方用户的应用程序。
3)序号:32bit字段,它表示这个报文段数据字段中第一个数据字节的序号。
4)确认序号:32bit字段,表示TCP实体希望接收到的下一个数据字节的序号。确认序号采用的是一种捎带技术,即在发送给对方的数据中携带返回给对方的确认信息。序号和确认序号如同之前介绍的一样,在TCP各种控制功能中都起着重要的作用。
5)首部长度:4bit字段,表示TCP首部的长度,单位为32bit。TCP只有首部长度字段,没有总长度或数据长度字段。
6)保留:6bit字段,为将来使用而保留。(www.daowen.com)
7)编码位:6bit字段,分别定义了6个标志位。后面详述。
8)窗口:16bit字段,标识流量控制中信用量的大小,以字节为单位。信用量告知对方,对方在收到新信用量之前,最多能发送多少个字节。信用量机制将确认从流量控制中分离出来,即没有新信用量时也可以被确认,反之亦然。
信用量分配机制存在死锁问题,例如,当接收方比较忙时,会发送窗口W=0的报文段,这时接收方会关闭窗口。当接收方重新打开窗口时,会发送W=j的报文段。如果这个新信用量的报文段丢失,则接收方认为它已重新打开窗口,但发送方认为仍然关闭。解决死锁的方法是使用窗口计时器。如果窗口计时器超时,发送方就发送一个报文段,也可以是重传上一个报文段,利用这个报文段促使接收方响应。
9)校验和:16bit字段,TCP的校验和与IP不同。首先它是整个报文段的检验,而不是像IP一样是首部的检验。再者,TCP的校验和不仅仅是检验整个TCP报文段还要加上一个IP伪首部。所谓IP伪首部包括IP数据报中的IP源地址、目的地址、协议和总长度。IP伪首部的格式如图6-11所示。
图6-11 IP伪首部格式
通过在检验中包含这个IP伪首部的做法,即便是TCP报文段本身没有问题,但是报文段传给了错误的主机,TCP实体也能检测出这个错误。而校验和的具体求法和IP相同,采用每16bit二进制取反相加的方式。
10)选项:长度可变,利用填充字节使其长度为4字节的整数倍。TCP中的选项字段提供了一些额外的功能,如设置报文段的最大长度、窗口宽度因子、时间戳等。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。