TCP(三)控制

TCP连接管理

涉及双方四人,通信的两端和每端有的应用层和TCP协议栈

ack标志位在整个tcp连接期间,只有第一个segment 值为零,以后都是1

TCP为了追求可靠性,进行发送量的控制 —— 广义上的“流量控制
发送方如果无脑发送数据,接收方的缓冲区满了就堵塞了
所以要进行发送量的控制

发送量受到哪些因素影响?

  1. 接收方的接受能力(流量控制)
  2. 网络情况的影响(拥塞控制)

流量控制

Flow Control 根据接收方接受能力,进行发送量的控制机制

  1. 作为发送方,如何得知接收方的接受能力?
    在Header中 有16位的窗口大小在这里插入图片描述
    在这里插入图片描述
    在握手的时候进行交流沟通在这里插入图片描述
  2. 回到发送方角度,发送方是如何进行发送量控制的
    1. 发送方的发送缓冲区被分为了哪些区域在这里插入图片描述
    2. TCP的发送缓冲区是一个循环Buffer
      在这里插入图片描述
      收到ack就向右滑动:发送方发送缓冲上两个下标。控制当前能发送的数据量。随着收到对方的应答ack之后,进行更新调整。—— 不动或者像右滑

  1. 为了保证可靠性 —— 别做无用功,所以根据对方的接受能力来调节发送量的大小
  2. 通过TCP Header 中的窗口传递接受能力
  3. 发送方TCP协议栈内部通过溢血下标,标注发送缓冲区的各个区域
    已发送 已应答 可以再次使用
    已发送 未应答 算在接受能力之内
    有数据 待发送
    完全可用空间
  4. 这些下标中,有一组标识出滑动窗口的概念,本质上就是根据对方的应答 + 接受能力,实时记录下一步的情况
  5. 滑动窗口主要靠对方的应答进行更新
  6. 平时提到的窗口 指的是TCP Header 中的窗口字段,表示的意思是接收方的接受能力,滑动窗口指的是TCP协议栈,发送方的控制发送量的机制。

在这里插入图片描述
这种情况下,1000-2000丢了,导致后续的无法应答
虽然后续的也受到了但是不会应答3000,应答3000就代表之前的都受到了

这种情况下,连续收到了1000的应答。十有八九就是1000-2000丢包了。所以不等超时,就快速的重传,就称为快重传

流量控制是根据接收方能力来控制发送量的机制


拥塞控制

根据网络情况,进行发送量控制(启动,发送量控制发送也是通过滑动窗口控制)

  1. 接收方能力(比如是1000)网络承载能力(500)
  2. 发送量大小 = MIN(接收方能力,网络承载能力)

发送方如何得知网络承载能力?和接收窗口不一样
承载能力需要估算(发展中的算法) 对方发送方可以简单地通过单位时间内,丢包频率来估算,承载能力记录为拥塞窗口。
3. TCP谨慎 —— 做最坏的打算(一开始承载能力很低)
4. 随着时间发展,只要没有出现单位时间内频繁丢包的情况。拥塞窗口就会变大在这里插入图片描述
在这里插入图片描述
因此,TCP的拥塞控制就是慢启动
指数增长 到 线性增长
遇到网络拥塞 重新开始启动

能发多少货 有谁决定?
由流量控制 + 拥塞控制共同决定


TCP三个特点

可靠
有连接
面向字节流

在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值