第04章_网络层协议及IP编址

  • IPv4 (Internet Protocol Version 4)协议族是TCP/IP协议族中最为核心的协议族。它工作在TCP/IP协议栈的网络层,该层与OSI参考模型的网络层相对应。
  • 网络层提供了无连接数据传输服务,即网络在发送数据报文时不需要先建立连接,每一个IP数据报文独立发送。
  • 在本章节中,将介绍IPv4地址的基本概念,介绍如何进行子网划分,并且会介绍网络IP地址规划和IP地址的基本配置。

1.网络层协议

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

image-20231028143749952


1.1IP协议

  • IP是Internet Protocol的缩写。 Internet Protocol本身是一个协议文件的名称,该协议文件的内容非常少,主要是定义并阐述了IP报文的格式。
  • 经常被提及的IP,一般不是特指Internet Protocol这个协议文件本身,而是泛指直接或间接与IP协议相关的任何内容。

image-20231028143848898

  • IP协议有版本之分,分别是IPv4和IPv6。目前,Internet上的IP报文主要都是IPv4报文,但是逐步在向IPv6过渡。若无特别声明,本章所提及的IP均指IPv4。
    • IPv4(Internet Protocol Version 4)协议族是TCP/IP协议族中最为核心的协议族。它工作在TCP/IP协议栈的网络层,该层与OSI参考模型的网络层相对应。
    • IPv6(Internet Protocol Version 6)是网络层协议的第二代标准协议,也被称为IPng(IP Next Generation)。它是Internet工程任务组IETF(Internet Engineering Task Force)设计的一套规范,是IPv4(Internet Protocol Version 4)的升级版本。

1.2数据封装

image-20231028144237988

  • 应用数据需要经过TCP/IP每一层处理之后才能通过网络传输到目的端,每一层上都使用该层的协议数据单元PDU(Protocol Data Unit)彼此交换信息。不同层的PDU中包含有不同的信息,因此PDU在不同层被赋予了不同的名称。
    • 如上层数据在传输层添加TCP报头后得到的PDU被称为Segment(数据段);
    • 数据段被传递给网络层,网络层添加IP报头得到的PDU被称为Packet(数据包);
    • 数据包被传递到数据链路层,封装数据链路层报头得到的PDU被称为Frame(数据帧);
    • 最后,帧被转换为比特,通过网络介质传输。
    • 这种协议栈逐层向下传递数据,并添加报头和报尾的过程称为封装。
  • 本章节我们主要讨论数据在网络层的封装,如果封装为IP协议,则被称为IP Packet(IP数据包)。

1.3IPv4报文格式

image-20231028144447353

  • IP Packet(IP数据包),其包头主要内容如下:
    • Version:4 bit,4:表示为IPv4;6:表示为IPv6。

    • Header Length:4 bit,首部长度,如果不带Option字段,则为20,最长为60。

    • Type of Service:8 bit,服务类型。只有在有QoS差分服务要求时,这个字段才起作用。

    • Total Length:16 bit,总长度,整个IP数据包的长度。

    • Identification:16 bit,标识,分片重组时会用到该字段。

    • Flags:3 bit,标志位。

    • Fragment Offset:12 bit,片偏移,分片重组时会用到该字段。

    • Time to Live:8 bit,生存时间。

    • Protocol:8 bit,协议:下一层协议。指出此数据包携带的数据使用何种协议,以便目的主机的IP层将数据部分上交给哪个进程处理。常见值:

      • 1: ICMP, Internet Control Message;
      • 2: IGMP, Internet Group Management;
      • 6: TCP , Transmission Control Protocol;
      • 17: UDP, User Datagram Protocol。
    • Header Checksum:16 bit,首部检验和。

    • Source IP Address:32 bit,源IP地址。

    • Destination IP Address:32 bit,目的IP地址。

    • Options:可变,选项字段。

    • Padding:可变,填充字段,全填0。


image-20231219130802770


1.4数据包分片

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

image-20231028155827662

  • Identification:16 bit,发送主机赋予的标识,分片重组时会用到该字段。
  • Flags:3 bit,标志位。
    • 保留段位:0,保留。
    • 不分段位:1,表示“不能分片”;0,表示“能分片”。
    • 更多段位:1,表示“后面还有分片”;0,表示“最后一个数据片”。
  • Fragment Offset:12 bit,片偏移,分片重组时会用到该字段。指出较长的分组在分片后,该片在原分组中的相对位置,与更多段位组合,帮助接收方组合分段的报文。
    • offset
      • 第一个分片的(传输层大小+PDU)/ 8 = 第二个分片的偏移量
      • (传输层大小+第一个分片PDU+第二个分片PDU)/ 8 = 第三个分片的偏移量

