图片来源自网络
- 面向连接的、可靠地、基于字节流的传输层通信协议
- 将应用层的数据流分割成报文段并发送给目标节点的TCP层
- 数据表都有序号,对方收到则发送ACK确认,未收到则重传
- 使用校验和来检验数据在传输过程中是否有误
TCP报文头:
- 第一层:源端口与目标端口,各占两个字节,一共四个字节
- 第二层:报文段序号,每一个字节都会有对应的序号,占四个字节
- 接受了第一段报文段的第一个字节序号为100,报文段一个20个字节
- 那么下一次接受的报文段的第一个字节序号应该为121
- 第三层:期望收到下一段报文的第一个字节的序号,也就是上面例子的121
- 第四层:
- offset表示数据偏移,是长度不固定的,用于指出TCP报文数据距离TCP报文的起始处有多远。
- Reserved保留段
- TCP Flags:
- URG:紧急指针标志
- ACK:确认序号标志
- PSH:push标志
- RST:重置连接标志
- SYN:同步序号,用于建立连接过程
- FIN:finish标志,用于释放连接
- Window指的是滑动窗口的大小,用于告诉发送端,接收端的缓存大小,以此用来控制发送端的发送速率。根据RTT与RTO做流量控制与乱序重排。
- RTT:发送一个数据包到收到对应的ACK,所花费的时间
- RTO:重传时间间隔,TCP在传送数据时会开启一个重传时间定时器,只有对方回复了ACK才会停止,不然就会触发重传。RTO是由RTT计算出来的。
- 滑动窗口主要保证TCP的可靠性、流控特性
- 第五层
- Checksum:校验和:
- 校验和(checksum)是指传输位数的累加,当传输结束时,接收者可以根据这个数值判断是否接到了所有的数据。如果数值匹配,那么说明传送已经完成。通常是以十六进制表示。
- Urgent Pointer:紧急指针,只有当TCP Flags为URG才有
- TCP Options:可变长度,可选项
- Checksum:校验和: