网络互连技术教程第 7章 ICMP和网络状态网络互连技术教程
7.1 网络为什么是复杂的
7.2 ICMP
7.3 几个工具
7.4 了解网络工作状态网络互连技术教程
7.2 ICMP
7.2.1 ICMP用途与机制
ICMP的全称是 Internet Control Message Protocol( 网间报文控制协议 ),它是一个工作在主机和路由器之间的消息控制和差错报告协议 。 网络设备 ( 通常是路由器 ) 一旦发现传输问题,就会分析其错误类型,并向源主机返回一个 ICMP
消息 。 我们平时最常见的 ping命令就是基于 ICMP的 。
网络互连技术教程在 IP网络这样的传输系统中,网络层设备自动地完成寻径和报文传输工作,无需源主机的参与。在传输过程中,系统可能会发生各种传输错误,比如通信线路出错、网络层设备或主机处理器出错,IP数据报不能传输(比如目的主机不可到达,TTL时间耗尽等)、
系统拥塞等。而 IP协议本身并没有一种内在的机制获取差错信息并进行相应控制。为了处理上述错误,
TCP/IP协议簇中专门设计了 ICMP协议。当中间网络设备发现错误时,立即向源主机发送 ICMP报文报告出错情况,以便源主机采取相应的纠正措施。
像其他所有通信业务一样,ICMP报文是放在一个
IP数据报的数据部分中进行传输的。如图 7-1所示。
网络互连技术教程
IC M P 头标 IC M P 数据
IP 报头 数据 IP 数据报图 7-1 ICMP数据的封装包含 ICMP报文的 IP数据报报头的,协议,字段指出数据区的内容为 ICMP报文 。 ICMP软件只是作为 IP软件的一个模块而存在 。 IP软件一旦收到差错或控制报文,立即交到 ICMP模块进行处理 。
网络互连技术教程
7.2.2 ICMP报文
ICMP报文也分为头标和数据区两大部分,其中头标包含三个字段:一个长度为 8 bit的类型字段,用来标识报文;一个长度为 8 bit的代码字段提供有关报文类型的进一步信息,以及一个长度为 16 bit的校验和字段 ( ICMP使用与 IP相同的相加校验算法,但 ICMP校验和只覆盖 ICMP报文 ) 。 ICMP报文格式如图 7-2所示 。
网络互连技术教程
8 位类型 8 位代码 16 位检验和
(不同类型和代码的报文有不同的内容)
0 7 8 1 5 1 6 3 1
图 7-2 ICMP报文格式网络互连技术教程
ICMP报文的数据区包含引起错误的数据报报头及该数据报前 64 bit的数据,提供这些信息的目的在于帮助源主机确定出错的数据报 。
ICMP类型字段定义了报文的格式及意义。其类型如图
7-3所示。
网络互连技术教程类型字段 ICM P 报文类型
0
3
4
5
8
11
12
13
14
17
18
回送应答目的地不可达源站抑制重定向回送请求数据报超时数据报参数错时间戳请求时间戳应答地址掩码请求地址掩码回答图 7-3 ICMP报文类型网络互连技术教程
7.2.3 使用 ICMP了解网络状态
7.3 几个工具
7.3.1 配置路由表 (route)
7.3.2 数据跟踪 (traceroute)
traceroute命令可以列出从本地主机到远程主机传送数据包时经过的所有主机 。 而且该命令可以自动解析域名 。
网络互连技术教程
7.4 了解网络工作状态
7.4.1 路由失败主机有时无法确定正确的路由,并将数据报发给了不处于最优路径上的路由器 。 这种情况下,收到数据报的那个路由器就要发送 ICMP重定向差错报文给 IP数据报的发送端 。 我们举一个例子,图 7-6为图 7-7所表示的主机 A的路由表 。
网络互连技术教程目的 子网掩码 网关 标志 接口
127.0.0.1 255.255.255.25
5
127.0.0.1 UH lo0
202.112.31.0 255.255.255.0 202.112.31.25 U eth1
default 0.0.0.0 202.112.31.254 UG eth1
图 7-6 主机 A的路由表网络互连技术教程假设主机 A发送一份 IP数据报给 202.112.45.38,如图 7-7,
查看路由表,除了缺省路由外,这并不能匹配任何路由 。 因此静态路由将此数据报通过路由器 202.112.31.254发送,但是,
地址为,202.112.31.254” 的 路 由 器 知 道 所 有 发 向 子 网
202.112.45.0的分组应该通过 202.112.31.253,因此,它把数据报转发到地址为,202.112.31.253”的路由器 。 我们可以看到,如果主机 A直接把分组发到 202.112.31.253将会提高效率 。
网络互连技术教程图 7-7 主机 A所在的网络网络互连技术教程因为路由器把数据报从同一接口发回了主机 A,所以主机 A现在知道存在一条更好的路由,它会立即根据 ICMP重定向报文更新它自己的路由表,以这种方式路由器可以通过
ICMP重定向指示主机使用新的路由 。
虽然路由器知道所有发向 202.112.45.0子网的分组应该通过 202.112.31.253,它通常只发送特定的主机的 ICMP重定向
( 此例中是 202.112.45.38) 。 主机将在路由表中创建一个新的表项,如图 7-8所示 。
目的 子网掩码 网关 标志 接口
202.112.45.38 255.255.255.255 202.112.31.253 UGHD eth1
图 7-8 主机 A路由表中因 ICMP重定向新添的表项网络互连技术教程
7.4.2 重定向
ICMP路径重定向报文格式如图 7-9所示 。
类型 (5) 代码( 0~3) 校验和路由器 IP地址数据报报头 +前 64 bit数据
……
图 7-9 ICMP重定向报文格式网络互连技术教程其中路由器 IP地址是指去往相应目的主机的最优路径中的第一个路由器的地址,目的地址由数据报报头中的目标地址字段指示 。 重定向报文分为四种类型如图 7-10所示 。
0
1
2
3
对网络的重定向报文 ( 已不用 )
对主机的重定向报文对服务类型和网络的重定向报文对服务类型和主机的重定向报文码值 意义图 7-10 ICMP重定向报文类型
7.1 网络为什么是复杂的
7.2 ICMP
7.3 几个工具
7.4 了解网络工作状态网络互连技术教程
7.2 ICMP
7.2.1 ICMP用途与机制
ICMP的全称是 Internet Control Message Protocol( 网间报文控制协议 ),它是一个工作在主机和路由器之间的消息控制和差错报告协议 。 网络设备 ( 通常是路由器 ) 一旦发现传输问题,就会分析其错误类型,并向源主机返回一个 ICMP
消息 。 我们平时最常见的 ping命令就是基于 ICMP的 。
网络互连技术教程在 IP网络这样的传输系统中,网络层设备自动地完成寻径和报文传输工作,无需源主机的参与。在传输过程中,系统可能会发生各种传输错误,比如通信线路出错、网络层设备或主机处理器出错,IP数据报不能传输(比如目的主机不可到达,TTL时间耗尽等)、
系统拥塞等。而 IP协议本身并没有一种内在的机制获取差错信息并进行相应控制。为了处理上述错误,
TCP/IP协议簇中专门设计了 ICMP协议。当中间网络设备发现错误时,立即向源主机发送 ICMP报文报告出错情况,以便源主机采取相应的纠正措施。
像其他所有通信业务一样,ICMP报文是放在一个
IP数据报的数据部分中进行传输的。如图 7-1所示。
网络互连技术教程
IC M P 头标 IC M P 数据
IP 报头 数据 IP 数据报图 7-1 ICMP数据的封装包含 ICMP报文的 IP数据报报头的,协议,字段指出数据区的内容为 ICMP报文 。 ICMP软件只是作为 IP软件的一个模块而存在 。 IP软件一旦收到差错或控制报文,立即交到 ICMP模块进行处理 。
网络互连技术教程
7.2.2 ICMP报文
ICMP报文也分为头标和数据区两大部分,其中头标包含三个字段:一个长度为 8 bit的类型字段,用来标识报文;一个长度为 8 bit的代码字段提供有关报文类型的进一步信息,以及一个长度为 16 bit的校验和字段 ( ICMP使用与 IP相同的相加校验算法,但 ICMP校验和只覆盖 ICMP报文 ) 。 ICMP报文格式如图 7-2所示 。
网络互连技术教程
8 位类型 8 位代码 16 位检验和
(不同类型和代码的报文有不同的内容)
0 7 8 1 5 1 6 3 1
图 7-2 ICMP报文格式网络互连技术教程
ICMP报文的数据区包含引起错误的数据报报头及该数据报前 64 bit的数据,提供这些信息的目的在于帮助源主机确定出错的数据报 。
ICMP类型字段定义了报文的格式及意义。其类型如图
7-3所示。
网络互连技术教程类型字段 ICM P 报文类型
0
3
4
5
8
11
12
13
14
17
18
回送应答目的地不可达源站抑制重定向回送请求数据报超时数据报参数错时间戳请求时间戳应答地址掩码请求地址掩码回答图 7-3 ICMP报文类型网络互连技术教程
7.2.3 使用 ICMP了解网络状态
7.3 几个工具
7.3.1 配置路由表 (route)
7.3.2 数据跟踪 (traceroute)
traceroute命令可以列出从本地主机到远程主机传送数据包时经过的所有主机 。 而且该命令可以自动解析域名 。
网络互连技术教程
7.4 了解网络工作状态
7.4.1 路由失败主机有时无法确定正确的路由,并将数据报发给了不处于最优路径上的路由器 。 这种情况下,收到数据报的那个路由器就要发送 ICMP重定向差错报文给 IP数据报的发送端 。 我们举一个例子,图 7-6为图 7-7所表示的主机 A的路由表 。
网络互连技术教程目的 子网掩码 网关 标志 接口
127.0.0.1 255.255.255.25
5
127.0.0.1 UH lo0
202.112.31.0 255.255.255.0 202.112.31.25 U eth1
default 0.0.0.0 202.112.31.254 UG eth1
图 7-6 主机 A的路由表网络互连技术教程假设主机 A发送一份 IP数据报给 202.112.45.38,如图 7-7,
查看路由表,除了缺省路由外,这并不能匹配任何路由 。 因此静态路由将此数据报通过路由器 202.112.31.254发送,但是,
地址为,202.112.31.254” 的 路 由 器 知 道 所 有 发 向 子 网
202.112.45.0的分组应该通过 202.112.31.253,因此,它把数据报转发到地址为,202.112.31.253”的路由器 。 我们可以看到,如果主机 A直接把分组发到 202.112.31.253将会提高效率 。
网络互连技术教程图 7-7 主机 A所在的网络网络互连技术教程因为路由器把数据报从同一接口发回了主机 A,所以主机 A现在知道存在一条更好的路由,它会立即根据 ICMP重定向报文更新它自己的路由表,以这种方式路由器可以通过
ICMP重定向指示主机使用新的路由 。
虽然路由器知道所有发向 202.112.45.0子网的分组应该通过 202.112.31.253,它通常只发送特定的主机的 ICMP重定向
( 此例中是 202.112.45.38) 。 主机将在路由表中创建一个新的表项,如图 7-8所示 。
目的 子网掩码 网关 标志 接口
202.112.45.38 255.255.255.255 202.112.31.253 UGHD eth1
图 7-8 主机 A路由表中因 ICMP重定向新添的表项网络互连技术教程
7.4.2 重定向
ICMP路径重定向报文格式如图 7-9所示 。
类型 (5) 代码( 0~3) 校验和路由器 IP地址数据报报头 +前 64 bit数据
……
图 7-9 ICMP重定向报文格式网络互连技术教程其中路由器 IP地址是指去往相应目的主机的最优路径中的第一个路由器的地址,目的地址由数据报报头中的目标地址字段指示 。 重定向报文分为四种类型如图 7-10所示 。
0
1
2
3
对网络的重定向报文 ( 已不用 )
对主机的重定向报文对服务类型和网络的重定向报文对服务类型和主机的重定向报文码值 意义图 7-10 ICMP重定向报文类型