同时使用MAC和IP地址的原因


25

如果我的计算机有IP地址,为什么需要MAC地址?


2
为了给您最好的答案,您是否可以扩展您的问题以包括为什么您认为如果计算机具有IP地址就不需要MAC地址?
Brett Lykins 2013年

1
我建议阅读一本关于网络的良好基础书籍并阅读;将是值得的。:它会回答这个问题,还有更多amazon.com/Computer-Networking-Top-Down-Approach-Edition/dp/...
马诺潘迪

4
这听起来可能有些陈词滥调,但这是减少混乱的最简单方法。为什么要在计算机中放置以太网 NIC?回答该问题,它回答有关Mac地址必要性的问题。
Mike Pennington

4
@Reprovo,评论/答案真正发表此声明的唯一地方是当OP响应Teun Vink的答案并希望避免在答案中建立网络模型时。如果您不知道网络模型的原因和方式,您真的不了解您的网络,而“完成工作”将会更加痛苦,或者会带来其他问题。作为网络专业人员,您实际上并不需要了解很多事情(例如,如何将位放在线路上等),但是网络模型并不是他们可以避免至少获得基本了解的东西。
YLearn

2
@ user1369975,我认为您错过了重点。我们并不是说这个问题是无效的,也不是说人们不需要学习。但是,这是网络工程师/专业人员的网站,要求在此处给出答案,而忽略网络的基本基础是不合理的。如果您想要的答案不是针对其他网络专业人员的,则应在其他网站之一(例如SuperUser)上提问。
YLearn

Answers:


13

无需进入OSI模型,TCP层等:

时光倒流,网络得以创建:某些计算机将相互通信以共享某些东西。要做到这一点,他们需要知道在说话,正在交谈。因此,我们没有给每台计算机起一个名字,而是给他们一个ID。该ID称为MAC地址,是每台计算机的唯一标识。

(确定每个网卡,但是回想一下,您可以为每台计算机考虑一个MAC地址)。

关于计算机之间的通讯方式,没有一个唯一的规范:出现了许多协议:TCP / IP,IPX / SPX等。每个协议都会指定他们认为可以的事情。例如,IPX / SPX将使用MAC地址和更多信息来为每台计算机寻址。

但是,TCP / IP协议的设计略有不同:他们认为拥有一个由4个字节(0.0.0.0到255.255.255.255)组成的虚拟地址就足够了,并且甚至更易于管理:这是否重要您的网卡是否都具有相似的MAC地址,我们将对计算机进行分组,以使所有以10.0.xx开头的TCP / IP地址都属于工程组,而10.1.xx的所有TCP / IP地址都属于打印机,并且。 ..

因此,如果一个TCP / IP地址需要与另一个通信,则仅使用该TCP / IP地址。但是网络设备需要知道该消息将发送到哪个网卡,因此它们以某种方式将TCP / IP地址转换为MAC地址。

为什么不简单地消除MAC而仅使用TCP / IP?

一些原因:

  • 易于分组TCP / IP地址,
  • 在该低级别要求中,所有设备都旨在照顾MAC地址,并且需要进行更改
  • 尽管占绝大多数(我认为:-P),但仍在使用其他一些协议,它们依赖于MAC地址

25

MAC地址和IP地址在Internet协议套件的不同层上运行。MAC地址用于在第2层的同一广播网络中标识机器,而IP地址在第3层用于在整个不同网络中标识机器。

即使您的计算机具有IP地址,它也仍然需要MAC地址才能找到同一网络上的其他计算机(特别是通往网络/互联网其余部分的路由器/网关),因为每一层都在使用底层。在前面提到的页面上,您可以找到一些不错的图,详细解释了协议套件。


,非常感谢您的回答,但是如果任何人都可以给出回答,而不必考虑OSI层或TCP层的规范,那就更好了
user1369975 2013年

11
如果太难了,那真的不是您的网站。您可能会认为这个问题是不正确的,因为这是网络工程师的常识。
Teun Vink

11
@ user1369975,您引用的模型是网络设计为如何运行的框架(包括硬件和软件)。没有这种基本了解,就不会对您的问题做出有意义的回答。这类似于询问(关于一个美国公民)“如果他们有名字为什么需要社会安全号码”,而在答案中没有提到政府。
YLearn

