其他分享
首页 > 其他分享> > TCP如何保证可靠传输?

TCP如何保证可靠传输?

作者:互联网

Tcp如何保证可靠传输呢?

什么是TCP?

TCP是一个运输层的传输协议,是面向连接的、可靠的、基于字节流的协议。
我们来看一下这几个概念:
面向连接:TCP的传输必须是有连接的,即要用三次握手建立可靠的通信信道,当然,这个信道是全双工的。

基于字节流:应用层的数据即应用层报文要在网络中传输,TCP会把报文以字节单位在网络中进行传输。

可靠的:即在传输过程中不会发生数据丢失,这个丢失指的不是数据包在网络中丢失,而是指的是Client发多少包Server就接受了多少包,没有漏传、错传的现象。

TCP如何保证可靠传输呢?

  1. 应用层报文被TCP分成最适合传输的数据块,TCP给这些数据块编上号。这样能保证数据有序。
  2. TCP头部有个检验和,TCP保持它头部和数据的检验和,如果检验有差错则丢弃和不确认接收。
  3. TCP会丢弃重复的数据。
  4. 流量控制
  5. 拥塞控制
  6. 停止等待协议

流量控制

流量控制的前提:以字节为单位的滑动窗口。
在这里插入图片描述

接收方发送的确认报文中的窗口字段可以控制放松方的发送窗口,若将窗口字段设为0,则发送方不能发送数据。

拥塞控制

  1. 慢开始
    当主机开始发送数据时,大量字节涌入网络会引起阻塞,则将cwnd滑动窗口值先设为1,每传输一次令cwnd * 2 *(1,2,4,8)

  2. 拥塞避免
    而拥塞避免则是每传输一次(经过一个RTT),就令cwnd+1

开始传输时设满开始门限ssthresh,当cwnd < ssthresh时采用慢开始算法 ,cwnd > ssthresh时采用拥塞避免算法,两者相等时可任意二选一。
当发生超时的时候,将ssthresh / 2,开始上述步骤。

  1. 快重传
    在这里插入图片描述

  2. 快恢复
    丢失个别报文段,不启动慢开始算法,执行快恢复算法。ssthresh = cwnd / 2,同时让cwnd = ssthresh进行快恢复。此时执行的是拥塞避免算法。

停止等待协议

确认丢失
在这里插入图片描述

确认迟到
在这里插入图片描述

标签:ssthresh,报文,TCP,可靠,传输,拥塞,cwnd
来源: https://blog.csdn.net/weixin_44482239/article/details/118851278