获取NAT转换的IP和某些本地端口的端口

问题描述 投票:0回答:2

我在NAT后面的计算机上的端口50885上运行了一些软件

如何从互联网访问此端口?我可以从计算机启动一些东西,因为我必须启动应用程序。

如果我得到正确的:用我的本地地址:端口,让我们说:192.168.0.10:50885如果有东西通过计算机发起的NAT,那么应该有某种端口转发自动创建,应该有某种公共IP:PORT应该敲击NAT后面的计算机上的50885端口。我对吗?

如果是这样,是不是可以像php一样询问服务器端脚本,嘿,告诉我这个公共IP和端口是什么?

我对Port Forwarding有点困惑。

php sockets tcp router nat
2个回答
0
投票

是的,您必须查询外部脚本以从路由器的另一侧检索公共信息。有很多网站可以获得IP(http://whatismyip.comhttp://iplookup.flashfxp.com等),但我从未见过一个报告IP和端口的网站,它们通常只报告IP。大多数NAT在端口上使用1对1关系,但它们可以使用不同的端口。如果您有自己的网站(或者有朋友),编写自己的脚本来检索公共端口并不是很困难。

如果从LAN PC通过路由器向外部建立OUTBOUND TCP连接,则路由器会自动生成并跟踪必要的NAT查找信息,以便它可以为该连接来回转发流量。

如果从外部通过路由器到LAN PC建立INBOUND TCP连接,则不会自动建立NAT查找信息。需要通过端口转发规则提前告知路由器,该私有LAN IP:端口用于在特定公共IP:端口上接收新客户端连接时引导传入连接。如果您的路由器支持uPNP(如果已启用),则当应用程序打开侦听套接字时,您的应用程序可以使用uPNP API /库以可编程方式在路由器中创建端口转发规则。否则,如果uPNP不可用,则必须手动配置路由器。


0
投票

根据我的理解,假设您使用socket local_ip:local_port来连接remote1_ip:remote1_port。在NAPT设备之后,local_ip:local_port变为translated_ip:translated_port。 remote1可以得到translated_ip:translated_port但我还没有找到这样的服务。下次使用相同的客户端local_ip:local_port建立与remote2_ip:remote2_port的新连接时,translated_ip:translated_port将保持不变吗?通常NAPT服务器会保留一段时间,比如5分钟。因此,如果来自remote3:remote3_port的人在5分钟内连接到translated_ip:translated_port(自从最后一个数据包发送到translated_ip:translated_port),NAPT服务器会将流量定向到local_ip:local_port。如果remote3_port = remote1_port,虽然remote1_ip!= remote1_ip,本地套接字将接受该连接。如果信息过期,NAPT服务器将分配新的translated_ip2:translated_port2。

© www.soinside.com 2019 - 2024. All rights reserved.