icmp时间戳请求和应答程序实现_漫话TCP/IP:IP协议相关技术之ICMP(v6)(4)

本文介绍了ICMP(Internet Control Message Protocol)的主要功能,包括错误通知和诊断。详细讲解了ICMP报文格式、主要的ICMP消息如目标不可达、重定向、超时和回送。特别是时间戳请求消息的使用,并展示了如何实现一个简单的ICMP时间戳请求程序。同时,概述了ICMPv6在IPv6中的关键作用,如邻居探索消息和地址自动配置。
摘要由CSDN通过智能技术生成

58d84ed1da590e3a4c557d0d9594f713.png

序言

架构IP网络时需要特别注意两点:确认网络是否正常工作,以及遇到异常时进行问题诊断。

例如,一个刚刚搭建好的网络,需要验证该网络的设置是否正确。此外,为了确保网络能够按照预期正常工作,一旦遇到什么问题需要立即制止问题的蔓延。为了减轻网络管理员的负担,这些都是必不可少的功能。ICMP正是提供这类功能的一种协议。

ICMP

ICMP的主要功能包括,确认IP包是否成功送达目标地址,通知在发送过程当中IP包被废弃的具体原因,改善网络设置等。

有了这些功能以后,就可以获得网络是否正常、设置是否有误以及设备有何异常等信息,从而便于进行网络上的问题诊断。在IP通信中如果某个IP包因为某种原因未能达到目标地址,那么这个具体的原因将由ICMP负责通知。

如下案例:主机A向主机B发送了数据包,由于某种原因,途中的路由器2未能发现主机B的存在,这时,路由器2就会向主机A发送一个ICMP包,说明发往主机B的包未能成功。

ICMP的这种通知消息会使用IP进行发送。因此,从路由器2返回的ICMP包会按照往常的路由控制先经过路由器1再转发给主机A。收到该ICMP包的主机A则分解ICMP的首部和数据域以后得知具体发生问题的原因。

1f91318651604164f6ac9d87f618452f.png

报文格式

ICMP经常被认为是IP层的一个组成部分。它传递差错报文以及其他需要注意的信息。ICMP报文通常被IP层或更高层协议(TCP或UDP)使用。一些ICMP报文把差错报文返回给用户进。ICMP报文是在IP数据报内部被传输的。

bd0116fd2b59e43562e25150967de0da.png

ICMP报文的格式如下所示。所有报文的前4个字节都是一样的,但是剩下的其他字节则互不相同。下面我们将逐个介绍各种报文格式。类型字段可以有15个不同的值,以描述特定类型的ICMP报文。某些ICMP报文还使用代码字段的值来进一步描述不同的条件。检验和字段覆盖整个ICMP报文。

6b6a04b27ec9547a88e5944fe57ed745.png
ICMP报文

ICMP报文类型

ICMP的消息大致可以分为两类:一类是通知出错原因的错误消息,另一类是用于诊断的查询消息。

4dbae35b0ebcc493c57e49c54e454bd3.png

主要的ICMP消息

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

IP路由器无法将IP数据包发送给目标地址时,会给发送端主机返回一个目标不可达(Destination Unreachable Message)的ICMP消息,并在这个消息中显示不可达的具体原因。

b9358d089ab2de2eb5da985d060fb620.png

在实际通信当中经常会遇到的错误代码是1,表示主机不可达(Host Unreachable),它是指路由表中没有该主机的信息,或者该主机没有连接到网络的意思。

此外,错误代码4(Fragmentation Needed and Don't Fragment was Set)则用于MTU探索。由此,根据ICMP不可达的具体消息,发送端主机也就可以了解此次发送不可达的具体原因。

案例:我们用TFTP来强制生成一个端口不可达报文,然后使用Wireshark抓包来分析:

<
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值