11

我知道 ICMP 请求包含 IP 地址。客户端 MAC 地址是否包含在 ICMP 请求中?ping 请求中包含哪些其他信息(如果有)?

4

3 回答 3

11

ICMP 请求是通过 Internet 发送的分层数据包。它包含以太层,其中包含目标和源 MAC 地址。它还包含 IP 层,其中包含源 IP 和目标 IP,以及一些标志。最后它包含 ICMP 数据。这包含一个类型、一个子类型,然后是一个校验和和标题的其余部分,它们可能因类型和子类型而异(例如,echo 的代码是 8,reply 是 0)。

网络数据包中有很多信息。另请注意,ICMP 是 IPv4 协议的一部分,因此不能被其他协议正式承载。虽然 IP 协议可以在与以太网协议不同的协议上承载。

每次经过路由器后,MAC 地址都会更改。所以这绝不是互联网上源 IP 地址的 MAC 地址。但是IP地址肯定包括在内,并且在本地网络上,客户端的mac地址仍然在以太层的数据包中。

维基百科有一些关于 ICMP 数据包的可读文章:icmp 消息和带有可读图表的不同协议。

如果您想查看一些实时请求,您可以安装wireshark,它会为您显示和剖析所有网络流量。这是一个非常方便和酷的工具。

于 2013-10-23T21:05:26.747 回答
3

ICMP“ping”数据包,正式称为“echo request”,包含原始 ping 可执行文件想要回显给它的任何内容。在互联网刚启动时的糟糕旧时代,他们拥有的路由器(以及所有计算机,真的)都受到随机内存故障的影响。为了检测两个系统之间的路径是否畅通,它们会发送回显请求数据包并将请求的内容与回复进行比较。如果内容不同,他们就知道所涉及的机器或中间的路由器有问题。

不可能在这里明确地说明任何给定的 ping 数据包中的内容,因为它在 ping 的实现之间会发生变化。

于 2019-01-03T05:09:50.163 回答
0

一个人通常不可能仅从其 IP 地址获取计算机的 MAC 地址。这两个地址来自不同的来源。简单地说,计算机自身的硬件配置决定了它的 MAC 地址,而它所连接的网络配置决定了它的 IP 地址。但是,连接到同一 TCP/IP 本地网络的计算机可以确定彼此的 MAC 地址。

查看RFC 792以获取完整的 ICMP 字段。

于 2013-10-23T21:04:32.177 回答