什么是端口映射,为什么PT需要设置端口映射
我们都知道,做种需要“公网IP”才能让别人更好的连接到我们,有公网IP的上传量比没有公网IP的上传量要多得多,有公网IP之后我们还需要设置端口映射,但我们为什么需要公网IP,又为什么需要端口映射呢?
要解释这两个问题,我们需要引出两个概念—IP地址和端口
为了方便理解,我们将网络通信换成打电话。现在我们打电话很方便,只需要知道对方的手机号码就能拨通对方的电话,这个电话号码就相当于网络中的IP地址,你需要知道其他人的IP地址才能联系上对方。我们在现实中打电话时,只会同时和一个人打电话,但你在上网时显然不会只同时用一个软件,你可以在刷b站视频的时候同时打游戏或者做其他事,也就相当于你的电脑要和b站服务器,游戏服务器同时“打电话”,而每个通话会占用一个叫做端口的东西,一台电脑有65535个端口,你电脑上的程序可以使用它们与网络上其它的电脑进行通信,一个通信占用一个端口
在理想状态下,每个人的电脑都应该有一个全网独一无二的IP地址,就像每个人都有一个全世界独一无二的电话号码一样,任何人都可以随时联系上你,你也可以随时联系上别人,但在网络中,我们遇到了一些麻烦—IPV4地址短缺
想象一下,假如一个家庭里有5个人,但分配给该户的电话号码只有1个,如何让家里所有人都能打电话给别人?这就是IPV4网络所遇到的问题—当初设计的地址数量远低于后来的网络用户数量,为了解决这个问题,NAT(NAPT网络地址端口转换)技术被发明了出来并被广泛运营到IPV4网络上
为了让所有人都能打电话,需要设立一个电话转接台(你的路由器)负责把内线电话号码与端口(局域网IP)转接到外线电话号码与端口(公网IP)上,这样家里所有人就能同时打电话给别人了
虽然这招能让多个用户共用一个号码打电话,但它存在一个严重的问题—其他人无法联系到你
当别人尝试通过这个号码联系你时,转接台会收到这个通话请求,但它并不知道该把这个电话转接给内线上的哪个用户,只能直接挂断电话
为了解决这个问题,我们需要告知转接台,当收到来自xx端口的电话时,就把电话转接到你的内部电话,这样别人才能正常打电话给你,这就是端口映射
现在大部分运营商都会对用户进行CGN(运营商级NAT)以节省IPV4地址,在运营商机房的路由器就已经对用户做了NAPT,这也就是为什么没有公网IP的用户即使在自己的路由器上做了端口映射也没有效果的原因
而IPV6的出现则彻底解决了IPV4网络中地址不足的问题,相当于地球上的每一粒沙子都能分到一个IPV6地址,NAPT也就没有存在的必要了,任何设备都可以使用任何端口与其它网络上的设备进行点对点通信,这也就是为什么IPV6对改善连接性如此重要的原因之一