发送icmp报文为什么会超市
时间: 2023-07-30 20:08:08 浏览: 216
发送 ICMP 报文可能会导致超时的原因有以下几种情况:
1. 网络拥塞:当网络中的流量过大或者网络设备负载过高时,可能会导致报文的传输延迟增加,最终导致超时。
2. 目标主机不可达:如果目标主机无法访问或者不在线,发送 ICMP 报文时可能会遇到超时的情况。
3. 防火墙设置:防火墙可能会过滤 ICMP 报文或者设置了超时时间,超过一定时间未得到响应会导致超时。
4. 路由问题:在报文传输过程中,可能会遇到路由器故障、路由表错误等问题,导致报文无法正确传输,从而超时。
需要根据具体情况进行排查和分析,以确定 ICMP 报文超时的原因。
相关问题
利用C语言编程发送ICMP报文
使用C语言编程发送ICMP报文,可以使用标准的C socket函数,如socket,bind,sendto,recvfrom等。要发送ICMP报文,首先需要创建一个原始socket,设置IP_HDRINCL选项,然后使用sendto函数发送ICMP报文。
试用表说明,什么样的 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 过期和片段重组时间超时。
阅读全文