ping程序用于检测主机与主机之间是否可以进行通信。如果无法ping通主机,则表明无法与该主机建立连接。 Ping使用ICMP协议,该协议将icmp回显请求消息发送到目标主机。 ICMP协议规定目标主机必须向源主机返回ICMP响应消息。如果源主机在一定时间段内收到响应,则认为该主机是可访问的。 ICMP协议通过IP协议发送,IP协议是无连接且不可靠的数据包协议。在Unix / Linux中,序列号从0开始计数,并按顺序递增。 Windows ping程序的ICMP序列号不规则。在ICMP协议的实际传输中,数据分组为:20字节的IP报头+8字节的ICMP报头+1472字节的“数据大小”。 38字节的ICMP消息格式:IP报头(20字节)+ 8位类型+ 8位代码+ 16位校验和+(不同的类型和代码,格式也不同)首先,icmp和arp不相关! icmp承载在网络层上,其协议号似乎为1,其中有8种类型,例如主机不可达,超时等。这是用于测试网络连接性的控制信息协议。 ARP是以太网技术中最重要的协议地址解析协议。它承载在osi的第二层。类型号似乎是806。由于以太网是一种多路访问,因此必须对其进行解析才能解析其以太网物理MAC地址。要使用ARP协议,此协议发送的请求数据包中的目标MAC地址为全1广播地址,回复数据包使用其自己的mac和IP地址作为源,目标地址使用目标主机MAC和IP地址作为被封装后要封装并发送的目的地出去!尽管它是一个链路层协议,但它具有网络层IP地址的概念。我已经在ARP协议中看到了协议类型800。这是IP协议的类型,因为它使用IP地址来解析MAC地址。因此,网络层上方的每个设备都将具有基于ARP的缓存。路由交换设备中的命令为show arp! Windows中的命令是arp -a,使用这种缓存,可以大大提高Internet访问速度!好吧,我说了这么多,也许主持人认为我在说的是胡说八道!然后我开始提问和回答!首先,ping命令是ICMP的一种形式,它属于ICMP,当然tracert也属于ICMP! ICMP与ARP无关,一个是网络层协议,另一个是数据链路层协议!就功能而言,没有重叠,唯一的共同点是它们都涉及IP地址。其次,我不会编写任何UBOOT代码,但是由于它是通过Internet承载的,因此他应该遵循网络体系结构。为了统一网络,IEEE和国际标准化组织iso统一定义了接入层和上层协议标准! ping时,由于您处于以太网环境中,因此将发送ARP帧。为什么在刚启动计算机时由于对端主机没有通讯地址而发送ARP! Ping是为了测试与对方主机的连接性,因此您需要知道对方主机的地址。尽管您知道目标IP地址,但也需要其MAC地址,因此ARP帧将在ping之前发送,并且主机中的默认ARP缓存正在老化。时间应该是10分钟。换句话说,ARP缓存条目将在ARP解决10分钟后自动清除。第三,arp帧的发送和恢复的确不同!一种是广播,另一种是单播Ping工作流程。假设主机A的IP地址为192.168.1.1,并且主机B的IP地址为192.168.1.2,它们都在同一子网中,那么当您在主机A上运行时,“ Ping 192.168.1.2”之后发生了什么&quot ;?首先,Ping命令将构造固定格式的ICMP请求分组,然后ICMP协议将把分组与地址“ 192.168.1.2”一起传递给服务器。对于IP层协议(如ICMP,它实际上是一组后台运行的进程),IP层协议将使用地址“ 192.168.1.2”来访问IP层协议。作为目标地址,将本地IP地址作为源地址,再加上一些其他控制信息以构造IP数据包,并在映射表中查找IP地址192.168.1.2对应的物理地址(也称为MAC地址) ,熟悉网卡配置的朋友不会陌生,这是数据链路层协议,用于构造帧所需的数据链路层的传输单元),