繁体   English   中英

Web服务器的UDP打孔?

[英]UDP punch hole for a web-server?

对于我的学术项目,我正在努力实现这一目标。 一个在端口3000上侦听的Web服务器节点JS应用程序。因此,如果curl http://localhost:3000您将获得Hello World! (一个简单的网页。

现在,我在本地计算机上的网络服务器上方运行。 我的调制解调器位于NAT之后。 假设如果我将调制解调器中的端口转发到myip:3000那么它将对世界开放。 但是,这是我最大的困难-我不想使用调制解调器进行端口转发,而是将第三方服务器用于UDP Punch Hole。

现在,我的要求是,任何来自net的人都应该能够通过curl http://third-party-server-ip:3000访问我的Web curl http://third-party-server-ip:3000

我正在尝试编写另一个客户端-这将打开与第三方服务器的连接。 说它在端口41234打孔。 该端口是开放的。 第三方主机可以向该端口发送内容。

现在,互联网上的任何人都可以向第三方主机发起以下命令curl http://third-party-ip:3000 因此,第三方返回myip:udpPunchHolePortmyip:41234

任何人都将再次卷曲到myip:41234 ,它将被节点js UDP打孔应用程序接收,因此它将重定向到localhost:3000 最后, anyone都会收到localhost:3000的响应。

我的两个问题-

  1. 有没有比我在这里建议的方法更好的方法?
  2. 我有没有众所周知的node-js lib这样的东西,我可以使用UDP打孔 或者我正在考虑编写一个Lib来总体上做到这一点-听起来像是在重新发明轮子吗?

注意-在此学术项目中,我们正在尝试学习如何使任何本地应用程序对世界开放,而无需在调制解调器中进行端口转发。

我们阅读了Skype协议分析 ,这也是我们的灵感。

请求流程

不,那行不通。

  1. HTTP通过TCP而不是UDP运行。 刺破UDP漏洞对您没有任何好处-与后端HTTP服务器的任何TCP连接仍将失败。

  2. HTTP重定向不是魔术。 如果用户无法访问特定的host:port,则将其重定向到该host:port上的URL只会使他们的浏览器在请求该URL时超时。

  3. 您无法从浏览器请求的主机,端口发送响应,因为没有与该端点建立TCP连接。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM