QUIC协议介绍

合集下载

QUIC协议详解

QUIC协议详解

QUIC协议详解QUIC(Quick UDP Internet Connections)是一种基于UDP协议的传输层协议,旨在提供更加快速和安全的互联网连接。

QUIC协议由Google开发,于2013年首次发布,并逐渐被广泛采用和支持。

1. 引言QUIC协议诞生的背景是对TCP协议传输效率和安全性的需求不断增加。

TCP协议需要经历三次握手和慢启动等步骤,在高延迟和网络拥塞情况下,传输效率下降明显。

而QUIC协议通过在UDP上实现自己的连接管理、可靠性、拥塞控制和加密等机制,旨在解决TCP的一些问题,从而提供更加稳定和高效的传输体验。

2. QUIC协议特点2.1 快速连接建立QUIC协议采用0-RTT(零往返时间)握手方式,使得连接建立更加迅速。

它利用先前的连接信息和加密密钥,直接向服务器发送数据,无需经历三次握手的过程,从而减少了建立连接的时间。

2.2 多路复用QUIC协议支持多路复用,即在一个连接上同时传输多个数据流。

这意味着在一个QUIC连接中,可以同时进行多个请求和响应,提高了传输效率。

而对于TCP协议来说,它只能依次处理一个请求和响应。

2.3 拥塞控制QUIC协议采用自己的拥塞控制机制,通过实时监测网络状况和延迟情况,动态调整发送速率,避免了网络拥塞和丢包的问题。

相比于TCP协议的慢启动和拥塞避免算法,QUIC在网络恶化或恢复时,能够更快地适应网络环境的变化,提高了传输的稳定性和流畅性。

2.4 安全性QUIC协议默认使用TLS 1.3进行数据加密,提供了端到端的安全传输。

它通过公钥加密技术对数据进行加密和解密,防止数据在传输过程中被窃听和篡改。

此外,QUIC还支持0-RTT和1-RTT的方式进行身份验证,确保通信双方的身份和数据的完整性。

3. QUIC协议工作原理QUIC协议使用UDP作为传输层协议,下面是QUIC协议的工作原理简述:3.1 连接建立客户端向服务器发送初始连接请求,携带自己的证书,以便进行身份验证。

quic协议

quic协议

quic协议QUIC协议。

QUIC(Quick UDP Internet Connections)是一种基于UDP协议的新型互联网传输协议,由Google设计并推广使用。

它旨在解决TCP协议的一些缺点,提供更快速、更安全的网络连接,同时支持实时应用程序和移动设备。

QUIC协议的核心特点之一是0-RTT(零往返时间),即在客户端和服务器之间建立连接时不需要往返的握手过程,可以直接发送数据。

这大大减少了连接的建立时间,对于网页加载速度和实时应用程序的响应时间有着显著的提升。

此外,QUIC还支持连接迁移,即在网络切换时可以无缝地将连接从一个IP地址迁移到另一个IP地址,保持连接的稳定性和持久性。

另一个重要的特点是QUIC协议内置了加密功能,所有数据在传输过程中都会进行加密处理,提高了数据传输的安全性。

这一点对于当前互联网上日益增多的网络安全威胁来说,尤为重要。

QUIC协议使用了TLS 1.3协议作为其加密手段,保证了数据的机密性和完整性,同时也提供了更快速的连接建立和重新连接过程。

与TCP协议相比,QUIC协议在拥塞控制和流量控制方面也有所优化。

QUIC协议采用了更加灵活的拥塞控制算法,可以更快地适应网络状况的变化,提高了网络的利用率和稳定性。

同时,QUIC协议还支持多路复用,可以在单个连接上同时传输多个数据流,避免了TCP协议中的队头阻塞问题,提高了网络的吞吐量和效率。

在移动网络环境下,QUIC协议也有着明显的优势。

由于QUIC协议基于UDP协议,可以更好地适应移动网络的特点,减少了连接建立和维护的开销,同时也可以更好地应对网络丢包和延迟的问题,提高了移动设备上的网络性能和用户体验。

总的来说,QUIC协议作为一种新型的互联网传输协议,具有许多优秀的特性,包括0-RTT连接、内置加密、灵活的拥塞控制和适应移动网络等。

