远程控制关键技术之混合协议

来源:互联网 发布:湖南传奇网络 编辑:程序博客网 时间:2024/06/05 15:55
远程控制关键技术之混合协议

1.目地?
本文主要阐述远程控制为什么要使用混合协议,那些协议可以用于远程控制类软件,以及如何实现混合协议。

2.为什么要使用混合协议?
随着电脑的防御类软件发展,单个以传统的TCP协议为基础的远程控制,在上线能力上慢慢被削弱了,特别是网络防范比较严格的网络,往往限制比较多,单个的协议难以突破防火墙的限制,所以催生出了基于混合协议的远控。

3.可以用作远程控制类的协议(原则上必须是一种internet协议类型)

a.TCP协议,这个不用解释了,早期远控基本都是基于这个协议的。

b.TCP代理协议(SOCKS4/SOCKS5/HTTP CONNECT模式)模式代理支持,严格来讲,这个只是通讯前一部分需要认证一个代理,后期与TCP协议完全相同。

c.TCP-HTTP-TUNNEL协议,构建HTTP隧道,HTTP隧道有个特点,就是一问一答,这种协议穿透性最强,但是速度最慢,受RTT(包往返周期)值影响比较大,此外,目前网络上讲的HTTP隧道技术都不完善,没有考虑到Squid/ISA/BlueCoat等,代理加速,软件防火墙,硬件防火墙等特殊的细节设置,还有密码设置,认证方式,突破能力与稳定性十分有限。

d.UDP协议,该协议是非可靠传输的,但UDP很容易可以实现内网的穿越(P2P模式),UDP隧道建立,需要开发者自己实现可靠传输。

d.UDP-DNS隧道,利用A记录可以定义自己的DNS解析服务器,利用互联网DNS服务器,把DNS包中转到自己的DNS服务器上,将数据隐藏在DNS数据包内部,实现穿越防火墙的目地,同样UDP-DNS需要自己实现可靠传输。

d.ICMP协议(ping包),通过ICMP协议,构建ICMP隧道,ICMP面向非连接,非可靠传输,需要自己实现可靠传输。

e.其他方式,例如基于raw SOCKET ,ip层自定义数据包,需要自己实现可靠传输。

4.如何实现混合协议

我们可以针对各种协议,大致分为2类,可靠传输与非可靠传输(非可靠传输没有连接,所以相对安全些),我们需要做的第一步就是以非可靠传输为基础,自己实现可靠传输(实现滑动窗口,拥塞控制,自动重传),第二步实现从可靠传输的数据包中提炼与嵌入远程控制数据流;第三步实现混合协议转换为TCP标准数据流,交付控制端处理(保证控制端与协议无关,控制端只要按 TCP协议处理)。

5.混合协议难点
a.将非可靠传输改进为可靠传输,说穿了就是模拟TCP,这个难度是很大的,也很复杂,我本人从事该项研究已经超过3年,就是VTCP技术(目前已经是11.0版本)。
b.建立网络通讯自己的统一模型,以便统一混合协议的使用方式,将代码量减少,稳定性提高。

原创粉丝点击