为什么常见的 IP 都是 192.168 开始的
互联网就像是现实世界中的快递系统,而每台联网的计算机就如同系统中的一个收件人。为了确保快递员能准确地将包裹送到正确的收件人手中,每个收件人都拥有一个独一无二的地址。在计算机世界中,这个地址通常以一系列数字来表示,这就是我们所说的 IP 地址
IP 地址是互联网通信的基石,它保证了网络中每个设备都能被唯一识别和访问。没有 IP 地址,设备将无法在互联网上被识别,也无法进行有效的数据通信。简单来说想要访问互联网,设备必须有一个 IP 地址
IP 地址组成
IP 地址是由 32 位二进制数字组成,比如 01100100001001111101101000001010,但这样对人类特别难识别,为了方便人记忆和使用,通常在表示后的时候会做一些转化
将这 32 位二进制数分成 4 个 8 位的二进制数(也就是 4 个字节),每个字节之间用点.分隔
然后将每个字节转换为十进制数表示
01100100001001111101101000001010
01100100.00100111.11011010.00001010
100.39.218.10
IP 地址分类
文章标题的问题要从 IP 地址才开始设计时候的地址分类说起,在互联网初期,不同规模的组织(如大型企业、中型机构、小型企业和个人用户)对 IP 地址的需求各不相同,有的需要的 IP 地址多,有些需要的 IP 地址少
但如果按照顺序申请 IP,这样相同组织内的 IP 地址被打散,路由器需要维护为每个 IP 地址维护路由条目,导致路由表膨胀,影响路由效率
:::info
路由器是一种网络设备,用于连接多个网络,并在它们之间转发数据包。它通过分析数据包中的目标 IP 地址,决定最佳的转发路径,确保数据能够高效且准确地从源设备传输到目标设备,路由表是路由器中用于决定数据包转发路径的核心数据结构
:::
当一个组织拥有连续的 IP 地址块时,网络中的路由器可以将这些地址视为一个整体进行路由,这种方法称为路由聚合或路由汇总,有助于减少网络中的路由条目数量。假设一个路由器需要识别多个子网,如果这些子网的 IP 地址是连续的,它们可以通过一个单一的路由条目来管理,这样不仅简化了路由表,还提高了路由查找的效率
为了给一个组织分配连续的 IP 地址段,人们将 IP 地址划分为不同的类别,这样可以根据网络的具体规模和需求,为其分配合适数量的 IP 地址
在网络分类中 32 位 IP 地址被分为两部分:
网络号:用于标识和定位特定的网络,便于路由器进行数据包转发和路由选择
主机号:用于标识网络内的具体设备,确保每个设备在网络中具有唯一的地址
按照网络号的长度不同,IP 地址被分为五类
可以看出来 A 类 IP 地址可用的网络数有 27 = 128 个(第一位固定位 0),每个网络可容纳的主机数量 224 约 1.67 亿个,IP 地址范围 1.0.0.0~126.255.255.255,这种网络类型适合分配给大型网络,如跨国企业、互联网服务提供商(ISP)
而 C 类 IP 地址可用的网络数有 221 ≈ 200 万个,每个网络可容纳的主机数量 28 = 256 个,,IP 地址范围 192.0.0.0~223.255.255.255,在互联网初期小型企业、家庭网络 256 个主机是足够的,因此 C 类地址通常被分配给小型企业和家庭使用,至此我们看到了 192,那么 168 是怎么来的呢
局域网与 NAT
随着互联网的发展,特别是家庭和小型企业网络的普及,IP 地址的需求急剧增加,为了应对 IP 地址即将枯竭的危机
互联网工程任务组(IETF)在 1996 年发布的 RFC 1918 文档规定,192.168.0.0 ~ 192.168.255.255 这个地址范围被预留作为私有网络使用的地址空间,以便在局域网等私有网络环境中让设备进行通信,互联网服务提供商(ISP)在进行公网 IP 地址分配时,不会将这些私有 IP 地址分配给公网设备
额,168 竟然是个规定。。。
不过这个规定多少有点道理,192.168.0.0 ~ 192.168.255.255 包含 65,536 个地址,这对于大多数家庭和小型企业来说足够应对其设备数量需求,使用这个网段的网络被称为局域网(Local Area Network,LAN)、内网或者私有网络
问题的答案已经有了,不过可以了解下为什么使用局域网就可以缓解 IP 枯竭危机,这就要了解下 NAT Network Address Translation
网络地址转换(Network Address Translation,NAT)是一种网络技术,允许在一个私有局域网内部使用私有IP地址,同时通过一个或多个公网 IP 地址与外部网络进行通信,NAT 通过修改 IP 地址信息,实现在内部网络和外部网络之间的地址映射和转换
家庭中的多台设备通过路由器连接到局域网,使用私有 IP 地址如 192.168.1.2、192.168.1.3 等
路由器拥有一个公网IP地址(由ISP分配,如 82.129.80.111),所有内部设备的互联网流量通过路由器的 NAT 转换为这个公网 IP 地址
外部互联网服务器看到的只是路由器的公网 IP 地址,而不知道内部设备的具体私有 IP 地址
这样不同的局域络都可以使用192.168.0.0 ~ 192.168.255.255 这个 IP 地址段,而不会与全球公网地址冲突
子网掩码
既然都已经讲到这里了,多啰嗦一下在网络设置中经常会看到的子网掩码
子网掩码(Subnet Mask)是一个 32 位的数字,它的作用是将 IP 地址划分成网络地址和主机地址两部分,在子网掩码中
连续的“1”: 标识网络部分
连续的“0”: 标识主机部分
子网掩码与 IP 地址进行逻辑与运算,每一位“1”会从对应的 IP 地址中保留那些位,可以得出 IP 地址中的网络地址部分,用 IP 地址和网络地址相减得到主机地址,C 类 IP 地址默认子网掩码是 255.255.255.0
假设一个 C 类 IP 地址为 192.168.1.10,子网掩码为 255.255.255.0,进行逻辑与运算
11000000.10101000.00000001.00001010 (IP地址)
11111111.11111111.11111111.00000000 (子网掩码)
--------------------------------------------------
11000000.10101000.00000001.00000000 (网络地址)
子网掩码可以帮助判断一个 IP 地址是否合法。在同一个网络中所有主机的网络地址部分必须相同,通过子网掩码与 IP 地址进行运算得出网络地址,就可以判断 IP 地址是否属于同一个网络
可是还有个问题,如果子网掩码是 255.255.255.0,那么意味着最多 256 个主机,但在公司每个人都有手机,网络设备远远多于 256,为什么大家都能联网?
这是因为公司内部网络通常会被划分为多个小子网,每个子网可能基于部门、楼层或功能划分。每一个子网使用一个独立的 255.255.255.0 掩码,这样每个子网都可以支持多达 254 个主机。如果一个公司有多个部门或楼层,每个子网独立管理,多子网便捷协作, 通过路由器连接到主网络。
其次如果子网掩码是 255.255.255.0,理论上它可以有 256 个 IP 地址(从 0 到 255),但实际上可用的只有 254 个,有两个不能用
192.168.0.1:主机部分是全部为“0”,用于标识整个网络的地址,不能表示某个主机
192.168.1.255:主机部分是全部为“1”,用于在网络中发送广播消息,是该子网内所有主机的目标
127.0.0.1 为什么就是 localhost
在日常 Web 开发本地测试时候,hosts 需要绑定成 127.0.0.1,这样就可以访问本地网络,这又是为什么?
127.0.0.1 是一个环回地址(loopback address),用于网络测试和调试。TCP/IP 协议明确标准化了 127.0.0.1 作为回送地址,任何发送到 127.0.0.1 的数据包都被视作在设备的本地计算机进行传输,而不会通过网络接口
大多数操作系统将 127.0.0.1 映射为 localhost,这是在系统的主机名解析配置中定义的。例如在 Unix 和类 Unix 系统中,/etc/hosts 文件中通常包含一行 127.0.0.1 localhost 的配置
从 IPv4 到 IPv6
使用 32 位二进制数字可以标识 232 ≈ 42.9 亿个 IP 地址,地球人均不到 1 个,随着互联网的飞速发展,越来越多的设备需要接入互联网,如个人电脑、智能手机、物联网设备(智能家电、智能传感器等),这些设备的数量呈爆发式增长,导致 IPv4 地址逐渐不够用
IPv6 是为了解决 IPv4 地址耗尽问题而设计的,使用 128 位地址空间,表示为 8 组 16 进制数,每组用冒号分隔,例如 2001:0db8:85a3:0000:0000:8a2e:0370:7334。IPv6 大大增加了可用的地址数量,但并没有按照 A、B、C 类来划分
如果仔细看,会发现很多 App 的启动界面都声明已经在使用 IPv6 了