gpt4 book ai didi

node.js - 网络服务器的 UDP 打洞?

转载 作者:搜寻专家 更新时间:2023-10-31 22:20:22 31 4
gpt4 key购买 nike

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

现在我在我的本地机器上运行在网络服务器之上。我的调制解调器在 NAT 后面。假设如果我在调制解调器中转发到 myip:3000 那么它是对世界开放的。但这是我遇到的最大问题——我不想使用调制解调器进行端口转发,相反,我将使用第三方服务器进行 UDP 穿孔。

现在我的要求是来自网络的任何人都应该能够通过 curl http://third-party-server-ip:3000 访问我的网络服务器。

我正在尝试编写另一个客户端 - 它打开与第三方服务器的连接。假设它在端口 41234 上打了个洞。该端口已打开。第三方主机可以向该端口发送内容。

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

任何人都会再次 curl 到 myip:41234 它将被 Node js UDP punch 应用程序接收,因此它将重定向到 localhost:3000。最后,anyone 将收到来自 localhost:3000 的响应。

我的两个问题 -

  1. 有没有比我在这里提出的更好的方法?
  2. 是否有任何知名的 node-js 库可用于此类内容,我明白了,我可以使用 UDP punch hole . 或者我正在考虑编写一个 Lib 来一般地执行此操作 - 这听起来像是重新发明轮子吗?

注意-在这个学术项目中,我们正在尝试学习如何在没有调制解调器端口转发的情况下使任何本地应用程序向世界开放。

我们阅读 skype protocol analysis ,这也是我们的灵感。

Flow of request

最佳答案

不,那行不通。

  1. HTTP 在 TCP 而非 UDP 上运行。打 UDP 漏洞对您没有任何好处——与后端 HTTP 服务器的任何 TCP 连接仍然会失败。

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

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

关于node.js - 网络服务器的 UDP 打洞?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45093203/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com