【问题标题】:Ethernet Neighbor Discovery?以太网邻居发现?
【发布时间】:2015-05-19 09:20:17
【问题描述】:

我目前正在尝试熟悉以太网网络协议。然而,在查看标准时,以太网帧需要一个目标 MAC 地址,而源地址 MAC 通常被编程到设备上。我的问题是设备如何获得初始目标地址。例如,当您第一次将计算机插入网络时,它如何发现它的邻居 MAC 地址。就像您需要与默认网关交谈以获取 IP 地址以将数据发送到网络之外。我已尝试查看标准,但不确定是否准确搜索。

我找到了这篇 wiki 文章 Link Layer Discovery Protocol,但它看起来在 2005 年已经标准化,而以太网比这更早。那么在这之前做了什么?它似乎也不仅仅是提供 MAC 地址。

【问题讨论】:

    标签: networking protocols network-protocols ethernet mac-address


    【解决方案1】:

    首先,在IP中,当一个节点想要发现具有某个IP地址的设备的以太网地址时,它使用地址解析协议(ARP)。它向以太网广播地址 FF:FF:FF:FF:FF:FF 发送 ARP 消息,询问“谁有地址 x.x.x.x?”。 LAN 中的每个节点都接收广播并将其传递给 ARP 实现。如果接收节点没有该 IP 地址,它只会丢弃 ARP 消息。如果它有它,它会响应告诉它是该 IP 地址的所有者。如果这是您正在寻找的内容,请阅读http://en.wikipedia.org/wiki/Address_Resolution_Protocol。通过这种方式,源节点可以获知目标节点的硬件地址(具有预期的 IP 地址)并将映射 IP-以太网存储在其 ARP 缓存中。目标节点和所有其他节点学习源节点的映射。您也可以去预订 Comer 的“Internetworking with TCP/IP”。

    这是使用 Wireshark 读取的 ARP 消息示例:

    No.     Time           Source                Destination           Protocol Length Info
         11 0.620140000    CameoCom_e9:0b:a5     Broadcast             ARP      42     Who has 192.168.2.104?  Tell 192.168.2.1
    
    Frame 11: 42 bytes on wire (336 bits), 42 bytes captured (336 bits) on interface 0
        Interface id: 0 (\Device\NPF_{7E4440AD-DCD2-4498-BC69-E8DF0CEB48AB})
        Encapsulation type: Ethernet (1)
        Arrival Time: Dec 20, 2012 01:10:07.389971000 Argentina Standard Time
        [Time shift for this packet: 0.000000000 seconds]
        Epoch Time: 1355976607.389971000 seconds
        [Time delta from previous captured frame: 0.117128000 seconds]
        [Time delta from previous displayed frame: 0.117128000 seconds]
        [Time since reference or first frame: 0.620140000 seconds]
        Frame Number: 11
        Frame Length: 42 bytes (336 bits)
        Capture Length: 42 bytes (336 bits)
        [Frame is marked: False]
        [Frame is ignored: False]
        [Protocols in frame: eth:ethertype:arp]
        [Coloring Rule Name: ARP]
        [Coloring Rule String: arp]
    Ethernet II, Src: CameoCom_e9:0b:a5 (00:18:e7:e9:0b:a5), 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. .... .... .... .... = LG bit: Locally administered address (this is NOT the factory default)
            .... ...1 .... .... .... .... = IG bit: Group address (multicast/broadcast)
        Source: CameoCom_e9:0b:a5 (00:18:e7:e9:0b:a5)
            Address: CameoCom_e9:0b:a5 (00:18:e7:e9:0b:a5)
            .... ..0. .... .... .... .... = LG bit: Globally unique address (factory default)
            .... ...0 .... .... .... .... = IG bit: Individual address (unicast)
        Type: ARP (0x0806)
    Address Resolution Protocol (request)
        Hardware type: Ethernet (1)
        Protocol type: IP (0x0800)
        Hardware size: 6
        Protocol size: 4
        Opcode: request (1)
        Sender MAC address: CameoCom_e9:0b:a5 (00:18:e7:e9:0b:a5)
        Sender IP address: 192.168.2.1 (192.168.2.1)
        Target MAC address: 00:00:00_00:00:00 (00:00:00:00:00:00)
        Target IP address: 192.168.2.104 (192.168.2.104)
    

    如果您不使用 IP,您仍然可以使用此技术。如果您实现自己的第 2 层或第 3 层协议,节点可以向以太网广播发送消息以了解邻居的地址(您可以使用 ARP 或您自己的实现)。

    节点还可以嗅探 LAN 流量,了解所有发送消息的邻居的硬件地址。

    我认为有了这些信息,您可以根据自己的需要弄清楚如何去做。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-12-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-01-29
      • 1970-01-01
      相关资源
      最近更新 更多