基于Tcp穿越的Windows远程桌面(远程桌面管理工具)
基于Tcp穿越的Windows远程桌面(远程桌面管理工具)
1.《C# WinForm 跨线程访问控件(实用简洁写法)》
2.《基于.NET环境,C#语言 实现 TCP NAT》
3.《基于Tcp穿越的Windows远程桌面(远程桌面管理工具)》
距离上一篇文章《基于.NET环境,C#语言 实现 TCP NAT》已经很久没有发随笔了,而且文章阅读量不高,可能很多人对Tcp穿越不感兴趣。今天这篇文章是基于上一篇文章做的应用,一个远程桌面管理工具。
很多人肯定会说,免费且功能齐全的远程管理工具到处都是,何必再写一个呢?既然免费且管理功能齐全的远程桌面管理已经很多,笔者肯定不走寻常路,要不然根本没有必要写这篇博客了。话太啰嗦,还是先看看
界面吧,然后慢慢给各位道来。
我要做的远程桌面工具,除了具备常规远程桌面的功能外,最重要的,它是基于Tcp穿越和中继服务的,最终实现类似TeamViewer的功能。
我们分析一下常规远程桌面的利弊:
1)直连模式 你必须开启远程桌面端口3389,客户端跟被控计算机必须处于局域网或者被控制计算机有固定IP并做了相关路由映射设置。
2)安全风险 既然你能连接被控端,别人也能连接。特别是服务器,只要链路是通畅的,别人可以不断的连接并尝试密码,当然攻击手段
很多,不止这一种。不管怎么说,你肯定将远程桌面服务暴露到了互联网或者局域网。比如修改3389端口之类的,都是治标
不治本的事情。
3)可连接性 如果我现在人在公司,我要远程连接家里面的电脑怎么办?或者我要维护客户公司里面的服务器,但服务器又没有固定Ip,
通过常规工具无法连接的,只能用类(Teamviewer)的桌面分享工作。
4)画面流畅
解决方案当然有,像Teamviewer类似的桌面分享工具就可以解决这个问题。但如果你是公司行为,管理很多服务器,Teamviewer的价格还
是不便宜。比如笔者公司做医药ERP项目,客户就非常多,经常维护服务器,很多医药批发公司都将服务器置于内网。可连接性是一个问题,
另外记住用户名和密码也是一个问题。
笔者写的这个远程桌面工具,除了普通管理功能外,最重要的一点,就是像Teamviewer一样,解决了连接性的问题。只要这台计算机能上网,
并开启了远程桌面服务,你就可以从任何一个地方进行远程桌面连接到这台电脑。
本工具解决了以下问题:
1)安全风险 你不需要固定IP,也不需要做3389端口映射,不用将远程桌面服务暴露到互联网中。注:别人想通过远程桌面服务攻击你,都
找不到入口点。
2)可连接性 只要被控计算能上网,你就能远程桌面连接到该电脑。为确保可连接性,我们做了两种模式,P2P穿越和中继模式,确保100%
能连接到被控计算机。首选是P2P穿越模式,穿越不成功的情况下,我们做中继服务,也就是数据流通过我们公司的服务器进行
中转。有人肯定会说,通过中继模式,数据都到你服务器了,会不会有安全风险?理论上有,只是我还没有实力去解析Rdp协议
3)画面流畅 Rdp协议本身数据传输量就很小,画面就比较流畅。个人觉得比其它远程分享协议都好。
4)数据压缩 底层传输的Rdp协议数据,我们都采动态识别和压缩技术。举个例子,我们通过远程桌面向另外一台服务器复制一个SqlServer数
据文件,通常做法都是先压缩成一个包,再传输。毕竟这种文件一般较大,而通过我们的工具传输,你不用压缩了,只管理复制
和粘贴,底层会自动压缩数据,不用像以前一样经常压缩和解压缩。压缩和解压在传输过程中已经自动完成。方便使用者。这一
点需求,也是从我们公司长期使用远程桌面的操作中总结出来的,如果文件大,压缩都需要很长的时间。关键是传输过去,对方
计算机还不一定有解压软件。有时候只为做一件简单的事情,却搞得很复杂。关键是别人的服务器,还不一定让你装软件。
另外我们做了像TeamViewer一样的连接码,你只需要将码发给您的朋友,他就可以通过本工具连接到您的计算机。说到底,我们应用层就用的
微软的桌面控件,但底层数据传输,我们做了加工,通过什么通道,怎么传输,由工具负责。
附1:目前应用层已经实现了远程桌面的所有的功能,您一个帐号可以管理多台计算机,数据传输层也实现了穿越和中继以及直连模式,正常
使用是完全没有问题的。对于后期的规划,可能会增加桌面分享的功能,类似QQ和TeamViewer的功能。TeamViewer算是一个小工具,
而且是国外的,在中国应该没有少挣钱,但国内类似的软件却基本没有。所以,我个人打算做一款软件,包含TeamViewer的所有功能,
最好效率更高。
附2:关于P2P穿越,在实际使用中,发现有些运营商会禁止使用P2P穿越技术,但只要持续进行P2P连接尝试,很多时候都会成功。所以本
软件实现了无损通道切换的功能,比如你现在使用的是中继连接,传输速度受中转服务器带宽的限制,一旦建立P2P穿越连接,我们将
自动为你切换通道,上层的画面,数据传输不受任何影响,即画面不卡顿,数据传输如文件传输不中断。切换成P2P模式,最大的好处
在速度不受中继服务器宽带的限制,对我们来讲,节省资源,对你来说,加快了速度,提升了效率。
如果您也正在做类似的开发工作,或者想做类似的工具,欢迎和我交流。QQ:243838541 等工具开发出来后,我会上传到博客供下载免费使
用。
基于Tcp穿越的Windows远程桌面(远程桌面管理工具)的更多相关文章
- windows7安装远程服务器AD域管理工具
目的:在win7上安装“远程服务器管理工具”,这样可以在客户端进行对服务器的AD域的操作,避免了远程登陆进服务器的麻烦. 前提条件:一般此工具只有管理员才具有有效使用权限,所以,在域administr ...
- Windows Azure Storage图形界面管理工具
上一篇我们介绍了用PowerShell将Windows Azure的存储服务当网盘来使用.如果感觉还不够简单,那么这次我们来看看还有哪些使用起来更方便的图形界面管理工具吧.当然,这些工具必要支持中国版 ...
- 全网最详细的Windows里Git client客户端管理工具SourceTree的下载与安装(图文详解)
不多说,直接上干货! 很多人用Git命令行不熟练,那么可以尝试使用SourceTree进行操作. 安装之前的必备 (1)Git的安装 Git学习系列之Windows上安装Git详细步骤(图文详解 ...
- windows下powershell的包管理工具
scoop github 开源地址:https://github.com/lukesampson/scoop 安装命令->powershell管理员模式下输入 Invoke-Expression ...
- 详细故障排除步骤:针对 Azure 中到 Windows VM 的远程桌面连接问题
本文提供详细的故障排除步骤,用于为基于 Windows 的 Azure 虚拟机诊断和修复复杂的远程桌面错误. Important 若要消除更常见的远程桌面错误,请务必先阅读远程桌面的基本故障排除文章, ...
- Windows Server 2019远程桌面服务配置和授权激活
参考Windows Server 2016远程桌面服务配置和授权激活方法可适用于Windows Server 2019 Server 2016默认远程桌面连接数是2个用户,如果多余两个用户进行 ...
- Python网络编程03 /缓存区、基于TCP的socket循环通信、执行远程命令、socketserver通信
Python网络编程03 /缓存区.基于TCP的socket循环通信.执行远程命令.socketserver通信 目录 Python网络编程03 /缓存区.基于TCP的socket循环通信.执行远程命 ...
- 如何修改windows Server 2012 远程桌面连接默认端口
如何修改windows Server 2012 远程桌面连接默认端口 修改windows 2012/win8.win7远程桌面连接默认端口一般需要修改注册表四个地方[HKEY_LOCAL_MACH ...
- Windows远程连接CentOS桌面
VNC (Virtual Network Console)是虚拟网络控制台的缩写.它 是一款优秀的远程控制工具软件.VNC的基本运行原理和一些Windows下的远程控制软件很相像 VNC基本上是由两部 ...
随机推荐
- 创建最简单的exe形式COM组件并在MFC程序调用
来新公司学习接手新项目,拿到代码打开解决方案看到里面竟然有40几个工程,有点吃惊.具体看代码也有很多之前没见过的写法,上了几天火. 有件事就没太搞明白,按照文档的说法上层很多软件都要调用IO服务器,但 ...
- Netty源码分析 (六)----- 客户端连接接入accept过程
通读本文,你会了解到1.netty如何接受新的请求2.netty如何给新请求分配reactor线程3.netty如何给每个新连接增加ChannelHandler netty中的reactor线程 ne ...
- JavaScript漫谈之理解类型操作符typeof
在本文中,将简述JavaScript类型系统和数据类型,以及如何使用typeof操作符执行类型检查. 还讲解了使用typeof操作符进行某些数据类型检查是不完善的,并介绍其他几种类型检查的方法. 更多 ...
- 【LeetCode】46-全排列
题目描述 给定一个没有重复数字的序列,返回其所有可能的全排列. 示例: 输入: [1,2,3] 输出: [ [1,2,3], [1,3,2], [2,1,3], [2,3,1], [3,1,2], [ ...
- Django框架下的增强分页组件
本文通过文章同步功能推送至博客园,显示排版可能会有所错误,请见谅! 描述:Django框架内置了分页功能,但其只能满足简单需求,难以实现复杂功能. 实现代码: #!/usr/bin/env pytho ...
- java教程系列一:什么是Java语言?
海上生明月,天涯共此时. Java是一种通用的计算机编程语言,它具有卓越的通用性.高效性.平台移植性和安全性.它旨在让应用程序开发人员"write once, run anywhere&qu ...
- java读取Excel —— XSSFWorkbook 找不到该类
- Yum未完成事务问题
1.安装 yum-complete-transaction [root@linux-node1 ~]# yum -y install yum-utils 2.清除yum缓存 [root@linux-n ...
- SpringBoot整合Elasticsearch详细步骤以及代码示例(附源码)
准备工作 环境准备 JAVA版本 java version "1.8.0_121" Java(TM) SE Runtime Environment (build 1.8.0_121 ...
- 是时候让大家看看你用django写出来的博客了(内含部署教程视频)
作者:HelloGitHub-追梦人物 文中涉及的示例代码,已同步更新到 HelloGitHub-Team 仓库 博客的基础功能已经开发的差不多了,虽然还有很多地方可以完善,但我们还是希望早点把博客部 ...