## 表示IP地址 大多数用户所熟悉的IP地址,是IPv4地址,一般采用 点分十进制 由4个用点[.]分隔的十进制数组成,每个数字的取值范围是0~255,代表整个IP地址的四分之一,如169.195.130.107。点分十进制是书写完整IPv4地址的简单方式 与之相对的,是在IPv6中,地址长度从32位扩展到128位,它使用的是8段四位十六进制数,每个字段由冒号: 分隔.并且它也有一些简化的书写方法. - 一个字段前导的0可以不写,比如5f05:2000:80ad:5800:0058:0800:2023:1d71可以写为5f05:2000:80ad:5800:58:800:2023:1d71 - 全零的字段可以省略,并用符号::代替,但为了避免歧义,只能使用一次::,比如0:0:0:0:0:0:0:1可以简写为::1.而2001:0db8:0:0:0:0:0:2可以简写为2001:db8::2. - 如果在IPv6中嵌入IPv4地址要, 可以混合点分十进制和十六进制的写法,比如::ffff:10.0.0.1表示IPv4地址10.0.0.1,即被**IPv4映射的IPv6地址**. - IPv6的低32位通常采用点分十进制写法,比如::0102:f001相当于地址::1.2.240.1,它被称为**IPv4兼容的IPv6地址**,但这种写法只用于IPv4和IPv6的过渡计划. ## 基本的IP地址结构 根据IPv4地址长度,可以计算它的地址空间大小为$2^{32}=4,294,967,296$,而IPv6的地址空间为$2^{128}=340,282,366,920,938,463,463,374,607,431,768,211,456$. 所以势必要进行地址分块,才能方便使用. ### 分类地址 为了在茫茫互联网世界中定位到某一台电脑,需要先找到它所在的网络,(因为互联网本身就是由类型不同,规模不同的网络组成的),所以IPv4地址也反映了这一要素,它分为**网络号**和**主机号**. #### 早期分类 早期将IPv4地址分为ABCDE这5类,列表如下: ^ 类别 ^ 网络号 ^ 主机号 ^ 特征 ^ 网络数 ^ 主机数 ^ | A | 8位 | 24位 | 网络号以0开头 | 128 | 16,777,216 | | B | 16位 | 16位 | 网络号以10开头 | 16384 | 65536 | | C | 24位 | 8位 | 网络号以110开头 | 2097152 | 256 | | D | | | 网络号以1110开头,用于组播 | NA | NA | | E | | | 网络号以1111开头,保留地址 | NA | NA | 补充说明: 有些地址通常不作为单播地址使用,比如地址块中的第一个和最后一个地址,前者用于表示该网络,后者表示网络广播地址. #### 子网寻址 但这种分类方法慢慢出现了新问题,A类和B类网络号规模太大,浪费了许多主机号(太多用不完),而C类规模较小,不能提供足够的主机号. 为了解决这一问题,在保持ABC类网络号集中分配的前提下,各站点的管理员获得权利进一步划分子网络号.但同时也带来了新问题,之前的ABCDE分类方法只要知道网络号,就知道主机号位数了,现在管理员是如何划分子网络的需要反映到路由器和主机中.即只有被划分子网的网络中的主机和路由器知道子网结构. {{:b.理论储备:01.tcpip:卷1-协议:snipaste_2024-02-12_09-50-04.png?nolink&400|}} 这里给出了一个示例,左右两个以太网都是子网络,按ABCDE分类法,它们属于B类网络号,即128.32.x.x. 外网的流量先经过边界路由器(这里路由器对外的IP地址为137.164.23.30),因为下面连着2个子网络,所以路由器要区分流向2个子网络的流量.它要找到子网ID. #### 子网掩码 子网掩码是一台主机或路由器所使用的分配位,为了确定子网ID.除了用二进制表示外,一般更常用的方式是/xx(范围是1~32) 上面的例子里,网络管理员选择的**子网掩码**是255.255.255.0,即/24.每个子网可以连接256-2=254台主机. 子网掩码中某位的1表示IP地址的对应位与一个地址的网络/子网络部分对应, 子网掩码中某位的0表示IP地址的对应位与一个地址的主机号部分对应.