传输的可靠性的主要方式有:
- 校验和
- 序列号
- 确认应答
- 超时重传
- 连接管理
- 流量控制
- 拥塞控制
校验和
计算方式:在数据传输的过程中将发送的数据都当做一个16位的整数。将这些整数加起来,进位不丢弃,加在最后面,最后取反,得到校验和。
发送方:在发送数据之前进行计算
接收方:受到后计算,并与发送方的计算结果进行对比。
确认应答与序列号
序列号: TCP在传输过程中将每个字节的数据都进行了编号
确认应答:TCP在传输过程中,每次收到对方的数据后,都会对传输方进行确认应答。也就是发送ACK报文。ACK报文带有对应的序列号,告诉对方,收到那些数据,接下来从哪里开始发。
序列号 不仅仅有应答的作用,能够依靠序列号进行去重和排序。
超时重传
发送方没有收到响应的ACK报文可能有两点
1.全体丢包,对方没有收到
2,收到数据,ACK响应由于网络问题,发生丢包
在一定时间里没有收到ACK,对数据进行重新发送。
等待时间 是动态计算的
连接管理
通过三次握手和四次挥手的过程进行。
流量控制
为了防止发送端发送速度过快,导致接收端的结束缓冲区很快被填满,进而导致一系列的问题。
TCP根据接收到对数据的处理能力,决定端的发送速度,这个就是流量控制。(信息是通过ACK报文发送,tcp16字段的表头)满了之后,一段时间后会发送窗口试探包。
拥塞控制
为了防止刚发送时就发送大量数据,在网络拥堵的时候,可能会造成一些问题。
tcp引入了慢启动机制,在开始的时候先发送少量数据探探路,再决定用多大的速度进行传输。
拥塞窗口来确定发送的速度。拥塞窗口的增长速度是指数增长,在超过一定的阈值的时候会进行线性增长,在发生网络拥堵,超时重传的时候,阈值会降低为原来的一般,拥塞窗口重置为1;
拥塞控制是TCP在传输时尽可能快的将数据传输,并且避免拥塞造成的一系列问题。是可靠性的保证,同时也是维护了传输的高效性。