我们将探讨什么是网络协议,为什么使用代理,以及代理如何区分和处理不同的网络协议。我们还将详细介绍 Envoy 支持的各种网络协议,包括 TCP、UDP、HTTP、HTTPS、HTTP/2、HTTP/3、TLS、WebSocket、Proxy Protocol、gRPC 和 QUIC。
什么是网络协议?
网络协议是通信双方在网络中进行数据交换所遵循的一组规则和约定。它定义了如何在网络上传输数据、如何建立和管理连接、如何处理错误等。常见的网络协议包括 HTTP、HTTPS、TCP/IP、UDP 等。
网络协议分为不同的层次,如应用层、传输层、网络层和数据链路层,每一层都有其特定的协议和功能。例如,HTTP 是应用层协议,用于浏览器与 Web 服务器之间的数据传输;TCP 是传输层协议,提供可靠的数据传输服务。
Envoy 支持的网络协议概述
下表是 Envoy 代理支持的网络协议。
协议 | 一句话描述 | 诞生背景 | 使用场景 | 性能 |
---|---|---|---|---|
TCP | 提供可靠、有序、错误检查的双向通信协议 | 1974年,作为互联网核心协议的一部分 | 文件传输、电子邮件、Web浏览等 | 可靠,但传输速度较慢,开销较大 |
UDP | 提供快速、简单、不可靠的通信协议 | 1980年,为了减少开销和提高速度 | 视频流、在线游戏、实时通信 | 快速,低延迟,但不保证数据完整性 |
HTTP | 超文本传输协议,用于传输网页数据 | 1990年,作为万维网的一部分 | Web浏览、API调用 | 无状态,性能较低 |
TLS | 传输层安全协议,提供加密通信 | 1999年,取代SSL提供更高安全性 | 安全Web浏览、电子邮件、VPN等 | 高安全性,但增加了加密开销和延迟 |
Proxy Protocol | 在代理服务器和后端服务器之间传递客户端连接信息 | 2010年,由HAProxy开发,旨在解决在复杂网络架构中获取客户端真实IP地址的问题 | 负载均衡、反向代理 | 提供连接信息的透明度,但增加了一些开销 |
WebSocket | 提供持久的双向通信通道,用于实时应用 | 2011年,为了弥补HTTP的实时通信不足 | 实时聊天、在线游戏、实时数据流 | 实时、低延迟,适合高频数据交换 |
QUIC | 基于UDP的传输协议,提供低延迟和高吞吐量 | 2013年,由Google开发,为HTTP/3铺路 | 高性能Web浏览、实时应用 | 非常高效,低延迟,通过UDP传输 |
HTTP/2 | 增强版HTTP,支持多路复用和头部压缩 | 2015年,为了提高Web性能 | 高性能Web浏览、实时应用 | 高效,多路复用,较低的延迟 |
gRPC | 基于HTTP/2的高性能RPC框架 | 2015年,由Google开发 | 微服务通信、高性能API | 高效,多路复用,支持多种语言 |
HTTP/3 | 基于QUIC协议的HTTP,进一步减少延迟 | 2018年,为了进一步提升Web性能 | 高性能Web浏览、实时应用 | 非常高效,低延迟,通过UDP传输 |
下图展示了 Envoy 支持的网络协议之间的关系。
下面是对这些协议的简要介绍。
TCP
TCP(Transmission Control Protocol)是传输层协议,提供可靠的数据传输服务。TCP 通过建立连接、数据传输、确认和重传机制,确保数据包按顺序到达目标。Envoy 支持 TCP 协议,用于可靠的流量代理和转发。
UDP
UDP(User Datagram Protocol)是传输层协议,不提供可靠性保证。UDP 用于需要快速传输和低延迟的应用,如视频流、实时通信等。Envoy 支持 UDP 协议,可以代理和转发不需要可靠传输的流量。
HTTP
HTTP(HyperText Transfer Protocol)是用于在 Web 浏览器和服务器之间传输超文本数据的协议。它是无状态的、基于请求 - 响应模型的协议。HTTP/1.1 是目前最广泛使用的版本,但 HTTP/2 和 HTTP/3 提供了更高效的传输机制。
HTTPS
HTTPS(HyperText Transfer Protocol Secure)是在 HTTP 基础上通过 TLS(传输层安全)协议进行加密传输的安全版本。HTTPS 确保数据在传输过程中被加密,保护数据的机密性和完整性。Envoy 支持配置 TLS 来实现 HTTPS 通信。
HTTP/2和HTTP/3
HTTP/2是HTTP协议的改进版本,支持多路复用、头部压缩和服务端推送等特性,提高了传输效率。HTTP/3是基于QUIC协议的最新版本,进一步优化了传输性能。HTTP/3通过UDP实现低延迟和高吞吐量的传输服务。
- HTTP 与 HTTP/2:HTTP/2 在 HTTP/1.1 的基础上引入了多路复用和头部压缩,提高了性能。
- HTTP/2与HTTP/3:HTTP/3 基于 QUIC 协议,通过 UDP 传输数据,进一步减少了延迟和连接建立时间。
TLS
TLS(Transport Layer Security)是用于在两个通信应用程序之间提供保密性和数据完整性的协议。TLS 在传输层加密数据,防止窃听和篡改。Envoy 支持配置 TLS 来保护通信数据的安全。
WebSocket
WebSocket 是一种全双工通信协议,允许客户端和服务器之间建立持久连接。它适用于需要频繁数据交换的应用,如实时聊天和在线游戏。Envoy 支持 WebSocket 协议,可以代理和转发 WebSocket 通信。
全双工(Full Duplex)通信模式允许数据在两个设备之间同时双向传输,无需等待对方完成传输。与此不同,半双工(Half Duplex)模式只允许单向传输,任意时刻只能有一个方向的数据流动。尽管现代应用中半双工协议使用较少,但它们在传统设备如无线电通信中仍然重要。
类似 WebSocket 的全双工协议包括 HTTP/2 和 HTTP/3,支持双向通信并利用 QUIC 的低延迟特性。QUIC 和 SCTP 通过 UDP 和多流机制提高网络效率。XMPP 和 MQTT 适用于即时消息和物联网,AMQP 用于企业级消息传递,而 WebRTC 则支持浏览器中的实时音视频通信。这些协议在各种场景下实现了双向、实时的数据传输。
WebSocket 在初始握手时使用 HTTP 协议,然后通过升级握手(Upgrade header)将连接切换到 WebSocket 协议,从而在同一连接上支持双向通信。WebSocket 在建立连接后,能够实现低延迟的双向数据传输。
Proxy Protocol
Proxy Protocol 是一种用于在负载均衡器和后端服务器之间传递客户端连接信息的协议。它允许后端服务器获取客户端的源 IP 地址和端口信息,Envoy 支持 Proxy Protocol,增强了连接信息的透明度。
gRPC
gRPC 是一种基于 HTTP/2 的高性能远程过程调用(RPC)框架,支持多种编程语言。gRPC 使用协议缓冲(Protocol Buffers)作为接口描述语言,具有高效、灵活和跨语言的特点。Envoy 支持 gRPC,可以代理和负载均衡 gRPC 服务。
QUIC
QUIC(Quick UDP Internet Connections)是 Google 开发的一种基于 UDP 的传输协议,旨在提高互联网的性能。QUIC 集成了 TLS 加密,提供低延迟和高吞吐量的传输服务。HTTP/3 基于 QUIC 协议,Envoy 支持 QUIC 协议,提升网络传输性能。
为什么要使用代理?
代理(Proxy)是位于客户端和服务器之间的中间设备或软件,代理客户端的请求和服务器的响应。使用代理有多个好处:
- 安全性:代理可以过滤和检查进出网络的数据,保护内部网络免受攻击。
- 性能优化:通过缓存常用数据,减少服务器负载,加快响应速度。
- 负载均衡:将客户端请求分散到多台服务器上,避免单点故障,提高系统可用性。
- 透明性:隐藏内部网络结构,防止外部用户直接访问内部资源。
- 访问控制:控制用户对特定资源的访问权限。
代理如何区分网络协议?
代理通过检查和解析数据包的头部信息来区分不同的网络协议。每种协议都有其特定的头部格式和标识符,代理可以根据这些信息判断数据包使用的协议,并进行相应的处理。例如,HTTP 协议的数据包头部包含请求方法、URL 和 HTTP 版本等信息,而 HTTPS 则是通过 TLS 加密的 HTTP。
Envoy 作为一个高性能代理,支持多种网络协议,并能够智能地解析和处理不同协议的数据包。