【问题标题】:Why both MAC and IP Address on a packet?为什么数据包上同时包含 MAC 和 IP 地址?
【发布时间】:2016-04-23 05:37:05
【问题描述】:

为什么我们需要一个数据包中的源ip地址和源mac地址信息,而其中一个就足以识别源?所有协议都需要它们吗?

编辑:对不起,我忘了提到“在一个数据包中”。我想知道从源到目的地的数据包传输时间。谢谢。

【问题讨论】:

    标签: networking


    【解决方案1】:

    MAC地址是二层地址,IP地址是三层地址,端口是四层地址。

    MAC 地址不在数据包头中,而是在帧头中。数据包标头中只有第 3 层地址。端口位于段标头中。

    MAC 地址仅在 LAN 上很重要。它们位于帧头中,并且帧在第 3 层边界(路由器)处被剥离。然后,路由器使用带有第 3 层地址的第 3 层报头将数据包转发到下一个接口,路由器将在该接口为新的第 2 层链路构建具有新第 2 层地址的新第 2 层帧。

    【讨论】:

      【解决方案2】:

      在网络中,仅 IP 地址就足够了。但是在不同的网络中,路由器需要根据MAC地址来解析IP地址。 IP 地址可以变化,但 MAC 地址是不变的。一台机器可以通过物理地址(即 MAC)连接到另一台机器。

      对于大多数 TCP/IP 协议,您都需要。

      【讨论】:

      • IP 不需要 MAC 地址。 IP 可以在许多第 2 层协议上运行,其中一些协议不使用 MAC 地址。在以太网 (LAN) 中,您肯定需要 MAC 地址,因为这是将以太网帧传送到目的地的方式。此外,MAC 地址不会出现在不同的网络上。
      • 是的,你是对的。但是对于外行语言,很难理解分层概念。所以我给出了一个通用的答案,那就是 TCP/IP 协议套件。
      • 问题是你写的东西是错误的和误导性的。任何从事网络编程的人都需要完全了解这些层的工作原理,而外行语言在程序员网站上确实没有立足之地。
      • 编辑了我的答案。谢谢。
      【解决方案3】:

      您需要源IP地址,因为回复会来。这将在数​​据包的整个行程中保持不变。这也不一定是有效的。 (就像 IP 地址欺骗的情况一样。)

      下一跳(路由器)将需要源 MAC 地址,而不是超出此地址。如果下一跳是第一次见到您,它将使用您的 IP 地址和 MAC 地址相应地更新其路由表。

      如果下一跳无法解析目标 IP 地址或找不到路径,它将决定丢弃数据包并通知您。但是如果它找到一条路径并转发数据包,那么它将在源 MAC 地址字段中替换它自己的 MAC 地址。但在这种情况下,源 IP 地址保持不变。 (如果是代理,它也会改变。)

      【讨论】:

        猜你喜欢
        • 2021-08-27
        • 2012-04-18
        • 2020-08-09
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-02-08
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多