TCP流量控制和拥塞控制

传输

  • TCP支持全双工
  • 传输涉及到流量控制,拥塞控制和具体细节。

流量控制

接受方和发送方的速度不一致,发送方要控制接收方的速度。
滑动窗口的大小意味着接收方还有多大的缓冲区可以用于接收数据。

  • 序号和确认号
  • seq序号 是指这个段的第一个字节序号

  • ack确认号 指期望收到段的第一个字节序号,且序号前的数据全部接收

  • 流量控制
  • 接收方发送确认时携带一个接收窗口大小,然后发送方会将自己的窗口设置成 min[接收方窗口,拥塞窗口]

  • 特殊情况
  • 接收窗口大小为0,如果接收方发送窗口不为0的确认报文段丢失了,那么会陷入死锁的局面

    • 解决方案: 为每一个发送方设置一个计时器,当发送方为窗口为0时,每隔一段时间会向接收方发送一个零探测指针,接收方收到后,会发送确认报文段。
  • 发送的报文段丢失,收不到对应确认报文

    • 解决方案: 不会滑出窗口,重传计时器超时会被重传

拥塞控制

  • 慢开始门限值ssthresh和拥塞窗口cwnd
  • 转

  • 二种状态
  • 慢开始 : 每次 cwnd = cwnd * 2

  • 拥塞避免: 每次 cwnd =cwnd + 1

  • 三种条件
  • ssthresh和cnwd之间的大小变化

  • 超时重传

    • 发生条件 重传计时器超时(一定时间内未收到对应确认报文段)
    • 更改状态
      • ssthresh = cnwd/2
      • cnwd = 1
      • 慢开始
  • 快重传

    • 原因 避免报文丢失带来的超时重传误判
    • 条件
      • 接收方收到报文后立即发送确认报文
      • 接收方收到的不是顺序报文也要发确认报文
      • 发送方连续三次收到相同确认报文后重传,并开始快恢复
    • 重传后更改状态(快恢复)
      • ssthresh = cnwd = cnwd/2
      • 拥塞避免
      • 在这里插入图片描述
      • 拥塞重传时间 略

细节

  • 发送方
  • a-------------b----------l--------c--------------d
  • 设b-c是滑动窗口,b-l是已经发送的数据。
  • ab 是已经发送且收到确认的数据;b-l是发送但并未收到确认的数据;l-c是可以发送但没有发送是数据,c-d不能发送的数据
  • 接收方
  • a-------------b------------------c--------------d
  • 设bc是接收窗口
  • ab是已经接收到的数据;发送确认号时,只会发送bc内按序收到的最高序号进行确认
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值