什么样的ICMP报文是由路由器发送出的?什么样的ICMP报文是由目的主机发送出的?
时间: 2023-06-20 22:09:25 浏览: 388
路由器通常会发送以下类型的ICMP报文:
1. 目标不可达(Destination Unreachable):当路由器无法找到指定的目标主机或网络时,会向源主机发送此类型的ICMP报文。
2. 超时(Time Exceeded):当路由器在转发数据包时,发现TTL(生存时间)已经减为0,则会向源主机发送此类型的ICMP报文。
3. 重定向(Redirect):当路由器发现某个数据包的下一跳应该是另一个路由器时,会发送此类型的ICMP报文,告诉源主机下一步应该发送数据包到哪个路由器。
而目的主机通常会发送以下类型的ICMP报文:
1. 回显请求/回应(Echo Request/Reply):常用于网络诊断,主机向目的主机发送回显请求,目的主机收到请求后会返回一个回显回应。
2. 时间戳请求/回应(Timestamp Request/Reply):主机向目的主机发送一个时间戳请求,目的主机收到请求后会返回一个包含时间戳的回应。
3. 路由器通告(Router Advertisement):目的主机可以通过发送此类型的ICMP报文,告诉周围的主机自己是一个路由器,并告知它们如何配置IPv6地址。
相关问题
试用表说明,什么样的 ICMP 报文是由路由器发送出的,什么样的 ICMP 报文是由非目的 主机发送出的,以及什么样的 ICMP 报文是由目的主机发送出的
ICMP(Internet Control Message Protocol)是互联网控制报文协议,它是一种在IP协议的辅助下进行差错控制的协议。以下是 ICMP 报文的发送者的类型及其对应的类型和代码:
1. 由路由器发送的 ICMP 报文:
- 类型为 0(Echo Reply)和 8(Echo Request),代码分别为 0。
- 类型为 3(Destination Unreachable),代码有不同的取值,表示不同的错误类型,如网络不可达、主机不可达等。
- 类型为 11(Time Exceeded),代码为 0 和 1,分别表示 TTL 过期和片段重组时间超时。
2. 由非目的主机发送的 ICMP 报文:
- 类型为 3(Destination Unreachable),代码有不同的取值,表示不同的错误类型,如端口不可达、协议不可达等。
- 类型为 4(Source Quench),代码为 0,表示告诉发送端减缓发送数据的速率。
- 类型为 5(Redirect),代码为 0 和 1,分别表示重定向数据包到不同的路由器和重定向数据包到更好的网关。
3. 由目的主机发送的 ICMP 报文:
- 类型为 0(Echo Reply),代码为 0,表示回应 Echo Request 报文。
- 类型为 3(Destination Unreachable),代码为 4,表示数据包过大,需要分片。
- 类型为 11(Time Exceeded),代码为 0 和 1,分别表示 TTL 过期和片段重组时间超时。
发送端收到的ICMP报文可能不是按照TTL大小顺序返回,发送端是如何确定收到的一个ICMP报文是从哪个中间路由器返回的?
发送端在发送数据包时会在IP头部设置TTL(Time to Live)值,当数据包经过一个路由器时,TTL的值会减1。当TTL的值降为0时,路由器会将数据包丢弃并发送一个ICMP报文给发送端,告诉发送端数据包已经被丢弃了。
在收到ICMP报文后,发送端可以通过报文中的源IP地址来确定是哪个中间路由器返回的报文。因为每个路由器在转发数据包时都会将自己的IP地址作为源IP地址放入IP头部。因此,发送端通过比较ICMP报文的源IP地址和路由表中的中间路由器IP地址,可以确定收到的ICMP报文是从哪个中间路由器返回的。
阅读全文