它已经在Google的服务中得到了广泛的应用,同时也在互联网标准化组织IETF中得到了越来越多的关注和支持。

quic协议retry机制

quic协议retry机制

quic协议retry机制
摘要:
1.QUIC 协议简介
2.QUIC 协议的retry 机制
3.retry 机制的作用和优点
4.retry 机制的实现方式
5.结论
正文:
【1.QUIC 协议简介】
QUIC(Quick UDP Internet Connections)协议是一种基于UDP 的传输层协议,其设计初衷是为了提供一种更高效、更安全的网络传输方式。

QUIC 协议在TCP 和UDP 之间找到了一个平衡点,它具有TCP 的可靠性和UDP 的低延迟性,因此在实际应用中表现出良好的性能。

【2.QUIC 协议的retry 机制】
QUIC 协议的retry 机制是其保证数据可靠传输的重要手段。

当QUIC 发现某个数据包在规定时间内没有到达接收方时,它会自动进行重传,以确保数据能够被正确接收。

【3.retry 机制的作用和优点】
retry 机制的主要作用是保证数据的可靠性,即使在网络状况较差的情况下,也能够确保数据的完整传输。

此外,由于QUIC 协议采用了UDP 的传输方式,其retry 机制相对于TCP 协议来说更加轻量级,不会对系统资源产
生过大的负担。

【4.retry 机制的实现方式】
QUIC 协议的retry 机制是基于其特有的拥塞控制算法实现的。

当QUIC 发现某个数据包长时间未到达接收方时,它会认为可能是网络出现了拥塞,此时会触发retry 机制,进行数据重传。

同时,QUIC 协议还会根据网络状况动态调整重传间隔,以避免因为频繁的重传导致网络拥塞。

【5.结论】
总的来说,QUIC 协议的retry 机制是一种高效、可靠的数据传输保障机制。

quic 协议

quic 协议

quic 协议QUIC(Quick UDP Internet Connections)是一种基于UDP协议的传输层协议,旨在提供更快的网络连接。

QUIC通过将传输层和应用层协议融合在一起,减少了连接建立的时间和延迟,提高了数据的传输效率。

QUIC使用了类似于TLS的加密方式,以保证数据的安全性。

它还使用了自适应拥塞控制算法,可以根据网络状况动态调整传输速率,提供更好的用户体验。

QUIC的连接建立速度很快,主要是因为它采用了0-RTT(零往返时间)握手机制。

这意味着在第二次建立连接时,客户端可以直接发送数据,而不需要等待服务器的确认。

这样的机制可以显著降低延迟,提高用户体验。

另外,QUIC还具有快速的重传能力。

当网络丢失传输的数据包时,QUIC可以快速识别并重传丢失的数据包,避免了传统TCP的超时重传机制,进一步降低了延迟。

QUIC不仅支持单个连接的多路复用,还支持数据流的优先级和并行传输。

这意味着在一个QUIC连接上可以同时进行多个不同数据流的传输,大大提高了传输效率。

相对于传统的HTTP/2协议,QUIC的传输效率更高。

它通过将HTTP协议与传输层协议结合起来,减少了传输过程中的额外开销,节省了网络带宽。

由于QUIC基于UDP而不是TCP协议,因此它可以避免TCP 的拥塞控制和流量管理机制。

这使得QUIC在高延迟或丢包率较高的网络环境中更具优势,可以提供更稳定的连接和更好的用户体验。

总之,QUIC协议通过融合传输层和应用层协议,采用0-RTT 握手和快速重传机制,以及支持多路复用和并行传输等特性,提供了更快的网络连接和更高的传输效率。

随着越来越多的应用和服务采用QUIC协议,我们可以期待在未来的互联网世界中享受到更快速的网络体验。

quic报文解析

quic报文解析

quic报文解析Quic报文解析随着互联网的不断发展,网络传输协议也在不断演进。

其中,Quic 协议作为一种新兴的传输层协议,正逐渐被广泛应用。

本文将对Quic报文解析进行介绍,以帮助读者更好地理解和应用这一协议。

