IP地址是 Internet赖以工作的基础。IP地址被用来在网络中唯一标识一台计算机或者网络设备的接口,是一个逻辑地址,高效的IP地址规划能确保网络高效率地运行。目前使用的IP地址分为IPv4与IPv6两大类。由于IPv4地址即将耗尽,未来的网络将是以IPv6地址为主导。本章主要介绍IPv4地址的结构、类型、子网划分和VLSM,以及 IPv6特征、IPv6地址的结构和类型、IPv6 NDP和IPv6过渡技术等内容。本章内容是学习网络技术最应该掌握的基本知识点之一。
2.1 IPv4 地址结构
IPv4地址长度为32位二进制数,通常使用点分十进制数表示IPv4地址,每个十进制数由8位二进制数构成。最初设计互联网时,为了便于寻址和层次化构造网络,IP地址由网络地址和主机地址两部分组成,对于同一网络中的所有设备,IPv4地址中网络部分必须完全相同,而IPv4地址中主机部分必须唯一。在配置IPv4地址时,还要配置子网掩码。与IPv4地址一样,子网掩码的长度也是32位二进制数。用子网掩码和IPv4地址进行逻辑与运算的结果表示网络地址,用IPv4地址减去网络地址表示主机地址。IP地址结构如图2-1所示。
IPv4 地址分类为 A 类、B 类、C 类、D 类、E 类地址 5 种类型,如下图所示。
1、A类IPv4地址
A 类 IPv4 地址由 1 字节的网络地址和 3 字节的主机地址组成,网络地址的最高位必须是“0”。第一个字节范围 0~127,其中 0 和 127 保留,有效 IPv4 地址范围从 1.0.0.1 到 126.255.255.254,网络掩码为 255.0.0.0,每个网络能容纳2的24次方减去2台主机
2、B类IPv4地址
B 类 IPv4 地址由 2 字节的网络地址和 2 字节的主机地址组成,网络地址的最高两位必须是“10”,第一个字节范围为 128~191,有效 IPv4 地址范围从 128.0.0.1 到 191.255.255.254,网络掩码为 255.255.0.0,每个网络能容纳2的16次方减去2台主机
3、C类IPv4地址
C 类 IPv4 地址由 1 字节的网络地址和 3 字节的主机地址组成,网络地址的最高两位必须是“110”,第一个字节范围为 192~223,有效 IPv4 地址范围从 192.0.0.1 到 223.255.255.254,网络掩码为 255.255.255.0,每个网络能容纳2的8次方减去2台主机
4、D类IPv4地址
D 类 IPv4 地址网络地址的最高四位必须是“1110”,用于组播。第一个字节范围为 224~239,有效 IPv4 地址范围从 224.0.0.1 到 239.255.255.254
5、E类IPv4地址
E 类 IPv4 地址网络地址的最高四位必须是“11110”,为将来使用保留。其中 255.255.255.255 用于广播地址
虽然大多数 IPv4 主机地址时公有地址,用于可以通过 Internet 访问的网络中,但也有一些地址块用于需要限制或禁止 Internet 访问的网络中,此类地址称为私有地址。RFC 1918 定义私有 IPv4 地址,私有地址网络范围如下:
- A 类地址中的私有地址块:10.0.0.0~10.255.255.255(10.0.0.0/8);
- B 类地址中的私有地址块:172.16.0.0~172.31.255.255(172.16.0.0/12);
- C 类地址中的私有地址块:192.168.0.0~192.168.255.255(192.168.0.0/16);
2.1.2 IPv4包头格式
IPv4数据包由IPv4 包头和负载两部分构成,IPv4数据包包头格式如图2-3所示,各个字段含义如下所述。
- 版本(4比特):用于确定I数据包的版本,对于IPv4 数据包,此字段始终设为0100.而对于IPv6数据包,此字段始终设为0110。
- 包头长度(4比特):用于确定包头的长度,该值乘以4就是包头的长度,单位为字节。此字段的最小值为5(20字节),最大值为15(60字节)。
- 区分服务(8比特):以前称为服务类型(Type of Service,ToS)字段,用于确定每个数据包IPv4优先级,前6位用于确定服务质量(Quality of Service,QoS)机制使用的区分服务代码点(Differentiated Services Code Point,DSCP)值,后2位用于确定显式拥塞通知(Explicit Congestion Notification,ECN)值,该值可以用于防止网络拥塞时丢弃数据包。
- 总长度(16比特):定义整个数据包大小,包括包头和数据部分长度之和,以字节为单位。
- 标识(16比特):唯一标识原始IPv4数据包的数据分片。
- 标志(3比特):标识数据包的分段方式,它与分段偏移量和标识字段一起,帮助分段数据重组为原始数据包。
- 分段偏移量(13比特):标识在原始未分段数据包重组中放置数据包分段的顺序。
- 生存时间(8比特):用于限制数据包寿命,数据包发送方设置初始生存时间(Time To Live,TTL)值,数据包每经过一台路由设备TTL数值就减少1。如果TTL字段的值减为零,则路由器将丢弃该数据包并向源IPv4地址发送ICMP (Internet Control Message Protocol)超时消息。
- 协议(8比特):表示数据包包含的数据负载类型,根据此值,网络层将数据传送到相应的上层协议。常见的值包括1、6和17,分别表示上层协议为 ICMP、TCP和UDP。
- 校验和(16 比特):用于IPv4包头错误检查,经过重新计算的值与校验和字段中的值进行对比,如果两者的值不匹配,则丢弃数据包。
- 源IPv4地址(32比特):表示数据包源IPv4地址。
- 目的IPv4地址(32比特):表示数据包目的IPv4地址。
- 选项(可变长度):主要用于控制和测试等目的,用户可以使用也可以不使用IPv4选项,此字段的长度可变,从1字节到40字节不等。常见的选项包括源路由和时间截等。
- 填充(可变长度):在使用选项的过程中,有可能造成数据包包头部分不是32比特的整数倍,那么需要填充来补齐。
图2-4是通过Wireshark软件抓取的IPv4 数据包包头的详细信息,该数据包是同一链路上的两个节点用ping命令测试连通性时捕获的。读者可以通过此图更加准确地了解IPv4 数据包包头的各个字段的含义。
图2-4 IPv4数据包包头的详细信息
从图中可知IPv4 数据包头信息:版本字段值为4,包头长度字段值为32字节,区分服务字段值为5,总长度字段值为100,标识字段值为2,标志和分段偏移量字段值为0,TTL字段值为255,协议类型字段值为1,校验和字段值为Ox7c9c,其中Ox表示十六进制数,源IPv4地址字段值为172.16.201.51,目的IPv4地址字段值为172.16.201.199,选项字段为时间戳选项,长度为12字节。
2.1.3 IPv4地址类型
在 IPv4网络中,主机可采用的通信方式包括单播(Unicast)、组播(Multicast)和广播(Broadcast)3种类型。广播分为定向广播和有限广播两类。单播、组播、定向广播(DirectedBroadcast)和有限广播(Limited Broadcast)流量抓包信息如图2-5所示。
图 2-5 单播、组播、定向广播和有限广播流量抓包信息
1、单播
单播是指从一台主机向另外一台主机发送数据包的过程。
2、组播
组播是指从一台主机向选定的一组主机发送数据包的过程,这些主机可以位于不同网络。它允许主机发送单个数据包到加入组播组中的所有主机,从而节省网络带宽。常见的组播应用包括视频和音频广播、路由协议交换路由信息、软件分发和远程游戏等。
3、广播
广播是指从一台主机向该网络中的所有主机发送数据包的过程。网络上收到广播数据包的所有主机都处理该数据包,因此广播通信应加以限制,以免对网络或设备的性能造成负面影响。广播分为定向广播和有限广播。
(1)定向广播
定向广播是将数据包发送给特定网络中的所有主机。此类广播适用于向非本地网络中的所有主机发送广播。例如,192.168.1.0/24 网络外一台主机与该网络内的所有主机通信,则数据包的目的地址是 192.168.1.255。尽管 Cisco 路由器在默认情况下并不转发定向广播,但可对其进行配置(在路由器接口下执行 ip directed-broadcast 命令),使得路由器可以转发该类型数据包。
(2)有限广播
有限广播只限于将数据包发送给本地网络中的所有主机,数据包目的IPv4地址为 255.255.255.255 路由器不会转发有限广播类型数据包。因此,IPv4 网络中的有限广播范围也称为广播域,路由器则是广播域的边界。DHCP 发现(Discover)数据包和 ARP 请求(Request)数据包都属于有限广播类型数据包。