<aside> 💡 IP是怎么来的

</aside>

curl ip.sb 一下,你就可以看到自己的 IP,但是这个 IP 是怎么来的,这个问题在多年前困扰了我好久,最近由于自己有 ASN 和一小段 IP,所以便有了整理本文的想法,一来可以分享一些可能大家少关注的信息,另一个方面也是增强一下自己对于知识的理解,因为:

在【理想情况】下,如果你已经对某个领域某个分支达到【完全掌握】的程度,那么你就可以比较轻松地写出该领域某个分支的【通俗性读物】,并且确实能让【外行人】看懂,反之,如果你的掌握程度还不够。——如何【系统性学习】——从“媒介形态”聊到“DIKW 模型”

IP 地址分类

首先我们介绍一个简单的概念,IP 地址有哪些分类,这个我们在各类计算机网络的书上都见过,由于我本人一直没能背下来,所以这里再贴一下相关的表格:

IP地址分类

IP 是如何分配的

我们要探寻的第一个问题在于,IP 是怎么来的,这个时候如果你使用的是 Windows,那么你的第一反应应该是 ipconfig ,作为 BSD 用户,可能第一反应是 ip addr,这个时候如果你在家中的话,可能就会看到非常常见的 172.16.xxx.xxx,好了,这个时候参考上表,我们可以知道这个 IP 是一个:Unique Local Addresses,或者也就是我们所谓的保留地址,或者私有地址,这个 IP 地址是如何来的?

DHCP!(大声)

没错,DHCP 全称 Dynamic Host Configuration Protocol,简单来说,你连接上家里路由器,然后 DHCP 就会开始工作,如果要说的详细一点的话,DHCP 是走的 UDP,且分为以下四个步骤:

这个时候我们已经获得了一个所谓的内网 IP 了,且由于 NAT 的存在,我们可以一个家庭共享一个「公网 IP」(如果你家有的话,如果没有的话,可以打电话给 ISP 要求开通,是免费的)来上网了,那我们这个「公网 IP」又是如何得到的呢?

还是 DHCP,不过底层一般还有一个 PPPoE 的封装,也就是所谓的宽带拨号,如果你不熟悉原理的话,可以参考Point-to-Point Protocol over Ethernet

在一个简单的模型下,你的「内网 IP」为 172.16.0.1/24,你的「公网 IP 」为 123.19.98.2/32,那么你的运营商一定是因为拥有包含了你的「公网 IP」的段才可以这么分配,那么运营商是如何获得这个段的呢?

IP 是如何来的

我们知道在一个隔离的局域网下,在可以用的私有地址中我们可以随意指定设备的 IP,比如路由器(或者叫网关)指定一个 172.16.0.1,然后每个客户端上分配 172.16.0.1/24 段中的地址,但是在一个公网环境下,事情就没有那么简单了。