TCP是如何保证可靠传输的?

如何保证可靠传输?

  1. TCP会对要发送的每一个包进行编号,接收方按照编号对接收到的数据进行排序,将排序好的数据展现给应用层。
  2. TCP接收端会丢弃编号重复的数据包。
  3. 校验和:TCP会保持它的首部和数据的校验和,用于检测子传输过程中数据是否发生变化。如果发现校验和有差错,就丢弃接收到的数据,不对这个接收数据进行确认。
  4. 流量控制:TCP连接的通讯双方都有一个固定大小的缓冲区,接收方只允许发送发发送接收方缓冲区能够接纳的数据。当接收方发现自己的缓冲区容纳不下数据发送方发送的数据时,就提醒发送发要降低发送的速率,防止出现包丢失的情况。使用滑动窗口协议
  5. 拥塞控制:当网络拥挤的时候,降低数据发送的速率。
  6. 自动重传请求(ARQ):每发完一个分组就停止发送,等待对方确认。在收到确认之后再进行下一个分组的发送。
  7. 超时重传:发送端会对发送的数据报设置一个定时器,等待该数据的确认信息。如果不能够及时收到该报文端的确认信息,就重发这个数据报。

自动重传请求(ARQ)

  • 停止等待ARQ:每发完一个分组便停下来等待这个分组的确认信息,如果超时则重新发送。这个思想很简单,但是信道利用率太低。
  • 连续ARQ:发送方维持一个发送窗口,凡是位于发送窗口的分组可以一次性全部发送出去,不需要像停止等待ARQ那样等待分组的确认信息。接收方采用累计确认的策略,对按序到达的最后一个分组发送确认,表明在这个分组之前的所有分组都成功接收了。这显然提高了信道的利用率,但是这个协议不能向发送方正确反映接收方正确收到的所有分组的信息。

流量控制

滑动窗口协议用于流量控制。早期的网络通信中,通信双方不会考虑网络的拥挤情况直接发送数据。由于大家不知道网络拥塞状况,同时发送数据,导致中间节点阻塞掉包,谁也发不了数据,所以就有了滑动窗口机制来解决此问题。滑动窗口协议是用来改善吞吐量的一种技术,即容许发送方在接收任何应答之前传送附加的包。主要是通过设置接收方的确认报文中的窗口字段来控制发送方的窗口大小,从而影响发送方的发送速率。如果设置为0,则发送方不能够发送数据。

滑动窗口可以理解为缓冲区的大小。

拥塞控制

拥塞,指的是网络资源供不应求。主要的思想就是:发送方维持一个拥塞窗口大小的状态变量,这个窗口的大小取决于网络的拥塞程度,动态变化。发送方的窗口大小取接收方接受窗口大小和拥塞窗口大小的最小值。
在这里插入图片描述
拥塞控制采用四个算法:慢开始、拥塞避免、快重传、快恢复。

  • 慢开始:
    慢开始算法的思路是当主机开始发送数据时,如果立即把大量数据字节注入到网络,那么可能会引起网络阻塞,因为现在还不知道网络的符合情况。经验表明,较好的方法是先探测一下,即由小到大逐渐增大发送窗口,也就是由小到大逐渐增大拥塞窗口数值。cwnd初始值为1,每经过一个传播轮次,cwnd加倍。
  • 拥塞避免
    拥塞避免算法的思路是让拥塞窗口cwnd缓慢增大,即每经过一个往返时间RTT就把发送放的cwnd加1.
  • 快重传
    没有快重传,如果数据包丢失了,TCP 将会使用定时器来要求传输暂停。在暂停的这段时间内,没有新的或复制的数据包被发送。有了快重传,如果接收机接收到一个不按顺序的数据段,它会立即给发送机发送一个重复确认。如果发送机接收到三个重复确认,它会假定确认件指出的数据段丢失了,并立即重传这些丢失的数据段,就不会因为重传时要求的暂停被耽误。
  • 快恢复
    当发送方连续接收到三个确认时,就执行乘法减小算法,把慢启动开始门限减半,但是接下来并不执行慢开始算法。
  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值