为什么需要ICMP?
数据在传送中可能会遇到各种异常.
IP层也需要控制功能(拥塞,差错控制).
ICMP的作用
传递网络控制信息,提供差错报告.
问题:为什么要把这两项功能合二为一?
控制和差错报文都是特殊报文.
差错报告与差错控制总是密切相关.
ICMP的工作机制
路由器(主机)向其他路由器(主机)发送ICMP报文.
只能想源端报告差错,不能向中间路由器报告差错.
ICMP协议与IP协议的关系
˃ ICMP与IP同层,只是IP软件中的⼀个模块。
- 功能不独⽴,只是IP的补充;
- 不是上层协议赖以存在的基础 。 ˃ ICMP报⽂封装在IP数据报中传送,其IP⾸部“协议”域指明为ICMP报⽂(代码为1)
ICMP报文格式
说明:
˃ 对整个报⽂计算校验和
˃ 差错报告报⽂的数据区包括:出错数据报的⾸部 + 出错数据报数据
区前64bit,原因:包含上层协议报⽂的重要信息。
˃ ⾮嵌套使⽤:规定不为携带ICMP差错报⽂的数据报中出现的差错⽽
⽣成ICMP报⽂。
˃ 如果该类报⽂出现差错,则产⽣异常。
ICMP类型和代码
˃ 请求与应答报⽂
˃ 差错报告报⽂
˃ 控制报⽂
» Tracert/traceroute
˃ 功能 - (1)查看IP数据报所经过的路径
- (2)可指定IP源路由选项
˃ 问题:有了IP记录路由选项和Ping命令,为何还需要Traceroute? + (1)不是所有的路由器都⽀持记录路由选项 - (2)Ping记录下来的地址翻了⼀番(⼀来⼀回)
- (3)IP⾸部中记录路由选项空间有限
˃ 2、traceroute⼯作原理 - ICMP超时报⽂ + IP⾸部的TTL
- (1) 发送IP数据报,TTL = 1,则到达第⼀个路由器后TTL = 0,该路由器向
源端发送ICMP超时报⽂,该报⽂封装在IP数据报中,源端收到该报⽂后提取
IP⾸部的IP地址字段,则记录了第⼀个路由器。 - (2) 发送IP数据报,TTL = 2,记录第⼆个路由器。
- ……
+
路由跟踪
1.发出报文:
2.收到报文