如何在路由数据包中使用MAC地址?

时间:2014-05-29 13:55:03

标签: tcp ip

我最近发现数据包封装在以太网帧中。数据包使用IP地址,帧使用MAC地址。

为什么以太网帧中使用的IP地址不用于路由?据我所知,在尝试访问基本网站时,计算机会转到DNS以查找与用户输入的域名相关的IP地址。计算机如何找到正确的MAC地址?

真的,如何在路由互联网流量时使用MAC地址?

由于

5 个答案:

答案 0 :(得分:12)

IP数据包并不总是封装在以太网帧中。还有其他物理介质,例如ISDN等。当路由分组时,IP地址用于确定下一跳,物理地址用于物理地识别用作下一跳的接口。只有前者(确定下一跳)通常称为路由。

为了回答你的第二部分,通过IPv4中的ARP(地址解析协议)发现MAC地址。 IPv6中的ND6(邻居发现)。

<强>更新: IP标头中的目标IP地址是最终目标。在路由过程中(在每一跳),您获得下一跳的IP地址(最终)从路由表到达最终目的地(这可能是默认网关的IP地址)。要将数据包发送到下一跳,您需要其MAC地址。在跳过中间链路时,IP头中的IP地址不会改变 - 只有MAC地址发生变化。

答案 1 :(得分:3)

有点晚了,但仍然是我的答案:) ... 要发送数据,您需要两个地址,MAC地址和IP地址。 基本上,发送主机将ARP用于MAC地址,这发生在本地主机不知道其具有IP地址的主机的MAC地址时,或者它将作为默认网关MAC地址的ARP(如果它还没有)知道它)如果IP地址在不同的子网/网络上。一旦获得MAC地址,IP分组就被封装在L2帧中并通过媒体发送。如果IP数据包用于不同子网/网络上的主机,它将被发送到默认网关,此路由器将解封装L2帧(删除并丢弃它)检查IP地址并转发它。对于路由器来说,它需要一个MAC地址通过媒体发送它,它将查找它的路由表中的下一跳,用从原始主机发送到的相同源和目标IP地址封装IP数据包。一个新的L2帧。此时源地址的MAC地址将是路由器的转发接口的MAC地址,下一跳的接收接口将是目的MAC地址。这将从跳到跳继续,直到它到达最终主机,每次MAC地址都会改变,但原始IP地址将保持不变。

答案 2 :(得分:2)

这是关键点 - 可以有比INTERNET流量更多的数据包类型。您可能正在使用IPX,这是不可路由的。客户如何识别对方?通过MAC地址。

路由!=寻址,这正是MAC发挥作用的地方。

为了路由,OSI模型adds a layer允许路径发现到下一个网关。该层负责路由,但对MAC地址一无所知。

作为旁注,在硬件级别,交换机使用MAC地址,但不用于路由。来自How Stuff Works

  

交换机从节点A获取第一个数据包。它读取MAC   地址并将其保存到段A的查找表中。现在切换   知道在每个数据包发送到它的任何时候在哪里找到节点A.这个   过程称为学习。

通过这种方式,交换机可以确保流量仅输出到正确的端口。这不是为了减少网络拥塞而实现路由。只有专门为该MAC地址发送的广播和流量才能从端口发送出去。

答案 3 :(得分:0)

答案:在路由数据包的过程中不使用MAC地址。

  • 细分 - &gt;传输层(TCP端口)
  • 数据包 - &gt;网络层(IP地址)
  • 框架 - &gt;数据链路层(MAC地址)
  • bits - &gt;物理层(电/光信号)

创建您自己的数据包/细分受众群http://wirefloss.com/wireit/

有2种型号(TCP / IP和ISO / OSI) http://www.techexams.net/technotes/ccna/osimodel.shtml

详细说明: 您的应用有一些数据。这由所提到的层封装。封装意味着在每一层添加带字段的标头。如果您的数据永远不会离开本地网络,则MAC地址将相同。一旦您的数据需要在网络外部传送,帧头将被路由器剥离,并被路由器字段替换。

答案 4 :(得分:0)

最近我一直在思考这个问题,并提出了这个问题。以下是我对这个问题的回答。实际上,正确地将数据包发送到正确的目的地需要MAC地址。当需要通过VLAN发送数据包时尤其如此。在该VLAN上可以通过多个物理接口连接多个交换机/路由。但是,IP路由不知道这些物理接口。它只知道逻辑连接。例如,路由10.10.10.0/24可通过VE / VIF0.10(逻辑VLAN接口)和/或下一跳邻居为20.20.20.1到达。 VLAN 10下可能有多个接口。然后发送到哪个接口数据包?这就是ARP出现在图片中的地方。 ARP有助于发现与下一跳IP地址关联的MAC地址。当交换机/路由器获知下一跳MAC时。与此同时,它还学习了可通过其访问MAC的物理接口。因此,在路由分组时,首先搜索对应于目的地IP的MAC,然后搜索与该MAC相关联的物理接口。最后,数据包通过该物理接口发送出去。与该目的地IP相对应的MAC用作目的地MAC。如果没有这个,路由数据包将始终在传出VLAN中泛洪。

希望这有帮助。

感谢。