image-20240428154815059

第一个分段:

image-20231219150100902

第二个分段:

image-20231219150115417

第三个分段(最后一个分段):

image-20231219151435893


image-20231219150129274


1.4.1最大传送单元 MTU

最大传送单元 MTU : MTU 是链路层可封装数据的上限 ;

MTU 值 : 以太网的最大传送单元 MTU 是 1500 字节 ;

分片 : 链路层的数据部分 , 就是 IP 分组 , 该分组的 MTU 是 1500 字节 , 当网络层的 IP 分组超过 1500 字节 , 此时就要进行分片 ;

1.4.2分片机制 ( 标识、标志、片偏移 )

IP 数据报 分片 : 要根据 首部的 标识 , 标志 , 片偏移 进行相应处理 :

image-20231101131410434

标识 : 同一个 IP 数据报 的分片 , 使用相同的标识 ; IP 数据报大小超过 MTU 时 , 将数据报分片 , 分片完成的 IP 数据报分片 , 其标识都是相同的 ;

标志 : 由 3 位组成 , 只有 2 位有意义 ;

img

  • 最高位 : 是保留位 , 没有意义 ;
  • 中间位 : DF 位 , Don’t Fragment ; DF = 1 时 , 禁止分片 ; DF = 0 时 , 允许分片 ;
  • 最低位 : MF 位 , More Fragment ; MF = 1 时 , 后面还有分片 ; MF = 0 时 , 本分片就是该分组的最后一个分片 , 后面没有分片 ;
  • 只有 DF = 0 时 , MF 才有意义 ;

片偏移 : 较长的分组的分片 , 中间的某个分片 , 在原来的 IP 分组中的相对位置 ; 单位是 8 字节 ; 也就是说除了最后一个分片 , 每个分片的长度是 8 字节的整数倍 ;

1.4.3分片机制示例

  • IP 数据报 : 首部 20 字节 , 数据部分 3800 字节 ;
  • 将其进行分片处理 : 每个分片不超过 1420 字节 ;
  • 标识 : 666 ;
  • 标志 : DF = 0 , 表示允许分片 ; MF = 0 , 表示后续没有分片 ;
  • 片偏移量 : 0

分片后的结果是 : 分成 三片 ;

第一片 :

  • 分片数据 : 首部 1 ( 20 字节 ) + 1400 字节数据部分 ;
  • 标识 : 666 , 同一个分组的分片 , 标识相同 ;
  • 标志 : DF = 0 , 允许分片 ; MF = 1 , 后续还有分片 ;
  • 片偏移量 : 片偏移量 是 0 , 单位是 8 字节 , 本片偏移量相当于 0 字节 ;

第二片 :

  • 分片数据 : 首部 2 ( 20 字节 ) + 1400 字节数据部分 ;
  • 标识 : 666 , 同一个分组的分片 , 标识相同 ;
  • 标志 : DF = 0 , 允许分片 ; MF = 1 , 后续还有分片 ;
  • 片偏移量 : 片偏移量 是 175 , 单位是 8 字节 , 本片偏移量相当于 1400 字节 ;

第三片 :

  • 分片数据 : 首部 3 ( 20 字节 ) + 1000 字节数据部分 ;
  • 标识 : 666 , 同一个分组的分片 , 标识相同 ;
  • 标志 : DF = 0 , 允许分片 ; MF = 0 , 后续没有分片 ;
  • 片偏移量 : 片偏移量 是 350 , 单位是 8 字节 , 本片偏移量相当于 2800 字节 ;

片偏移量是从数据部分开始计数 , 数据部分的开始位置是 0 字节 , 其单位是 8 字节 , 片偏移量 1 代表 8 字节 ;

image-20231101143411796

image-20231101150137349

image-20231101150203240


1.5生存时间 (Time to Live, TTL)

  • TTL字段设置了数据包可以经过的路由器数目。
  • 一旦经过一个路由器,TTL值就会减1,当该字段值为0时,数据包将被丢弃。

