TCP 可靠传输的实现-01以字节为单位的滑动窗口实现

  • TCP 的滑动窗口是以字节为单位的。
  • 发送方 A 和接收方 B 分别维持一个发送窗口和一个接收窗口。
  • 发送窗口表示:在没有收到确认的情况下,可以连续把窗口内的数据全部发送出去。
  • 接收窗口表示:只允许接收落入窗口内的数据。

假定数据传输A发送数据,B给出确认。即发送方A的发送窗囗和接收方B的接收窗口。
在这里插入图片描述
A 发送了 11 个字节的数据
在这里插入图片描述
A 收到新的确认号,发送窗口向前滑动
在这里插入图片描述
A 的发送窗口内的序号都已用完,但还没有再收到确认,必须停止发送。
在这里插入图片描述
发送缓存
在这里插入图片描述
接收缓存
在这里插入图片描述
发送缓存与接收缓存的作用

  • 发送缓存用来暂时存放:
    • 发送应用程序传送给发送方 TCP 准备发送的数据;
    • TCP 已发送出但尚未收到确认的数据。
  • 接收缓存用来暂时存放:
    • 按序到达的、但尚未被接收应用程序读取的数据;
    • 不按序到达的数据。

特殊说明

  • 第一,A 的发送窗口并不总是和 B 的接收窗口一样大(因为有一定的时间滞后)。
  • 第二,TCP 标准没有规定对不按序到达的数据应如何处理。通常是先临时存放在接收窗口中,等到字节流中所缺少的字节收到后,再按序交付上层的应用进程。
  • 第三,TCP 要求接收方必须有累积确认的功能,这样可以减小传输开销。

接收方发送确认

接收方可以在合适的时候发送确认,也可以在自己有数据要发送时把确认信息顺便捎带上。
但请注意两点:

  • 第一,接收方不应过分推迟发送确认,否则会导致发送方不必要的重传,这反而浪费了网络的资源。。
  • 第二,捎带确认实际上并不经常发生,因为大多数应用程序很少同时在两个方向上发送数据。
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值