首先说明一些基本概念。IP就是联网设备在网络中的地址,而端口是对应使用互联网的应用程序(进程)的,一个设备上可能有很多程序需要访问互联网,端口就是用来区分不同的程序请求的。公网IP和内网/私网IP的区别在于:公网IP全球任意上了网的设备都能访问,而内网IP只在内网有效。这就是为什么百度得到的IP与设备拿到的IP不同,设备拿到的内网IP出了(๐•ᴗ•๐)由器之后就没用了(被NAT地址转换成了全球有效的公网IP)
按照互联网原本的设计,每台设备(注意是所有连接互联网的设备,不分有线无线和设备类型)都有自己的公网IP,这时候本来就应该是互相连通的,设备上开了哪个端口就对应着公网IP开了哪个端口。(所以现在即使可以称为"有公网IP"的家宽,实际上也没有实现真正理想的互联网,因为拨号只能拿到一个公网IP,不能做到家里手机电脑每台设备都有一个公网IP。IPv6倒是基本实现了这一理想。)
后来公网IPv4不够用了,只能几个人共用同一个IP(也就是NAT技术)。这时候假设共用IP的这几个人都想开同一个端口,那公网IP对应的端口接收到的数据应该发给谁呢?这就要看掌管这个公网IP的设备的配置了。
假设是大家所谓的"有公网IP",那么控制这个IP的就是拨号的设备(大概率是光(๐•ᴗ•๐)或(๐•ᴗ•๐)由器),记为R,其他的设备连接R来共用R获得的公网IP,R来控制开放的端口转发给谁。因为R设备就在我们家里,我们可以控制这台设备的配置,于是可以配置让内网的NAS或者PC上的qB想要开放的端口刚好对应R上的公网IP开放的端口(端口映射或UPnP等)。这时候其他人如果想连接我们,他会先连接到设备R,设备R再把数据转发到内网qB所在的机器上对应的端口。这样虽然qB在内网,但是我们配置了掌管公网的设备R让它把公网接收的数据转发到正确设备的正确端口,在外网的其他设备看来就是qB监听并使用了公网的端口。
那如果是没有公网IP的情况呢?这时候控制你上网的公网IP的设备可就是运营商的设备了,我们无权控制它的端口开放情况,只能被动接受它给你的所有配置。你会发现你拨号获得的就已经是内网IP了,你还得把这个内网IP再分给家里的设备一起使用,就变成了糟糕的双层NAT,连接性极差。在这种网络环境下做种,Tracker记录的是运营商的设备的IP+你的qB拿到的内网中的内网里开放的端口,这个端口在运营商设备那即便是开放的也难以转发到你的qB上来,你的连接性自然就变成否了。唯一可能的办法只能寄希望于运营商用了个管理最松的NAT1,即便如此也需要极为复杂的配置才能做到有限的不稳定的开放,感兴趣可搜索“STUN内网穿透”自行了解。
虽然看起来没有公网IP非常糟糕,然而这只影响传入连接,即“别人是否能够主动连接你”。而你主动连接他人的传出连接是只要能上网就可以的。事实上家庭用户绝大多数的上网行为都属于传出连接/你连接别人,包括访问网站、(๐•ᴗ•๐)看在线视频以及向网盘上传文件等等。所以传入/传出连接与上传/下载行为是完全独立的,你可以仅靠没有公网的传出连接完成PT的上传下载等各项功能,有了公网的传入连接带来的也不一定完全是上传量。
那么公网IP多了什么呢?理论上,假设全世界所有人除了你都有公网IP,或者缩小范围到跟你一起下载上传同一个种子的其他人都有公网IP,那这时候你没有公网带来的影响微乎其微,因为虽然别人无法连接你但是你可以主动连接其他所有人。只要能连上,后续的传输就是双向的,是谁发起的连接并不重要。
然而,很可惜的是,我国人多资源少的事实决定了大部分普通家宽用户都没有自来的公网IP。这一点在一些站点首页的连接性统计上也能看得出来,连接性为是的用户基本都少于一半,甚至不到1/3。连PT这种注重连接性的封闭社区里3个人才有1人有公网,其他家宽用户只会更糟糕。根据前文的知识很容易得出两个连接性为否的用户无法互相连接,那么这样的环境带来的后果就是,大部分的连接都只能单向发出,即由没公网的用户主动发起,由有公网的用户接受,而无法反过来。那么,如果你没公网,你只能连上有公网的那一小部分人;只有你有公网能接受传入连接才有机会连上所有人(更准确地说是被所有人连上)。这句话就体现了公网带来的最大好处。