image-20231028160128814

  • Time to Live:8 bit,生存时间。可经过的最多路由数,即数据包在网络中可通过的路由器数的最大值。
    • 报文在网段间转发时,如果网络设备上的路由规划不合理,就可能会出现环路,导致报文在网络中无限循环,无法到达目的端。环路发生后,所有发往这个目的地的报文都会被循环转发,随着这种报文逐渐增多,网络将会发生拥塞。
    • 为避免环路导致的网络拥塞,IP报文头中包含一个生存时间TTL(Time To Live)字段。报文每经过一台三层设备,TTL值减1。初始TTL值由源端设备设置。当报文中的TTL降为0时,报文会被丢弃。同时,丢弃报文的设备会根据报文头中的源IP地址向源端发送ICMP错误消息。(注意:网络设备也可被配置为不向源端发送ICMP错误消息。)

image-20231219223238576


1.6协议号 (Protocol)

  • IP报文头中的协议号字段标识了将会继续处理该报文的协议。
  • 即指出此数据包携带的数据使用何种协议,以便目的主机的IP层将数据部分上报给哪个进程处理。

image-20231028160623115

image-20231219225522372

  • 目的端的网络层在接收并处理报文以后,需要决定下一步对报文如何处理。IP报文头中的协议字段标识了将会继续处理报文的协议。

  • 该字段可以标识网络层协议

    • ICMP(Internet Control Message Protocol,因特网控制报文协议,对应值0x01);
  • 也可以标识上层协议,

    • TCP(Transmission Control Protocol,传输控制协议,对应值0x06)、
    • UDP(User Datagram Protocol,用户数据包协议,对应值0x11)。

2.IPv4地址介绍

2.1什么是IP地址

  • IP地址在网络中用于标识一个节点(或者网络设备的接口)。
  • IP地址用于IP报文在网络中的寻址。

image-20231028160829670

  • 在IP网络上,如果用户要将一台计算机连接到Internet上,就需要申请一个IP地址。IP地址就像现实中的地址,可以标识网络中的一个节点,数据就是通过它来找到目的地的。即我们通过IP地址实现全球范围内的网络通信。
  • IP地址是网络设备接口的属性,不是网络设备本身的属性。当我们说给某台设备分配一个IP地址时,实质上是指给这台设备的某个接口分配一个IP地址。如果设备有多个接口,通常每个接口都至少需要一个IP地址。
  • 注:需要使用IP地址的接口,通常是路由器和计算机的接口。

2.2IP地址表示

  • 一个IPv4地址有32 bit。
  • IPv4地址通常采用“点分十进制”表示。
  • IPv4地址范围:0.0.0.0~255.255.255.255。

image-20231028161006501

  • IP地址表示
    • IP地址是长度是32 bit,由4个字节组成。为了阅读和书写方便,IP地址通常采用点分十进制数来表示。
  • 点分十进制表示法
    • IP地址表现形式能够帮助我们更好的使用和配置网络,但通信设备在对IP地址进行计算时使用的是二进制的操作方式,因此掌握十进制、二进制的转换运算非常有必要。
  • IPv4地址范围
    • 00000000.00000000.00000000.00000000~11111111.11111111.11111111.11111111,即0.0.0.0~255.255.255.255。

2.3IP地址构成

  • 网络部分:用来标识一个网络。
  • 主机部分:用来区分一个网络内的不同主机。

image-20231028161120950

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

image-20231028161212722

  • IPv4地址由如下两部分组成:
    • 网络部分 (网络号):用来标识一个网络。
      • IP地址不能反映任何有关主机位置的地理信息,只能通过网络号码字段判断出主机属于哪个网络。
      • 对于网络号相同的设备,无论实际所处的物理位置如何,它们都是处在同一个网络中。
    • 主机部分 (主机号):用来区分一个网络内的不同主机。
  • 网络掩码 (Netmask),又称子网掩码 (Subnet Mask):
    • 网络掩码为32 bit,与IP地址的位数一样,通常也以点分十进制数来表示。
    • 网络掩码不是一个IP地址,在二进制的表示上是一堆连续的1、后面接一堆连续的0。
    • 通常将网络掩码中1的个数称为这个网络掩码的长度。如:掩码0.0.0.0的长度是0,掩码252.0.0.0的长度是6。网络掩码一般与IP地址结合使用,其中值为1的比特对应IP地址中的网络位值为0的比特对应IP地址中的主机位,以此来辅助我们识别一个IP地址中的网络位与主机位。即网络掩码中1的个数就是IP地址的网络号的位数,0的个数就是IP地址的主机号的位数。

