UDP可靠性传输协议(QUIC)

UDP与TCP对比

在这里插入图片描述
在这里插入图片描述TCP可能出现粘包分包
UDP不可能,且一帧数据必须一次性读完,否则将丢失未读部分

可靠性机制

ACK机制

也就回应机制,每次收到一个包都回给予一次ack,让发送方知道对方已经接收到

重传机制

ARQ协议的三种模式
(1) 即停等式ARQ : 等待ACK, 规定事件内没有收到对面ACK,则重传该帧
在这里插入图片描述

(2) 回退n帧ARQ : 不等待对面ACK,每个包存在生命周期,生命结束之前没有收到ACK,则回退到该该包重新发包(错误帧之后的包已经发送过,任然需要重新发送
在这里插入图片描述

(3) 选择性重传ARQ : 不等待对面ACK,每个包存在生命周期,生命结束之前没有收到ACK,不需要回退到该该包重新发包, 仅需重发该包
在这里插入图片描述

流控控制

控制发送方发送速率,以防止收件方读取数据不及时,造成缓存满后丢弃数据包
(1) 收件方告知发送方缓存剩余空间,以便于发件方控制发送速率
(2) 如果发件方因为对方缓存已满而停止发送,则需要收件方适时通知发件方开发送
4. 拥塞控制
(1) 慢启动 :网络拥塞之后,尝试从少数包开始发送,逐渐按指数增长发送包,直到包数恢复到正常数量(因为带宽越来越大,该方案已废弃)
(2) 快恢复 : 网络拥塞之后,尝试从半数的包开始发送,逐次增多

序号机制

重排机制

窗口机制

UDP可靠性设计

UDP窗口流控

KCP(出于实时性考虑)

  1. RTO翻倍
    TCP超时计算为RTO时间不断翻倍
    KCP中超时计算为RTO时间不断乘以1.5(经验值,试验证明该值较好)

  2. 重传机制
    TCP使用回退N帧ARQ机制(全部重传)
    KCP使用选择性重传ARQ机制

  3. 快速重传
    出现跳包现象(接收方收到的包是不连续的,多个中间包缺失),此时不考虑RTO,优化丢包时候的传输效率

  4. ACK延迟
    TCP为了更好的利用宽带,延迟发送ACK,如此RRT时间较大
    KCP中可以设置是否延迟

  5. ACK、UNA
    5.1 解释UNA: 比如UNA 3,则表示告知sender,包0、1、2都已经收到,这个时候sender将释放掉包0、1、2,后续如果需要重传,这三个包也不会进入重传队列,
    5.2 KCP是ACK+UNA机制
    5.3 TCP是二选一

  6. 非退让流控
    TCP使用公平退让法则(发送窗口大小决定因素:发送缓存大小,接收端剩余缓存大小,丢包退让,慢启动),
    KCP可以配置跳过丢包退让以及慢启动,使得及时性更加强大

  7. 代码路径:https://github.com/skywind3000/kcp
    上面对于KCP讲解不太清除的可以前往github上学习,再readme中对于优化的性能部分做了很详细的讲解。
    在这里插入图片描述

在这里插入图片描述8. KCP代码架构
在这里插入图片描述

QUIC

简述

  1. 快速UDP网络连接
  2. Google提出的实验性网络传输协议
  3. 位于OSI网络模型传输层
  4. 用户态基于UDP实现的传输层
  5. 旨在解决TCP协议的缺陷并最终替代TCP协议,减少数据传输,降低连接建立延迟时间,加快网页传输速度
  6. 文档连接:https://quicwg.org/base-drafts/rfc9000.html

优点

  1. 灵活的拥塞控制机制(可自我实现,也可以决定是否使用)
  2. 无队头阻塞(每个stream分别独立,不互相影响)
  3. 可轻易实现数据迁移(切换网络环境后,不需要重新连接,继续之前的连接通道继续传输数据)
  4. 包头需要身份验证,包内数据加密,安全性方面比TLS有过之而无不及
  5. FEC向前纠错

缺点

  1. 放入内核影响大,所有系统都要更新
  2. 路由器、防火墙、还有很多中间设备都需要改

报文格式

其中Connection ID为连接号,可以减少三次握手四次挥手的次数
在这里插入图片描述在这里插入图片描述Frame Type:

  1. bit01: stream ID长度
  2. bit234: offset长度
  3. bit5 : 有无Data Length字段
  4. bit6: 指示该stream通道上 是否已结束发送数据,是否处于半关闭状态
  5. bit7: 标识该帧是否为stream帧

Stream ID 一个UDP通道上可以存在多个Stream流, 每个流中的报文的完整性相互独立,以此减少异常时候,回退的帧数

建立低时延

在这里插入图片描述在这里插入图片描述在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值