保留字段——占 6bit,保留为今后使用,但目前应置为 0。
紧急比特 URG——当 URG=1 时,表明紧急指针字段有效。它告诉系统此报文段中有紧急数据,应
尽快传送(相当于高优先级的数据)。
确认比特 ACK——只有当 ACK=1 时确认号字段才有效。当 ACK=0 时,确认号无效。
复位比特 RST(Reset) —— 当 RST=1 时,表明 TCP 连接中出现严重差错(如由于主机崩溃或其他
原因),必须释放连接,然后再重新建立运输连接。
同步比特 SYN——同步比特 SYN 置为 1,就表示这是一个连接请求或连接接受报文。
终止比特 FIN(FINal)——用来释放一个连接。当 FIN=1 时,表明此报文段的发送端的数据已发送完
毕,并要求释放运输连接。
窗口字段——占 2 字节。窗口字段用来控制对方发送的数据量,单位为字节。TCP 连接的一端根据
设置的缓存空间大小确定自己的接收窗口大小,然后通知对方以确定对方的发送窗口的上限。
检验和——占 2 字节。检验和字段检验的范围包括首部和数据这两部分。在计算检验和时,要在
TCP 报文段的前面加上 12 字节的伪首部。
紧急指针字段——占 16bit。紧急指针指出在本报文段中的紧急数据的最后一个字节的序号。
选项字段——长度可变。TCP 首部可以有多达 40 字节的可选信息,用于把附加信息传递给终点,或
用来对齐其它选项。
填充字段——这是为了使整个首部长度是 4 字节的整数倍。
TCP 首部的主要选项:
最大报文段长度 MSS(Maximum Segment Size)是 TCP 报文段中的数据字段的最大长度。
MSS 告诉对方 TCP:“我的缓存所能接收的报文段的数据字段的最大长度是 MSS 个字
节。”
窗口扩大因子,用于长肥管道。
时间戳,可用于测量往返时延 RTT。
TCP 的数据编号与确认
TCP 协议是面向字节的。TCP 将所要传送的报文看成是字节组成的数据流,并使每一个字
节对应于一个序号。
在连接建立时,双方要商定初始序号。TCP 每次发送的报文段的首部中的序号字段数值表
示该报文段中的数据部分的第一个字节的序号。
TCP 的确认是对接收到的数据的最高序号表示确认。接收端返回的确认号是已收到的数据
的最高序号加 1。因此确认号表示接收端期望下次收到的数据中的第一个数据字节的序号。
为提高效率,TCP 可以累积确认,即在接收多个报文段后,一次确认。
一、TCP 的流量控制
TCP 采用大小可变的滑动窗口进行流量控制。窗口大小的单位是字节。
TCP 报文段首部的窗口字段写入的数值就是当前给对方设置的发送窗口数值的上限。
发送窗口在连接建立时由双方商定。但在通信的过程中,接收端可根据自己的资源情况,
随时动态地调整对方的发送窗口上限值(可增大或减小)。
评论0