5
将MAC地址视为街道上房屋的描述。对您的邻居来说,他们都会理解“温室”或“约翰逊先生的房子”或“拐角处的复式”-这些与MAC地址类似,仅在本地进行描述。IP地址是可公开路由的,因此就像使用完整地址一样:123 Main St,Somewhere,CA92069。然后我想IP到MAC就像邮递员走到大街上大喊“谁在123 MAIN? !?!?” 约翰逊先生听见他说:“这是温室!” 我猜?可怕的比喻。
David Houde13年

3
这就解释了为什么在当前架构下需要它。但是,为什么架构首先要采用这种方式设计?我可以轻松想象一个只有本地IP地址和WAN IP地址的世界。从技术上讲这是可能的。
Hello World

17

当您了解到IP到IP的通信实际上只是在每个路由器跃点上进行的一系列MAC到MAC的通信时,您就会明白为什么两者都是必要的。

离开工作站的数据包的IP标头将发往另一个子网中的IP,它将保留源IP和目标IP,暂时不考虑NAT。[稍后,我将讨论目标位于同一子网内时会发生什么。]以太网头包含您的源MAC和默认网关的目标MAC。 从您的角度来看,您不了解最终目标MAC。 该第一个路由器将把源MAC重写为自身,并将目标MAC重写为下一个路由器跃点,依此类推,直到数据包到达直接连接到目标子网的最后一个路由器为止。

为了尝试简单说明,请考虑当数据包从源IP(sIP)移至目标IP(dIP)时的L2 / L3标头,并且源和目标MAC沿以下方式进行重写-fs = first-source和ld = last-destination和r1-r3是路由器:

fsMAC-r1MAC / sIP-dIP 
r1MAC-r2MAC / sIP-dIP
r2MAC-r3MAC / sIP-dIP
r3MAC-ldMAC / sIP-dIP

任何涉及的L2交换机都不会修改MAC地址。

现在,为了与子网内的另一个IP通信,需要直接进行MAC通信,但是要获得该MAC地址,就需要使用子网中的广播来查找它的ARP协议。 顺便说一句,这就是您的工作站如何获取默认子网中必须存在的默认网关的MAC地址的方式。


3
综上所述,MAC是什么将消息从一跳发送到另一跳,而IP跟踪原始源和目的地。这似乎类似于邮局,在那儿我给菲尼克斯的奶奶写信,但是从邮箱中拿出来的邮递员只关心将其送到邮局,而邮局只关心将其送到分类处。中心等...
CodyBugstein14年

3
但是我的问题是,为什么要为MAC使用单独的协议?为什么不仅仅确定要跳到的下一个IP地址,并将当前的源/目标IP与原始源/目标IP一起存储?
CodyBugstein 2014年

@Imray:消除MAC协议的第一个问题需要重新设计/重写以太网和TCP / IP标准。其次,IP不是L3处唯一使用L2处的MAC地址进行通信的协议。第三,MAC地址通常与NIC上的硬件(预烧)地址相关联,而更高级别的IP出于灵活性考虑允许任意使用。第四,MAC仅在本地相关,而IP在全球相关(不考虑不属于原始设计的NAT和专用地址的最新更改)。
generalnetworkerror 2014年

14

没有任何物理上阻止您设计仅具有L2和L3 IP地址的网络。然后,“以太网交换机”将学习传入数据包的SIP地址并向DIP地址泛洪或转发。

但是,该网络将永远仅支持IP,而下一代IPvX出现时,它将不起作用,因为“以太网交换机”无法支持该协议。您也无法运行其他各种协议,例如IPX和AppleTalk,或者正在家里开发和测试的某些新协议。

抽象层可提高开发速度并鼓励创新,因为您无需重建整个房屋即可更改窗口。

现在,您可以运行相同的以太网交换机,并在从IPX到IPv4到IPv6之间迁移网络,而完全不接触您的LAN。


除了这些组件以外,没有什么可以阻止您设计该网络,这些组件仅存在您的想象中:A)学习源IP地址的以太网交换机B)没有mac地址的以太网NIC
Mike Pennington

3

IP地址和MAC地址用于不同(但至关重要)的目的:

