1.4、ICMP协议
- 前言
- Internet控制消息协议ICMP(Internet Control Message Protocol)是网络层的一个重要协议。ICMP协议用来在网络设备间传递各种差错和控制信息,并对于收集各种网络信息、诊断和排除各种网络故障等方面起着至关重要的作用。使用基于ICMP的应用时,需要对ICMP的工作原理非常熟悉。
- ICMP
- ICMP用来传递差错、控制、查询等信息
- ICMP重定向
- ICMP重定向主要用于支持路由功能,重定向最优路径
- ICMP差错检测
- ICMP Echo Request和ICMP Echo Reply分别来查询和响应某些信息,进行差错检测
- ICMP错误报告
- 当网络设备无法访问目标网络时,会自动发送ICMP不可达报文到发送端设备
- ICMP数据包格式
- Type表示ICMP消息类型,Code表示同一消息类型中的不同信息
- Type:表示消息类型
- 重定向
- Request
- reply
- Code:表示该信息具体表示什么样的消息类型
- 接收到的具体信息类型
- Eg
- 网络不可达
- …
- Eg
- 接收到的具体信息类型
- Checksum:检测信息的完整性
- Type:表示消息类型
- Type表示ICMP消息类型,Code表示同一消息类型中的不同信息
- ICMP消息类型和编码类型
- ICMP应用-Ping
- Ping
- 检测网络连通性
- -a
- 指定报文源IP地址
- -c
- 指定报文发送次数
- -h
- 指定TTL
- …
-
- 10.0.0.2
- 目的地址
- 56
- 报文长度
- Sequence
- 序列号
- TTL
- TTL值
- Time
- 往返时间
- 10.0.0.2
- Ping
- ICMP应用-Tracert
- 测试连通性,跟踪到达某特定地址路径
- Tracert
- -a
- 指定tracert报文源地址
- -f
- 指定初始TTL值
- -m
- 指定最大TTL值
- …
- -a
- 如何确定走的是哪一条路径?主要通过TTL值
- 首先RTA向目的地发送一个UDP报文,TTL值为1
- RTB收到报文以后,RTB发现TTL值为1,于是上送给RTB主控板CPU,CPU回应ICMP超时消息
- RTA就得到第一个路径
- …
- 这样的过程是不断进行的,直到目的端收到源端发送的UDP报文,判断出目的的IP地址是本机的IP地址,则处理该报文,根据报文中目的UDP的端口号,来寻找占用其端口号的上层协议
- 如果没有程序使用该UDP端口号,则会向源端程序发送一个端口不可达报文
- ICMP收到30.0.0.2,判断出端口已经到达目的端,则停止Tracert程序。从而得到数据报文从源端到目的端所经历的路径
- 总结
- Ping使用的是哪两类ICMP消息?
- Request
- reply
- 当网络设备收到TTL值为0的IP报文时,会如何操作?
- 丢弃该数据包,并向源端发送一个ICMP消息,通知源端TTL超时
- Ping使用的是哪两类ICMP消息?