网络层协议及IP编址


1 网络层协议

  网络层经常被称为IP层。但网络层协议并不只是IP协议,还包括ICMP(Internet ControlMessage Protocol)协议、 IPX (Internet Packet Exchange) 协议等。

1.1 IP协议

  IP是Internet Protocol的缩写。 Internet Protocol本身是一个协议文件的名称,阐述了IP报文的格式。

  IP一般不是特指Internet Protocol这个协议文件本身,而是泛指直接或间接与IP协议相关的任何内容。

1.2 数据封装

  传输层:增加TCP/UDP的报头

  网络层:增加IP报头

  数据链路层:增加以太网报头

1.3 IPv4报文格式

  IPv4报文格式的主要内容如下:

  Version:版本号,4位。值4表示IPv4,值6表示IPv6。

  Header Length:IP报文头部的长度,4位。如果不带Options字段,则IP报文头部的长度为20字节,最长为60字节。

  Type of Service:服务类型(ToS),8位。只有在有 QoS 差分服务要求时,该字段才起作用。

  Total Length:总长度,16位。整个IP数据包的长度,包括首部和数据,单位为字节,最长为65535、总长度不能超过MTU(最大传输单元)。

  Identification:标识,16位。主机每发送一个报文,就加1。分片重组时会用到该字段。

  Flags:标志位,3位。

  Fragment Offset:片偏移,13位。分片重组时会用到该字段。

  TTL:生存时间,8位。

  Protocol:协议,8位。指出此数据包携带的数据使用何种协议,以便目的主机的 IP 层知道将数据部分上交给哪个进程处理。

  Header Checksum:头部校验和,16位。

  Source IP Address:源IP地址,32位。

  Destination IP Address:目的IP地址,32位。

  Options:选项字段,可选。

  Padding:填充字段,可选,全填0。

  IPv4是 TCP/IP 协议族中最为核心的协议。工作在 TCP/IP协议栈的网络层,该层与 OSI参考模型的网络层相对应。

  IPv6是网络层协议的第二代标准协议,也被称为IPng(IP Next Generation),是IETF设计的一套规范,也是IPv4的升级版本。

1.4 数据包分片

  将报文分割成多个片段的过程叫做分片。

  网络中转发的IP报文的长度可以不同,但如果报文长度超过了数据链路所支持的最大长度,则报文就需要分割成若干个较小的片段才能够在链路上传输。

1.5 生存时间(Time to Live)

  TTL字段设置了数据包可以经过的路由器数目,TTL值最大是255.

  一旦经过一个路由器,TTL值就会减1,当该字段值为0时,数据包将被丢弃。

1.6 协议号(Protocol)

  IP报文头中的协议号字段标识了将会继续处理该报文的协议。

  指出此数据包携带的数据使用何种协议,以便目的主机的IP层将数据部分上报给哪个进程处理。

2 IPv4地址

2.1 IP地址的概念

  IP地址在网络中用于标识一个节点(网络设备的接口)。

  IP地址用于IP报文在网络中的寻址。

  目前全球因特网采用的协议族是TCP/IP。IP是TCP/IP协议族中网络层的协议,是TCP/IP协议族的核心协议。IP定义了一种地址编,称为IP地址,它是网络中网络段、网络设备接口、主机的编码,并不是一种物理地址,而是逻辑地址,即地址是可以被分配,并且非固定、可修改的。

  IPv4(Internet ProtocolVersion4),是 IP 的第4版,也是第一个被广泛使用,构成现今互联网技术的基石的协议。IP可以运行在各种各样的底层网络上,如端对端的串行数据链路、卫星链路等。局域网中最常用的是以太网。

  IPv4的下一个版本是IPv6(Internet Protocol Version 6),IPv6正处在不断发展和完善的阶段,在不久的将来会取代目前被广泛使用的IPv4。

2.2 进制装换

2.2.1 基础概念

  每种进制的基数(每一位可以使用的数字符号数量):

   二进制(Binary):基数 2,数字符号:0, 1

   八进制(Octal):基数 8,数字符号:0-7

   十进制(Decimal):基数 10,数字符号:0-9

   十六进制(Hexadecimal):基数 16,数字符号:0-9, A-F(A=10, B=11, C=12, D=13, E=14, F=15)


