计算机网络基础
大家好呀!我是小笙,本章我主要分享计算机网络基础 - 传输层(2)学习总结,希望内容对你有所帮助!!
传输层
可靠数据传输的原理
滑动窗口协议
发送缓冲区
内存中的一个区域,落入缓冲区的分组可以发送
- 未发送的分组:落入缓冲区的分组可以连续发送出去
- 已经发送出去的但未确认的分组:只有得到确认之后才可以删除
容量:一次最多可以发送多少个未经确认的分组
- 停止等待协议可以发送 1 个
- 流水线协议可以发送多个(不能很大,链路利用率不能超过 100%)
发送窗口
发送缓冲区的一个范围(发送缓冲区是可以发送的范围,发送窗口是已经发送但未确认的分组)
发送窗口发送数据过程
-
当发送窗口没有数据的时候,后沿和前沿会重叠在一起
-
当有一个分组已经发送但是还没有确认的时候,前沿会往前移动一格
-
当发送窗口已经发送完全部数据(最大不能超过缓冲区的大小)
-
当发送的数据已经被确认,则后沿向前移动(后沿移动不能超过前沿)
注意:真实发送情况是发送缓冲区不动,分组在动;以下为了好理解,相对而言等价于缓冲区在动,分组不动
接收窗口
接收窗口大小等于接收缓冲区,接收窗口用于控制哪些分组可以接收
- 只有收到的分组序号落入接收窗口内才允许接收
- 接收窗口尺寸 Wr = 1,则只能顺序接收
- 接收窗口尺寸 Wr > 1,则可以乱序接收(但提交给上层的分组,要按序)
- 若序号在接收窗口之外,则丢弃
滑动:低序号的分组到来,接收窗口移动;高序号分组乱序到,缓存但不交付(因为提交给上层的数据不允许失序),不滑动
发送确认
- 累计确认:发送连续收到的最大的分组的确认(接收窗口尺寸 Wr = 1)
- 非累计确认:收到并缓存下哪个分组,就发送那个分组的确认(接收窗口尺寸 Wr > 1)
流水线协议
允许发送方在未得到对方确认的情况下一次发送多个分组
- 必须增加序列号的范围
- 在发送方和接收方之间要有缓冲区域(最低限度应当能缓存下那些已经发送但是未确认的分组)
两种通用的流水线协议:回退 N 步(GBN)和选择重传(SR)