QUIC协议 对比 TCP/UDP 协议
2023-09-14 09:08:43 时间
- 队头阻塞:
- 协议开销大:
- 传输不安全:
- 单向请求:
- HTTP 1.0 和 HTTP 1.1 的区别:
- HTTP 1.0
- HTTP 1.1
- 二进制传输:
- 多路复用:
- Header压缩:
- 服务端可以主动推送:
- 流优先级:
- 可重置:
TCP
- 面向连接
- 面向字节流
- 可靠传输
- 拥塞控制
- 提供全双工通信
- 存在队头阻塞
UDP
- 面向无连接
- 支持一对多,多对多,多对一
- 不可靠
- 传输数据高效
QUIC 对比 TCP/UDP 的优缺点
QUIC
协议是 Google 提出的一套基于 UDP
的开源协议,它汇集了 TCP
和 UDP
的优点,传输高效并且可靠。
1、QUIC 的优点
TCP
和UDP
协议是操作系统内核实现的,部署进度慢。QUIC
直接基于客户端实现,能实现快速迭代更新
TCP
使用序列号来标识数据的顺序,数据必须按照顺序处理,可能会造成队头阻塞。HTTP2 支持多路复用,但是由于强制使用TLS
,还存在一个TLS
协议层面的队头阻塞,QUIC
最基本的传输单元是 Packet,不会超过 MTU 的大小,整个加密和认证过程都是基于 Packet 的,不会跨越多个 Packet。这样就能避免TLS
协议存在的队头阻塞。Stream 之间相互独立,比如 Stream2 丢了一个 Pakcet,不会影响 Stream3 和 Stream4,所以也不存在 TCP 队头阻塞。
TCP
需三次握手才能建立连接,有等待时延,如果用了TLS
加密,还会进一步增加时延。QUIC
采用了类似于TCP
Fast Open的设计,在之前已经连接过的情况下可以无需握手,直接开始传送数据,连接建立时延为0
QUIC
和TCP
一个主要的核心区别就是:TCP
采用 重传 机制,而QUIC
采用 纠错 机制。如果发生丢包的话,TCP
首先需要一个等待延时来判断发生了丢包,然后再启动重传机制,在此期间会对连接造成一定的阻塞(并且TCP
窗口是缓慢增大的,Web这种突发性快速连接情况下窗口会相对较小),从而影响传输时间。而QUIC
采用了一种脑洞极大的前向纠错(FEC)方案,类似于RAID5,将N个包的校验和(异或)建立一个单独的数据包发送,这样如果在这N个包中丢了一个包可以直接恢复出来,完全不需要重传,有利于保证高速性,N可以根据网络状况动态调整
TCP 连接是由四元组标识的(源 IP,源端口,目的 IP,目的端口),当其中一项发生改变,都需要重新建立和服务端的 TCP 连接。QUIC 连接不再以 IP 及端口四元组标识,而是以一个 64 位的随机数作为 ID 来标识,这样就算 IP 或者端口发生变化时,只要 ID 不变,这条连接依然维持着。这就意味着:在IP地址和端口变化的情况下(比如从Wi-Fi切换到流量),可以无需重新建立连接,继续通信
2、QUIC 的不足
(1)QUIC
基于 UDP
,目前很多网络运营商会降低 UDP
包的优先级,使得 UDP
丢包率特别高
相关文章
- TCP 协议(包含三次握手,四次挥手)[通俗易懂]
- DHCP协议工作流程
- 关于MIPI协议(一)——物理层D-PHY总结
- TCP协议的优化方法「建议收藏」
- 面试突击67:说一下 TCP/IP 协议?以及每层的作用?
- 固态硬盘:插槽接口(M.2 / mSATA / SATA )、总线(PCIE / SATA )、传输协议(NVME / AHCI) 图解
- tcp网络模型_TCP/IP协议模型
- tcp握手失败怎么办_TCP协议握手
- TMDS协议
- TCP和UDP的区别是什么_socket tcp udp区别
- TCP和UDP协议的区别_朋友关系
- http和tcp的区别和联系_udp协议和tcp协议的区别
- TCP三次握手图_tcp为什么三次握手
- Linux网络-HTTPS协议
- 应用最广泛的动态路由协议:OSPF
- AWS re:Invent:SRD协议将取代TCP?
- 【Groovy】MOP 元对象协议与元编程 ( 方法合成 | 动态注入方法 )
- Telnet协议是什么?
- Linux TCP协议实现指南(linuxtcp实现)
- 利用SQL Server协议进行数据库管理(sqlserver协议)
- Linux下的TCP聊天之旅(linux聊天tcp)
- linux下使用TCP命令掌握网络礼仪(linux命令tcp)
- /ipLinux TCP/IP网络编程:掌握网络基础知识(linux网络编程tcp)
- TCP/IP 协议
- Linux下TCP窗口优化的技巧(linux tcp 窗口)
- 基于Redis的新型网络协议(协议redis)