2.4IP地址寻址

  • 网络部分:用来标识一个网络,代表IP地址所属网络。
  • 主机部分:用来区分一个网络内的不同主机,能唯一标识网段上的某台设备。

image-20231028161802146

  • 网络号用于表示主机所在的网络,类似于“XX省XX市XX区XX小区”的作用。
  • 主机号用于表示网络号所定义的网络范围内某个特定的主机接口,类似于门牌号“XX栋XX号”的作用。
  • 网络寻址:
    • 二层网络寻址:可直接通过IP地址,找到对应的主机接口。
    • 三层网络寻址:利用网关转发来自不同网段之间的数据包。
  • 网关:
    • 报文转发过程中,首先需要确定转发路径以及通往目的网段的接口。如果目的主机与源主机不在同一网段,报文需要先转发到网关,然后通过网关将报文转发到目的网段。
    • 网关是指接收并处理本地网段主机发送的报文并转发到目的网段的设备。为实现此功能,网关必须知道目的网段的IP地址。网关设备上连接本地网段的接口地址即为该网段的网关地址。

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

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

image-20231028162910985

image-20231219231254332

  • A/B/C类默认网络掩码

    • 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
  • 为了方便IP地址的管理及组网,IP地址分成五类:

    • A、B、C、D、E类的类别字段分别是二进制数0、10、110、1110、1111,通过网络号码字段的前几个比特就可以判断IP地址属于哪一类,这是区分各类地址最简单的方法。

    • A、B、C三类地址是单播IP地址 (除一些特殊地址外),只有这三类地址才能分配给主机接口使用。

    • D类地址属于组播IP地址。

    • E类地址专门用于特殊的实验目的。

    • 本节内容,只关注A、B、C三类地址。

  • A、B、C类地址比较:

    • 使用A类地址的网络称为A类网络;使用B类地址的网络称为B类网络;使用C类地址的网络称为C类网络。
    • A类网络的网络号为8 bit,个数很少,但所允许的主机接口的个数很多;首位恒定为0,
      • 地址空间为:0.0.0.0~127.255.255.255
    • B类网络的网络号为16 bit,介于A类和C类网络之间;首两位恒定为10,
      • 地址空间为:128.0.0.0~191.255.255.255
    • C类网络的网络号为24 bit,个数很多,但所允许的主机接口的个数就很少;首三位恒定为110,
      • 地址空间为:192.0.0.0~223.255.255.255
  • 注:

    • 主机 (Host),通常指路由器和计算机的统称。并且常把主机的某个接口的IP地址简称为主机IP地址。

    • 组播地址:组播能实现一对多传递消息。


2.6IP地址类型

  • 我们通常把一个网络号所定义的网络范围称为一个网段

image-20231028163713042

  • 网络地址
    • 网络号为X,主机号的每个比特都为0。
    • 不能分配给具体的主机接口使用。
  • 广播地址
    • 网络号为X,主机号的每个比特都为1。
    • 不能分配给具体的主机接口使用。
  • 可用地址
    • 又称主机地址,可用分配给具体的主机接口使用。
    • 一个网段可用地址数量计算:一个网段的主机位为n位,则IP地址数为:2ⁿ,可用IP地址数为:2ⁿ-2 (减去网络地址和广播地址)。

2.7IP地址计算

  • 例:172.16.10.1/16这个B类地址的网络地址、广播地址以及可用地址数分别是?

image-20231028164044914

  • 网络地址:将网络地址的主机位全设为0,所得结果是该IP地址所在网络的网络地址。
  • 广播地址:将网络地址的主机位全设为1,所得结果是该IP地址所在网络的广播地址。
  • IP地址数:2ⁿn为主机位位数。
  • 可用IP地址数:2ⁿ-2n为主机位位数。

练习题答案:

  • 网络地址:10.0.0.0/8
  • 广播地址:10.255.255.255
  • IP地址数:224
  • 可用IP地址数:224-2
  • 可用IP地址范围:10.0.0.1/8~10.255.255.254/8

