TCP/IP协议卷学习---TCP部分(十 TCP的成块数据流)

1 滑动窗口与停止等待
在TFTP协议中使用的停止等待协议,即发送一个数据之后需要等待接收到确认之后才能发送下一份数据。
滑动窗口允许发送方在停止并等待确认前可以连续发送多个分组。由于发送方不必每发一个分组就停下来等待确认,因此该协议可以加速数据的传输。
2三种数据流
(1) 正常数据
报文段7的A C K的序号之所以是2 0 4 8而不是3 0 7 3是由以下原因造成的: 当一个分组到达时,它首先被设备中断例程进行处理,然后放置到 I P的输入队列中。三个报文段 4、5和6依次到达并按接收顺序放到 I P 的输入队列。 I P 将按同样顺序将它们交给 T C P 。当T C P处理报文段 4时,该连接被标记为产生一个经受时延的确认。 T C P处理下一报文段( 5) ,由于T C P现在有两个未完成的报文段需要确认,因此产生一个序号为 2 0 4 8的A C K(报文段 7) ,并清除该连接产生经受时延的确认标志。 T C P处理下一个报文段( 6) ,而连接又被标志为产生一个经受时延的确认。在报文段9到来之前,由于时延定时器溢出,因此产生一个序号为 3 0 7 3的A C K (报文段8) 。报文段8中的窗口大小为 3 0 7 2,表明在 T C P的接收缓存中还有 1 0 2 4个字节的数据等待被应用程序读取。报文段11 ~ 1 6说明了通常使用的“隔一个报文段确认”的策略。报文段 11、1 2和1 3到达并被放入 I P的接收队列。当报文段 11被处理时,连接被标记为产生一个经受时延的确认。当报文段1 2 被处理时,它们的 A C K(报文段1 4 )被产生且连接的经受时延的确认标志被清除。报文段1 3使得连接再次被标记为产生经受时延。但在时延定时器溢出之前,报文段 1 5处理完毕,因此该确认立刻被发送。
在这里插入图片描述
(2) 慢发送快接收
这一次接收方没有发送一个序号为 3 0 7 3的A C K,而是等待并发送
序号为 4 0 9 7的A C K。接收方仅发送了 4个A C K(报文段 7、1 0、1 2和1 5) :三个确认了 2 0 4 8字节,另一个确认了 1 0 2 4字节。最后 1 0 2 4字节数据的 A C K出现在报文段 1 7中,它与 F I N的A C K一道发送(比较该图中的报文段 1 7与图2 0 - 1中的报文段 1 6和1 8) 。
在这里插入图片描述
(3) 快发送慢接收
发送方发送 4个背靠背( b a c k - t o - b a c k)的数据报文段去填充接收方的窗口,然后停下来等待一个 A C K。接收方发送 A C K(报文段 8) ,但通告其窗口大小为 0,这说明接收方已收到所有数据,但这些数据都在接收方的 T C P 缓冲区,因为应用程序还没有机会读取这些数据。另一个A C K(称为窗口更新)在 17.4 ms 后发送,表明接收方现在可以接收另外的 4 0 9 6个字节的数据。虽然这看起来像一个 A C K,但由于它并不确认任何新数据,只是用来增加窗口的右边沿,因此被称为窗口更新。发送方发送最后 4个报文段(1 0 ~ 1 3) ,再次填充了接收方的窗口。注意到报文段 1 3中包括两个比特标志: P U S H和F I N。随后从接收方传来另外两个 A C K,它们确认了最后的 4 0 9 6字节的数据(从 4 0 9 7到8 1 9 2字节)和F I N(标号为8 1 9 2) 。
在这里插入图片描述
3滑动窗口的确认机制(结合2中三种数据流得出)
在这里插入图片描述
将字节从 1至11进行标号。接收方通告的窗口称为提供的窗口(offered window),它覆盖了从第 4字节到第 9字节的区域,表明接收方已经确认了包括第 3字节在内的数据,且通告窗口大小为 6。窗口大小是与确认序号相对应的。发送方计算它的可用窗口,该窗口表明多少数据可以立即被发送。当接收方确认数据后,这个滑动窗口不时地向右移动。窗口两个边沿的相对运动增加或减少了窗口的大小,如果左边沿到达右边沿,则称其为一个零窗口,此时发送方不能够发送任何数据。我们使用三个术语来描述窗口左右边沿的运动:
1) 称窗口左边沿向右边沿靠近为窗口合拢。这种现象发生在数据被发送和确认时,因为窗口的左边沿受另一端发送的确认序号的控制,因此不可能向左边移动(如果接收到一个指示窗口左边沿向左移动的 A C K ,则它被认为是一个重复 A C K,并被丢弃。)。
2) 当窗口右边沿向右移动时将允许发送更多的数据,我们称之为窗口张开。这种现象发生在另一端的接收进程读取已经确认的数据并释放了 T C P的接收缓存时。
3) 当右边沿向左移动时,我们称之为窗口收缩。 Host Requirements RFC强烈建议不要使用这种方式。但 T C P必须能够在某一端产生这种情况时进行处理。

4 窗口大小的控制
应用程序可以通过修改TCP发送与接受缓冲区大小来调整最大窗口,SO_SNDBUF与 SO_RCVBUF

5 PUSH
T C P接收到一个设置了P U S H标志的报文段时,它需要立即将这些数据递交给服务器进程而不能等待判断是否还会有额外的数据到达。但一般都会忽略。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值