转自华为官网
1.1 介绍
定义
IPv4(Internet Protocol Version 4)协议族是TCP/IP协议族中最为核心的协议族。它工作在TCP/IP协议栈的网络层,该层与OSI参考模型的网络层相对应。网络层提供了无连接数据传输服务,即网络在发送分组时不需要先建立连接,每一个分组(也就是IP数据报文)独立发送,与前后的分组无关。
目的
网络层的IPv4协议族为数据链路层和传输层实现互通提供了保障。IPv4协议族可以屏蔽各链路层的差异,为传输层提供统一的网络层传输标准。
1.2 原理描述
1.2.1 IPv4简介
IPv4协议族
IPv4协议族是TCP/IP协议族中最为核心的协议族。IPv4协议族主要包括地址解析协议ARP(Address Resolution Protocol)、逆地址解析协议RARP(Reverse Address Resolution Protocol)、互联网控制消息协议ICMP(Internet Control Message Protocol)、传输控制协议TCP(Transmission Contronl Protocol)和用户数据报协议UDP(User Datagram Protocol)等协议。
图1-1 IPv4协议族
从图1-1可以看出来,ARP和RARP的功能是地址解析,介于数据链路层和网络层之间,所以常常被调用。ICMP协议的功能是为了更有效地转发IP数据报文和提高数据报文交付成功的机会,是介于网络层和传输层之间的协议。
ARP协议
ARP是用来将IP地址解析为MAC地址的协议,可以分为动态和静态两种类型。另外ARP还有扩展应用功能,包括Proxy ARP功能、免费ARP、ARP安全以及ARP-Ping。
RARP协议
RARP和ARP正好相反,是将主机的MAC地址解析为IP地址的协议。
ICMP协议
为了更有效地转发IP数据报文和提高数据报文交付成功的机会,在网络层使用ICMP协议。ICMP允许主机或路由器报告差错情况和提供有关异常情况的报告。ICMP报文作为IP层数据报文的数据,加上数据报文的首部,组成IP数据报文发送出去。
1.2.2 IPv4地址
在IP网络上,如果用户要将一台计算机连接到Internet上,就需要向因特网服务提供方ISP(Internet Service Provider)申请一个IP地址。
IP地址是在计算机网络中被用来唯一标识一台设备的一组数字。IPv4地址由32位二进制数值组成,但为了便于用户识别和记忆,采用了“点分十进制表示法”。采用了这种表示法的IP地址由4个点分十进制整数来表示,每个十进制整数对应一个字节。例如,IPv4地址使用二进制的表示形式为00001010 00000001 00000001 00000010,采用点分十进制表示法表示为10.1.1.2。
IPv4地址由如下两部分组成:
-
网络号码字段(Net-id)。IP地址的网络号码字段用来标识一个网络,网络号码字段的前几位用来区分IP地址的类型。
-
主机号码字段(Host-id)。主机号码字段用来区分一个网络内的不同主机。对于网络号相同的设备,无论实际所处的物理位置如何,它们都是处在同一个网络中。
IPv4地址的特点
IPv4地址的主要特点有:
-
IP地址是一种非等级的地址结构,IP地址不能反映任何有关主机位置的地理信息,只能通过网络号码字段判断出主机属于哪个网络。
-
当一台主机同时连接到两个网络上时,该主机就必须同时具有两个相应的IP地址,其网络号码Net-id是不同的,这种主机称为多地址主机(Multihomed Host)。主机上的每个接口都对应着一个IP地址,因此多接口主机会有多个IP地址。
-
在IP地址中,所有分配到网络号码Net-id的网络都是平等的。
IPv4地址分类
为了方便IP地址的管理及组网,IP地址分成五类,如图1-2所示。
图1-2 五类IP地址
目前大量使用的IP地址属于A、B、C三类IP地址中的一种。D类地址是组播地址,E类地址保留。A、B、C、D、E类的类别字段分别是二进制数0、10、110、1110、1111,通过网络号码字段的前几个比特就可以判断IP地址属于哪一类,这是区分各类地址最简单的方法。在IETF(Internet Engineering Task Force)发布的RFC1166 Internet Numbers中详细描述了各类IP地址。
在使用IP地址时要注意,一些IP地址是保留作为特殊用途的,一般的用户不能使用。表1-1列出各类IP地址的范围。
表1-1 IP地址分类及范围
网络类型 |
地址范围 |
说明 |
---|---|---|
A |
0.0.0.0~127.255.255.255 |
全0的主机号码表示该IP地址就是网络的地址,用于网络路由;全1的主机号码表示广播地址,即对该网络上所有的主机进行广播。 |
B |
128.0.0.0~191.255.255.255 |
全0的主机号码表示该IP地址就是网络的地址,用于网络路由;全1的主机号码表示广播地址,即对该网络上所有的主机进行广播。 |
C |
192.0.0.0~223.255.255.255 |
全0的主机号码表示该IP地址就是网络的地址,用于网络路由;全1的主机号码表示广播地址,即对该网络上所有的主机进行广播。 |
D |
224.0.0.0~239.255.255.255 |
D类地址是一种组播地址。 |
E |
240.0.0.0~255.255.255.255 |
保留。255.255.255.255用于局域网广播地址。 |
特殊IPv4地址
表1-2 特殊情况的IP地址
IP地址网络号 |
IP地址主机号 |
能否作为源端地址 |
能否作为目的端地址 |
描述 |
---|---|---|---|---|
全0 |
全0 |
可以 |
不可以 |
用于本网络上的本主机 |
全0 |
主机号 |
可以 |
不可以 |
用于网络上的特定主机 |
127 |
非全0或全1的任何值 |
可以 |
可以 |
用于环回地址 |
全1 |
全1 |
不可以 |
可以 |
用于受限的广播(永远不被转发) |
Net-id |
全1 |
不可以 |
可以 |
用于向以Net-id为目的的网络广播 |
Net-id表示不全为0和不全为1的对应字段。
私有IPv4地址
为了解决IP地址短缺的问题,提出了私有地址的概念。私有地址是指内部网络或主机地址,这些地址只能用于某个内部网络,不能用于公共网络。RFC1918描述了为私有网络预留的3个IP地址段。
表1-3 私有IP地址
网络类型 |
地址范围 |
---|---|
A |
10.0.0.0~10.255.255.255 |
B |
172.16.0.0~172.31.255.255 |
C |
192.168.0.0~192.168.255.255 |
1.2.3 IPv4报文格式
IPv4报文格式如图1-3所示。
图1-3 IPv4报文格式
一个IPv4数据报文由首部和数据两部分组成。首部的前一部分是固定长度,共20个字节,是所有IPv4数据报必须具有的。在首部的固定部分的后面是一些可选字段,其长度是可变的。
主要字段的解释如表1-4所示。
表1-4 IPv4报文各字段的含义
字段 |
长度 |
含义 |
---|---|---|
版本 |
4比特 |
IP协议的版本号,分为IPv4和IPv6协议。 |
首部长度 |
4比特 |
IPv4的首部长度。 |
区分服务 |
8比特 |
用来获得更好的服务。只有在使用区分服务时,这个字段才起作用。 |
总长度 |
16比特 |
指首部和数据之和的长度。 |
标识 |
16比特 |
IPv4软件在存储器中维持一个计数器,每产生一个数据报,计数器就加1,并将此值赋给标识字段。 |
标志 |
3比特 |
目前只有两位有意义。最低位为1表示后面“还有分片”的数据报,为0表示这已经是最后一个数据片;中间一位为1表示“不能分片”,为0才允许分片。 |
片位移 |
13比特 |
指出较长的分组在分片后,该片在原分组中的相对位置。 |
生存时间 |
8比特 |
表示数据报在网络中的寿命,英文缩写是TTL(Time To Live),功能是“跳数限制”。 |
协议 |
8比特 |
指出此数据报携带的数据是使用何种协议。 |
首部检验和 |
16比特 |
数据报每经过一个路由器,路由器都要重新计算一下首部检验和,若首部未发生变化,则此结果必为0,于是就保留这个数据报。这个字段只检验数据报的首部,但不包括数据部分。 |
源地址 |
32比特 |
报文发送方的IPv4地址。 |
目的地址 |
32比特 |
报文接收方的IPv4地址。 |
选项字段(长度可变) |
0~40字节 |
用来支持排错、测量以及安全等措施。在必要的时候插入值为0的填充字节。 |
数据部分 |
可变 |
用来填充报文。 |
1.2.4 子网划分
通过将IP地址的网络部分进一步划分为若干个子网,解决了IP地址空间利用率低和两级IP地址不够灵活的问题。
当一个单位的主机很多而且分布在很广的地理范围时,为了便于管理,可将单位内部的主机号码再进一步划分为多个子网。通过子网划分,整个网络地址可以划分成更多的小网络。
子网的划分是网络内部的行为,从外部看,这个单位只有一个网络号码。只有当外部的报文进入到本单位范围后,本单位的路由设备才根据子网号码再进行选路,找到目的主机。
如图1-4所示,为一个B类IP地址子网划分情况,其中子网掩码由一串连续的“1”和一串连续的“0”组成。“1”对应于网络号码和子网号码字段,而“0”对应于主机号码字段。
图1-4 IP地址子网划分
图1-4中,把一个B类地址的Host-id的高位5bits用来划分子网,Subnet-id的范围是从00000~11111,总共可以划分25(32)个子网出来。对应的子网掩码也会相应的发生变化,比如Subnet-id为11111的子网掩码就是255.255.248.0。将IP地址与其相应掩码位执行与运算的结果就是网络地址。
多划分出一个子网号码字段是要付出代价的。举例来说,本来一个B类IP地址可以容纳65534个主机号码。但划分出5bits长的子网字段后,最多可有32个子网,每个子网有11bit的主机号码,即每个子网最多可有2046(211-2,去掉全1和全0的主机号码)个主机号码。因此主机号码的总数是(32 x 2046 = 65472)个,比不划分子网时要少62个。
子网划分与IP地址规划时,通常需要综合考虑以下原则,实现合理高效的网络规划。
层次性
实现网络的层次性划分,需要综合考虑地域和业务因素,采用自顶向下的方法划分,达到有效管理网络、简化路由表的目标。一般情况下:
- 对于大骨干网络和大城域网络相结合的网络,采用层次性划分方式。
- 对于行政区类型的网络,采用多级网络分配方式。
连续性
连续地址在层次结构的网络中易于进行路由聚合,大大缩减路由表数量,提高路由查找的效率。
- 尽量为每个区域分配连续的IP地址空间。
- 尽量为具有相同业务和功能的设备分配连续的IP地址。
扩展性
分配地址时,在每一层次上都要留有余量。当网络规模扩展时能保证地址分配的连续性,实现网络的长远规划。
骨干网络应有足够的连续地址组成独立的自治域,并为今后的扩展留有余地。
高效性
划分子网时,要保证充分利用地址资源,使子网的划分满足主机个数的要求。
- 利用可变长子网掩码VLSM(Variable Length Subnet Mask)技术分配IP地址,充分合理地利用地址资源。
- 与网络的路由机制设计相结合,合理使用已划分的地址空间,提高地址的利用率。
1.2.5 IP地址解析
一台路由设备用来连接多个网络,具有多个网络的IP地址。为保证用户使用IP地址进行正常通信,需要满足如下两点:
-
IP地址只是主机在网络层中的地址,若要将网络层中传送的数据报交给目的主机,必须知道该主机的物理地址,因此必须将IP地址解析为物理地址。
-
用户平时不愿意使用难于记忆的IP地址,而更愿意使用易于记忆的主机名,因此也需要将主机名解析为IP地址。
在以太网上,主机的物理地址就是指MAC地址。将主机名解析为IP地址的操作是由DNS服务器来完成,而将IP地址解析为MAC地址的操作是由ARP来完成的,详细内容请参见DNS和ARP章节内容。
1.3 参考标准和协议
本特性的参考资料清单如下:
文档 |
描述 |
备注 |
---|---|---|
RFC1166 |
Internet Numbers |
- |
RFC1918 |
Address Allocation for Private Internets |
- |