一、Quic协议简介Quic(Quick UDP Internet Connections)是一种基于UDP协议的传输层协议,由Google推出。

相比于传统的TCP协议,Quic协议具有更低的延迟和更好的性能表现。

它不仅整合了多个层次的网络协议,还引入了各种新的特性,如0-RTT连接建立、数据流多路复用、流量控制等。

二、Quic报文结构Quic报文由头部和负载数据组成。

头部包含了Quic协议的各种控制信息,用于实现可靠的数据传输和连接管理。

负载数据则是上层应用传输的具体数据内容。

1. 头部结构Quic头部结构包括公共头部和帧头部。

公共头部是每个Quic报文都必须包含的部分,用于标识报文的类型和版本等信息。

帧头部则是可选的,用于标识报文中各个帧的类型和长度等信息。

2. 报文类型Quic报文可以分为Initial、Handshake、0-RTT和Protected四种类型。

其中,Initial和Handshake类型用于连接建立阶段,0-RTT 类型用于0-RTT连接重建,Protected类型用于已建立的连接中的数据传输。

三、Quic报文解析过程Quic报文解析是指将接收到的二进制数据解析为可读的报文格式的过程。

下面将详细介绍Quic报文解析的过程和要点。

1. 报文解析步骤(1)解析公共头部:根据公共头部的格式,提取报文的类型、版本和连接ID等信息。

(2)解析帧头部:如果报文中包含帧头部,根据帧头部的格式,提取各个帧的类型和长度等信息。

(3)解析负载数据:将剩余的二进制数据解析为具体的应用数据。

2. 解析要点(1)报文类型判断:根据公共头部的类型字段,判断报文的类型,并根据不同类型的报文执行相应的解析逻辑。

HTTP3协议(部分解读)

HTTP3协议(部分解读)

HTTP3协议(部分解读)1.QUIC协议:QUIC是一个基于UDP的传输协议,旨在替代TCP协议和TLS协议,提供更快的连接建立和数据传输速度。

QUIC在传输层和应用层之间添加了一个新的协议层,可以实现多路复用、流量控制和拥塞控制等功能。

2.HTTP/3的特点:-更快的连接建立:HTTP/3使用QUIC协议,在连接建立时可以减少往返次数,提高连接建立速度。

-多路复用:HTTP/3支持多路复用,可以在一个连接上同时进行多个请求和响应,减少了因建立多个TCP连接带来的性能损耗。

-0-RTT连接恢复:HTTP/3引入了0-RTT连接恢复机制,可以在恢复连接时,不重新进行加密和握手操作,从而减少了连接恢复的时间。

-更快的传输速度:QUIC协议使用UDP协议,支持快速数据传输,减少了TCP的慢启动和拥塞控制,提高了数据传输速度。

-更好的抗丢包能力:QUIC协议在传输层上实现了自己的拥塞控制和重传机制,可以更快速地适应网络的变化,并减少数据包丢失的影响。

3.HTTP/3的安全性:HTTP/3使用了TLS1.3进行加密,确保数据在传输过程中的安全性。

QUIC协议在内部提供了一个安全的传输通道,可以在连接建立时进行双向握手和密钥交换,实现端到端的加密。

4.对比HTTP/2:HTTP/3相较于HTTP/2有一些重要的改进。

HTTP/3使用了QUIC协议,避免了TCP的瓶颈和延迟问题,提供了更高的传输性能。

而HTTP/2则是基于TCP协议的,拥塞控制和流量控制等功能都是在应用层实现的。

5.挑战和推广:虽然HTTP/3有很多优点,但迁移到HTTP/3仍然有一些挑战。

首先,由于HTTP/3是一个全新的协议,需要更新服务器和客户端的软件和硬件支持。

其次,由于QUIC使用了UDP,可能会遇到一些防火墙和代理服务器的问题。

最后,网络中的中间设备和运营商需要支持QUIC协议,并进行相应的优化。

总结来说,HTTP/3是一个基于QUIC协议的新一代HTTP协议,旨在提升网络连接的性能和安全性。

网络协议知识:QUIC协议的特点和应用场景

网络协议知识:QUIC协议的特点和应用场景QUIC(Quick UDP Internet Connections)是一种基于UDP协议的快速和安全的网络传输协议,由Google公司开发。

QUIC协议结合了TCP和UDP协议的优点,提供了更高效和更可靠的网络连接,同时还支持加密、流和多路复用等功能。

QUIC协议的主要特点包括:1.快速连接:QUIC协议通过使用UDP协议,可以在连接和重连时快速建立和维护连接,从而减少TCP协议的握手时间和延迟。

2.协议安全:QUIC协议内置加密功能,提供可靠的安全传输,从而保护数据不被窃取、篡改或劫持。

3.流和多路复用:QUIC协议支持流式传输,多个数据流可以同时在一个连接中传输,并且可以通过单独的流进行控制和管理,提供更多可配置性和可靠性。

4.智能拥塞控制:QUIC协议以更准确的方式来计算网络传输中的网络拥塞,从而避免TCP协议因为错误的拥塞控制算法而造成的网络问题和性能下降。

总体来说,QUIC协议在安全、快速连接和高效的传输方面相比传统的TCP协议有更多的优势和适用场景,主要包括:1.移动互联网:QUIC协议的快速连接和流传输特性可以尤其适用于移动设备,可以更快地建立连接并更好地处理网络传输中的抖动和断断续续的数据流。

2.视频和音频传输:QUIC协议支持多路复用和流传输,可以帮助在网络较差或带宽受限的情况下更高效地进行视频和音频传输,从而提供更好的用户体验。

3.网络游戏:QUIC协议的快速连接、流传输和智能拥塞控制均可以为在线游戏提供更好的性能和可靠性,尤其是在网络状况较差的情况下。

4.加密网络传输:QUIC协议内置加密和身份验证功能,可以帮助保护网络数据的机密性和完整性,从而适用于需要高度安全性的网络传输场景。

总之,QUIC协议作为一种新兴的网络传输协议,不断地在网络传输方面体现出强大的优势和适用性。

在未来,随着QUIC协议的不断发展和迭代,其应用场景和优势也将不断推进和拓宽。

QUIC协议的安全性分析

QUIC协议的安全性分析随着互联网的迅速发展,网络安全问题变得日益突出。

QUIC (Quick UDP Internet Connections)协议作为一种新型的传输层协议,其安全性备受关注。

本文将对QUIC协议的安全性进行分析,探讨其不同层面上的安全特征和可能存在的潜在威胁。

一、QUIC协议概述QUIC协议是谷歌公司于2013年开发的一种基于用户数据报协议(UDP)的传输层协议。

相较于传统的传输控制协议(TCP),QUIC具有更低的连接建立延迟和更好的拥塞控制能力。

其在保留现有TCP协议优点的同时,通过将连接状态和加密引入协议层,提供了更高的安全性和性能。

二、QUIC协议的安全特征1. 0-RTT连接建立:QUIC协议允许客户端在首次连接时发送数据,无需等待服务器的确认。

这种0-RTT(零往返时间)的连接建立机制有效提高了性能,同时要求在安全性上做出一定的妥协。

2. 加密保护:QUIC协议采用了基于传输层安全性协议(TLS)的加密机制,以确保数据在传输过程中的机密性和完整性。

通过使用前向安全性和零轮加密,QUIC协议能够有效抵御窃听和篡改等攻击。

3. 多路复用:QUIC协议通过将多个数据流复用到单个连接上,实现了更好的并发性能。

这种多路复用的特性有助于提高网络吞吐量,同时减少了对服务器资源的占用,增加了系统的安全性。

4. 拥塞控制:QUIC协议根据网络条件动态调整数据传输速率,以在不同网络环境下实现最佳的传输性能。

通过快速和准确地响应网络拥塞情况,QUIC协议能够降低拥塞攻击的风险,并提高网络的稳定性和可靠性。

三、QUIC协议可能存在的安全威胁1. 中间人攻击:QUIC协议使用公钥加密体制来验证服务器和客户端的身份,并确保数据传输的安全性。

然而,如果攻击者能够篡改或替换公钥,就有可能实施中间人攻击,窃取用户的敏感信息。

