TCP如何保证可靠传输?

TCP如何保证可靠传输?

1.确认应答和序列号
2.超时重传
3.流量控制
4.拥塞控制

1.确认应答和序列号

TCP传输时将每个字节的数据都进行了编号,这就是序列号。tcp按序号发送报文,接收端收到报文后,会给发送端一个ACK确认报文,用来表示已经成功接收到报文,报文中还带有ack,表示下一次发送端应该从哪里开始发送报文。

2.超时重传

如果发送端发送的数据没有收到ACK确认,可能是:(1)发送给接收端的报文丢失了(2)接收端发送的ACK确认报文丢失了。不管是哪种原因,超过一定时间后,没有收到ACK确认,TCP启动超时重传机制,发送端重新发数据,如果接收端已经有了该数据,只是由于ACK确认丢失导致超时重传,会将刚刚发送过来的数据包丢弃。超时重传保证报文即使丢失能再传输,知道传输成功为止,从而实现可靠传输。

3.流量控制

发送端如果数据发送过快,导致接收端的缓冲区很快就满了,如果持续下去,数据溢出缓冲区,就会出现数据丢失。这时需要在发送端和接收端有一个窗口,窗口的作用为:在发送缓冲区,只有在窗口里面的数据,才能被发送,在接收缓冲区,只有在窗口里的数据才能被接收,接收端收到数据之后,会回复ack,发送端会根据ack的值来判断接收能力,从而动态调整窗口大小,实现流量控制。

4.拥塞控制

如果网络出现拥塞,TCP会根据不同情况,采用不同的算法:慢开始,拥塞避免,快重传,快恢复来对窗口大小cwnd和慢开始门限值ssthresh进行调整,从而降低网络拥塞的可能性。

你可能感兴趣的:(tcp)