2.8私网IP地址

  • 公网IP地址:IP地址是由==IANA==统一分配的,以保证任何一个IP地址在Internet上的唯一性。这里的IP地址是指公网IP地址。
  • 私网IP地址:实际上一些网络不需要连接到Internet,比如一个大学的封闭实验室内的网络,只要同一网络中的网络设备的IP地址不冲突即可。在IP地址空间里,A、B、C三类地址中各预留了一些地址专门用于上述情况,称为私网IP地址。
    • A类:10.0.0.0~10.255.255.255
    • B类:172.10.0.0~172.31.255.255
    • C类:192.168.0.0~192.168.255.255

image-20231028164425047

  • 为了解决IP地址短缺的问题,提出了私有地址的概念。私有地址是指内部网络或主机地址,这些地址只能用于某个内部网络,不能用于公共网络。
    • 公网IP地址:连接到Internet的网络设备必须具有由ICANN分配的公网IP地址。
    • 私网IP地址:私网IP地址的使用使得网络可以得到更为自由地扩展,因为同一个私网IP地址是可以在不同的私有网络中重复使用的。
  • 私有网络连接到Internet:私有网络由于使用了私网IP地址,是不允许连接到Internet的。后来在实际需求的驱动下,许多私有网络也希望能够连接到Internet上,从而实现私网与Internet之间的通信,以及通过Internet实现私网与私网之间的通信。私网与Internet的互联,必须使用==网络地址转换 (NAT)==技术实现。
  • 注:

    • NAT (Network Address Translation),网络地址转换,其基本作用是实现私网IP地址与公网IP地址之间的转换。

    • IANA (Internet Assigned Numbers Authority),因特网地址分配组织。


2.9特殊IP地址

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

image-20231028164715064

  • 255.255.255.255
    • 这个地址称为有限广播地址,它可以作为一个IP报文的目的IP地址使用。
    • 路由器接收到目的IP地址为有限广播地址的IP报文后,会停止对该IP报文的转发。
  • 0.0.0.0
    • 如果把这个地址作为网络地址,它的意思就是“任何网络”的网络地址;如果把这个地址作为主机接口地址,它的意思就是“这个网络上主机接口”的IP地址。
    • 例如:当一个主机接口在启动过程中尚未获得自己的IP地址时,就可以向网络发送目的IP地址为有限广播地址、源IP地址为0.0.0.0的DHCP请求报文,希望DHCP服务器在收到自己的请求后,能够给自己分配一个可用的IP地址。
  • 127.0.0.0/8
    • 这个地址为环回地址,它可以作为一个IP报文的目的IP地址使用。其作用是测试设备自身的软件系统。
    • 一个设备产生的、目的IP地址为环回地址的IP报文是不可能离开这个设备本身的。
  • 169.254.0.0/16
    • 如果一个网络设备获取IP地址的方式被设置成了自动获取方式,但是该设备在网络上又没有找到可用的DHCP服务器,那么该设备就会使用169.254.0.0/16网段的某个地址来进行临时通信。

注:DHCP (Dynamic Host Configuration Protocol),动态主机配置协议,用于动态分配网络配置参数,如IP地址。


2.10IPv4 vs IPv6

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

image-20231028165751919


3.子网划分

3.1为什么要划分子网

image-20231028165946828

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

3.2如何进行子网划分 - 原网段分析

image-20231028170230269

  • 假设有一个C类网段地址:192.168.10.0;默认情况下,网络掩码为24位,包括24位网络位,8位主机位。
  • 通过计算可知,这样的网络中,有256个IP地址。

3.3如何进行子网划分 - 向主机借位

image-20231028170343971

  • 现在,将原有的24位网络位向主机位去“借”1位,这样网络位就扩充到了25位,相对的主机位就减少到了7位,而借过来的这1位就是子网位,此时网络掩码就变成了25位,即255.255.255.128,或/25。
  • 子网位:可取值0或取值1,则得到了两个新的子网。
  • 通过计算可知,现在网络中,有128个IP地址。

3.4如何进行子网划分 - 计算子网网络地址

image-20231028181201285

  • 计算网络地址,主机位全为0:
    • 如果子网位取值0,则网络地址为192.168.10.0/25
      • 网段:192.168.10.0
      • 广播:192.168.10.127
      • 主机:192.168.10.1-192.168.10.126
    • 如果子网位取值1,则网络地址为192.168.10.128/25
      • 网段:192.168.10.128
      • 广播:192.168.10.255
      • 主机:192.168.10.129-192.168.10.254

3.5如何进行子网划分 - 计算子网广播地址