MAC地址从一个NIC到下一个NIC获取一帧。IP地址将数据包从一台计算机发送到服务器

因此,给出以下内容:

Source Computer  <--->  RouterA  <--->  RouterB  <--->  Destination Server

IP地址是将数据包从“源”引导到“目标”的原因。但是,从源计算机到RouterA,然后从RouterA到RouterB,再从RouterB到目的地的数据包是MAC地址。

您可以在图中看到这种关系:

数据包传输-数据包如何通过Internet移动-pracnet.net/pt


当然,路由器到路由器的链接使用不具有MAC地址的协议是很常见的。
罗恩·莫平

@RonMaupin是的。当然。但是...鉴于专门询问有关MAC地址=)的问题,这有什么关系?
艾迪(Eddie)

似乎您的回答暗示着在每个跃点上都会分配一个MAC地址,这可能会引起误解。如果您的图表仅在第一跳和最后一跳上显示MAC地址,它也将起作用。这有点不完整,这就是为什么我发表评论。
罗恩·莫平

1

IP协议为支持子网路由的概念提供了基础。这意味着IP不会假设您的目的地在同一网络中-如果不是,则您的流量需要通过诸如路由器之类的中间设备进行转发。IP具有TTL /跳数限制字段,并且支持该字段。

当数据从其接口传送出去时,以太网假定目标MAC是直接可达的。以太网最初是在网络中最常见的计算机连接方式是通过物理总线拓扑结构设计的。即使现在几乎交换了所有有线以太网流量,但从逻辑上讲,它仍然像总线拓扑一样工作。因此,以太网的基本假设是具有目标MAC的节点实际上在同一网络上。IP没有这种假设。

我想您可以“入侵”以太网进行子网和路由,但是您也可以设计一种不依赖于以太网底层细节和假设的协议,这就是我们拥有IP的原因。


0

尽可能简单:

一个MAC地址是你的网卡或网络接口的物理或虚拟地址。从网络上的计算机的角度来看,它是该计算机的NIC卡的物理地址。它用于在OSI模型的第2层上将信息带到该计算机。

IP地址在第3层上是必需的。您需要它与不同子网和设备上的计算机进行通信。IP地址验证设备在网络中的“位置”。

IP地址MAC地址串联使用。地址解析协议用来在两个通过解决联系在一起 的IP地址MAC地址的单一网络中链路层内。

您可能还需要在这里查看更详细的说明。


1
保持简单:如果您有名称,则可以在本地识别自己。您需要拥有SSN,才能在全球范围内保持自己的
知名度

-2

MAC地址表示硬件,它的组装是恒定的,不同供应商在我们网络中制成的不同系统的MAC地址范围也非常不同,因此它们很难作为网络进行排列。但是使用IP地址,我们可以在我们的设备中安装设备范围为同时地址的网络。我们也无法将mac地址发送到外部网络


-2

首先,这是一个非常好的问题,涉及基本的网络基础。您的问题的底线是,我们真的不需要MAC地址即可实现连接。从理论上讲,可以构建一个仅实现IP地址的网络!但是,使用这种方案可能会引起一些实际困难。如果希望为每个网络设备手动分配IP地址,则可以避免主要的陷阱。但是,如果您需要自动分配IP地址(例如,当有太多的网络节点需要手动管理时),则无法确保为每个节点分配的恰好是单个IP​​地址或预定数量的IP地址,因为您不能相互区分,除非地址分配实体可以唯一且明确地标识请求设备,例如 通过其MAC地址(对于局域网中的任何设备都假定是唯一的)。这种无法识别的设备可能会反复请求其他IP地址,并最终给网络生存能力造成严重破坏。回到主题,建立纯IP网络所需要做的就是让网络接口适配器的数据链路层直接将其接收的任何数据帧直接传递到网络层,而不管任何MAC可比较的地址类型如何。根据其目标IP地址进行过滤,而不是在数据层进行过滤。只是为了说明这个概念,假设网络是通过互连RS-232 UART端口建立的:UART设备没有MAC地址或任何其他唯一标识符,但是您可以使用UART和IP地址构建本地网络单独,为您安装正确的UART驱动程序。希望这篇文章能给您一些关于该主题的见解。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.