UDP网络打孔

对于我的学术项目,我正在努力实现这一目标。 一个web服务器节点JS应用程序监听端口3000.所以,如果你curl http://localhost:3000你会得到Hello World! 。 (一个简单的网页。

现在我在本地机器上运行在webserver上方。 而我的调制解调器在NAT后面。 假设如果我在调制解调器中将端口转发到myip:3000那么它对世界开放。 但是这里是我卡住的最大的东西 - 我不想使用调制解调器进行端口转发,相反,我将使用第三方服务器进行UDP Punch Hole。

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

我正在尝试编写另一个客户端 - 它打开与第三方服务器的连接。 说它在41234港口41234了一个洞。 该端口是开放的。 第三方主机可以发送一些东西到那个端口。

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

任何人都会再次蜷缩到myip:41234它将被节点js UDP punch app收到,所以它会重定向到localhost:3000 。 最后, anyone将收到localhost:3000的响应。

我的两个问题 -

  • 有没有比我在这里提出的更好的方法?
  • 有没有这种东西的知名节点js库,我看到,我可以使用UDP穿孔。 或者我正在考虑编写一个Lib来完成这个任务 - 这听起来像是重新发明了轮子吗?
  • 注意 - 在这个学术项目中,我们正试图学习如何让任何本地应用程序在调制解调器中无需端口转发的情况下向世界开放。

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

    请求流程


    不,那不行。

  • HTTP运行在TCP上,而不是UDP。 打孔UDP洞不会有什么好处 - 与后端HTTP服务器的任何TCP连接仍然会失败。

  • HTTP重定向并不神奇。 如果用户无法访问特定的主机:端口,将它们重定向到该主机:端口上的URL只会在请求该URL时使其浏览器超时。

  • 您不能从浏览器请求的不同主机:端口发送响应,因为没有与该端点建立TCP连接。

  • 链接地址: http://www.djcxy.com/p/96859.html

    上一篇: UDP punch hole for a web

    下一篇: How to control which Screen a Window is shown in from QML