往期 Kali Linux 上的 Wireshark 嗅探实验见博客:
【网络技术】【Kali Linux】Wireshark嗅探(一)ping 和 ICMP
【网络技术】【Kali Linux】Wireshark嗅探(二)TCP 协议
【网络技术】【Kali Linux】Wireshark嗅探(三)用户数据报(UDP)协议
【网络技术】【Kali Linux】Wireshark嗅探(四)域名系统(DNS)
【网络技术】【Kali Linux】Wireshark嗅探(五)文件传输协议(FTP)
【网络技术】【Kali Linux】Wireshark嗅探(六)地址解析协议(ARP)
【网络技术】【Kali Linux】Wireshark嗅探(七)超文本传送协议(HTTP)
【网络技术】【Kali Linux】Wireshark嗅探(八)动态主机配置协议(DHCP)
【网络技术】【Kali Linux】Wireshark嗅探(九)安全HTTP协议(HTTPS协议)
【网络技术】【Kali Linux】Wireshark嗅探(十)IPv4和IPv6
【网络技术】【Kali Linux】Wireshark嗅探(十一)以太网Ethernet协议报文捕获及分析
【网络技术】【Kali Linux】Wireshark嗅探(十二)NBNS协议报文捕获及分析
【网络技术】【Kali Linux】Wireshark嗅探(十三)IGMP(因特网组管理)协议报文捕获及分析
一、QUIC协议简介(摘录自维基百科)
QUIC(读作“quick”)是一个通用的传输层网络协议,最初由Google的Jim Roskind设计。该协议于2012年实现并部署,2013年随着实验范围的扩大而公开发布,并向IETF描述。虽然长期处于互联网草案阶段,但从Chrome浏览器至Google服务器的连接中超过一半的连接都使用了QUIC。Microsoft Edge、Firefox都已支持此协议;Safari实现了QUIC,但默认情况下没有启用。QUIC于RFC9000中被正式标准化。
QUIC最初是“快速UDP互联网连接”(Quick UDP Internet Connection)的首字母缩写,但在IETF标准中,QUIC不是任何内容的缩写。QUIC提高了目前使用TCP的面向连接的网络应用的性能。QUIC通过UDP协议在两个端点之间建立若干个多路连接,以达到在网络层淘汰TCP的目标。因为其设计目标在于取代TCP协议,该协议偶尔也被昵称为“TCP/2”。
QUIC与HTTP/2的多路复用连接协同工作,允许多个数据流独立到达所有端点,因此不受涉及其他数据流的丢包影响。与之相比,HTTP/2建立在传输控制协议(TCP)上,如果任何一个TCP数据包延迟或者丢失,所有多路数据流都会遭受队头阻塞延迟。
QUIC的次要目标包括降低连接和传输时延,以及每个方向的带宽估计以避免拥塞。它还将拥塞控制算法移到了两个端点的用户空间,而不是内核空间,据称这将使这些算法得到更快的改进。此外,该协议还可以扩展前向纠错(FEC),以进一步提高预期错误时的性能,这被视为协议演进的下一步。
2015年6月,QUIC规范的互联网草案提交给IETF进行标准化。2016年,成立了QUIC工作组。2018年10月,IETF的HTTP工作组和QUIC工作组共同决定将QUIC上的HTTP映射称为 “HTTP/3”,以提前使其成为全球标准。2021年5月IETF公布RFC9000,QUIC规范推出了标准化版本。
二、网络环境
本次实验采用无线局域网(WLAN)进行,只需要1台运行Windows 11操作系统的主机。
三、QUIC协议报文捕获
启动Wireshark,选择本地无线局域网连接,在过滤条件一栏中输入quic,捕获结果如下图所示:
四、QUIC协议报文分析
选中捕获的其中一则报文,右键其QUIC协议段,选择“复制——所有可见项目”,得到报文的内容如下:
# 1、物理层
Frame 32: 1292 bytes on wire (10336 bits), 1292 bytes captured (10336 bits) on interface \Device\NPF_{6D6E1E4D-E75A-45D1-9A8C-A0E81BEF93DC}, id 0
# 2、传输层
Ethernet II, Src: IntelCor_63:91:33 (38:87:d5:63:91:33), Dst: Shenzhen_17:72:58 (c0:7c:90:17:72:58)
# 3、网际层(使用IPv4)
Internet Protocol Version 4, Src: 192.168.1.4, Dst: 64.233.188.84
# 4、传输层(可见,使用UDP协议而不是TCP协议)
User Datagram Protocol, Src Port: 52645, Dst Port: 443
# IETF的QUIC协议部分
QUIC IETF
QUIC Connection information
[Connection Number: 0]
[Packet Length: 1250]
1... .... = Header Form: Long Header (1)
.1.. .... = Fixed Bit: True
..00 .... = Packet Type: Initial (0)
.... 00.. = Reserved: 0
.... ..00 = Packet Number Length: 1 bytes (0)
Version: 1 (0x00000001)
Destination Connection ID Length: 8
Destination Connection ID: 758cb946c047c17b
Source Connection ID Length: 0
Token Length: 0
Length: 1232
Packet Number: 1
Payload: 47ceb5ce102c9e1b9ca812e36d3d1989c3f8d2248b9e1ca5dba1aaf9e370dfdb82c221e8…
CRYPTO # 加密部分
协议加密部分(CRYPTO)内容:
CRYPTO
Frame Type: CRYPTO (0x0000000000000006) # 帧的分类(加密帧)
Offset: 0 # 初始偏置
Length: 1211 # 数据长度
Crypto Data # 加密的数据
TLSv1.3 Record Layer: Handshake Protocol: Client Hello (fragment) # TLS握手
Handshake Protocol: Client Hello (fragment)
Reassembled Handshake Message in frame: 33
五、实验总结
本次实验使用Wireshark软件,对无线局域网中使用的QUIC(快速UDP互联网连接)协议进行了初步探测和报文分析,对协议的发展历史和工作原理获得了初步了解。
六、参考文献
1、《计算机网络(第7版)》,谢希仁 编著,北京,电子工业出版社,2017年10月;
2、《Kali Linux 2 网络渗透测试——实践指南(第2版)》,李华峰 著,北京,人民邮电出版社,2021年3月。