计网---ICMP 协议

ICMP是Internet控制报文协议,用于在IP网络中传递控制消息,如目标不可达、超时和重定向。它在ping和tracert等网络诊断工具中起到关键作用。ICMP报文包括回送、目标不可达、重定向和超时等多种类型,帮助网络管理员识别和解决通信问题。
摘要由CSDN通过智能技术生成

一. ICMP协议介绍

  • ICMP是(Internet Control Message Protocol)Internet控制报文协议。它是TCP/IP协议族的一个子协议,用于在IP主机、路由器之间传递控制消息。控制消息是指网络通不通、主机是否可达、路由是否可用等网络本身的消息。这些控制消息虽然并不传输用户数据,但是对于用户数据的传递起着重要的作用。

二. ICMP产生原因

  • 主机 A 在不知情的情况下向主机 B 发送了数据包,而主机 B 正在呼呼大睡。主机 A 和主机 B 不在同一个局部网内,假设它俩之间会经过两个路由器

在这里插入图片描述

  • 除了 IP 地址我们还需要 MAC 地址才能确保数据包精准的找到传送方向,因此,路由器 2 为了知道主机 B 的 MAC 地址,它会广播一个 ARP 请求报文,希望获取到主机 B 的 MAC 地址,而主机 B 都关机了自然也就无法应答这个请求报文了。

  • 为此,路由器 2 会一遍又一遍的重新发送着 ARP 请求报文,在多次无果后,路由器 2 就会返回一个 ICMP Destination Unreachable 的包给主机 A,通知主机 A,非常遗憾,您发往主机 B 的包未能成功抵达。

三. ICMP 报文格式

ICMP报文是在IP报文内部的

在这里插入图片描述

四. ICMP 报文类型

①. ICMP 回送消息(类型 0、8)

  • 用于进行通信的主机或路由器之间,判断所发送的数据包是否已经成功到达对端的一种消息。

  • 可以向对端主机发送 ICMP 回送请求的消息(Echo Request,类型 8),也可以接收对端主机发回来的 ICMP 回送应答消息(Echo Reply,类型 0)

在这里插入图片描述

ping 命令就是基于 ICMP 回送消息实现的。

在这里插入图片描述

②. ICMP 目标不可达消息(类型 3)

  • 路由器无法将 IP 数据报发送给目标地址时,会给发送端主机返回一个目标不可达(Destination Unreachable Message)的 ICMP 消息。
  • 那目标不可达有多种可能的原因,比如说网络问题、目标主机问题等等,所以这个目标不可达消息还需要指明不可达的具体原因,这个具体原因就记录在 ICMP 报头的代码字段。

③. ICMP 重定向消息(类型 5)

  • 那么如果路由器发现发送端主机使用了某个不是最优的路径发送数据,他就会返回一个 ICMP 重定向消息(ICMP Redirect Message)给这个主机,并且,在这个消息中包含了最优的路由信息和源数据。

④. ICMP 超时消息(类型 11)

  • IP 包中有一个字段叫做 TTL (Time To Live,生存周期),它的值随着每经过一次路由器就会减 1,直到减到 0 时该 IP 包会被丢弃。
  • 此时,IP 路由器将会发送一个 ICMP 超时消息(ICMP Time Exceeded Message)给发送端主机,并通知该包已被丢弃。
  • 设置 IP 包生存周期的主要目的,是为了在路由控制遇到问题发生循环状况时,避免 IP 包无休止地在网络上被转发。

五. ICMP 的应用

①. Ping

  • ping 命令用来在IP 层次上调查与指定机器是否连通,调查数据包往复需要多少时间。

②. Tracert(Windows)

tracert作用

1. 故意设置特殊的 TTL,来追踪去往目的主机上沿途经过的路由器。

  • 具体来说,就是发送端主机会不断的向接收端主机发送 UDP 报文,UDP 报文被封装成 IP 数据报,同时将 TTL 从 1 开始按照顺序递增。
  • 将 TTL 设置 为 1,那么遇到第一个路由器的时候,这个 IP 数据报就会被丢弃,接着返回 ICMP 差错报文,类型是 ICMP 超时消息。
  • 接下来将 TTL 设置为 2,第一个路由器过了,遇到第二个路由器时这个 IP 数据报就会被丢弃,接着返回ICMP 差错报文。

  • 这样,tracert就拿到了所有路由器 IP。

2. 故意设置不分片,从而确定路径的最大传输单元 MTU。

  • 某些情况下我们并不知道路径的 MTU 大小,所以我们需要某种手段去获取 MTU,才能控制发送的数据包的大小。

  • 发送端主机要做的工作很简单,就是像往常一样发送 IP 数据报,但是将 IP 首部的分片禁止标志位置为 1。

  • 这样,如果 IP 数据报的长度超过了 MTU,该数据报会被路由器直接丢弃,并且给发送端主机发送 ICMP 目标不可达消息,其代码为 4,即需要进行分片但设置了不分片位

  • 这样,发送端主机每次收到 ICMP 需要进行分片但设置了不分片位消息时就减小 IP 数据报的长度,直到顺利到达目标主机。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值