ARP消息包中的源MAC地址与封装时指定的源MAC地址的区别?

时间:2016-02-21 06:37:20

标签: networking wireshark tcp-ip arp

我试图了解ARP的工作原理和ARP数据包的格式。请看下图中带圆圈的字段:

enter image description here

在此示例中,他们在两个字段中都给出了不同的MAC地址。我看不出有多可能?在这两种情况下会有什么不同?

如果没有,为什么我们在封装它时添加冗余信息呢?

虽然我确实认为,因为它们有不同的长度(一个是固定的6个字节,而另一个是变量的..为什么?)它们必须用于不同的地址。

1 个答案:

答案 0 :(得分:1)

这可能是一个合法的错字。 ARP数据包中的地址长度是可变的,因为不同的第2层协议具有不同的地址长度。不要误以为只考虑以太网。

您应该学习RFC 826以了解ARP:

  

该协议最初是为DEC / Intel / Xerox 10Mbit设计的   以太网。它被推广为允许它用于其他   网络类型。大部分讨论将针对   10Mbit以太网。如果适用,概括将遵循   特定于以太网的讨论。

见强调文本:

  

为什么这样做?

     

绝对不希望定期广播。想象一下100   单个以太网上的工作站,每个广播地址   每10分钟一次的分辨率信息(作为一个可能的一组   参数)。这是每6秒一个数据包。这差不多了   合理,但它有什么用?工作站一般都不是   将要互相交谈(因此有100个没用   表中的条目);他们将主要与大型机,文件交谈   服务器或网桥,但仅限于少数其他工作站   (例如,用于交互式对话)。协议描述   在本文中,只需要一次分发信息   (可能)每次启动机器。

     

此格式不允许执行多个分辨率   相同的包。这是为了简单起见。如果事情是多路复用的   数据包格式将难以消化,而且大部分都是如此   这些信息可能是无偿的。想想一座会谈的桥梁   四个协议告诉工作站所有四个协议地址,   其中三个工作站可能永远不会使用。

     

此格式允许在回复时重用数据包缓冲区   生成的;回复与请求的长度相同,而且有几个   字段是一样的。

     

硬件字段(ar $ hrd)的值取自此列表   目的。目前唯一定义的值是10Mbit以太网   (ares_hrd $ Ethernet = 1)。一直有人谈论使用这个协议   对于分组无线电网络,这将需要另一个值   与希望使用该协议的其他未来硬件介质一样。

     

对于10Mbit以太网,协议字段(ar $ pro)中的值为   取自set ether_type $。这是一种自然的重复使用   分配的协议类型。将其与操作码(ar $ op)相结合即可   有效地减少了可以解决的协议数量   这个协议会使监视器/调试器更复杂(见   下面的网络监控和调试)。希望我们愿意   从未看过32768协议,但墨菲制定了一些不允许的法律   我们做出这个假设。

     

理论上,长度字段(ar $ hln和ar $ pln)是多余的,因为   协议地址的长度应由硬件决定   type(在ar $ hrd中找到)和协议类型(在ar $ pro中找到)。它是   包含用于可选的一致性检查和网络监控   和调试(见下文)。

     

操作码用于确定这是否是请求(可能导致请求)   回复)或回复上一个请求。这是16位   过度杀伤,但需要一个旗帜(场)。

     

发件人硬件地址和发件人协议地址是绝对必要的。这些领域被放入了   翻译表。

     

目标协议地址在请求表中是必需的   数据包使机器可以确定是否进入   发送者信息在表格中或发送回复。它不是   如果只是假设回复,则必须在回复表格中提供   由请求引起的。它包括完整性,网络   监控,并简化建议的处理算法   如上所述(直到放置之后才看操作码   表中的发件人信息。)

     

包含目标硬件地址,以实现完整性和网络性   监控。它在请求表中没有任何意义,因为它就是这样   机器正在请求的号码。它在回复表中的含义   是发出请求的机器的地址。在一些   实现(无法查看14.byte以太网   例如,这可能会节省一些寄存器改组或堆栈   通过将此字段作为硬件发送到硬件驱动程序来实现空间   数据包的目的地址。

     

地址之间没有填充字节。分组数据应该   被视为一个字节流,其中只定义了3个字节对   是最有意义的单词(ar $ hrd,ar $ pro和ar $ op)   字节优先(以太网/ PDP-10字节样式)。

RFC 826已由RFC 5227RFC 5494更新。