For my academic project, I am trying to achieve this. A web server node JS application listening on port 3000. So If you curl http://localhost:3000
you will get Hello World!
. ( A simple web page.
Now I am running above webserver in my local machine. And my modem is behind NAT. Suppose If I port forward in the modem to myip:3000
then it is open to the world. But here is the biggest thing I am stuck - I don't want to use the modem for port forwarding, instead, I will use third party server for UDP Punch Hole.
Now my requirement is anyone from net should able to access my webserver at curl http://third-party-server-ip:3000
.
What I am trying is to write another client - which opens a connection to the third party server. Say it did a hole punching at port 41234
. That port is open. The third-party host can send something to that port.
Now anyone in the internet initiate this command curl http://third-party-ip:3000
to the third party host. So the third party returns the myip:udpPunchHolePort ie, myip:41234
.
anyone will again curl to myip:41234
it will be received by the node js UDP punch app, so it will redirect to localhost:3000
. Finally, the anyone
will receive the response from localhost:3000
.
My two questions -
Note - In this academic project, we are trying to learn how to make any local application open to the world without port forwarding in the modem.
We read on skype protocol analysis , that is also our inspiration.
No, that won't work.
HTTP runs over TCP, not UDP. Punching a UDP hole doesn't do you any good -- any TCP connection to the backend HTTP server will still fail.
HTTP redirects are not magic. If a user cannot access a specific host:port, redirecting them to a URL on that host:port will just make their browser time out when it requests that URL.
You cannot send a response from a different host:port from what the browser requested, because there is no TCP connection established with that endpoint.
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.