TCP首部
Sequence Number:是指发送数据的位置,每发送一次数据,就累加一次。是由计算机生成的随机数作为初始值,通过SYN包传给接收端主机。然后再将没转发过的字节数累加到初始值上表示的数据。此外在建立和断开连接时发送的SYN包和FIN包虽然不携带该数据,但是也会作为一个字节增加对应的序列号。
Acknowledgement Number:是指下次收到数据的序列号。实际上,是指已收到确认应答号减一的数据。发送端收到这个确认应答以后可以认为这个序列号以前的数据已经被正常接收。
Data Offset:4比特构成,单位是4字节。表示TCP所传输的数据部分应该从TCP包的哪个位置开始。也可以理解为TCP的首部长度。不包括可选字段(Options)的话,首部长度是20字节,因此该字段是5。
Reserved:为扩展使用,目前都是0。
Control Flag:8比特构成。该字段又可以细分为如下字段:
都分别各占1比特。
CWR(Congestion Window Reduced):该标志与后面的ECE标志都用于IP首部的ECN字段。ECE标示为1时,则通知对方已经将拥塞窗口缩小。
ECE(ECN-Echo):置为1会通知通信方,从对方到这边的网络有拥塞。在收到数据包的IP首部中ECN为1时将TCP首部中的ECE置为1。
URG(Urgent Flag):为1时,表示包中有需要紧急处理的数据。与Urgent Pointr配合使用。
ACK(Acknowledgement Flag):为1时表示确认应答的字段为有效。TCP规定除了最初建立连接时的SYN包之外该位必须设置为1。
PSH(Push Flag):为1时表示需要将收到的数据立刻传给上层协议。为0时表示不需要立即传是先进行缓存。
RST(Reset Flag):为1时表示TCP连接中出现异常必须强制断开连接。
SYN(Synchronize Flag):用于建立连接。为1时表示希望建立连接,并在其序列号的字段进行初始值的设定。
FIN(Fin Flag):为1时表示今后不会再有数据发送,希望断开连接。
Window Size:16比特构成。用于通知从相同TCP首部确认应答号所指位置开始能接收的数据大小。TCP不允许发送超过此处所示大小的数据。不过为0表示可以发送窗口探测,以了解新的窗口的大小。
Checksum:做校验和的目的如下图:
Urgent Pointer(紧急指针):16比特构成,只有在URG为1时有效。表示本报文段中紧急数据的指针。从数据部分的首位到紧急指针所指的位置为止为紧急数据。
Options:长度最大为40比特。值如下:
其中类型2的MSS用于在建立连接时决定最大段长度的情况。
网友评论