2. DDoS攻击:由于QUIC协议可以在单个连接上复用多个数据流,攻击者可以通过发送大量无效数据流来占用服务器资源,导致拒绝服务(DDoS)攻击。

QUIC安全协议漏洞分析

QUIC安全协议漏洞分析随着互联网的发展,网络通信协议的安全性成为了一个重要的话题。

QUIC(Quick UDP Internet Connections)作为一种传输层协议,旨在提供更快速、更安全的网络连接。

然而,就像其他协议一样,QUIC也存在一些潜在的安全漏洞,这些漏洞可能会被恶意攻击者利用,危及用户的信息安全。

本文将对QUIC安全协议的漏洞进行分析,并探讨如何加强协议的安全性。

1. QUIC协议简介QUIC协议是由Google开发的一种面向连接的传输层协议,旨在提供比传统TCP更快速的连接速度。

QUIC在应用层和传输层之间建立了一个安全的传输通道,使用UDP协议进行数据传输。

相比于TCP,QUIC采用了更低的延迟和更高的并发性,同时还实现了传输加密和连接迁移等功能。

2. QUIC安全协议的漏洞尽管QUIC协议具有许多优势,但它仍然存在一些潜在的安全漏洞。

以下是几个常见的QUIC安全漏洞:2.1 客户端身份验证漏洞QUIC协议的客户端身份验证机制存在漏洞,可能导致身份伪造或中间人攻击。

由于QUIC使用了自定义的握手协议,攻击者可以伪造客户端的身份并访问受限资源。

因此,加强客户端身份验证机制是保护QUIC协议的关键。

2.2 加密算法漏洞QUIC协议使用了一些加密算法来保护数据的机密性,但这些加密算法可能存在漏洞。

例如,某些加密算法可能受到已知的攻击,或者存在实施上的缺陷。

因此,定期评估和更新加密算法是确保QUIC协议安全的重要步骤。

2.3 数据完整性漏洞QUIC协议使用了数据完整性校验和来确保数据在传输过程中未被篡改。

然而,如果数据完整性校验和算法存在缺陷,攻击者可能会通过篡改数据校验和来修改数据内容。

因此,确保数据完整性校验和算法的安全性是保护QUIC协议的关键。

3. 加强QUIC协议安全性的措施针对QUIC协议的安全漏洞,我们可以采取一些措施来加强协议的安全性:3.1 客户端身份验证改进加强客户端身份验证机制,采用更加安全的身份验证协议,例如使用公钥基础设施(PKI)来验证客户端的身份。

QUIC协议介绍

1、QUIC的提出SPDY是个目前基于TCP(经常使用SSL)实现的多路复用流协议。

此外,它可以通过尽可能快地(而不是等待前面的确认返回)发送所有请求来减少延迟,并且可以通过压缩一些冗余流量来减少带宽使用。

尽管其特性和成功,当提供一个延迟减少时,它在请求有效地利用资源方面遇到了一些问题。

a)单个包延迟导致一个流的头阻塞b)由TCP处理、导致额外带宽减少和序列化延迟开销的不适宜的拥塞避免c)TLS(SSL)会话恢复延迟d)TLS往往引发一个解密依赖,先前的包必须在后来的包可以被解密之前被解密我们希望减少整个英特网的延迟,提供一个响应性更好的用户交互环境。

随着时间的推移,整个世界的带宽将会提升,但是受光速支配的往返时间不会减少。

我们需要一个协议用更少的延迟和更少的重传时间消耗去传递整个互联网的请求、响应和交互,并且,我们相信现今的方法在阻碍我们。

这部分指出我们希望解决的潜在问题。

我们想要开发一个支持以下目标的传输:减少因包丢失造成的头阻塞,低延迟,隐私保证堪比TLS,等等。

现今,可行性的头号目标显然是这个协议发展的主要驱动力。

中间盒和防火墙会代表性地阻塞或明显地降低基于除了TCP或UDP的格式的任何传输,明白这个以后,我们甚至不会考虑革命性的协议。

所以,只有开发基于TCP或UDP的协议,用来解决我们遇到的问题以及实现我们的目标。

由于基于DTLS(数据包传输层安全)的SCTP在建立连接时需要的延时太长,大约为4个RTT,所以SCTP是不合适的。