image-20231028181345952

  • 计算广播地址,主机位全为1:
    • 如果子网位取值0,则网络地址为192.168.10.127/25。
    • 如果子网位取值1,则网络地址为192.168.10.255/25。

3.6练习:计算子网

image-20231028181437950

实际网络规划中,会先规划主机多的子网络。

image-20231028181505715

  • 以10台主机为例,借4位,划分16个子网,每个子网14个主机
  • 子网的网络地址分别为:
    • 192.168.1.0/28
    • 192.168.1.16/28
    • 192.168.1.32/28
    • 192.168.1.48/28
    • 192.168.1.64/28
    • 192.168.1.80/28
    • 192.168.1.96/28
    • 192.168.1.112/28
    • 192.168.1.128/28
    • 192.168.1.144/28
    • 192.168.1.160/28
    • 192.168.1.176/28
    • 192.168.1.192/28
    • 192.168.1.208/28
    • 192.168.1.224/28
    • 192.168.1.240/28

4.ICMP协议

image-20231219105407800

  • ==Echo Req==

    • Echo Request是ICMP协议中的一种消息类型,通常用于发送Ping命令来测试主机之间的网络连通性和延迟情况。当一个主机向另一个主机发送Ping请求时,它会在请求中携带一个Echo Request消息,并希望对方能够回复一个Echo Reply消息以确认连接的正常性和延迟情况。

      image-20231219105710782

  • ==Echo Reply==

    • Echo Reply是ICMP协议中的一种消息类型,通常用于响应Ping命令的请求。当一个主机收到另一个主机发来的Ping请求时,会向对方发送Echo Reply消息,以便让对方确认连接的正常性和延迟情况。这种方式通常用于检测主机之间的网络连通性和网络性能。

      image-20231219105746957

4.1ICMP协议

image-20231028182941304

  • 为了更有效地转发IP数据报文和提高数据报文交互成功的机会,在网络层使用ICMP协议。ICMP允许主机或设备报告差错情况和提供有关异常情况的报告。
  • ICMP消息:
    • ICMP消息封装在IP报文中,IP报文头部Protocol值为1时表示ICMP协议。

    • 字段解释:

      image-20231101190455485

      • ICMP消息的格式取决于Type和Code字段,其中Type字段为消息类型Code字段包含该消息类型的具体参数
      • 校验和字段用于检查消息是否完整。
      • 消息中包含32 bit的可变参数,这个字段一般不使用,通常设置为0。
        • 在ICMP重定向消息中,这个字段用来指定网关IP地址,主机根据这个地址将报文重定向到指定网关。
        • 在Echo请求消息中,这个字段包含标识符和序号,源端根据这两个参数将收到的回复消息与本端发送的Echo请求消息进行关联。尤其是当源端向目的端发送了多个Echo请求消息时,需要根据标识符和序号将Echo请求和回复消息进行一一对应。
    • ICMP消息类型和编码类型

      image-20231101190753240

      • ICMP定义了多种消息类型,并用于不同的场景。有些消息不需要Code字段来描述具体类型参数,仅用Type字段表示消息类型。比如,ICMP Echo回复消息的Type字段设置为0。
      • 有些ICMP消息使用Type字段定义消息大类,用Code字段表示消息的具体类型。
        • 比如,类型为3的消息表示目的不可达,不同的Code值表示不可达的原因,包括
          • 目的网络不可达(Code=0)、
          • 目的主机不可达(Code=1)、
          • 协议不可达(Code=2)、
          • 目的TCP/UDP端口不可达(Code=3)等。

4.2ICMP重定向

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

image-20231028184121482

  • ICMP重定向过程:

    1. 主机A希望发送报文到服务器A,于是根据配置的默认网关地址向网关RTB发送报文。

    2. 网关RTB收到报文后,检查报文信息,发现报文应该转发到与源主机在同一网段的另一个网关设备RTA,此转发路径是更优的路径,所以RTB会向主机发送一个==Redirect==消息,通知主机直接向另一个网关RTA发送该报文。

    3. 主机收到Redirect消息后,会向RTA发送报文,然后RTA会将该报文再转发给服务器A。

      image-20231219124516597

  • 重定向条件:

    1. 路由拥有去往目的地址的路由
    2. 去往目的地址的路由的出口和收到该报文入口是同一个接口
    3. 去往目的地址的路由的下一跳地址和该报文的源地址在同一个网段
    4. 该报文的源地址也要和路由器的接口地址在同一个网段(防止被攻击)

