tcp 报文段结构
序号:指字节流首字节的编号,例如100 000字节的数据,MSS为1000字节,
那么第一个报文段的序号为0,第二个报文段的序号为1000,第三个为2000
由于报文段的长度是可变的,所以不能对报文段进行确认,只能对字节进行确认
确认序号:收到0~199字节,和300~456字节,确认序号为200,300~456字节会被缓存下来
TCP提供的是累积确认
首部:一般是20字节,
接收窗口:表示接收方愿意接收的字节数量
首部长度:表示以32位字为单位的首部长度
可选且变长的选项字段:必须是32的倍数,最多40字节,第1字节指明选项类型,
第2字节指明选项长度(单位字节),后面是选项本身
可用于协商MSS,
或者用作窗口调节因子,最多可将窗口大小字段向左移动14位
或者携带时间戳,用来计算来回时间,或用来扩展32位序号,防止回绕
标志字段:ack表示确认字段是有效的,rst、syn、fin用于连接建立和拆除,
syn用于建立连接
rst用于重置一个混乱的连接,或者拒绝无效的段或连接请求,
收到srt后TCP会立即断开连接
fin释放连接
psh表示接收方应立即交付给上层,
urg表示报文段中存在着被发送方上层实体置为紧急的数据
紧急数据的最后一个字节有紧急指针指出,此时tcp必须通知接收端的上层实体
实践中,psh、urg、紧急指针未使用到
保留6位,已使用了2位:ecn表示接收方检测到网络拥塞,给发送方发送ecn
cwr表示发送方收到了ecn,接收方不要再发ecn了