因此,我们开发了基于UDP的QUIC协议。

2、QUIC协议的层次可以认为QUIC是为了解决SPDY在TCP遇到的瓶颈而在UDP上做探索所设计的方案。

参考SPDY来理解,可认为QUIC的传输内容分两层,高层类似SPDY,低层是在UDP上模仿实现TCP的面向连接特性和可靠性并加入类似TLS的加密过程。

QUIC提供基于UDP的多路复用、有序、可靠的流传输。

QUIC是和HTTP同一层的应用层协议,其核心是将丢包控制工作转移到应用层。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

1、Q U I C的提出SPDY是个目前基于TCP(经常使用SSL)实现的多路复用流协议。

此外,它可以通过尽可能快地(而不是等待前面的确认返回)发送所有请求来减少延迟,并且可以通过压缩一些冗余流量来减少带宽使用。

尽管其特性和成功,当提供一个延迟减少时,它在请求有效地利用资源方面遇到了一些问题。

a)单个包延迟导致一个流的头阻塞b)由TCP处理、导致额外带宽减少和序列化延迟开销的不适宜的拥塞避免c)TLS(SSL)会话恢复延迟d)TLS往往引发一个解密依赖,先前的包必须在后来的包可以被解密之前被解密我们希望减少整个英特网的延迟,提供一个响应性更好的用户交互环境。

随着时间的推移,整个世界的带宽将会提升,但是受光速支配的往返时间不会减少。

我们需要一个协议用更少的延迟和更少的重传时间消耗去传递整个互联网的请求、响应和交互,并且,我们相信现今的方法在阻碍我们。

这部分指出我们希望解决的潜在问题。

我们想要开发一个支持以下目标的传输:减少因包丢失造成的头阻塞,低延迟,隐私保证堪比TLS,等等。

现今,可行性的头号目标显然是这个协议发展的主要驱动力。

中间盒和防火墙会代表性地阻塞或明显地降低基于除了TCP或UDP的格式的任何传输,明白这个以后,我们甚至不会考虑革命性的协议。

所以,只有开发基于TCP或UDP的协议,用来解决我们遇到的问题以及实现我们的目标。

由于基于DTLS(数据包传输层安全)的SCTP在建立连接时需要的延时太长,大约为4个RTT,所以SCTP是不合适的。

因此,我们开发了基于UDP的QUIC协议。

2、QUIC协议的层次可以认为QUIC是为了解决SPDY在TCP遇到的瓶颈而在UDP上做探索所设计的方案。

参考SPDY 来理解,可认为QUIC的传输内容分两层,高层类似SPDY,低层是在UDP上模仿实现TCP的面向连接特性和可靠性并加入类似TLS的加密过程。

QUIC提供基于UDP的多路复用、有序、可靠的流传输。

QUIC是和HTTP同一层的应用层协议,其核心是将丢包控制工作转移到应用层。

这是一个对小组讨论和编辑来说是可行的文档,我们希望它发展成一个充实的设计文档。

希望设计成一个运行在UDP上的可以在两个终端(一个初始化整个连接的客户端和一个服务器端)上多路复用大量流的隧道协议。

例如,每个流几乎相当于一个独立的TCP连接。

最终的协议可能非常像运行在UDP上的SCTP,在使用加密上非常像DTLS。

3、流流:在一个连接中传递数据的潜在的许多数据传输信道中的一个。

一个流是双向的。

如果流被客户端首先创建(连接发起人),那么它将有一个奇数编号的流标识符。

如果流被服务器创建(连接应答者),那么它将有一个偶数编号的流标识符。

在流中的数据自动被分解成帧,然后在接收端重新组装。

在为一个多路复用流建立一个API时有一些复杂性需要解决。

在最高层次上,我们需要有一个机制增加新流到一个连接中,以及分别独立地读和写不同的流。

对每个流,我们需要一个方法来访问流,指定流应该使用的特性。

特性包括,例如,可靠性和性能权衡(例如通过增加冗余减少抖动,通过减少冗余来减少带宽)。

我们期望不同的流将有明显的传输特征,它们或许会被应用设置或修改。

