局域网TCP服务器,需要外网能访问,怎么做?
不借助第三方软件,不做路由端口映射,有没办法实现?我之前的想法是,用类似UDP的办法,先从TCP服务器上向外网的指定IP的客户端发一个包,申明我的路由IP及申请到的端口号...
不借助第三方软件,不做路由端口映射,有没办法实现?
我之前的想法是,用类似UDP的办法,先从TCP服务器上向外网的指定IP的客户端发一个包,申明我的路由IP及申请到的端口号。
然后客户端再依这个IP和端口号TCP连接我处于内网的服务器。
我是用的socket来做,但我发现一个socket在connect出去以后,就不能listen。
如果断开connect再listen的话,那从路由申请到的端口号就不能用了。
再申明一遍:不能借助第三方软件(花生壳之类不要提了),不做路由端口映射。不过可以借助外网的HTTP服务(仅HTTP,不能扩展)。
有代码可参考的就贴下代码,没有的,说下思路也行。
刚查到一篇文章,发现和我的想法是一样的。
大家帮忙看看有没可行性?一直都只知道UDP打洞,TCP打洞还是头一次听说。
看了他的文章后我才知道我的socket不能转为listen状态是因为没有设置SO_REUSEADDR - -!
http://www.vckbase.com/document/viewdoc/?id=1773 展开
我之前的想法是,用类似UDP的办法,先从TCP服务器上向外网的指定IP的客户端发一个包,申明我的路由IP及申请到的端口号。
然后客户端再依这个IP和端口号TCP连接我处于内网的服务器。
我是用的socket来做,但我发现一个socket在connect出去以后,就不能listen。
如果断开connect再listen的话,那从路由申请到的端口号就不能用了。
再申明一遍:不能借助第三方软件(花生壳之类不要提了),不做路由端口映射。不过可以借助外网的HTTP服务(仅HTTP,不能扩展)。
有代码可参考的就贴下代码,没有的,说下思路也行。
刚查到一篇文章,发现和我的想法是一样的。
大家帮忙看看有没可行性?一直都只知道UDP打洞,TCP打洞还是头一次听说。
看了他的文章后我才知道我的socket不能转为listen状态是因为没有设置SO_REUSEADDR - -!
http://www.vckbase.com/document/viewdoc/?id=1773 展开
7个回答
Storm代理
2023-05-30
展开全部
展开全部
首先你要明白路由是不是共享式NAT上网的,也就是说router port nat出去的数据是一直堆叠或者持续变动的,而不做端口映射基本没有实现的可能!
当然如果是静态NAT,那么直接做静态NAT就可以了!
如楼上灰鸽子,是直接通过本地服务端(中灰鸽子端)连接广域网客户端(控制端),然后服务端和建立的联系。如通过80端口出数据,穿透防火墙等等。
你可以尝试修改数据包出去的port,同时在两个端进行修改!
-------------
抓取到数据包的时候注意地址段,关键在于让路由到router nat到数据包的时候,能找到你的主机A或者W。
你可以参照一些三层更新之类的软件。
当然如果是静态NAT,那么直接做静态NAT就可以了!
如楼上灰鸽子,是直接通过本地服务端(中灰鸽子端)连接广域网客户端(控制端),然后服务端和建立的联系。如通过80端口出数据,穿透防火墙等等。
你可以尝试修改数据包出去的port,同时在两个端进行修改!
-------------
抓取到数据包的时候注意地址段,关键在于让路由到router nat到数据包的时候,能找到你的主机A或者W。
你可以参照一些三层更新之类的软件。
北京智和信通
2023-07-25 广告
2023-07-25 广告
SNMP(Simple Network Management Protocol)是一种用于网络管理的协议,它允许网络设备商开发网管软件来监控和管理网络设备。目前,市面上有很多支持SNMP协议的网管软件,其中一些可以支持国产软硬件。具体来说,...
点击进入详情页
本回答由北京智和信通提供
展开全部
另加个辅助连接的服务器,远程控制软件TeamViewer就是这样做的;路由器上的UPnP功能也可以啊,迅雷上就可以开启UPnP自动映射端口功能
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
【我是楼主,修改不了了,新开个号来说明下】
我有认真看了那篇文章。说下我的具体实现思路吧:
W为WEB服务器,提供HTTP
S为位于NAT下的TCP服务器
A为需要连接S的TCP客户端
首先,S用TCP方式登录W,W记录下S的外口IP及端口
A想要向S发起TCP连接,那么A先用TCP方式向W发起HTTP请求,W把S的外口IP及端口反馈给A,并记录下A的IP及端口
W通知S“A要对你进行连接”,并把A的外口IP及端口发送给S
S接收到通知后,向A发起一次TCP连接,并转为监听状态,同时告诉W“我准备好接受连接了”
W再通知A“可以进行连接”
最后,A向S发起TCP连接请求
整个就是UDP打洞的原理。只是之前一直没想到TCP也可以这么干。大家说说看这样能不能实现?
我有认真看了那篇文章。说下我的具体实现思路吧:
W为WEB服务器,提供HTTP
S为位于NAT下的TCP服务器
A为需要连接S的TCP客户端
首先,S用TCP方式登录W,W记录下S的外口IP及端口
A想要向S发起TCP连接,那么A先用TCP方式向W发起HTTP请求,W把S的外口IP及端口反馈给A,并记录下A的IP及端口
W通知S“A要对你进行连接”,并把A的外口IP及端口发送给S
S接收到通知后,向A发起一次TCP连接,并转为监听状态,同时告诉W“我准备好接受连接了”
W再通知A“可以进行连接”
最后,A向S发起TCP连接请求
整个就是UDP打洞的原理。只是之前一直没想到TCP也可以这么干。大家说说看这样能不能实现?
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
这是一条动态的 端口影射 在 PAT 路由上
192.168.0.2 11111 10.0.0.2 22222
HTTP 保留 10.0.0.2 22222 载把这个消息 告诉 A A拿这个 连接能连接么?
一个TCP 连接的 三握手 怎么 搭建 ?
UDP 的我感觉可以。
不过 这样的技术确实存在 。迅雷 就是很典型的 是么? 共同学习吧 。
192.168.0.2 11111 10.0.0.2 22222
HTTP 保留 10.0.0.2 22222 载把这个消息 告诉 A A拿这个 连接能连接么?
一个TCP 连接的 三握手 怎么 搭建 ?
UDP 的我感觉可以。
不过 这样的技术确实存在 。迅雷 就是很典型的 是么? 共同学习吧 。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
1 把你的计算机做成服务器
2 装黑客软件
友情提示:单开FTP文件传输协议很危险
2 装黑客软件
友情提示:单开FTP文件传输协议很危险
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询