如果我的计算机有IP地址,为什么需要MAC地址?
如果我的计算机有IP地址,为什么需要MAC地址?
Answers:
无需进入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?
一些原因:
MAC地址和IP地址在Internet协议套件的不同层上运行。MAC地址用于在第2层的同一广播网络中标识机器,而IP地址在第3层用于在整个不同网络中标识机器。
即使您的计算机具有IP地址,它也仍然需要MAC地址才能找到同一网络上的其他计算机(特别是通往网络/互联网其余部分的路由器/网关),因为每一层都在使用底层。在前面提到的页面上,您可以找到一些不错的图,详细解释了协议套件。
当您了解到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地址的方式。
MAC
是什么将消息从一跳发送到另一跳,而IP跟踪原始源和目的地。这似乎类似于邮局,在那儿我给菲尼克斯的奶奶写信,但是从邮箱中拿出来的邮递员只关心将其送到邮局,而邮局只关心将其送到分类处。中心等...
没有任何物理上阻止您设计仅具有L2和L3 IP地址的网络。然后,“以太网交换机”将学习传入数据包的SIP地址并向DIP地址泛洪或转发。
但是,该网络将永远仅支持IP,而下一代IPvX出现时,它将不起作用,因为“以太网交换机”无法支持该协议。您也无法运行其他各种协议,例如IPX和AppleTalk,或者正在家里开发和测试的某些新协议。
抽象层可提高开发速度并鼓励创新,因为您无需重建整个房屋即可更改窗口。
现在,您可以运行相同的以太网交换机,并在从IPX到IPv4到IPv6之间迁移网络,而完全不接触您的LAN。
IP地址和MAC地址用于不同(但至关重要)的目的:
MAC地址从一个NIC到下一个NIC获取一帧。IP地址将数据包从一台计算机发送到服务器
因此,给出以下内容:
Source Computer <---> RouterA <---> RouterB <---> Destination Server
IP地址是将数据包从“源”引导到“目标”的原因。但是,从源计算机到RouterA,然后从RouterA到RouterB,再从RouterB到目的地的数据包是MAC地址。
您可以在此图中看到这种关系:
IP协议为支持子网和路由的概念提供了基础。这意味着IP不会假设您的目的地在同一网络中-如果不是,则您的流量需要通过诸如路由器之类的中间设备进行转发。IP具有TTL /跳数限制字段,并且支持该字段。
当数据从其接口传送出去时,以太网假定目标MAC是直接可达的。以太网最初是在网络中最常见的计算机连接方式是通过物理总线拓扑结构设计的。即使现在几乎交换了所有有线以太网流量,但从逻辑上讲,它仍然像总线拓扑一样工作。因此,以太网的基本假设是具有目标MAC的节点实际上在同一网络上。IP没有这种假设。
我想您可以“入侵”以太网进行子网和路由,但是您也可以设计一种不依赖于以太网底层细节和假设的协议,这就是我们拥有IP的原因。
首先,这是一个非常好的问题,涉及基本的网络基础。您的问题的底线是,我们真的不需要MAC地址即可实现连接。从理论上讲,可以构建一个仅实现IP地址的网络!但是,使用这种方案可能会引起一些实际困难。如果希望为每个网络设备手动分配IP地址,则可以避免主要的陷阱。但是,如果您需要自动分配IP地址(例如,当有太多的网络节点需要手动管理时),则无法确保为每个节点分配的恰好是单个IP地址或预定数量的IP地址,因为您不能相互区分,除非地址分配实体可以唯一且明确地标识请求设备,例如 通过其MAC地址(对于局域网中的任何设备都假定是唯一的)。这种无法识别的设备可能会反复请求其他IP地址,并最终给网络生存能力造成严重破坏。回到主题,建立纯IP网络所需要做的就是让网络接口适配器的数据链路层直接将其接收的任何数据帧直接传递到网络层,而不管任何MAC可比较的地址类型如何。根据其目标IP地址进行过滤,而不是在数据层进行过滤。只是为了说明这个概念,假设网络是通过互连RS-232 UART端口建立的:UART设备没有MAC地址或任何其他唯一标识符,但是您可以使用UART和IP地址构建本地网络单独,为您安装正确的UART驱动程序。希望这篇文章能给您一些关于该主题的见解。