TCP的流量控制

TCP的流量控制通过滑动窗口机制实现,接收端根据资源动态调整发送窗口。发送方发送数据后设置重传计时器,接收到确认报文后更新窗口大小并删除已确认数据。其他保证可靠传输的机制包括超时重传、拥塞控制和校验和。当出现死锁时,通过持续计时器和零窗口探测报文段避免。
摘要由CSDN通过智能技术生成

1. 概述

实现方式: TCP的流量控制通过滑动窗口机制来实现,数据接收端可根据自己的资源情况,随时动态地调整对方的传输窗口大小。

注:

  1. 滑动窗口概念不仅存在于数据链路层,也存在于传输层,两者有不同的协议,但基本原理是相近的。其中一个重要区别是,一个是针对于的传送,另一个是字节数据的传送(TCP是面向字节的)。
  2. TCP是面向字节流的,发送的数据块视为一连串无结构的字节流,每次发送提取一部分字节构建一个TCP报文段,即TCP不保证接收方收到的数据块与发送方的数据库大小相同。这是TCP实现可靠传输、流量控制、拥塞控制的基础

在这里插入图片描述

2. 过程总结

假设A要向B发送数据,主机建立TCP连接时,B告诉A接收窗口rwnd 的大小
假设A发送的每个TCP报文段可携带100个字节数据,每个小格子是100个字节数据的序号

  1. A向B将窗口内的数据封装成报文段发送(在发送数据后,便立刻创建一个该报文段的重传计时器),凡是没有收到确认的数据都会保留在发送缓存,以便在超时重传时使用
  2. B会对接收到的报文段进行累计确认,返回确认报文段,确认位ACK=1(在建立连接后ACK都为1),ack=201(确认号为接收方期待发送方发送的下一个报文数据的第一个字节的序号), B根据缓存大小返回 rwnd接收窗口大小=300,
  3. A收到B发送的确认报文段:
    ① A会将窗口调整为300
    ② 并删除缓存中已经被确认的数据报
    ③ 则撤销已被确认的报文的重传计时器

假设A发送的数据报中途丢失,该报文段的重传计时器超时后,则A重发报文段,直到B返回确认报文段

3. 其他保证可靠传输的机制

  1. 发送方的 超时重传计时器
  2. 流量控制
  3. 拥塞控制
  4. TCP首部的校验和字段

4. 死锁

当B向A发送了0窗口报文,B此时已经没有空间接受A发送的数据了,通知A停止发送。A在收到后即停止发送,等待一段时间后,B有了一些空间,可以继续接收了,此时再向A发送非0窗口报文。
如果此非0窗口报文在网络中丢失,那么A将一直等待非零窗口的通告,B也一直在等待A发来的数据,这样就会造成死锁

解决:
假设A收到B发送的零窗口通知,A就会启动持续计时器
若持续计时器超时,A会发送零窗口探测报文
B收到后将当前窗口大小值返回给A

  1. 如果窗口仍是0,重启持续计时器,超时后再发送探测报文段
  2. 假设rwnd不为0,则A改变发送窗口大小,开始发送报文段

注意:零窗口探测报文段也有重传计时器,若零窗口探测报文段丢失,当重传计时器超时,零窗口探测报文段会重传

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值