我刚刚开始学习协议。在用 wireshark 研究数据包时,我偶然发现我的机器向我自己的 IP 发送了一个 ARP 请求。以下是该数据包的详细信息:
No. Time Source Destination Protocol Info
15 1.463563 IntelCor_aa:aa:aa Broadcast ARP Who has 192.168.1.34? Tell 0.0.0.0
Frame 15: 42 bytes on wire (336 bits), 42 bytes captured (336 bits)
Arrival Time: Jan 7, 2011 18:51:43.886089000 India Standard Time
Epoch Time: 1294406503.886089000 seconds
[Time delta from previous captured frame: 0.123389000 seconds]
[Time delta from previous displayed frame: 0.123389000 seconds]
[Time since reference or first frame: 1.463563000 seconds]
Frame Number: 15
Frame Length: 42 bytes (336 bits)
Capture Length: 42 bytes (336 bits)
[Frame is marked: False]
[Frame is ignored: False]
[Protocols in frame: eth:arp]
[Coloring Rule Name: ARP]
[Coloring Rule String: arp]
Ethernet II, Src: IntelCor_aa:aa:aa (aa:aa:aa:aa:aa:aa), Dst: Broadcast (ff:ff:ff:ff:ff:ff)
Destination: Broadcast (ff:ff:ff:ff:ff:ff)
Address: Broadcast (ff:ff:ff:ff:ff:ff)
.... ...1 .... .... .... .... = IG bit: Group address (multicast/broadcast)
.... ..1. .... .... .... .... = LG bit: Locally administered address (this is NOT the factory default)
Source: IntelCor_aa:aa:aa (aa:aa:aa:aa:aa:aa)
Address: IntelCor_aa:aa:aa (aa:aa:aa:aa:aa:aa)
.... ...0 .... .... .... .... = IG bit: Individual address (unicast)
.... ..0. .... .... .... .... = LG bit: Globally unique address (factory default)
Type: ARP (0x0806)
Address Resolution Protocol (request)
Hardware type: Ethernet (0x0001)
Protocol type: IP (0x0800)
Hardware size: 6
Protocol size: 4
Opcode: request (0x0001)
[Is gratuitous: False]
Sender MAC address: IntelCor_aa:aa:aa (aa:aa:aa:aa:aa:aa)
Sender IP address: 0.0.0.0 (0.0.0.0)
Target MAC address: 00:00:00_00:00:00 (00:00:00:00:00:00)
Target IP address: 192.168.1.34 (192.168.1.34)
这里发送者的 MAC 地址是我的(这里我隐藏了我的 MAC 地址)。目标 IP 是我的。为什么我的机器向自己发送 ARP 请求?我发现了 3 个这种类型的数据包。这些数据包没有 ARP 回复。有人能解释一下为什么吗?(我的操作系统是 Windows-7。我直接连接到 wifi 调制解调器。我一启动连接就收到了这些数据包。)
我也想要一个建议。我读到的很多地方都说 RFC 足以研究协议。我研究了 ARP 上的 RFC 826。我个人觉得这根本不够。对此有什么建议吗?一个协议是否有多个 RFC?我想非常详细地研究协议。有人可以指导我吗?提前谢谢。
答案1
此行为是查找潜在重复 IP 的一种非常好的方法。
如果您的计算机没有得到答复,则说明它是唯一拥有该 IP 的计算机。如果您的计算机得到了答复,则说明有另一台计算机拥有相同的 IP,这显然是有问题的。
至于 RFC,我觉得读起来很可怕。我只在遇到具体问题时才用它们作为参考。我可能只从头到尾读过一本。其余的我都是一点一点读的。在我看来,学习某件事的最好方法是拿起 O'Reilly 或类似的纸质书阅读。
单个协议可以有多个 RFC。例如,IPv6 有 10 个不同的 RFC,仅涉及从 IPv4 到 v6 的过渡机制。还有许多其他 RFC,用于诸如邻居发现之类的事情。连续传输协议也包含在 4 RFC 中。
答案2
这是防止 IP 冲突的标准行为。RFC 5227IPv4 地址冲突检测。它还允许路由器和邻居更新其 ARP 表,以便它们可以与您的计算机通信。
通过询问谁拥有 IP 地址,可以确定 IP 地址是否正在使用。这至少允许计算机记录冲突的存在(如果存在)。
正是这种机制允许计算机使用自动 IP 地址配置来使用 169.254.0.0/16 地址块。计算机在此范围内生成一个地址,然后使用 APR 查看该地址是否可用。如果不行,它们会尝试其他地址,直到找到一个可用的地址。由于网络通常较小,地址范围覆盖超过 65000 个地址,因此它们可以快速找到地址。
该arpwatch
实用程序根据 arp 消息构建一个数据库,可用于在地址冲突或被移动到新硬件时通知管理员。