文章

什么是公网IP?以及你为什么需要它

在解释什么是公网IP前,我们要先了解一下我们是如何与网络上的其他人通信的。
我们上网的过程,就像寄信一样,我们写好一封信,写上自己的姓名地址,再写上收信人的地址,再把信交给邮局,邮局按地址把信送到收信人的手上,这就完成了一次寄信的过程;在Internet里,运营商(也就是电信联通移动等ISP)就扮演了邮局的角色,而地址就是IP地址,信就是我们在网络上传递的数据,运营商需要通过你填写的地址才能将数据送到对应的主机上。在现实中,所有人应当都拥有一个地址用于寄信,这也是最理想的状态,但在网络上却遇到了一个问题──地址短缺。
在早期的IPV4网络上,大约只有36.47亿个公网IP地址可用,发明者没有想到在未来,竟然会有如此多的用户连接到Internet,随着互联网的发展,这个问题逐渐显现了出来,大家发现这点地址根本不足以分配给所有连接到互联网的主机,NAT技术就此出现。
NAT可以让多个主机使用同一个公网IP地址连接到Internet,nat下的用户会被分配一个内网IP地址,这种地址是为局域网保留的,一般不能被外部网络访问,用户在与其它主机通信时,nat设备会负责转换用户的网络地址,当用户试图与外部主机建立连接时,nat会建立一个映射规则,例如192.168.1.10的内网主机使用端口25565与8.8.8.8的外网主机的53端口通信时,nat就会选择一个端口,改写所有192.168.1.10内网主机发出的数据的端口为此端口,并将此端口上所收到的数据转发到192.168.1.10上(有不同类型的NAT,此处暂且不论),从而达到多用户共用一个公网IP地址的效果。
如果需要外部主机能够主动连接到你的主机,那么你就需要在你的nat设备(路由器)上设置端口转发,即建立一个静态的映射规则,规定将所有发送到你的路由器指定端口上的所有指定类型的数据转发到你指定的内网主机上,这样别人才能主动连接到你,与你建立通信。
而pt依赖的bt协议就需要外部主机能主动连接到你的主机,但大部分运营商都会对用户进行NAT以节省公网IP,你无法控制运营商的nat设备,自然也无法在上面设置端口转发,别人也就自然无法主动连接到你。

License:  CC BY 4.0