TCP流量控制问题

TCP流量控制问题

笔记整理自

https://www.bilibili.com/video/BV1zb4y1o7f9?spm_id_from=333.999.0.0

  • A进程和B进程通过TCP连接进行双向通信,取A->B这个方向介绍流量控制

  • 发送进程:A进程―—-->接收进程:B

  • B的TCP接收端缓冲区:TCP A是输入,B进程是输入

    • A往缓冲区写;B从缓冲区中读
  • B接收端缓冲区匹配这两者的速度不一致性

image

  • 如果A发送的速度过快,超过B从缓冲区读取的速度

  • B的接收缓冲区溢出,A的报文就会被抛弃掉

  • 浪费网络带宽等后果

  • 目的:需要流量控制机制,按照B的处理和读取的速度来协调A的发送速度,端到端的问题

  • 以至于A发送过来的报文到了B端,有空闲空间可以缓冲下来

image

  • 接收方通过反馈方法告诉发送方其空闲缓冲区尺寸
  • 接收方在其向发送方的TCP段头部的rwnd字段“通告”其空闲buffer大小
    • RcvBuffer大小通过segment选项设置(典型默认大小为4096字节)
    • 很多操作系统自动调整RcvBuffer
  • 发送方限制未确认(“in-flight”)字节的个数≤接收方发送过来的rwnd值
  • 保证接收方不会被淹没

image

image

TCP空闲缓冲区大小计算

image

TCP段携带的空闲缓冲区大小

image

TCP捎带技术

image

TCP 探测情况1:B方确认丢失

image

TCP 探测情况2:B方没数据给A

image

TCP流量控制总结

  • 目的:防止发送方发送的太快超过了接收方B的处理能力
    • 以至于数据到了接收方被抛弃
  • 方法:反馈,接收方把空闲缓冲区大小告诉发送方
  • 效率提升:捎带
  • 捎带带来问题的解决:A方定期发送1B数据探测,让B把最新的空闲缓冲区大小返回给A
  • 流量控制窗口和拥塞窗口联动
    • 发送方发送未确认的字节数量=min
posted @ 2022-01-09 15:18  飞飞很要强  阅读(77)  评论(0)    收藏  举报