2.2.2 其他进制转十进制

  规则:按权展开,相加求和

  公式:值=∑(每位数字 × 基数^位置权重)

  位置权重:从右向左,最低位为 0,向左依次递增。

  1.二进制转十进制

   二进制一共有2个数字:0和1

   二进制 1011.01 → 十进制

   1×2^3 + 0×2^2 + 1×2^1 + 1×2^0 + 0×2^−1 + 1×2^−2 = 8 + 0 + 2 + 1 + 0 + 0.25 = 11.25

   1101转换为十进制:1x2^3 + 1x2^2 + 0x2^1 + 1x2^0=1x8+1x4+0+1=13。在二进制中,2代表权,2的n次方叫二的幂次方,从二进制的右边开始依次为2^0、2^1、2^2……

  2.十六进制转十进制

   十六进制 2A.8 → 十进制 2×16^1 + 10×16^0 + 8×16^-1 = 32 + 10 + 0.5=42.5

2.2.3 十进制转其他进制

  规则:整数部分和小数部分分开转换。

  整数部分:除基取余法(从下往上读)

   1.用目标基数除整数部分

   2.记录余数

   3.用商继续除,直到商为0

   4.余数倒序排列即为结果

  小数部分:乘基取整法(从上往下读)

   1.用小数部分乘目标基数

   2.记录结果的整数部分

   3.用新的小数部分继续乘,直到小数部分为0或达到所需精度

   4.整数部分正序排列即为结果

   十进制一共有10个数字:0、1、2、3、4、5、6、7、8、9

   128=1x10^2 + 2x10^1 + 8x10^0=1x100 + 2x10 + 8x1。在十进制中,10代表权、10的n次方叫十的幂次方,其中个位为10^0,十位为10^1,百位为10^2。

  十进制 25.375 → 二进制

  整数部分 25

25÷2=12余1、12÷2=6余0、6÷2=3余0、3÷2=1余1、1÷2=0余1 倒序:11001

  小数部分 0.375

0.375×2=0.75取整0、0.75×2=1.5取整1、0.5×2=1.0取整1 正序:.011

  合并:11001.011


2.2.4 二进制转八进制

  关键:八进制 1 位 = 二进制 3 位(因为 2^3=8)

  1.以小数点为中心,向左向右三位一组分组

  2.不足三位时,整数部分左边补0,小数部分右边补0

  3.每组转换为对应的八进制数字

   101110.1011 → 八进制

   1.分组:101 110 . 101 100(最后补0)

   2.转换:5 6 . 5 4

   3.结果:56.54

2.2.5 八进制转二进制

  每位八进制数字展开为3位二进制数,直接拼接。

   37.24 → 二进制

   3011711120104100

   结果:011111.010100 = 11111.0101


2.2.6 二进制转十六进制

  关键:十六进制 1 位 = 二进制 4 位(因为 24=1624=16)

  1.以小数点为中心,向左向右四位一组分组

  2.不足四位时补0

  4.每组转换为对应的十六进制数字(10-15 → A-F)

  1101011.01101 → 十六进制

   1.分组:0110 1011 . 0110 1000(前后补0)

   2.转换:6 B . 6 8

   3.结果:6B.68

2.2.7 十六进制转二进制

  每位十六进制数字展开为4位二进制数,直接拼接。

  3D.A2 → 二进制

  30011D(13) → 1101A(10) → 101020010

  结果:00111101.10100010 = 111101.1010001


2.2.8 八进制转十六进制

  最简方法:以二进制为桥梁

  1.先转为二进制

  2.再从二进制转为目标进制

  八进制 57.4 → 十六进制

   1.八进制 → 二进制:

   510171114100 得:101111.100

   2.二进制 → 十六进制:

   分组:0010 1111 . 10002 F . 8

   结果:2F.8

2.2.9 快速对照表

十进制 二进制 (4位) 八进制 十六进制
0 0000 0 0
1 0001 1 1
2 0010 2 2
3 0011 3 3
4 0100 4 4
5 0101 5 5
6 0110 6 6
7 0111 7 7
8 1000 10 8
9 1001 11 9
10 1010 12 A
11 1011 13 B
12 1100 14 C
13 1101 15 D
14 1110 16 E
15 1111 17 F