这些包括明显的特征设置:*可调冗余水平(对延迟储蓄的贸易带宽)*可调优先级水平(仿照SPDY的演变优先级方案)我们期望一些或许被视为输出流的控制通道将总是有用的,且可能被用于标识剩下流的状态改变。

对加密协商来说,控制通道可能包含特殊目的帧(控制帧)和一个保留的流。

在QUIC连接中的每个流将有一个独特的相关联的流标识符。

基于数据传输的字节流将仿照TCP,具有有效负载数据提供的字节范围。

字节范围将选择每个字节流中的定位。

流将被划分成帧放入(UDP)包中。

只要有可能,任何特定的数据包的有效载荷应只来自于一个流。

这将减少这种概率,一个包丢失将阻碍不止一个流的进步。

当没有足够的数据流来填充一个数据包,然后来自不止一个流的帧可能被打包进一个包。

这种包装应减少数据包计数开销,减少序列化延迟。

4、QUIC包格式传输的基本单元将是一个标准的UDP包(又名,包)。

注意确保所有的数据传输将会被分解成刚好放入一个包的块。

包括用来协商一个连接的第一包在内的所有包,将利用AEAD加密。

第一包将利用一个默认的空加密密钥,并且AEAD将只是用来排除意外干预(作为一个高质量的校验和)。

加密协商将发生在流1,由客户端产生。

header payloadQUIC包QUIC包由头(header)和有效载荷(payload)组成。

其中,payload是AEAD算法认证的密文。

每个包的头包括:*1字节的公共标识,详述头的剩下部分的设计*全局唯一标识符*QUIC版本*包序列号公共标识全局唯一标识符QUIC版本包序列号QUIC包的头部数据包有效载荷由一系列帧组成:头一系列帧FEC包有效载荷由冗余数据组成:头冗余数据在解密之后,我们将有一个明文有效载荷块,它包括:*1字节的私有标识*FEC组号*一系列自我标识帧私有标识FEC组号一系列自我标识帧解密之后的QUIC包的有效载荷4.1 QUIC包详解1. 头:公共标识在一个给定连接和给定包中,公共标识提供给每个包的其他区域的大小的说明。

2. 头:全局唯一标识符全局唯一标识符的长度被指定为64比特,所以,客户端可以随机地选择一个全局唯一标识符,在一个固定的端口联系一个服务器,有很小的可能性会与其他连接碰撞。

然而,全局唯一标识符对于一个已经创建了一个专用的短暂的联系服务器的端口的客户端来说完全是冗余的。

客户端将在那个端口收到的包将会是单一的QUIC出口连接的一部分。

结果,客户端可能请求,一个服务器不必费心的包括每个包的全局唯一标识符。

一旦一个服务器收到一个请求(例如在连接协商期间),服务器可以使用公共标识表明,全局唯一标识符被省略(在头中的长度为0)。

对一些服务器和服务来说,并行连接关系的编号是非常有限的。

例如,一个服务器可能和一个客户端协商在一个特别的可选的IP和端口上继续那个连接。

在那种情况下,服务器也可能对客户端表明,一个更小的全局唯一标识符或许是可接受的。

3. 头:QUIC版本我们知道,协议发展的很快,并且需要发展。

这个区域出现在第一包中,用来确保服务器可以理解客户端将提供的相同的版本。

一旦连接建立,这个是冗余的,并且公共标识将会表明这个区域被省略了(长度为0)。

如果一个服务器需要区别版本,它将记住,被全局唯一标识符定义的连接有一个与众不同的版本。

4. 头:包序列号除了给包定序、留意副本、交流什么包丢失了,这个编号是加密的一个关键组成部分。

这个编号组成了用来解密每个包的初始化向量的基础。

结果,从概念上讲,它必须是大的,因为在连接期间,它必须绝不重复。

那个需求强迫这个序列号概念上是大的,大约2^64(比连接还要多的包等着发送),但是我们通常不需要提供每个包的8个字节!在任何给定的时间,仅有一些有限的包序列号没有被确认。

这个限制是由这个事实的自然结果,发送者必须缓存那些未决定的包中的内部数据,并且发送者的内存是有限的。

