TCP的滑动窗口机制

TCP的滑动窗口机制 
      TCP这个协议是网络中使用的比较广泛,他是一个面向连接的可靠的传输协议。既然是一个可靠的传输协议就需要对数据进行确认。TCP协议里窗口机制有2种:一种是固定的窗口大小;一种是滑动的窗口。这个窗口大小就是我们一次传输几个数据。对所有数据帧按顺序赋予编号,发送方在发送过程中始终保持着一个发送窗口,只有落在发送窗口内的帧才允许被发送;同时接收方也维持着一个接收窗口,只有落在接收窗口内的帧才允许接收。这样通过调整发送方窗口和接收方窗口的大小可以实现流量控制。

      TCP滑动窗口技术通过动态改变窗口大小来调节两台主机间数据传输。每个TCP/IP主机支持全双工数据传输,因此TCP有两个滑动窗口:一个用于接收数据,另一个用于发送数据。TCP使用肯定确认技术,其确认号指的是下一个所期待数据包的序列号。 假定发送方设备以每一次三个数据包的方式发送数据,也就是说,窗口大小为3。发送方发送序列号为1、2、3的三个数据包,接收方设备成功接收数据包,用序列号4确认。发送方设备收到确认,继续以窗口大小3发送数据。当接收方设备要求降低或者增大网络流量时,可以对窗口大小进行减小或者增加,本例降低窗口大小为2,每一次发送两个数据包。当接收方设备要求窗口大小为0,表明接收方已经接收了全部数据,或者接收方应用程序没有时间读取数据,要求暂停发送。发送方接收到携带窗口号为0的确认,停止这一方向的数据传输。


固定窗口大小问题

 
 
这里我们可以看到假设窗口的大小是1,也是就每次只能发送一个数据,并且发送方只有接受方对这个数据进行确认了以后才能发送下一个数据。 所以就会存在如下两个问题:

  1. 如果说窗口过小,那么当传输比较大的数据的时候需要不停的对数据进行确认,这个时候就会造成很大的延迟。
  2. 如果说窗口的大小定义的过大。我们假设发送方一次发送100个数据。但是接收方只能处理50个数据。这样每次都会只对这50个数据进行确认。发送方下一次还是发送100个数据,但是接受方还是只能处理50个数据。这样就有不必要的数据来拥塞我们的链路。

所以我们就引入了滑动窗口机制,窗口的大小并不是固定的而是根据我们之间的链路的带宽的大小、链路是否拥护塞、接受方是否能处理这么多数据,三个元素共同决定。


滑动窗口是工作机制

 

 

 
首先是第一次发送数据这个时候的窗口大小是根据链路带宽的大小来决定的。我们假设这个时候窗口的大小是3。这个时候接受方收到数据以后会对数据进行确认告诉发送方我下次希望手到的是数据是多少。这里我们看到接收方发送的ACK=3(这是发送方发送序列2的回答确认,下一次接收方期望接收到的是3序列信号)。这个时候发送方收到这个数据以后就知道我第一次发送的3个数据对方只收到了2个。就知道第3个数据对方没有收到。下次在发送的时候就从第3个数据开始发。这个时候窗口大小就变成了2 。 
 

这个时候发送方发送2个数据。 

 
看到接收方发送的ACK是5就表示他下一次希望收到的数据是5,发送方就知道我刚才发送的2个数据对方收了这个时候开始发送第5个数据。 
这就是滑动窗口的工作机制,当链路变好了或者变差了这个窗口还会发生变话,并不是第一次协商好了以后就永远不变了。        

         
滑动窗口协议优势:

  1. 允许发送方在停止并等待确认前可以连续发送多个分组。由于发送方不必每发送每确认,因此该协议可以加速数据的传输。 
  2. 在接收窗口向前滑动时(与此同时也发送了确认),发送窗口也会同步向前滑动,收发两端的窗口按照以上规律不断地向前滑动 ,可以动态调整窗口大小

转载自:https://www.cnblogs.com/luoquan/p/4886345.html

  • 20
    点赞
  • 77
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
TCP滑动窗口机制包括以下几种: 1. 停止等待协议(Stop-and-Wait Protocol):发送方每发送一段数据就停下来等待确认,接收方每接收到一段数据就发送确认,确认号表示接收成功的最后一个字节的序号。缺点是通信效率低下,因为发送方必须等待确认才能发送下一段数据。 2. 1比特滑动窗口协议(1-bit Sliding Window Protocol):发送方在等待确认时,可以同时发送多个数据包,最多可以发送两个未确认的数据包,即窗口大小为1。接收方接收到数据后,如果数据正确无误,则发送确认;如果数据有误,则不发送确认,发送方会在一定时间后重新发送数据。 3. 固定窗口大小协议(Fixed Window Protocol):发送方和接收方都有一个固定的窗口大小,发送方可以发送窗口中的所有数据,而接收方只有在窗口中的所有数据都正确接收后才会发送确认。缺点是窗口大小固定,不能根据网络状况进行动态调整,可能会导致网络拥塞或通信效率低下。 4. 可变窗口大小协议(Variable Window Protocol):发送方和接收方的窗口大小可以根据网络状况进行动态调整,以提高网络通信效率。发送方可以根据接收方的确认信息来调整窗口大小,而接收方则可以根据自己的处理能力和网络状况来调整窗口大小。这种协议可以提高网络通信效率,但也需要更复杂的算法和机制来实现。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值