2.2.10 记忆技巧与用途

  1.二进制:计算机内部直接使用,每位称为一个比特(bit)

  2.八进制:Unix/Linux文件权限表示(如755

  3.十进制:人类日常使用

  4.十六进制

   内存地址表示(如0x7FFF

   颜色代码(如#FF5733

   机器码和汇编语言中常用

  5.实用提示

   1.2^3=8、2^4=16,这是分组转换的基础

   2.整数转换用“除基取余”,小数转换用“乘基取整”

   3.八进制和十六进制之间转换,先用二进制作为桥梁最不容易出错

2.3 IP地址表示

  一个IPv4地址有32bit,由4字节(1字节=8bit)组成

  一个IPv6地址有128bit

  IPv4地址通常采用”点分十进制”表示

  通信设备在对IP地址进行计算时使用的是二进制的操作方式

  IPv4地址范围:0.0.0.0~255.255.255.255,即最小值:00000000.00000000.00000000.00000000==>0.0.0.0,最大值:11111111.11111111.11111111.11111111==>255.255.255.255

  采用点分十进制表示的IP地址192.168.10.1也可以用二进制表示,它的对应关系如下图:

  IP地址的范围用二进制可以表示为:00000000.00000000.00000000.00000000 ~ 11111111.11111111.11111111.11111111,转换为十进制为:0.0.0.0~255.255.255.255

2.4 IP地址构成与寻址

  IP地址被划分为网络部分和主机部分,如上图所示。

  网络部分:用来标识一个网络,表示所在的逻辑网络区域,同一网络区域中所有主机的网络部分相同。

  主机部分:用来区分一个网络内的不同主机,表示该主机在网段中的具体逻辑位置。

  把IP地址和电话号码做类比:

   在电话号码0731-85015xxx中,0731是区号,代表湖南省长沙市,类似于IP地址中的网络部分。

   85015xxx是湖南省长沙市内某一个电话机的确切号码,类似于IP地址中的主机部分。

  网络掩码:区分一个IP地址中的网络部分及主机部分

  总结网络掩码

   1、一定是连续的1和0组成

   2、1在前面,0在后面

  IP地址寻址

   网络部分:用来标识一个网络,代表IP地址所属网络。

   主机部分:用来区分一个网络内的不同主机,能唯一标识网段上的某台设备。

2.5 IP地址分类(有类编址)

  为了方便IP地址的管理及组网,IP地址分成五类:

  在互联网早期(TCP/IP协议制定时),为了简单、高效地管理不同规模的网络,设计者将IP地址分成了A、B、C、D、E五类。区分类别的依据就是IP地址第一个字节(前8位)的前几个比特

  A类第一个比特固定为 0

  B类: 第一个比特固定为 10

  C类: 第一个比特固定为 110

  D类: 第一个比特固定为 1110(组播)

  E类: 第一个比特固定为 1111(保留)

  A/B/C类IP地址默认掩码:

IP地址分类 使用情况 掩码长度 掩码范围
A类 用于大型企业 8 bit 0.0.0.0 ~ 127.255.255.255/8
B类 用于中型企业 16 bit 128.0.0.0 ~ 191.255.255.255/16
C类 用于小型企业 24 bit 192.0.0.0 ~ 223.255.255.255/24

  A类地址

   第一位必须为0,这样能计算出A类地址的第一个字节的取值范围为 1-126 或 (00000001) ~ (01111110)。

   第一个字节为网络位区间,后三个字节为主机位区间。

   在A类地址中,当第一个字节为0或127时,它不归属于A类网络。

  B类地址:

   前两位必须为10,则B类网络地址的第一个字节的取值范围为128 ~191或(10000000) ~ (10111111)。

   前两字节为网络位区间,后两字节为主机位区间。

  C类地址:

   前三位必须为 110,第一个字节取值范围为192 ~ 223或(11000000) ~ (11011111)。

   C类地址前三个字节为网络位区间,第四个字节为主机位区间。

  D类地址:该类地址被定义为组播地址。

  E类地址:该类地址用于科学研究。

2.6 IP地址类型

  通常把一个网络号定义的网络范围称为一个网段。

IP地址类型 含义 示例
网络地址 用于标识一个网络(网段) 192.168.10.0/24 192.168.10.00000000
广播地址 用于向网络中所有主机发送数据 192.168.10.255/24 192.168.10.11111111
可用地址 可分配给网络中的节点或网络设备接口的地址 192.168.10.1/24 192.168.10.00000001

  注明:

   1.网络地址和广播地址不能直接被节点或网络设备使用

   2.一个网段可用地址数量为:2^n-2(n:主机部分的比特位数)

示例说明:192.168.1.15/27

11000000.10101000.00000001.00000000111111111111.11100000

2的5次方=32、32-2=30

2.7 IP地址计算

  172.16.10.1/16这个B类地址的网络地址、广播地址、可用地址数分别是多少?

  A类IP地址的范围为 1126,B类IP地址的范围为 128191,C类IP地址的范围为192223,D类IP地址的范围为224239。

1.网络位和主机位

  A类IP地址的网络位为8位,主机位为24位;

  B类IP地址的网络位为16位,主机位为16位;

  C类IP地址的网络位为24位,主机位为8位。

  举例1:10.1.1.1属于A类IP地址,因为A类IP地址的范围为1 ~ 126。

  举例2:172.16.1.1属于B类IP地址,因为B类IP地址的范围为128 ~ 191。

  举例3:192.168.1.1属于C类IP地址,因为C类IP地址的范围为192~223

2.子网掩码

  子网掩码的定义:网络位全为1,主机位全为0。

  举例1:10.1.1.1的子网掩码为255.0.0.0。

   10.1.1.1的网络位有8位,主机位有24位,即11111111.00000000.00000000.00000000 (255.0.0.0)。

  举例2:172.16.1.1的子网掩码为255.255.0.0。

   172.16.1.1的网络位有16位,主机位有16位,即11111111.11111111.00000000.00000000(255.255.0.0)。

  举例3:192.168.1.1的子网掩码为255.255.255.0。

   192.168.1.1的网络位有24位,主机位有8位,即 11111111.11111111.11111111.00000000 (255.255.255.0)。

3.网络地址

  网络地址的定义:网络位不变,主机位全为0。

  举例1:10.1.1.1的网络地址为10.0.0.0。

   10.1.1.1的网络位有8位,主机位有24位,网络位不变,主机位全为0,即10.00000000.00000000.00000000(10.0.0.0)。

  举例2:172.16.1.1的网络地址为172.16.0.0。

   172.16.1.1的网络位有16位,主机位有16位,网络位不变,主机位全为0,即172.16.00000000.00000000(172.16.0.0)。

  举例3:192.168.1.1的网络地址为192.168.1.0。

   192.168.1.1的网络位有24位,主机位有8位、网络位不变,主机位全为0,即192.168.1.00000000(192.168.1.0)。

4.广播地址

  广播地址的定义:网络位不变,主机位全为1。

  举例1:10.1.1.1的广播地址为10.255.255.255。

   10.1.1.1的网络位有8位,主机位有24位,网络位不变,主机位全为1,即10.11111111.11111111.11111111(10.255.255.255)。

  举例2:172.16.1.1的广播地址为172.16.255.255。

   172.16.1.1的网络位有16位,主机位有16位,网络位不变,主机位全为1,即172.16.11111111.11111111(172.16.255.255)。

  举例3:192.168.1.1的广播地址为192.168.1.255。

   192.168.1.1的网络位为24位,主机位为8位,网络位不变,主机位全为1,即192.168.1.11111111(192.168.1.255)。

5.主机地址

  主机地址的算法:网络地址加1,广播地址减1。

  举例1:10.1.1.1的网络地址为10.0.0.0,广播地址为10.255.255.255,所以主机地址为10.0.0.1 ~ 10.255.255.254。

  举例2:172.16.1.1的网络地址为172.16.0.0,广播地址为172.16.255.255,所以主机地址为172.16.0.1 ~ 172.16.255.254。

  举例3:192.168.1.1的网络地址为192.168.1.0,广播地址为192.168.1.255,所以主机地址为192.168.1.1 ~ 192.168.1.254。

6.主机数

  主机数的算法:2"-2,其中n代表主机位。

  举例1:10.1.1.1的网络位为8位,主机位为24位,主机数:224-2=16777214。

  举例2:172.16.1.1的网络位为16位,主机位为16位,主机数:216-2=65534。

  举例3:192.168..1的网络位为24位,主机位为8位,主机数:28-2=254。

7.IP地址计算汇总如下表

IP地址 类别 网络位 主机位 子网掩码 网络地址 广播地址 主机地址 主机数
10.1.1.1 A 8 24 255.0.0.0 10.0.0.0 10.255.255.255 10.0.0.1~10.255.255.254 2^24-2
172.16.1.1 B 16 16 255.255.0.0 172.16.0.0 172.16.255.255 172.16.0.1~172.16.255.254 2^16-2
192.168.1.1 C 24 8 255.255.255.0 192.168.1.0 192.168.1.255 192.168.1.1~192.168.1.254 2^8-2

2.8 私有IP地址

  为了解决IP地址短缺的问题,提出了私有IP地址的概念。私有IP地址是指内部网络或机地址,这些地址只能用于某个内部网络,不能用于公共网络

  私有IP地址的使用使得网络可以得到更为自由的扩展,因为同一个私网P地址可以在不同的私网中重复使用

  公网IP地址:连接到互联网的网络设备的IP地址由IANA统一分配的,保证任何一个IP地址在Internet上唯一。

  私网IP地址:一些网络不需要连接到Internet,比如大学封闭实验室内的网络,只要同一网络中的网络设备的IP地址不冲突即可。

  在IP地址空间里,A、B、C三类地址中各预留了一些地址专门用于上述情况,称为私网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

  私网由于使用了私有IP地址,是不允许连接互联网的。在实际需求的驱动下,许多私网也希望能够连接互联网,从而实现私网与互联网之间的通信,以及通过互联网实现私网与私网之间的通信。私网与互联网的互联,必须使用网络地址转换(NAT)技术实现。

2.9 特殊IP地址

  IP地址空间中,有一些特殊的IP地址,这些IP地址有特殊的含义和作用,举例如下:

特殊IP地址 地址范围 作用
有限广播地址 255.255.255.255 可作为目的地址,发往该网段所有主机(受限于网关)
任意地址 0.0.0.0 “任何网络”的网络地址
‘’这个网络上主机接口”的IP地址
环回地址 127.0.0.0/8 测试设备自身的软件系统
本地链路地址 169.254.0.0/24 当主机自动获取地址失败后,可使用该网段中的某个地址进行临时通信

  1.有限广播地址

   255.255.255.255为有限广播地址,可以作为一个IP报文的目的IP地址使用。

   路由器接收到目的IP地址为有限广播地址的IP报文后,会停止对该IP报文的转发。

  2.任意地址

   如果把0.0.0.0作为网络地址,则表示”任何网络”的网络地址。

   如果把该地址作为主机接口地址,则表示”这个网络上主机接口”的IP地址。

   例如,当一个主机接口在启动过程中尚未获得自己的IP地址时,就可以向网络发送目的IP地址为有限广播地址、源IP地址为0.0.0.0的DHCP请求报文,希望DHCP服务器在收到自己的请求后,能够给自己分配一个可用的IP地址。

  3.环回地址

   127.0.0.0/8为环回地址,可以作为一个IP报文的目的IP地址使用。其作用是测试设备自身的软件系统。

   一个设备产生的目的IP地址为环回地址的IP报文是不可能离开这个设备本身的。

  4.本地链路地址

   如果网络设备获取IP地址的方式被设置成了自动获取,但是该设备在网络上又没有找到可用的DHCP服务器,那么该设备就会使用169.254.0.0/16网段的某个地址进行临时通信。

2.10 IPv4 vs IPv6

  由全球IP地址分配机构,IANA(Internet AssignedNumbers Authority)管理的IPv4地址,于2011年完全用尽。随着最后一个IPv4公网地址分配完毕,加上接入公网的用户及设备越来越多,IPv4地址枯竭的问题日益严重,这是当前IPv6替代IPv4的最大源动力。

3 子网划分与路由汇聚

  ”有类编址”的地址划分过于死板,划分的颗粒度太大,会有大量的主机号不能被充分利用,从而造成了大量的IP地址资源浪费。因此可以利用子网划分来减少地址浪费,即 VLSM(Variable Length Subnet Mask,可变长子网掩码)。将一个大的有类网络,划分成若干个小的子网,使得IP地址的使用更为科学。

3.1 子网划分的意义

  一个B类IP地址172.16.1.1,计算出网络位、主机位、子网掩码、网络地址、广播地址、主机地址和主机数如下:

IP地址 类别 网络位 主机位 子网掩码 网络地址 广播地址 主机地址 主机数
172.16.1.1 B 16 16 255.255.0.0 172.16.0.0 172.16.255.255 172.16.0.1-172.16.255.254 2^16-2

  通过上表可看出,172.16.0.0网段的主机数为65534,这种IP地址的划分在实际工作中是不合理的。假如把这个网段分配给A公司,如下图所示,这种分配方案会产生如下问题:1.很少有企业需要这么多的主机数,浪费IP地址;2.这么多主机在同一广播域,一旦发生广播,内网将不堪重负。

  总结

   一个B类地址用于一个广播域,地址浪费。

   广播域太庞大,一旦发生广播,内网不堪重负。

  可以利用子网划分避免地址浪费的问题,如下图所示:

  总结

   将一个网络号划分成多个子网,每个子网分配给一个独立的广播域。

   广播域的规模很小、网络规划更加合理。

   IP地址得到了合理利用。

  通过VLSM划分子网的好处:将一个网络号划分成多个子网,每个子网分配给一个独立的广播域,如此一来广播域的规模更小、网络规划更加合理,IP地址可以得到合理利用。

3.2 子网划分

3.2.1 原网段分析

  假设有一个C类网段地址 192.168.10.0。默认情况下,子网掩码为24位,包括24位网络位,8位主机位。通过计算,得出网络地址、广播地址、主机地址和主机数,见下表:

IP地址 网络位 主机位 子网掩码 网络地址 广播地址 IP地址数 主机地址 主机数
(可用IP地址数)
192.168.10.0 24 8 255.255.255.0 192.168.10.0 192.168.10.255 2^8(256) 192.168.10.1 ~
192.168.10.254
2^8 - 2

3.2.2 借主机位给网络位

  若将主机位”借”给网络位 1 位,网络位就扩充到25位,主机位就减少到7位,借过来的这1位就是子网位,此时子网掩码就变成了25位,即255.255.255.128/25。

  计算子网网络地址:

   主机位全为0,计算子网网络地址。

  计算子网广播地址:

   主机位全为1,计算子网广播地址。

  子网位:可取值为0或1,则得到两个新的子网。两个新的子网的网段分析见下表:

子网 网络位 主机位 子网掩码 网络地址 广播地址 主机地址 IP地址数 主机数
(可用IP地址数)
192.168.10.0xxxxxxx 25 7 255.255.255.128 192.168.10.0 192.168.10.127 192.168.10.1 ~ 192.168.10.126 2^7(128) 2^7 - 2
192.168.10.1xxxxxxx 25 7 255.255.255.128 192.168.10.128 192.168.10.255 192.168.10.129 ~ 192.168.10.254 2^7(128) 2^7 - 2

3.3 路由汇聚CIDR

3.3.1 路由汇聚的背景

  IP用尽

  路由器路由表条目急剧增加

3.3.2 IP地址的记法

  如:192.168.1.25/27

  27表示网络位1的个数为27(掩码)

3.3.3 CIDR汇聚规则

  将IP地址中最大的相同位作为汇聚后的网络位,不同的位则归为汇聚后的主机位,从而实现将多个网段汇聚成一个新的超网网段

  汇聚规则:将最大相同的位汇聚归为网络位,不同的位则为主机位

  汇聚的特点:将多个小网络汇聚为一个大网络

  汇聚的好处:可以精简路由器的路由表空间,提升转发效率

  超网网络地址:新网络的值不变,主机位全取0

  超网有效IP:主机位取非全0和非全1的地址

3.3.4 路由的最佳匹配原则

  使用路由汇聚时,路由表的项目主要由”网络前缀”和”下一跳地址”组成,因此查找路由表匹配报文中的目标IP地址时可能会得到不止一个匹配结果,则应当从匹配结果中选择具有最长网络前缀的路由:最长前缀匹配。

  网络前缀越长,其地址块就越小,因而路由就越具体,最长前缀匹配又称为最长匹配或最佳匹配。

4 ICMP

  ICMP(Internet Control Message Protocol,因特网控制消息协议)是一个差错报告机制,是TCP/IP协议簇中一个重要的子协议,通常被IP层或更高层协议(TCP或UDP)使用,属于网络层协议,主要用于在IP主机和路由器之间传递控制消息,报告主机是否可达、路由是否可用等。这些控制消息虽然并不传输用户数据,但是对于收集各种网络信息、诊断和排除各种网络故障具有至关重要的作用。

  Internet控制消息协议ICMP是IP协议的辅助协议。

4.1 ICMP报文

  ICMP报文的格式如下图所示,每个ICMP消息都将包含引发这条ICMP消息的数据包的完全IP报头,ICMP报文作为IP数据包的数据部分封装在IP数据包内部。

  ICMP包头中包含的三个固定字段就是源端设备确定发生的错误类型的主要依据。

  ICMP报文的字段解析如下:

   Type:表示 ICMP消息的类型。

   Code:表示ICMP消息类型细分的子类型。

   Checksum:表示ICMP报文的校验和。

  不同的Type和Code值表示不同的ICMP报文类型,对应数据包处理过程中可能出现的不同错误情况,常见的ICMP报文如下表

Type Code 描述
0 0 Echo Reply
3 0 网络不可达
3 1 主机不可达
3 2 协议不可达
3 3 端口不可达
5 0 重定向
8 0 Echo Request

4.2 ICMP重定向

  ICMP重定向用于支持路由功能。如下图所示,主机希望发送报文到服务器A,于是根据配置的默认网关地址向路由器RTB发送报文。路由器RTB接收到报文后,检查报文信息,发现报文应该转发到与源主机在同一网段的另一个网关RTA,因为此转发路径不是最优的路径,所以RTB会向主机A发送一个Redirect消息,通知主机直接向另一个路由器RTA发送该报文。主机 A接收到Redirect消息后,会向RTA发送报文,然后RTA会将该报文再转发给服务器A。

  ICMP重定向报文是ICMP控制报文中的一种。在特定的情况下,当路由器检测到一台机器使用非最优路由的时候,它会向该主机发送一个ICMP重定向报文,请求主机改变路由。

4.3 ICMP差错检测

  ICMP Echo消息常用于诊断源和目的地之间的网络连通性,同时还可以提供其他信息,如报文往返时间等。

  ICMP应用-Ping命令

  Ping命令是检测网络连通性的常用工具。用户可以在Ping命令中指定不同的参数,如ICMP报文长度、发送的ICMP报文个数、等待回复响应的超时时间等,设备根据配置的参数来构造并发送ICMP报文,进行Ping测试。

  Ping是网络设备、Windows、Unix和Linux平台上的一个命令,是一个小巧而实用的应用程序,该应用基于ICMP协议。

  Ping常用于探测到达目的节点的网络可达性。

  Ping命令常用的配置参数说明如下:

   -a:指定发送 ICMP ECHO-REQUEST 报文的源IP地址。如果不指定源IP地址,将采用出接口的IP地址作为 ICMP ECHO-REQUEST报文发送的源IP地址。

   -C:指定发送 ICMP ECHO-REQUEST 报文的次数。默认情况下发送5个 ICMP ECHO-REQUEST 报文。

   -h:指定TTL的值。默认值为255。

   -t:指定发送完 ICMP ECHO-REQUEST 后,等待 ICMP ECHO-REPLY 的超时时间。

  Ping命令的输出信息中包括目的地址、ICMP报文长度、序号、TTL值以及往返时间。其中,序号是包含在 Echo 回复消息(Type=0)中的可变参数字段,TTL值和往返时间包含在消息的IP头中。

[RTA]ping 20.0.0.2
  PING 20.0.0.2: 56 data bytes, press CTRL_C to break
    Reply from 20.0.0.2 : bytes=56 Sequence=1 ttl=254 time=70 ms
    Reply from 20.0.0.2 : bytes=56 Sequence=2 ttl=254 time=30 ms
    Reply from 20.0.0.2 : bytes=56 Sequence=3 ttl=254 time=30 ms
    Reply from 20.0.0.2 : bytes=56 Sequence=4 ttl=254 time=40 ms
    Reply from 20.0.0.2 : bytes=56 Sequence=5 ttl=254 time=30 ms
    
--- 20.0.0.2 ping statistics ---
  5 packet(s) transmitted
  5 packet(s) received
  0.00% packet loss
  round-trip min/avg/max = 30/40/70 ms

4.4 ICMP错误报告

  ICMP定义了各种错误消息,用于诊断网络连接性问题;根据这些错误消息,源设备可以判断出数据传输失败的原因。如:当网络设备无法访问目标网络时,会自动发送ICMP目的不可达报文到发送端设备。

  ICMP应用-Tracert

  Tracert基于报文中的TTL值来逐跳跟踪报文的转发路径。

  为了跟踪到达某特定目的地址的路径,源端首先将报文的TTL值设置为1。

  报文到达第一个节点后,TTL超时,于是该节点向源端发送TTL超时消息,消息中携带时间戳,然后源端将报文的TTL值设置为2。

  报文到达第二个节点后超时,该节点同样返回TTL超时消息,以此类推,直到报文到达目的地。这样,源端根据返回的报文中的信息可以跟踪到报文经过的每一个节点,并根据时间戳信息计算往返时间。

  Tracert是检测网络丢包及时延的有效手段,同时可以帮助管理员发现网络中的路由环路。

  Tracert常用的配置参数说明如下

   -a source-ip-address:指定Tracert报文的源地址。

   -f first-ttl:指定初始TTL。默认值为1。

   -m max-ttl:指定最大TTL。默认值为30。

   -name:使能显示每一跳的主机名。

   -p port:指定目的主机的UDP端口号。

[RTA]tracert 20.0.0.2
  traceroute to 20.0.0.2(20.0.0.2), max hops:30.packet
 length:40,press CTRL_C
  to break
  1 10.0.0.2       80 ms      10 ms    10 ms
  2 20.0.0.2       30 ms      30 ms    20 ms

5 IPv4地址配置及应用

5.1 IP地址基础配置命令

  1.进入接口视图

[Huawei] interface interface-type interface-number

  通过此命令可以进入指定的接口视图,配置接口的相关属性。

  interface-type interface-number:指定接口类型和接口编号。接口类型和接口编号之间可以输入空格也可以不输入空格。

  2.配置接口IP地址

[Huawei-GigabitEthernet0/0/1] ip address ip-address { mask | mask-length}

  在接口视图下,通过此命令给网络设备上的接口配置IP地址,实现网络的互连。

  ip-address:指定接口的IP地址,点分十进制形式。

  mask:指定子网掩码,点分十进制形式。

  mask-length:指定掩码长度,整数形式,取值范围是0~32。

5.2 配置接口IP地址示例

  在下面两台路由器互联的网络中,配置设备的互联物理接口地址以及各自的逻辑地址。

  1.配置物理接口地址

1.RTA
  [RTA] interface gigabitethernet 0/0/1
  # [RTA-GigabitEthernet0/0/1] ip address 192. 168.1.1 255.255.255.0
  [RTA-GigabitEthernet0/0/1] ip address 192. 168.1.1 24
  
2.RTB
[RTB] interface gigabitethernet 0/0/1
# [RTB-GigabitEthernet0/0/1] ip address 192. 168.1.2 255.255.255.0
[RTB-GigabitEthernet0/0/1] ip address 192. 168.1.2 24

  2.配置逻辑接口地址

1.RTA
  [RTA] interface LoopBack 0
  # [RTA-LoopBack0]ip address 1.1.1.1 255.255.255.255
  [RTA-LoopBack0] ip address 1.1.1.1 32
  
2.RTB
  [RTB] interface LoopBack 0
  # [RTB-LoopBack0]ip address 2.2.2.2 255.255.255.255
  [RTB-LoopBack0] ip address 2.2.2.2 32

5.3 IP地址配置

  1.AR1的配置

<Huawei>system-view                  // 进入系统视图
Enter system view, return user view with Ctrl+Z.

[Huawei]undo info-center enable      // 关闭路由器输出信息
Info: Information center is disabled.
[Huawei]sysname AR1                  // 修改设备名为AR1

[AR1]display interface brief   // 查看设备实际存在的接口 interface ?
PHY: Physical
*down: administratively down
(l): loopback
(s): spoofing
(b): BFD down
^down: standby
(e): ETHOAM down
(d): Dampening Suppressed
InUti/OutUti: input utility/output utility
Interface                   PHY   Protocol InUti OutUti   inErrors  outErrors
GigabitEthernet0/0/0        up    up          0%     0%          0          0
GigabitEthernet0/0/1        down  down        0%     0%          0          0
GigabitEthernet0/0/2        down  down        0%     0%          0          0
NULL0                       up    up(s)       0%     0%          0          0


[AR1]interface GigabitEthernet 0/0/0  // 进入接口 GigabitEthernet0/0/0	
[AR1-GigabitEthernet0/0/0]ip address 192.168.12.1 24   // 配置IP地址和子网掩码
[AR1-GigabitEthernet0/0/0]undo shutdown     // 开启接口
Info: Interface GigabitEthernet0/0/0 is not shutdown.
[AR1-GigabitEthernet0/0/0]quit   // 退出
[AR1]

  2.AR2的配置

<Huawei>system-view 
Enter system view, return user view with Ctrl+Z.

[Huawei]undo info-center enable
Info: Information center is disabled.

[Huawei]sysname AR2
[AR2]interface GigabitEthernet 0/0/1	
[AR2-GigabitEthernet0/0/1]ip address 192.168.12.2 24
[AR2-GigabitEthernet0/0/1]undo shutdown
Info: Interface GigabitEthernet0/0/1 is not shutdown.
[AR2-GigabitEthernet0/0/1]quit
[AR2]

  3.实验调试

[AR1]ping 192.168.12.2
  PING 192.168.12.2: 56  data bytes, press CTRL_C to break
    Reply from 192.168.12.2: bytes=56 Sequence=1 ttl=255 time=110 ms
    Reply from 192.168.12.2: bytes=56 Sequence=2 ttl=255 time=20 ms
    Reply from 192.168.12.2: bytes=56 Sequence=3 ttl=255 time=20 ms
    Reply from 192.168.12.2: bytes=56 Sequence=4 ttl=255 time=10 ms
    Reply from 192.168.12.2: bytes=56 Sequence=5 ttl=255 time=20 ms

  --- 192.168.12.2 ping statistics ---
    5 packet(s) transmitted
    5 packet(s) received
    0.00% packet loss
    round-trip min/avg/max = 10/36/110 ms

5.4 网络IP地址规划

  IP地址规划要和网络结构、路由协议、流量规划、业务规则等结合起来考虑。

  IP地址的规划应尽可能和网络层次相对应,应该是自顶向下的一种规划。

  IP地址规划的目标是:易管理、易扩展、利用率高。

  参考规划原则:唯一性、连续性、扩展性结构化、业务相关性。

  IP地址规划范例:某公司被分配了192.168.0.0/16网段地址

地址类型 地址范围
研发部所属网段 192.168.1.0/24
市场部所属网段 192.168.2.0/24
行政部所属网段 192.168.3.0/24
访客中心所属网段 192.168.4.0/24
其他 ……


文章作者: 罗宇
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 罗宇 !
  目录