TCP报文首部格式
TCP协议的功能都在其首部中得以体现,TCP报文的首部前20个字节是固定的,也就是说TCP报文的首部长度的最小值是20
- 序号:
占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字节。