ARTICLE DETAIL

资讯详情

深耕商务建站与企业官网运营的一线实战洞察。

网络原理|第五阶段:IPv4 地址、网络接口、网络前缀与地址块(自然单元 5.1)

网络原理|第五阶段:IPv4 地址、网络接口、网络前缀与地址块(自然单元 5.1) 文章目录一、网络通信中的三个不同对象设备、网络接口、IPv4 地址二、IPv4 地址的 32 位数值结构三、为什么需要将多个 IPv4 地址归入同一个地址范围四、前缀长度 /24指定地址集合的共同部分五、具体接口地址和规范化地址块不是同一个对象六、接口配置、地址块、路由信息与数据报首部如何关联七、同属一个 /24 地址块不保证物理链路已连通八、贯穿本单元的三地址演算九、本轮已处理的关键对象辨析一、网络通信中的三个不同对象设备、网络接口、IPv4 地址研究 IPv4 地址前要明确一个地址究竟附着于何种对象以及哪些对象在运行时使用它。在一个典型的 Windows 家庭 Wi-Fi 场景中假设有电脑 A 和家庭路由器。电脑 A 运行 Windows 操作系统并通过一个 Wi-Fi 网络接口接入家庭网络。该接口的示例 IPv4 地址为192.168.10.35示例 MAC 地址为02:11:22:33:44:55。家庭路由器 LAN 侧接口可配置192.168.10.1示例 MAC 地址为02:AA:BB:CC:DD:EE。MAC 地址在这里是用于区分对象的假设值非实机测量结果。这段描述中有三个不同层次的对象。电脑 A是整台主机设备可以运行操作系统、进程和应用程序并承担通信端点的角色。Wi-Fi 网络接口是 Windows 网络协议栈所管理的网络通信接口。对于本例它与相应驱动、硬件以及网络协议处理能力相关联。网络接口作为操作系统中的通信对象不能直接等同于整台电脑。并且网络接口不一定都是独立的物理网卡也可以存在虚拟接口。IPv4 地址192.168.10.35是一个 32 位的网络层地址值。操作系统可以将它配置给某个网络接口并在满足具体发送条件时用它构造相应的 IPv4 数据报。它既不是电脑这一硬件实体本身也不是 Wi-Fi 网络接口对象本身。对象之间常见的关系可以写为电脑 A主机设备 └─ Windows 操作系统 └─ Wi-Fi 网络接口 ├─ IPv4 地址配置192.168.10.35 └─ 链路层 MAC 地址02:11:22:33:44:55示例 家庭路由器 └─ LAN 侧接口 ├─ IPv4 地址配置192.168.10.1 └─ 链路层 MAC 地址02:AA:BB:CC:DD:EE示例设备、接口与地址并非固定一一对应。一台电脑可以同时具有 Wi-Fi 和以太网等多个接口在允许的配置条件下一个接口可以配置多个 IPv4 地址接口地址也可以随配置改变。所以不能把“一个 IPv4 地址”等同于“一台固定不变的物理设备”也不能理解为“一台电脑天然只有一个 IPv4 地址”。这里暂时只确认这些对象的身份及关联操作系统持有、管理网络接口相关的 IPv4 配置网络层后续构造、发送、接收数据报时可以使用相应配置和路由信息。不同接口、不同地址在实际发送时怎样被选择是后续路由机制需要进一步解释的内容。二、IPv4 地址的 32 位数值结构IPv4 地址本质上是一个32 bit 的地址值。日常常见的192.168.10.35是它的点分十进制写法不代表四个彼此独立的通信对象。32 个比特可以依次分成四组每组 8 bit称为一个八位组octet。8 位二进制数能够表示的不同组合数量为2 8 256 2^825628256对于一个无符号八位组其数值范围是0255因此点分十进制写法中的四个数都应处于这一范围。将示例地址的每一组十进制值转换为八位二进制十进制八位组八位二进制值192110000001681010100010000010103500100011连接四组以后完整的 32 位地址是11000000 10101000 00001010 00100011也可以为了便于阅读而写成11000000.10101000.00001010.00100011这和192.168.10.35表达的是同一个数值。分隔用的点号是人类阅读上的记号不是 IPv4 首部传输的额外字段。IPv4 数据报首部中的源 IPv4 地址和目的 IPv4 地址字段各占 32 bit携带相应的地址比特值。理解这一点很重要后续所说的“前 24 位”“后 8 位”是从这个完整的 32 位地址中连续截取比特并不表示网络层始终按四个十进制数分别处理路由问题。三、为什么需要将多个 IPv4 地址归入同一个地址范围一个具体的 IPv4 地址可以标识一个通信所使用的网络层地址但网络通信还涉及另一个问题网络设备如何为大量不同目的地址组织转发信息如果每台路由器都必须为每一个可能的具体 IPv4 地址分别建立独立转发记录所需的路由信息将可能非常庞大。将具有共同高位比特的一组地址视为一个地址范围可以用一个前缀表示这组地址并让路由信息按地址范围组织。这是引入**地址前缀address prefix**的动机。用三个例子观察比特层面的共同部分A 192.168.10.35 11000000 10101000 00001010 00100011 B 192.168.10.80 11000000 10101000 00001010 01010000 C 192.168.11.35 11000000 10101000 00001011 00100011A 和 B 的最左侧 24 个比特完全相同11000000 10101000 00001010只有最后的 8 位不同A 最后8位00100011 B 最后8位01010000C 的第三个八位组是00001011而 A、B 的第三个八位组是00001010因此 C 与它们不共享相同的前 24 位。由此可以采用“固定一段共同高位比特、允许剩余低位取不同组合”的方式定义一个 IPv4 地址集合。这里的“共同前缀”必须从地址最左边开始属于连续的一段高位比特并非在 32 位中任选若干相同的位置。注意目前我们得到的是地址集合的数值归属关系。说 A 与 B 具有相同的某段地址前缀并不能单凭此事推断它们处于同一个真实二层网络、可以直接互发以太网帧、或者必定可以互相访问。地址范围与网络实际连通条件稍后还要分别判断。四、前缀长度/24指定地址集合的共同部分要准确界定一个前缀需要告诉系统或读者固定的共同高位究竟有多少比特。例如192.168.10.35/24在本课的接口配置语境中192.168.10.35是一个具体的 IPv4 地址/24是前缀长度表示按照这个地址最左边24 bit的取值来确定所属地址块。一个 IPv4 地址共有 32 bit因此剩余的位数为32 − 24 8 bit 32-248\text{ bit}32−248bit从完整比特序列中划出边界192.168.10.35/24 11000000 10101000 00001010 | 00100011 ------ 固定的前 24 bit ----- | - 后 8 bit -对于这个/24地址块前 24 位固定为11000000 10101000 00001010后 8 位允许取从00000000到11111111的各种组合所以地址块包含的不同地址值数量为2 8 256 2^825628256由此得出的地址范围是192.168.10.0 192.168.10.255这里算出来的是 256 个地址值。它不是“现有 256 台设备”的测量结果也不能直接等同于“允许为 256 台普通主机分配单播地址”。地址分配、网络地址、广播地址与可用主机数量有额外条件将在后续单元正式展开。/24中的 24 指的是地址比特的数量不是设备数、路由器数、网卡数或网络传输速率。IPv4 前缀长度不局限于/8、/16、/24这些恰好落在十进制八位组边界上的取值。前缀长度可以从 0 到 32例如/21、/26、/27等也是有效的长度。本单元先用/24建立地址与前缀的正确关系非八位组边界的具体计算会在后续介绍子网掩码与 CIDR 时系统讲解。五、具体接口地址和规范化地址块不是同一个对象继续假设 Windows 的 Wi-Fi 接口配置了 IPv4 地址192.168.10.35前缀长度为 24。在接口配置描述中可以简写成192.168.10.35/24这描述的首先是某个接口使用的具体地址以及相应前缀长度。为了识别这个地址属于哪个/24地址块需要把它的前 24 位保留、后 8 位全部归零原地址 11000000 10101000 00001010 | 00100011 保留前 24 位后 8 位全部设为 0 11000000 10101000 00001010 | 00000000得到点分十进制地址值192.168.10.0这是本例中该前缀的规范化网络地址值。在需要明确指代整个地址块时应同时写出前缀长度192.168.10.0/24以下四种表达需要分清表达本例中所指的对象或用途192.168.10.35一个具体的 32 位 IPv4 地址值192.168.10.35/24Wi-Fi 接口的 IPv4 地址与前缀长度的组合配置表示192.168.10.0一个具体的 32 位地址值在本例/24条件下是规范化网络地址192.168.10.0/24明确指定整个 IPv4 前缀地址块的规范化表示为什么不能只写192.168.10.0就断定其代表哪个地址块因为单独一个 IPv4 地址值没有明确给出要固定多少个高位。相同数值与不同前缀长度组合可能描述不同大小的地址块。明确表示整个地址块时需要网络地址值与对应前缀长度。此外规范化网络地址只是一个地址值或用于表示地址块的组成部分并不意味着系统自动创建了一个“地址为192.168.10.0的特殊主机”也不意味着在计算时新增了网卡或网络设备。更不能把它理解成所有发往这一地址块内设备的 IPv4 数据报都必须把目的地址改成192.168.10.0。数据报的具体目的地址与地址块的匹配标识承担不同职责。六、接口配置、地址块、路由信息与数据报首部如何关联理解上述数值后还需要把它们放进一次实际通信场景避免把“含有相近 IP 数值的对象”误当成同一个东西。假设家庭网络中有两台 Windows 电脑电脑 A 的 Wi-Fi 接口192.168.10.35/24 电脑 B 的 Wi-Fi 接口192.168.10.80/24电脑 A 的某个程序准备向电脑 B 上相应的通信端点发送数据。在操作系统选择使用 A 的该接口地址作为源地址、并使用 B 的地址作为目标地址的条件下所构造的 IPv4 数据报首部可以包含源 IPv4 地址192.168.10.35 目的 IPv4 地址192.168.10.80源、目的 IPv4 地址字段各占 32 bit。这两个首部字段并没有一个额外的“源 IP 前缀长度 24”或“目的 IP 前缀长度 24”字段。接口配置中的/24不会因数据报使用该接口就自动成为其首部的独立字段。/24属于本地接口地址配置及其相关的本地路由信息。系统可以依据接口地址及前缀配置形成或维护关联的直连网络路由再结合路由规则作发送判断。在这个例子里可以区分四个对象层次① 网络接口配置。192.168.10.35/24描述电脑 A 某网络接口的本地 IPv4 地址和前缀长度。配置由主机操作系统管理后续可以被网络层使用。② 数学上的 IPv4 地址块。192.168.10.0/24表示前 24 位固定、后 8 位可变化的整个地址集合是对地址范围的规范化表示。③ 主机路由表中的目的前缀。路由表可能含有一条指向192.168.10.0/24的直连路由。这里的前缀用来描述某条规则所适用的一类目的地址而不等于实际要送达的那台主机。④ 某一份实际构造和发送的 IPv4 数据报。本例中的具体目的 IPv4 地址是192.168.10.80属于这个地址块源 IPv4 地址是192.168.10.35。这里为了说明基本关系假设不发生 NAT 等额外地址改写。这些对象之间的联系可以读成Windows 本地 Wi-Fi 接口配置 ├─ 具体 IPv4 地址192.168.10.35 └─ 前缀长度/24 │ ├─ 可以确定所属地址块192.168.10.0/24 │ └─ 与系统的直连路由信息相关联 │ └─ 供后续目的地址匹配、输出判断使用 本次 IPv4 数据报示例 ├─ 源地址192.168.10.35 └─ 目的地址192.168.10.80本图中的“可以确定”说明数值关系及配置之间的逻辑关联并不声称每发一个数据报操作系统都必然重新做一遍教学演算也不指定某一种操作系统内部数据结构实现。路由表中的192.168.10.0/24可以匹配到目的地址192.168.10.80匹配某条目的网络前缀和把数据报目的地址改成这个前缀的网络地址是两件不同的事。前者属于转发决策的依据后者不因普通路由匹配而自动发生。接口地址、地址块、路由条目、IPv4 首部中的地址字段不能只因写法相近便合并成一个对象。它们在“配置—计算—路由判断—实际数据报”中有不同身份、保存位置和职责。七、同属一个/24地址块不保证物理链路已连通在地址集合层面192.168.10.35/24与192.168.10.80/24所对应的具体 IPv4 地址都落在192.168.10.0/24中因为它们的前 24 位相同。然而这个结论仅回答“这两个数值属于同一指定 IPv4 前缀范围吗”它尚未回答“这两台电脑是不是实际位于能够直接交换链路层帧的网络中”实际直接通信还取决于合适的链路连接、二层网络组织方式和其他网络配置或策略。例如即使两台电脑采用相同的/24地址配置若它们分别位于两个相互隔离、没有相应连接与路由机制的二层网络中也不会因为高 24 位相同就自动实现互通。因此要保持两层判断地址集合判断 A 和 B 都属于 192.168.10.0/24。 实际通信判断 还需要考察路由规则、输出接口、链路连接及邻居解析等条件。对配置合理的典型家庭 LAN 来说这些条件经常共同支持同网段设备通信。但这一实际通信事实不能只由“前缀相同”单独推导。ARP、MAC 地址、实际逐跳发送、同网段与跨网段通信会在后续正式自然单元中以完整过程继续学习这里不把只出现名称的后续机制冒充为已经讲透。八、贯穿本单元的三地址演算为了把二进制表示、前缀定义、地址块归属整合起来考察A 192.168.10.35 B 192.168.10.80 C 192.168.11.35目标判断这三个地址中哪些属于地址块192.168.10.0/24。步骤一确定需要比较的前缀长度/24要求比较最左侧 24 bit。步骤二写出目标地址块固定的前 24 位192.168.10.0/24 的前 24 位 11000000 10101000 00001010步骤三对每个具体地址取其最左侧 24 位A 的前24位11000000 10101000 00001010 B 的前24位11000000 10101000 00001010 C 的前24位11000000 10101000 00001011步骤四比对。A 和 B 的高 24 位与目标前缀完全相同C 的高 24 位不同。所以A属于 192.168.10.0/24 B属于 192.168.10.0/24 C不属于 192.168.10.0/24这只是地址值是否属于某个指定前缀范围的判断。不能由这一算式直接推断 A、B 一定已经通过交换机或无线 AP 实现二层通信也不能直接导出某台实际路由器的全部路由选择结果。九、本轮已处理的关键对象辨析“IPv4 地址就是设备本身吗”不是。IPv4 地址是一个 32 位地址值可在相应条件下关联网络接口的配置电脑、网络接口、IPv4 地址分别是设备、接口对象和数值/配置关系。一个设备可有多个接口一个接口也可在允许配置下使用多个 IPv4 地址。“点分十进制的四段是否表示四个独立的网络部分”不是。点号帮助人阅读 32 位值地址前缀可以在任意合法比特位置结束并不要求只能在八位组边界切分。“/24是 24 台主机的意思吗”不是。它表示最左侧 24 bit 的前缀长度剩余 8 bit 可变对应 256 个不同地址值。主机数、实际设备数、普通单播地址可用数不能不加条件地与 256 画等号。“192.168.10.35/24与192.168.10.0/24是两个同义写法吗”两者在此例中有关联但前者用于描述接口的具体地址加前缀长度后者是这个地址所属的整个/24地址块的规范化写法。“计算出192.168.10.0是否就多了一台特殊主机”不会。这里得到的是规范化网络地址值。数学计算结果不是额外创建出来的一台物理设备或虚拟接口。“路由表匹配192.168.10.0/24是否把数据报目的 IP 改写成192.168.10.0”普通路由前缀匹配并不会自动产生这样的目的地址改写。路由目的前缀表达一组可匹配地址具体 IPv4 数据报仍有自己的目的 IPv4 地址字段。本例中的实际目的地址是192.168.10.80。“A、B 都属于192.168.10.0/24是否就一定能相互通信”只能据此确认地址集合归属实际通信仍依赖网络接口、链路、路由规则和邻居解析等具体条件。
返回列表
PREV
查看更多资讯
NEXT
返回资讯列表