始于初见,止于终老

TCP报文首部格式

TCP协议的功能都在其首部中得以体现,TCP报文的首部前20个字节是固定的,也就是说TCP报文的首部长度的最小值是20,格式如下:
tcp_first_format

  • 序号:

占4字节,TCP是面向字节流的,在一个TCP连接中传送的字节流的每一个字节都按顺序编号,很简单的例子:比如传送1000个字节的字节流,其中每个字节都是有编号的,比如说是0-999,这里的序号是指发送的时候本报文段的第一个字节的序。

  • 确认号:

占4字节,是期望收到下一个报文段的第一个数据字节的序号。如果确认号=N,则:到序号为N-1为止所有的数据都已经正确收到。

  • 首部长度:

占4个位,首部长度也称为数据偏移,其代表的意思是本报文的数据起始处距离本报文段的起始处有多远,因为TCP首部中存在可选字段,所以首部长度不固定,所以这个字段是必要的,可以明确指出TCP报文的首部长度。因为其是按4字节为单位的,所以4位二进制数能表示的最大数是15,也就是首部最大长度是60字节。

  • 保留:

占6位,目前未使用,置0。
码元比特:其实是有6个控制位,其中包括:URG,ACK,PSH,RST,SYN,FIN;

  • 窗口:

占16个字节,这里的窗口不是指发送方的窗口,而是指接收端此时还能接收多少数据,因为接收方接收数据的缓冲区的大小是有限的。此处的窗口值是作为发送方设置其发送窗口大小的依据。

  • 校验和:

占2个字节,用来校验首部和数据部分。

  • 紧急指针:

占2个字节,只有在URG位=1的时候才有效。

  • 选项:

可选字段最长40字节。

添加新评论