网工_ICMP协议
2024.12.14:ICMP协议学习笔记
第21节 ICMP协议
- 1.1 ICMP概述
- 1.2 ICMP报文的种类
- 1.2.1 ICMP差错报告报文
- 1.2.2 ICMP询问报文
- 1.3 ICMP的应用举例
- 1.3.1 分组网间探测PING
- 1.3.2 Tracet&Traceroute
- 1.4 本章小结
1.1 ICMP概述
为了辅助IP协议而出现的一种协议
- 网络较为随便,IP协议是没有可靠传输的,它是一种尽最大努力交付的转发手段/数据报服务。
- 为了更有效的去转发这个IP数据报以及提高交付成功的机会,我们就会使用这个网际控制报文协议ICMP
网络层使用的网际控制报文协议ICMP(internet control message protocol)允许主机或路由器(报告差错情况)和提供有关(询问应答)的报告
ICMP报文作为IP层数据报的数据进行传输,ICMP不是高层协议,而是IP层的协议
- 类型:什么差错以及什么询问信息
- 代码:对类型的进一步解释,比如这类型是不可达的
1.2 ICMP报文的种类
1.2.1 ICMP差错报告报文
发送ICMP差错报文的情况:终点不可达、时间超过、参数报文、改变路由(重定向)
存在几种不发送ICMP差错报文的情况
- 对ICMP差错报告报文,不再发送ICMP差错报告报文
- 对第一个分片的数据报片的所有后续数据报片,都不发送差错报告报文
- 对具有多播地址的数据报,都不发送ICMP差错报告报文
- 对具有特殊地址的数据报,不发送ICMP差错报文
1.2.2 ICMP询问报文
回送请求和回答
- 由主机或路由器向一个特定的目的主机发出的询问
- 收到此报文的主机必须给源主机或路由器发送ICMP回送回答报文
- 这种询问报文用来测试目的站是否可达,以及了解其有关状态
时间戳请求和回答:
- 请某台主机或路由器回答当前的时间
- 时间戳回答报文中有1个32位的字段(以ms为单位),返回的建议值是自午夜零点开始计算的时间(UTC)
- 时间戳请求与回答可用于时钟同步和时间测量
1.3 ICMP的应用举例
1.3.1 分组网间探测PING
PING是用于测试两台主机之间的连通性,它使用到了ICMP的回送请求和回送回答报文(询问报文之一),那它是应用层直接使用网络层ICMP中的一个例子,其中并没有经过传输层的协议,这里的PING是直接跨过了传输层的协议去使用ICMP
为了防止网络设备被恶意用户探测或攻击,一些主机或路由器被设置为不接收或不响应ICMP请求,因此在互联网中使用Ping或者tracert命令测试到目的主机连通性时出现超时,并不一定代表网络不通
1.3.2 Tracet&Traceroute
用于跟踪一个分组,从源点到终点的路径,traceroute它会从原主机向目的主机发送一连串的IP数据报,这个IP数据报中它封装的是一个无法交付的UDP的用户数据报