原作写的真好,转载记录了 有了 IP 地址,为什么还要用 MAC 地址?

看了一下,大家说的基本都是教科书上的内容(或者演绎) 。今天给大家说点教材上没有说的内容 。最早的网络是「猫」+电话线 。一台电脑接一个猫,连一条电话线 。理论上只要完成拨号,双方就能进行通信 。这个过程跟两个人电话没什么两样 。

原作写的真好,转载记录了  有了 IP 地址,为什么还要用 MAC 地址?

文章插图
点对点链路,来源:https://labpub.com/learn/silver/wi7/modems.html
因为是一条电话线的两头,这边电脑发出的所有信号自然会被另一端的电脑收到 。所以不需要给双方指定 MAC 地址或者 IP 地址之类东西 。这种链路叫点对点链路 。点对点链路的优点是简单清晰,但缺点也很明显——不支持连接多台电脑 。如果你想连多台电脑,就需要给电脑配置多个猫 。如果有多台电脑需要相互连接,就需要每台的电脑的每个猫都连到一起 。这样做不但成本很高,管理负担也非常重 。这种连接方式叫全网状(Full Mesh)拓朴网络 。
原作写的真好,转载记录了  有了 IP 地址,为什么还要用 MAC 地址?

文章插图
全网状拓朴,来源:https://www.propatel.com/what-is-mesh-topology/Mesh
网络也不是一无是处,它最大的优点就是可靠性高 。网络中的部分链接出现故障不会影响到整个网络 。但成本高,维护困难的缺点真是抗不住 。成本高归高,计算机之间还是以点对点的方式进行通信 。所以这类网络本质上跟第一种点对点链路没有区别 。设备之间的通信也不需要设置 MAC 或 IP 。为了降低成本,人们想了另外一种连接方式,总线网线 。
原作写的真好,转载记录了  有了 IP 地址,为什么还要用 MAC 地址?

文章插图
总线网络,来源:https://subscription.packtpub.com/book/cloud_&_networking/9781838643508/6/ch06lvl1sec43/bus-topology
之所以成本低,是因为所有的电脑只需要接一个猫,然后所有猫接到同一条网线上(叫总线,早期使用的是同轴电缆) 。组网成本确实降低了,但使用成本却上升了 。如果上图中A想给B发数据,可以启动自己的猫开始发送 。如果此时C也给D发数据,那就会形成干扰,最终谁的数据也发不出来 。为了解决这个问题,人们规定,如果想发数据,必须先使用自己的猫「听」一下网线上有没有其他电脑正在通信 。如果有,就自觉等待一段时间,然后再检查 。这套机制后来演化了成载波侦听多路访问/碰撞检测(CSMA/CD)机制 。教科书上都会讲这个CSMA/CD 。解决了冲突问题,总线网络就能工作吗?不能!我们在前面讲的点对点链路两边各有一台电脑,收发双方非常明确,不需要指定MAC或者IP 。但在总线网络中,所有电脑共享一条电缆,可以同时接收网络上的全部信号 。那大家怎么确定数据是发给自己的呢?为了解决这个问题,人们发明了数据帧的概念 。帧是发送数据的最小单位 。当时是用很多链接层协议,以太网只是后面设计的一种 。但不同的帧结构大同小异,核心都包含目标地址、源地址和数据三部分 。
原作写的真好,转载记录了  有了 IP 地址,为什么还要用 MAC 地址?

文章插图
以太网帧结构,来源:https://www.minitool.com/lib/ethernet-frame.html
这里首次出现了地址这个概念 。正是因为总线网线中所有设备共享总线,所以需要通过引入地址的概念来区分不同的设备 。对于以太网,这个地址就是我们常说的MAC地址 。这个时候的「猫」就已经变成了我们现在常说的网卡了 。以太网规定MAC地址占6个字节,也就前面说的48位 。所有发出的包都带着目标电脑的MAC地址 。网络中所有设备收到数据后会自觉比较目标地址是不是自己,如果不是就丢弃 。你没看错,全凭大家自觉 。这样就解决了不同电脑之前相互通信的问题 。引入地址的概念,也就产生了新的问题——如何给计算机设置MAC地址呢?不同的网络有不同的处理方式 。曾经有一种叫的网络协议,它的MAC地址只有1个字节(8位),需要网络管理员通过网卡上的拨动开关手工设置 。好在当年能连网的设备很少,8位地址可以支持最多256台设备连网,也够用了 。