一个基于Quic协议的Http转Udp代理工具
一个基于Quic协议的Http转Udp代理工具 背景 某地存在A和B两个网络,A中搭建了上级平台,用户平时正常办公使用该平台。B搭建了下级平台,接入设备。 两个网络的边界端口映射有一个唯一的限制:两个网络之间端口映射只能映射Udp的端口 现在B网中的设备想要接入A网,B网中的设备接入基本上都是http请求,所以整体的对接只需要对接http请求。 探索 针对该问题,进行相关的预研探索。目前已有的条件就是udp通道的边界,那么实现该目标的办法就是利用该udp通道去传输http请求,也就是说要开发http-udp,udp-http的代理工具。 TCP和UDP 处在TCP/IP模型的传输层中,传输控制协议TCP和用户数据报协议UDP TCP可靠,UDP不可靠 Http 处在TCP/IP模型的应用层中,基于tcp协议的应用 上述的概念比较清晰,其中也暴露了一个非常关键的点,TCP可靠,UDP不可靠。我们都知道tcp的三次握手和四次挥手,tcp是面向连接的协议,通过严格的确认连接来保证整个连接的正常通信。而udp面向非连接,不需要维护连接状态,只需要交付报文即可。 经过一些了解后,如果要开发一个http和udp互相转换的代理工具,主要需要解决以下的问题: Udp不可靠,存在丢包的情况 Udp有报文大小限制,1480bytes Udp不保证数据顺序 对于一个网络方面的小白来说,想要独自开发上述代理工具至少需要半年起步。 既然从0开发需要耗时太长,那么就需要找目前已经存在的代理工具,经过搜索发现相关内容少之又少。 在一次偶然的搜索中发现http3.0是基于Quic协议开发,而Quic协议又是基于udp的,那么似乎找到了一丝问题解决的可能性。 HTTP/3 & Quic HTTP/3 is the third major version of the Hypertext Transfer Protocol used to exchange information on the World Wide Web, complementing the widely-deployed HTTP/1.1 and HTTP/2. Unlike previous versions which relied on the well-established TCP (published in 1974),[2] HTTP/3 uses QUIC, a multiplexed transport protocol built on UDP.[3] On 6 June 2022, IETF published HTTP/3 as a Proposed Standard in RFC 9114.[4] ...