TCP首部
1. 端口:源端口号(16bit)目的端口(16bit) ,端口传输层与应用层的服务接口。
2.序号: SEQ序号(32bit),TCP连接中传送的数据流的每一个字节都编上一个序号。序号字段的值是本报文段所发送的数据的第一个字节的序号。
3.确认号: ACK序号(32bit),期望收到对方的下一个报文段的数据的第一个字节的序号。只有ACK标志位为1时,确认序号字段才有效,ACK = SEQ+1。
4.数据偏移:占4bit,指出TCP报文段的数据起始处距TCP报文段的起始处有多远。
5.标志位:URG/ACK/PSH/RST/SYN/FIN
URG: 紧急比特 URG=1时,表明紧急指针字段有效。
ACK标志位:确认比特 ACK=1时,确认号字段才有效。
PSH:推送比特,收到比特值为1的报文段,就尽快交付给接收应用程序,不再等待缓存填满再向上交付。
RST:复位比特,RST-1时,表明TCP连接出现严重差错,需释放连接并重新建立连接。
SYN标志位:同步比特,SYN=1时,这是一个连接请求或接受报文。
FIN标志位:终止比特(FINal),释放一个连接。FIN=1时,表明此报文段的发送端的数据已发送完毕,并要求释放连接。
6.窗口:占16bit。用来控制对方发送的数据量,单位字节。TCP连接一端根据设置的缓存空间大小确定自己的接收窗口大小,通知对方以确定对方发送窗口的上限。
7.校验和:占16bit。检验范围包括首部和数据两部分。--
8.紧急指针:占16bit。紧急指针指出在本报文段中紧急数据的最后一个字节的序号。
9.选项字段:长度可变。
10.保留字段:占6bit。预留今后使用,目前置0 。
TCP数据
封装应用层数据。比如HTTP报文的首部和实体主体等数据。
TCP首部和TCP数据部分都会被封装到IP数据包的数据部分里。
参考文献:
王元杰,杨波,周亚宁,陈志刚. 一本书读懂TCP/IP[M]. 北京:人民邮电出版社,2016.