欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

远程桌面的端口设置和原理探究

程序员文章站 2022-06-30 10:28:45
...

     在上一篇文章外网远程控制局域网内主机,路由器端口转发设置
文章中我提到了远程连接的基本原理,本文来验证一下。并且看看怎么来修改远程连接的默认端口。
     首先, 在被控机上开启“允许远程连接”,那么内部远程控制程序就监听了3389端口。主控端发起远程连接,主控端就向被控端的3389端口发送消息,被控端由于监听了3389端口,所以两者之间建立连接,之后两者就可以沟通了。

     那么,如果我要修改我本机上的远程控制的默认端口,肯定是有两个端口的:一个是我作为被控机开启”允许远程控制”所监听的那个端口;另一个就是我作为主控机去远程连接别人时默认向哪个接口发送消息。

     具体操作过程记录如下:
打开”允许远程控制”: 计算机->右键”属性”->远程设置-> 允许远程连接到此计算机->确定
远程桌面的端口设置和原理探究

远程桌面的端口设置和原理探究

     现在打开”命令提示符”,输入
     netstat -ano | findstr "3389"
远程桌面的端口设置和原理探究
     可以看到,pid为14312的进程正在监听3389,这个应该就是远程桌面的内部程序了。我们看看这个进程到底是个什么东西。打开进程管理器,根据pid查看。
远程桌面的端口设置和原理探究
     svchost.exe是一个属于微软Windows操作系统的系统程序,微软官方对它的解释是:Svchost.exe 是从动态链接库 (DLL) 中运行的服务的通用主机进程名称。也就是说这是个通用进程名字,内部可以调用微软提供的各种服务功能。这里它内部调用的就是远程控制的服务了,从用户名NETWORK_SERVICE说明这是一个网络服务,远程服务不正是一个基于网络的服务吗。

现在我来修改这个监听的端口。
打开注册表:运行-regedit
远程桌面的端口设置和原理探究
     找到HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\TerminalServer\WinStations\RDP-TCP 在右边找到PortNumber值,默认是3389。现在我把他修改为3390。这个是本地监听的端口
远程桌面的端口设置和原理探究
     修改完之后,并不会立即起作用。要想让注册表重启,而不是重启整个电脑:打开进程管理器,关闭”explorer.exe”这个进程,再重新打开这个进程,就会重新加载注册表。这个操作就不截图了。
现在再来看看端口运行情况netstat -ano | findstr "3390"

远程桌面的端口设置和原理探究
     哎?怎么还是监听的3389呢,注册表不是已经生效了吗?
注册表是重新生效了,但是注册表又不会去监听端口啊,监听端口的是那个svchost的程序。而且你看进程号都没有变,还是14312,说明这个程序并没有重启。我的猜测是当这个进程启动的时候会去读注册表,从而决定监听哪个端口。所以我把关掉这个进程,再去设置一下”允许远程连接(先设置为不允许,再设置为允许,再保存应用)”。这个操作就不截图演示了。操作之后。(注意,这样通过关闭进程,重启进程的方法来应用注册表是我自己想的,有时候可以,有时候又不可以,最好还是重启)
重启之后我再看看端口监听情况。

netstat -ano | findstr "3390"

远程桌面的端口设置和原理探究
远程桌面的端口设置和原理探究

     果然,现在监听的就不是3389端口,而是3390端口了。如果有别的计算机想远程连接到我这台电脑,就需要输入3390端口才行了(另外被控机还需要设置防火墙允许进入规则,将3390端口添加进去)

     至于主动远程连接别人时,发送数据的默认目的端口如何修改,我还没找到。不过在主动进行远程控制时是可以指定端口的,只需要再ip后面加一个冒号再加端口号即可。所以这个设不设置也无所谓了
打开所有程序->Windows附件->远程桌面连接
远程桌面的端口设置和原理探究

输入一个远程ip和端口(因为我们只需要测试发送数据包的目的端口,所以这里我随便输一个ip:115.23.32.42:5666,实际中是输入你需要输入被控机的ip和端口)
远程桌面的端口设置和原理探究
因为远程连接是通过RDP协议来封装数据的,这是一个应用层协议,并且是基于tcp传输的。所以我们需要捕获tcp包。打开wireshark,设置过滤条件目的地址115.23.32.42,开始捕获,然后点击远程桌面的连接按钮。
远程桌面的端口设置和原理探究

可以看到,目的端口就是5666了。