另外,我们选择不去重传被声明为丢失的包,而是把他们的内容放入后来的数据包中。

结果,接收者常常通知,它没有收到一个包,并且发送者将通知接收者“停止等待”那个包,因此没有被确认的包的窗口将总是恰好有界的,并且不确定性(讨论的可能的最大和最小值)范围可能被发送者知道。

给予那个限制,发送者可能大大地减少需要表示包序列号(使用公共标识)的字节数。

例如,假设正在用一个像拥塞控制的TCP传输,并且目前的拥塞窗口是20个包。

即使包丢失,在1个RTT或大约20个额外包内,接收者将知道一个丢失的包不再是未判定的。

结果,发送者可以侥幸逃脱在线路上仅发送64比特包序列号的低序号字节。

接收者给予那些比特可以轻易地决定较高的56比特必须是什么,可以使用那个去解密包。

注意,如果一个非常老的包到达接收方,并且老的包序列号是被曲解的,那么AEAD认证会失败,并且老的(并且适合丢弃的)包甚至会被忽略。

5. 有效载荷:私有标识目前1字节大小的私有标识表示“私有”,因为他们被加密覆盖,并且对窃听者是不可见的。

与公共标识一样,在标识中编码的一个值是FEC组号的大小,和有效载荷到帧的开始的隐式偏移。

私有标识还有另外2个独特的比特。

第一个比特是一个随机加密比特,第二个比特用来鉴定FEC组中的最后一个包。

FEC组中的最后一个包是冗余FEC包(包含组中的明文有效载荷的异或)。

私有标识:加密比特加密比特由发送者随机选择,并且放入每一个包中。

这个信息用来对抗任何潜在的乐观确认攻击。

当一个接收器发送一系列包的确认时,它需要证明它收到了那个集合,通过提供它宣称已经看见的加密比特哈希表宣称的那个集合。

加密比特的一个问题是,当一个包丢失时,它的加密比特是不可见的。

为了解决这个问题,并且不需要接收器创建无止尽的丢失包列表(来自哈希表的异常),发送者常常提供一个更新,表明哈希表相对于一个特定的数据包来说应该是什么。

例如,假设包1,2,3,4被发送了。

假设包3丢失了。

接收器将表明(在一个确认帧里),它收到了从1到4的所有包,除了包3。

确认帧也会提供一个打包1,2,3,4包的加密比特的哈希表。

发送器可以确认哈希表是正确的,并且声明包3丢失了。

然后,发送器可以传输(包括一个确认帧)它不再关注包4或者更老的包,并且它可以提供到包4为止的所有加密比特哈希表。

结果,接收器终于知道到包4为止的包的哈希表,并且当它收到下一步的数据包时可以提供额外的增值哈希表结果。

私有标识:FEC最后的比特这个比特用来标记最后一个包是一个FEC组。

我们现在的FEC方法在一系列受FEC保护的包的末尾恰好有一个FEC包。

这个比特表明,整个有效载荷应该单独处理,并且被视作在这个组中的其他有效载荷的异或和。

注意,当这个比特被设置时,包必须是一些FEC组的一部分,因此FEC组号也必须总是存在的。

6. 有效载荷:FEC组号假定,我们大约看见在互联网上1%以上的包丢失,100以上且不是200个包都无损失的被接收是完全不可能的。

因为这个原因,我们决定限制FEC组不大于255个包。

我们的实验暗示,当FEC丢失时,一个10到20的受一个冗余FEC包保护的包数据序列或许是最有益的。

每20个包,有大约5%的带宽消耗,并且有一个完全可见的延迟权衡。

我们还注意到,对TCP来说,看见拥塞窗口正好低于50个包是最常见的。

因此,和重传相比,对于更大的组使用一个FEC无益于减少延迟。

因为以上分析,我们目前支持一系列连续的包的简单异或FEC,并且一字节足以鉴定一组受保护的包。

如果发送器决定保护一系列包,它使用私有标识去表明,确实有一个嵌入式的FEC组号字节。

每个FEC组的参与者有一个偏移FEC组号,它可以鉴定组中的第一个包(即,它是减去目前包序列号的一个总数)。

相关文档
最新文档