出于安全考虑,华为路由器默认关闭ICMP重定向功能。


4.3ICMP差错检测

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

image-20231028184748223

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

4.4ICMP错误报告

Tracert 命令用 IP 生存时间 (TTL) 字段和 ICMP 错误消息来确定从一个主机到网络上其他主机的路由。

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

image-20231028184847113

  • ICMP定义了各种错误消息,用于诊断网络连接性问题;根据这些错误消息,源设备可以判断出数据传输失败的原因。
    • 如果网络中发生了环路,导致报文在网络中循环,且最终TTL超时,这种情况下网络设备会发送TTL超时消息给发送端设备。
    • 如果目的地不可达,则中间的网络设备会发送目的不可达消息给发送端设备。目的不可达的情况有多种,
      • 如果是网络设备无法找到目的网络,则发送目的网络不可达消息
      • 如果网络设备无法找到目的网络中的目的主机,则发送目的主机不可达消息

  • ICMP的另一个典型应用是==Tracert==。Tracert基于报文头中的TTL值来逐跳跟踪报文的转发路径。
    • 为了跟踪到达某特定目的地址的路径,源端首先将报文的TTL值设置为1。该报文到达第一个节点后,TTL超时,于是该节点向源端发送TTL超时消息,消息中携带时间戳。
    • 然后源端将报文的TTL值设置为2,报文到达第二个节点后超时,该节点同样返回TTL超时消息,
    • 以此类推,直到报文到达目的地。这样,源端根据返回的报文中的信息可以跟踪到报文经过的每一个节点,并根据时间戳信息计算往返时间。
  • 中间这三列,单位是ms,是表示我们连接到每个路由节点的速度返回速度多次链接反馈的平均值

在进行路由追踪时,请注意以下几点:

  • 不要滥用 tracert 命令,尤其是在生产环境中执行时,因为它在追踪过程中会发送大量的数据包,会给网络带来额外的负担。
  • 在进行路由跟踪时,可能会遇到一些无法到达的节点,此时 tracert 会结束追踪过程并返回报告信息。
  • 在进行路由跟踪时,可能因为某些网络节点的安全限制而导致 tracert 命令无法执行。在这种情况下,可以尝试使用其他一些网络工具,例如 Ping 命令。

image-20231028190613660

Tracert原理:

第一步:发送一个UDP报文,TTL值为1

RTA向目的端主机B发送一个UDP报文,TTL值为1,目的UDP端口号是大于30000的一个数,因为在大多数情况下,大于30000的UDP端口号是任何一个应用程序都不可能使用的端口号。

第一跳(RTB)收到源端发出的UDP报文后,判断出报文的目的IP地址不是本机IP地址,将TTL值减1后,判断出TTL值等于0,则丢弃报文并向源端发送一个ICMP超时(Time Exceeded)报文(该报文中含有第一跳的IP地址10.1.1.2),这样源端就得到了RTB的地址。

第二步:发送一个UDP报文,TTL值为2

源端收到RTB的ICMP超时报文后,再次向目的端发送一个UDP报文,TTL值为2。

第二跳(RTC)收到源端发出的UDP报文后,回应一个ICMP超时报文,这样源端就得到了RTC的地址(10.1.2.2)。

第N步:发送一个UDP报文,TTL值为N

以上过程不断进行,直到目的端收到源端发送的UDP报文后,判断出目的IP地址是本机IP地址,则处理此报文。

根据报文中的目的UDP端口号寻找占用此端口号的上层协议,因目的端没有应用程序使用该UDP端口号,则向源端返回一个ICMP端口不可达(Destination Unreachable)报文。

源端收到ICMP端口不可达报文后,判断出UDP报文已经到达目的端,则停止Tracert程序,从而得到数据报文从源端到目的端所经历的路径(10.1.1.2;10.1.2.2;10.1.3.2)

总结:

tracert原理就是利用UDP+ICMP不可达消息

4.5ICMP应用

4.5.1ping

image-20231219105235622


image-20231101192045929

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

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

    image-20231219113325129

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

image-20231101193229910

Ping利用ICMP Echo请求消息(Type值为8)来发起检测目的可达性。目的端收到ICMP Echo请求消息后,根据IP报文头中的源地址向源端发送ICMP Echo回复消息(Type值为0)。

image-20231219113212727

