TCP协议如何保证可靠传输?

243 阅读3分钟

TCP是一种可靠传输协议,其下几种机制保证其可靠传输:

TCP传输协议的特点:面向字节流、传输可靠、面向连接。

1、校验和:

  • 计算方式:在数据传输过程中,将发送的数据都当做16位的整数,将这些整数加起来,并且前面的进位不能丢,补在后面,最后取反,取得校验和。

  • 发送方:在发送数据之前计算校验和,并进行校验和的填充;

  • 接收方:收到数据后,对数据以同样的方式进行计算,求出校验和,与发送的进行对比。

2、序列号:

TCP传输数据时将每个字节的数据都进行了编号,就是序列号。

序列号的作用不仅仅是应答的作用,有了序列号能够将接收到的数据根据序列号排序,并且去掉重复序列号的数据。

3、确认应答:

TCP传输的过程中,每次接收方收到数据后,都会对传输方进行确认应答。也就是ACK报文。这个ACK报文带有对应的确认序列号,告诉发送方,接收到了哪些数据,下一次的数据从哪里开始。

4、超时重传;

发送方没有接受到响应的ACK报文原因可能有俩点:

  • 数据在传输过程中由于网络原因等直接全体丢包,接受方根本没有接收到;

  • 接收方接收到响应数据后,但是发送的ACK报文响应由于网络原因丢包。

超时重传机制:发送完在发送完数据后等待一段时间,时间到达没有接收到ACK报文,那么对刚才发送的数据进行重新发送。如果是上面说的第一个原因,接收方第二次收到第二次重发的数据后,便进行ACK应答。如果是上面说的第二个原因,接收方发现接受的数据已存在, (判断存在的根据就是序列号,所以上上面的序列号有去除重复数据的作用),那么直接丢弃,仍旧发送ACK应答。

保证能够在任何环境下都有一个高性能 的通信,因此这个最大超时时间是动态计算的。

5、连接管理;

三次握手和四次挥手。

6、流量控制;

TCP根据接收端处理数据的能力,决定了发送端的发送速度,这个叫流量控制。

在TCP协议的报头信息中,有一个16位字段的窗口大小,窗口大小的内容实际上就是接收端接收到数据缓存区 的剩余大小。数字越大,说明接收端的数据缓存区的剩余空间越大。网络的吞吐量越大。

7、拥塞控制;

TCP引入慢启动的机制,在开始发送数据时,先发送少量的数据探路。探清当前的网络状态即可,再决定多大的速度进行传输。引入拥塞窗口的概念。