[英]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:udpPunchHolePort即myip:41234
。
任何人都将再次卷曲到myip:41234
,它将被节点js UDP打孔应用程序接收,因此它将重定向到localhost:3000
。 最后, anyone
都会收到localhost:3000
的响应。
我的两个问题-
注意-在此学术项目中,我们正在尝试学习如何使任何本地应用程序对世界开放,而无需在调制解调器中进行端口转发。
我们阅读了Skype协议分析 ,这也是我们的灵感。
不,那行不通。
HTTP通过TCP而不是UDP运行。 刺破UDP漏洞对您没有任何好处-与后端HTTP服务器的任何TCP连接仍将失败。
HTTP重定向不是魔术。 如果用户无法访问特定的host:port,则将其重定向到该host:port上的URL只会使他们的浏览器在请求该URL时超时。
您无法从浏览器请求的主机,端口发送响应,因为没有与该端点建立TCP连接。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.