4.5.2Tracert

  • Tracert可以得到数据报文从源端到目的端所经历的路径

image-20231219125906054


image-20231101193343820

  • ICMP的另一个典型应用是Tracert。Tracert基于报文头中的TTL值来逐跳跟踪报文的转发路径。为了跟踪到达某特定目的地址的路径,源端首先将报文的TTL值设置为1。

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

  • 报文到达第二个节点后超时,该节点同样返回TTL超时消息,

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

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

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

    image-20231219220942839


image-20231101193442951

  • 源端(RTA)向目的端(主机B)发送一个UDP报文,TTL值为1,目的UDP端口号是大于30000的一个数,因为在大多数情况下,大于30000的UDP端口号是任何一个应用程序都不可能使用的端口号。

  • 第一跳(RTB)收到源端发出的UDP报文后,判断出报文的目的IP地址不是本机IP地址,将TTL值减1后,判断出TTL值等于0,则丢弃报文并向源端发送一个ICMP超时(TimeExceeded)报文(该报文中含有第一跳的IP地址10.0.0.2),这样源端就得到了RTB的地址。

  • 源端收到RTB的ICMP超时报文后,再次向目的端发送一个UDP报文,TTL值为2。

  • 第二跳(RTC)收到源端发出的UDP报文后,回应一个ICMP超时报文,这样源端就得到了RTC的地址(20.0.0.2)。

  • 以上过程不断进行,直到目的端收到源端发送的UDP报文后,判断出目的IP地址是本机IP地址,则处理此报文。根据报文中的目的UDP端口号寻找占用此端口号的上层协议,因目的端没有应用程序使用该UDP端口号,则向源端返回一个ICMP端口不可达(DestinationUnreachable)报文。

  • 源端收到ICMP端口不可达报文后,判断出UDP报文已经到达目的端,则停止Tracert程序,从而得到数据报文从源端到目的端所经历的路径(10.0.0.2;20.0.0.2;30.0.0.2)。


5.IPv4地址配置及基本应用

5.1IP地址的基础配置命令

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地址

image-20231028230051289

  • 物理接口:物理接口是指网络设备上实际存在的接口,分为负责承担业务传输的业务接口和负责管理设备的管理接口,例如GE业务接口和MEth管理接口。
  • 逻辑接口:逻辑接口是指能够实现数据交换功能但物理上不存在、需要通过配置建立的接口,需要承担业务传输,例如VLANIF接口、Loopback接口。
    • Loopback接口:用户需要一个接口状态永远是Up的接口的IP地址时,可以选择Loopback接口的IP地址。
      • Loopback接口一旦被创建,其物理状态和链路协议状态永远是Up,即使该接口上没有配置IP地址。
      • Loopback接口配置IP地址后,就可以对外发布。Loopback接口上可以配置32位掩码的IP地址,达到节省地址空间的目的。
      • Loopback接口不能封装任何链路层协议,数据链路层也就不存在协商问题,其协议状态永远都是Up。
      • 对于目的地址不是本地IP地址,出接口是本地Loopback接口的报文,设备会将其直接丢弃。
      • 模拟路由器的直连网段,可用于测试,设备管理(稳定),供其他协议使用,如OSPF、BGP、MPLS等
      • SNMP Traps 消息的源地址

5.3网络IP地址规划

image-20231028231009584

  • 规划原则:
    • 唯一性:一个IP网络中不能有两个主机采用相同的IP地址。
    • 连续性:连续地址在层次结构网络中易于进行路由汇总,大大缩减路由表,提高路由计算的效率、加速路由收敛。
    • 扩展性:地址分配在每一层次上都要有合理的预留,在网络规模扩展时能保证路由汇总所需的连续性。避免网络扩展造成的地址、路由重新规划。结构化、
    • 业务相关性:地址规划与网络拓扑结构和网络承载业务结合起来,便于路由规划和QoS部署。好的IP地址规划使得每个地址都具有实际含义,看到一个地址就可以大致判断出该地址所属的设备和对应的业务。

6.本章总结

  • 在IP网络上,如果用户要将一台计算机连接到Internet上,就需要向因特网服务提供方ISP(Internet Service Provider)申请一个IP地址。
  • 在本章节中,我们介绍了IP协议的基本概况,并介绍了IPv4地址的相关概念以及如何进行子网划分。
  • 在本章节中,我们还介绍了网络IP地址规划以及IP地址的基本配置。