很多人不知道
除了常用的 localhost 127.0.0.1 回环(Loopback)地址,127.0.0.1/8 子网的所有地址都是回环地址。
而2^24 = 16,777,216,这意味着你总共有超过1600万个可用的ipv4回环。
也就是说你可以启动1600多万个MySQL并且都为它们绑定上一个本地ip的3306端口
[!success]咳咳,说正经的。
使用不同的ipv4回环地址,为服务分配默认端口,根据不同项目分配不同回环ip,可以让你的开发运维过程更清晰。
例如,你可以要求某个项目的所有服务都监听127.114.51.4
又或者,为多个MySQL分配127.0.1.1:3306,127.0.10.10:3306……
这样当你看到对127.114.51.4的访问,就知道这是池沼项目
当你看到某个服务使用了3306端口,你就确信它是MySQL
标准的ipv6回环倒是只有一个,::1/128,或者说0000:0000:0000:0000:0000:0000:0000:0001
当然如果你觉得不够用,可以自己写个ipv6地址绑定到lo。鉴于ipv6极大的地址空间,你几乎不可能和一个外部的ipv6发生冲突(直接划大片网段或者故意冲突的当我没说)。为了安全起见,你可以使用 ::ffff:7f00:0/104 (它正是127.0.0.1/8在ipv6空间里的IPv4-Mapped Address,虽然不会自动分配到lo,但至少你可以确信没有人会占用它)
↑ 以上内容非标准实践,RFC 4291仅规定一个ipv6回环地址。采用以上操作出现任何问题,本人概不负责。
47 个赞
GCC
2
很难有实际上比较有用的用法,主要假如你监听了 0.0.0.0:3306 那无论是 127.0.1.1:3306 还是什么都无法监听。
也只能说早期分配ip太粗糙,整个 /8 都被浪费了
8 个赞
921
(921)
4
是的,不过也无所谓了,就算多个/8,ipv4也迟早会被用尽,同时因为v4美国垄断的太狠,也总要有v6出来稍微制衡一下
2 个赞
Waylon
12
这么多啊,那我借你一个,127.127.127.127,随便d不用客气
7 个赞
大多数情况下没有必要,也不推荐直接监听0.0.0.0吧
1 个赞
感谢大佬分享,但是要修改应用的监听ip+端口,好像要从代码里面改很麻烦吧。如果作者没讲的话,都找不到在哪里 
1 个赞
哈哈赶巧了,我开i站之前还在看王道408网络层强化,然后就在i站又刷到这个知识点了
6 个赞
我一开始学的时候也有这个疑问,但得结合那个时期的实际情况考虑,早期互联网使用人数非常稀少,在那个时代来看IPv4已足够满足需求,后来网络发展迅速使用人数指数级别上升,才有了子网、CIDR、NAT等补救措施,但是现在IPv4地址资源事实上已经彻底枯竭了
1 个赞
GCC
19
我知道原因,虽然现在不会用但是会提的 abcd 类地址就是当时的产物。而且枯竭是枯竭,但是也有大量的分配不均。
6 个赞
其实就算把这几个私网地址段和127.0.0.1/8都划给公网,对于缓解地址枯竭也不过杯水车薪。枯竭的原因归根结底是ipv4的32位的地址空间实在不足,而不是私网和环回地址段划得太激进。
2 个赞