290 likes | 589 Views
互联网应用技术 第二节 互联网技术 第十章 差错与控制报文( ICMP ). 冯健文 Fengjw@hstc.edu.cn. 内容安排. ICMP 概述 ICMP 报文格式 ICMP 差错报文 ICMP 控制报文 Ping 程序 Traceroute 程序. 为什么需要 ICMP. IP 数据报机制要求高效率,但处于通信子网最高层,要求能处理通信子网的问题。 IP 协议集中于数据传输,不关心传输质量 提出了 ICMP 协议,进行差错控制等管理 ICMP 把差错和控制一起处理,大部分应用属于控制。. ICMP 协议与 IP 协议.
E N D
互联网应用技术第二节 互联网技术第十章 差错与控制报文(ICMP) 冯健文 Fengjw@hstc.edu.cn
内容安排 • ICMP概述 • ICMP报文格式 • ICMP差错报文 • ICMP控制报文 • Ping程序 • Traceroute程序
为什么需要ICMP • IP数据报机制要求高效率,但处于通信子网最高层,要求能处理通信子网的问题。 • IP协议集中于数据传输,不关心传输质量 • 提出了ICMP协议,进行差错控制等管理 • ICMP把差错和控制一起处理,大部分应用属于控制。
ICMP协议与IP协议 • ICMP报文封装在IP数据报的数据部分进行传输。 • ICMP报文的IP数据报报头“协议”域标明数据区内容为ICMP报文 • 应该把ICMP单独作为一层,放于IP层之上吗?
消息类型 描述 源抑制 抑制发送过多分组的主机 超时 报告分组由于计时器为0 而被丢弃 目的不可达 报告数据报无法传递到最终目的地或目的程序 重定向 告诉主机有关地理路线 要求分段 要求对分组进行分段而IP头部规定不让分段 回声请求 向一台机器发出请求看是否还活着 回声应答 是的,我还活着 地址屏蔽请求 向路由器请求地址屏蔽码 地址屏蔽应答 路由器回送一个32位的地址 屏蔽码 五种差错报文和四种信息报文
ICMP差错报文 • 差错报文的功能是提供差错报告 • 差错报告的特点: • 1、没有规定对差错报告应采取的处理方式; • 2、差错报告的传送是从网关到源机的。
ICMP差错报文 • ICMP差错报文机制的特点: • 1、差错报文作为普通数据传输; • 2、差错报告数据区必须包含故障数据报报头及数据区前64比特数据; • 3、差错报文是在出错数据报丢弃后产生的。
ICMP差错报文 • 信宿不可到达报告 • 以下情况,网关会发现信宿不可到达: • 1、信宿机硬件不在运行; • 2、信宿地址不存在; • 3、网关不知道去信宿的路径。 • 该报告产生的原因可分为12种。
ICMP差错报文 • 信宿分为四个层次概念: • 网络、主机、协议、端口 • 全局性的协议地址必须包括网络、主机和协议地址,因此可能引发网络或主机或协议不可到达的错误。
ICMP差错报文 • 网络不可到达:寻径故障 • 主机不可到达:信宿没运行或不存在 • 协议和端口不可到达:协议和端口故障或不存在
ICMP差错报文 • 超时报告 • 当路由表出错时,可能会出现循环的路径 • 因此在IP数据报中增加TTL域和定时器技术,当时间到,就丢弃数据报 • 此时就向信源发送ICMP超时报告 • 参数出错报告 • 当数据报报头或选型参数出错,而且必须丢弃数据报时,产生此报告
ICMP控制报文 • 拥塞控制与源抑制报文 • 当大量数据报涌入网关,网关不能立即处理时,网关就会产生拥塞 • 原因: • 1、网关的处理速度太慢 • 2、网关输入数据的速率大于输出线路容量 • 但根本原因时没有足够的网关缓冲区
ICMP控制报文 • TCP/IP拥塞控制采用源抑制技术,即抑制信源机发出数据报的速率 • 三个阶段: • 1、网关发现拥塞,发出ICMP源抑制报文 • 发送报文方式: • (1)若输出队列已满,每丢弃一个新数据报,就发送报文; • (2)当输出队列超出警告界限,对新数据报的信源发送报文; • (3)有选择抑制传输率高的信源
ICMP控制报文 • 2、信源机收到源抑制报文,在一定时间间隔后,按一定速率降低发往某信宿的传输率。 • 3、拥塞解除后,信源机恢复传输率。
ICMP控制报文 • 路径控制与重定向报文 • 互联网的寻径由网关的路由表决定,主机的路由表来自与本网络的网关。 • 主机启动只有最少的路由信息,然后不断从网关获取路由信息。 • 当路径改变时,网关将发送ICMP重定向报文给主机。 • ICMP重定向报文只用于网关与主机间。
ICMP请求/应答控制报文 • 回应请求与应答报文 • 用于测试信宿机的可到达性。 • 可达性:如果从主机A发出的分组可以到达主机B,则A可达B。 • 报文是双向的,假如成功,不但说明信宿机可到达,而且数据报传输系统工作正常。 • 主机的网络层代码会对到来的ICMP回声请求进行应答。也可以设置对ICMP回声请求屏蔽。
ICMP请求/应答控制报文 • 时戳请求与应答报文 • 用于机器间时钟同步 • 首先利用该报文从其他机器获取时钟时间,经估算后再同步时钟。 • 需要计算报文往返延迟。 • 这种报文效果有限。
ICMP请求/应答控制报文 • 地址模请求与应答 • 因为子网的格式是不标准的,所以该报文用于主机向网关查询地址模(掩码)。 • 如无盘工作站启动时,查询自己的地址模
Ping程序 • “p i n g”这个名字源于声纳定位操作。P i n g程序由Mike Muuss编写 • PING程序利用ICMP回答请求/应答报文来测试一台远程计算机是否可达。
Ping程序 标识符置成发送进程的I D号 序列号从0开始,每发送一次新的回显请求就加1
Ping程序 • 标识符,可用于区别多个PING程序。 • 序列号,用于查看是否有分组丢失、失序或重复。 • 要打印出序列号和T T L,并计算往返时间( T T L位于I P首部中的生存时间字段) • p i n g程序通过在I C M P报文数据中存放发送请求的时间值来计算往返时间。当应答返回时,用当前时间减去存放在I C M P报文中的时间值,即是往返时间。 • 其他命令参数
Traceroute程序跟踪路由 • Tr a c e r o u t e程序可以看到I P数据报从一台主机传到另一台主机所经过的路由。 • Tr a c e r o u t e程序使用I C M P报文和I P首部中的T T L字段(生存周期) • 每个处理数据报的路由器都需要把T T L的值减1或减去数据报在路由器中停留的秒数。由于大多数的路由器转发数据报的时延都小于1秒钟,因此T T L最终成为一个跳站的计数器,所经过的每个路由器都将其值减1。
Traceroute程序跟踪路由 • 当路由器收到一份I P数据报,如果其T T L字段是0或1,则路由器不转发该数据报。相反,路由器将该数据报丢弃,并给信源机发一份I C M P“超时”信息。 • Tr a c e r o u t e程序的关键在于包含这份I C M P信息的I P报文的信源地址是该路由器的I P地址。
Traceroute程序跟踪路由 • Tr a c e r o u t e程序的操作过程。 • 它发送一份T T L字段为1的I P数据报给目的主机。处理这份数据报的第一个路由器将T T L值减1,丢弃该数据报,并发回一份超时I C M P报文。这样就得到了该路径中的第一个路由器的地址。 • 然后Tr a c e r o u t e程序发送一份T T L值为2的数据报,这样我们就可以得到第二个路由器的地址。继续这个过程直至该数据报到达目的主机。 • 但是目的主机哪怕接收到T T L值为1的I P数据报,也不会丢弃该数据报并产生一份超时I C M P报文,这是因为数据报已经到达其最终目的地。那么我们该如何判断是否已经到达目的主机了呢? • Tr a c e r o u t e程序发送一份U D P数据报给目的主机,但它选择一个不可能的值作为U D P端口号(大于30 000),使目的主机的任何一个应用程序都不可能使用该端口。因为,当该数据报到达时,将使目的主机的U D P模块产生一份“端口不可达”错误的I C M P报文。 • 这样,Tr a c e r o u t e程序所要做的就是区分接收到的I C M P报文是超时还是端口不可达,以判断什么时候结束。
Traceroute程序跟踪路由 • 输出的第1个无标号行给出了目的主机名和其I P地址,指出t r a c e r o u t e程序最大的T T L字段值。 • 输出的后面两行以T T L开始,接下来是主机或路由器名以及其I P地址。 • 对于每个T T L值,发送3份数据报。每接收到一份I C M P报文,就计算并打印出往返时间。 • 如果在5秒种内仍未收到3份数据报的任意一份的响应,则打印一个星号,并发送下一份数据报
ICMP和路径MTU检测 • 路径MTU :源端到目的端路径上的最小MTU。 • 源端进行路径MTU检测可以避免中途分段。 • 源端利用“要求分段”ICMP进行路径MTU检测:首先将探测IP分组头部的不要分段标志置位;当到达比IP分组小的MTU网络时,路由器返回“要求分段”ICMP;源端重新发送一个较小的探测IP分组并同样设置不要分段标志,如此这般直到到达目的地。