Java-TCP拥塞控制和流量控制

1.流量控制:
  1.流量控制往往指的是点对点通信量的控制,是个端到端的问题。
  2.流量控制所要做的就是控制发送端发送数据的速率,以便使接收端来得及接受。
  3.方法:滑动窗口:
    1.说明了利用可变窗口大小进行流量控制。设主机A向主机B发送数据。
    2.双方确定的窗口值是400.再设每一个报文段为100字节长,序号的初始值为seq=1,
      图中的箭头上面大写ACK,表示首部中的却认为为ACK,小写ack表示确认字段的值。
      接收方的主机B进行了三次流量控制。
    3.第一次把窗口设置为rwind=300,
      第二次减小到rwind=100最后减到rwind=0,即不允许发送方再发送过数据了。
      这种使发送方暂停发送的状态将持续到主机B重新发出一个新的窗口值为止。
   
    4.死锁
      假如,B向A发送了零窗口的报文段后不久,B的接收缓存又有了一些存储空间。
      于是B向A发送了rwind=400的报文段,然而这个报文段在传送中丢失 了。
      A一直等待收到B发送的非零窗口的通知,而B也一直等待A发送的数据。
      **这样就死锁了。
      为了解决这种死锁状态,TCP为每个连接设有一个持续计时器。
      只 要TCP连接的一方收到对方的零窗口通知,就启动持续计时器,
      若持续计时器设置的时间到期,就发送一个零窗口探测报文段(仅携带1字节的数据),
      而对方就在确认这个探测报文段时给出了现在的窗口值。

在这里插入图片描述

2.拥塞控制:
  1.拥塞控制就是防止过多的数据注入到网络中,
    这样可以使网络中的路由器或链路不致过载。
  2.拥塞问题是一个全局性的问题,涉及到所有的主机、所有的路由器、
    以及与降低网络传输性能有关的所有因素。
  3.方法:
    慢开始、拥塞避免、快重传和快回复。

猜你喜欢

转载自blog.csdn.net/weixin_41227335/article/details/87934467
今日推荐