参考 <The TCP/IP Guide> http://tcpipguide.com
文章目录
寻址 (Addressing)
IP 寻址的概念和问题
IP 地址概述和基础
-
IP 地址的功能:标识 (Identification) 和路由 (Routing)
- 网络接口标识 (Network Interface Identification):IP 地址给设备和网络之间的接口提供唯一的标识。这才能保证数据被传递到了正确的地方。
- 路由:当数据包的起源和终点不在同一个网络,数据包就必须通过中间系统间接 (Indirectly) 地传递,这个过程叫路由 (Routing)。
-
设备的 IP 地址数量
任何设备若要在网络层 (Network Layer) 传输数据就至少有一个 IP 地址,一个网络接口一个 IP 地址。一般的主机通常有一个 IP 地址,而路由器 (Routers) 则有多个 IP 地址。一些特殊的主机,如多宿 (Multihomed) 主机也会有多个 IP 地址。
多宿:一个主机拥有超过一个 IP 网络接口那么它就是多宿的,一个多宿设备可能有多个接口连着同一个网络也可能连着不同的网络。如果一个主机连着多个网络,那么它可以被配置成一个路由器 (Router)。
比网络层低层的设备如:中继器 (Repeaters)、桥 (Bridges) 和交换机 (Switches) 是不需要 IP 地址,因为它们是基于数据链路层 (Data Link Layer) 地址进行通信的。
-
IP 地址的网络特定性
当 IP 地址代表网络接口并用于路由时,这个 IP 地址是它所连接的网络特定的,如果设备移动到了一个新的网络,这个 IP 地址通常也需要改变,这个问题也催生了移动 IP (Mobile IP)。
IP 地址记法和大小
IP 地址仅是 32 位二进制数。一般分为四个字节,每个字节转换成十进制数,用点分开来表示。
二进制 | 11100011 | 01010010 | 10011101 | 10110001 |
---|---|---|---|---|
十六进制 | E3 | 52 | 9D | B1 |
十进制 | 227 | 82 | 157 | 177 |
因为 IP 地址有 32-bit 长,所以总共有 2^32 即 4,294,967,296 个地址。
IP 基本地址结构
为了方便寻址,IP 地址被结构化成两部分:网络号 (Network ID) 和主机号 (Host ID)。
网络号:从 IP 地址最左端起的部分 bits,标识主机或其他网络接口所在的网络。也叫 Network prefix 或 prefix
主机号:除去网络号后剩余的 bits,标识网络上的主机。
将网络号包含进 IP 地址中,对寻址起到很大的帮助,因为可以通过比对数据包的目的地址的网络号和自身的网络号是否相同判断出目的地址在内网还是外网,从而快速确定路由。将 IP 地址分为网络号和主机号,还产生了一些有特殊含义的地址,如主机号全为 1 的广播地址。
网络号和主机号的分割点不是固定的,而是取决于各种因素的,并且可以在 32-bit 地址的任何地方,包括十进制八位字节的中间。
三种主要的 IP 寻址方案
- 分类寻址 (Classful Addressing):将 IP 地址分为 ABCDE 五类,三个主要类为 ABC 三类,区别在于网络号和主机号的长度,网络号和主机号的划分线在八位字节边界,如 C 类地址前 24 bits 为网络号,后 8 bits 为主机号。
- 子网分类寻址 (Subnetted Classful Addressing):在子网寻址系统中,通过从主机号中拿取前端部分 bits 作为子网号,用于识别子网,这将原本的两层划分系统(网络号/主机号)被改为三层划分系统(网络号/子网号/主机号)。
- 无类寻址 (Classless Addressing):将原始的分类寻址抛开,网络号和主机号可以在任意点划分,不需要像分类寻之中那样划分在八位字节边界。这种方案更加灵活有弹性。
原始的分类寻址 (Classful IP Addressing)
概述
在分类寻址中,IP 地址被分为 ABCDE 五类地址
IP 地址类别 | 在 IP 地址中的占比 | 网络号数 | 主机号数 | 用于 |
---|---|---|---|---|
A 类地址 | 1/2 | 8 | 24 | 为需要上千万台主机连入网络的大型组织提供单播地址,最多提供 16,277,214 个地址 |
B 类地址 | 1/4 | 16 | 16 | 为需要上千台主机连入网络的中型组织提供单播地址,最多提供 65,534 个地址 |
C 类地址 | 1/8 | 24 | 8 | 为需要上百台主机连入网络的小型组织提供单播地址,最多提供 254 个地址 |
D 类地址 | 1/16 | - | - | 多播地址 |
E 类地址 | 1/16 | - | - | 为实验保留 |
其中 ABC 类占 7/8,用作单播地址。
尽管分类寻址对如今的网络来说缺点众多,以至于我们用无类寻址 (Classless IP Addressing) 代替了它,但要知道这是在十几年前开发出来的寻址系统,对于那时的网络环境,那时的计算机性能,分类寻址也有着许多的优点:
- 合理的灵活性:三种等级“粒度”的地址,分别对应大、中、小三种大小的组织,提供了足够的容量来处理当时对网络增长的预期。
- 易于路由:因为地址的类别信息包含在地址中,且只有五种类型,这使路由器可以很轻松的知道地址的哪部分为网络号,哪部分为地址号,而不需要如掩码的附加信息。
类别确定算法
TCP/IP 刚被创造的时候,计算机的性能比起现在要弱得多,路由器要快速地决定数据包的去处,就必须快速的确定地址的类别并获得目的地址的网络号,当时大家也想象不到网络发展到今天会如此巨大,那时只需要一套简单高效的寻址机制即可,所以分类寻址就这么被发明并使用相当一段时间,也随之诞生了类别确认算法。
算法流程
- 如果地址第一位为 0,则为 A 类地址;如果为 1 则进行下一步。(这也是为什么 A 类地址占 IP 地址的一半)
- 如果地址第二位为 0,则为 B 类地址;如果为 1 则进行下一步。
- 如果地址第三位为 0,则为 C 类地址;如果为 1 则进行下一步。
- 如果地址第四位为 0,则为 D 类地址;如果为 1 则为 E 类地址。
特殊含义的 IP 地址
网络号 | 主机号 | A 类地址例子 | B 类地址例子 | C 类地址例子 | 特殊含义 |
---|---|---|---|---|---|
网络号 | 全为 0 | 77.0.0.0 | 154.3.0.0 | 227.82.157.0 | 指整个网络。 |
全为 0 | 主机号 | 0.91.215.5 | 0.0.99.6 | 0.0.0.160 | 指当前网络或默认网络中的一个主机。 |
全为 0 | 全为 0 | 0.0.0.0 | 指自身,当设备不知道自己的 IP 地址时使用,常用于设备用主机配置协议(如 DHCP)确定自身地址。 | ||
网络号 | 全为 1 | 77.255.255.255 | 154.3.255.255 | 227.82.157.255 | 指某网络中的所有主机,即本地广播地址。 |
全为 1 | 全为 1 | 255.255.255.255 | 指网络中的所有主机,即全局广播地址,广播给所有直接连接的网络中的主机。 |
保留地址、环回地址和私人地址:
分类地址 | 无类地址 | 描述 |
---|---|---|
A 类 0.x.x.x | 0/8 | 保留 |
A 类 10.x.x.x | 10/8 | A 类私人地址 |
A 类 127.x.x.x | <