网络基础:5. UDP的可靠传输协议QUIC

一、UDP

UDP (User Datagram Protocol) 是一种无连接的网络传输协议,它不保证数据传输的可靠性和顺序,但具有高效、低延迟和灵活的特点。UDP常用于实时通信应用程序,例如音频、视频和在线游戏等。由于UDP将数据包发送到目标地址,而不需要建立连接,因此它比TCP更加简单、轻量级和快速。但是,由于它不提供数据完整性检查和重传机制,因此在一些应用场景下可能会出现数据丢失或错误的问题。

二、可靠传输

可靠传输是指在网络通信中,数据能够被正确的发送、接收、处理和存储,而不会出现丢失、失序、重复等错误。可靠传输需要通过各种技术手段来增强数据传输的稳定性和准确性,如数据校验、确认应答、超时重传、流量控制和拥塞控制等。可靠传输能够保证数据的完整性和可用性,从而确保网络通信的质量和可靠性。

三、QUIC

1. QUIC是什么

QUIC ,即快速UDP网络连接 ( Quick UDP Internet Connections ),诞生于2012年, 是由Google 提出的实验性网络传输协议 ,位于 OSI 模型传输层。 QUIC 旨在解决TCP 协议的缺陷,并最终替代 TCP 协议, 以减少数据传输,降低连接建立延迟时间,加快网页传输速度。

2. QUIC为什么在应用层实现

  1. 快速迭代:QUIC 是一个比较新的协议,由于在应用层实现,使得开发人员能够更加灵活地进行协议的修改和更新,从而快速迭代协议。
  2. 避免依赖操作系统:QUIC 作为一个应用层协议可以不依赖于底层操作系统的支持,这意味着它可以被运行在任何平台上,包括各种移动设备和嵌入式设备。
  3. 可定制性强:应用层实现使得 QUIC 协议可以根据特定需求进行调整和优化,例如在某些网络环境下,可以通过减小数据包大小来降低丢包率。
  4. 易于部署:由于 QUIC 是一种应用层协议,因此可以通过简单的软件更新来部署。这比传统的传输层协议(如 TCP)需要更多的配置和设置要容易得多,尤其是当涉及到防火墙和 NAT 网络时。

3. QUIC和TCP的区别

特点QUICTCP
连接建立方式0-RTT和1-RTT连接3次握手连接
可靠性内置可靠性机制,减少丢包依赖于上层协议的可靠性机制
流控制基于流的传输控制基于字节的传输控制
拥塞控制基于UDP的拥塞控制基于TCP的拥塞控制
头部大小较大,可能导致网络过载较小,但头部长度不可改变
加密内置TLS 1.3加密需要单独进行TLS加密
支持的应用层协议HTTP/3、QUIC原生协议等HTTP/1.x、HTTP/2等

注:0-RTT是指在第一次连接时同时发送数据;1-RTT是指完成连接后再发送数据。

4. QUIC报文格式

字段长度描述
头部13字节包含版本,标志和连接ID
加密可变取决于加密级别
数据可变包含请求和响应数据

注:长度和描述仅为大致描述,具体取决于QUIC的实现。

5. QUIC的特点

  1. 连接建立低时延
  2. 多路复用
  3. 无队头阻塞
  4. 灵活的拥塞控制机制
  5. 连接迁移
  6. 数据包头和包内数据的身份认证和加密
  7. FEC前向纠错
  8. 可靠性传输

6. QUIC建立低时延连接

  1. 客户端发送一个QUIC版本协商包给服务器,其中包含了支持的QUIC版本号。
  2. 服务器选择一个版本号,并返回一个QUIC连接句柄(Connection Handle)和一个随机数(Server Nonce)。
  3. 客户端使用QUIC连接句柄和服务器随机数构建一个加密上下文,并生成一个客户端随机数(Client Nonce)。
  4. 客户端使用加密上下文和客户端随机数对数据进行加密,并将加密后的密钥信息发送给服务器。
  5. 服务器使用QUIC连接句柄、服务器随机数和客户端随机数构建一个加密上下文,并使用客户端发送的密钥信息解密数据。
  6. 服务器使用加密上下文和服务器随机数对数据进行加密,并将加密后的密钥信息发送给客户端。
  7. 客户端使用QUIC连接句柄、客户端随机数和服务器随机数构建一个加密上下文,并使用服务器发送的密钥信息解密数据。
  8. QUIC连接建立完成后,客户端和服务器可以开始通过QUIC协议进行通信。由于QUIC使用了一些技术手段来减少网络延迟,因此可以建立低时延连接。

需要注意的是,QUIC建立低时延连接的过程中使用了加密技术来保证数据安全。因此,在建立连接之前,客户端和服务器必须相互认证,并且交换密钥信息。这样才能保证数据在传输过程中得到保护。

7. QUIC的缺点

  1. 不完全兼容TLS:虽然QUIC使用了加密,但它没有采用传统的TLS协议,这意味着它不能和现有的TLS协议进行完全兼容。
  2. 对设备资源消耗较大:QUIC需要在客户端和服务器端都运行一个额外的协议栈,这使得它在一些资源有限的设备上可能会造成性能问题。
  3. 网络部署困难:因为QUIC是一个相对新的协议,它需要被部署在网络设备中。这意味着网络管理员需要升级他们的设备以支持QUIC。
  4. 仍处于发展阶段:由于QUIC还比较年轻,它在实际应用中仍然存在一些问题。例如,在移动网络环境下,QUIC的表现可能不如预期。
  5. 难以监测和调试:QUIC使用UDP协议进行通信,这意味着它比TCP更难以监测和调试。这可能给网络管理员带来一些挑战。

推荐一个零声学院免费公开课程,个人觉得老师讲得不错,分享给大家:

Linux,Nginx,ZeroMQ,MySQL,Redis,fastdfs,MongoDB,ZK,流媒体,CDN,P2P,K8S,Docker,TCP/IP,协程,DPDK等技术内容,立即学习

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值