通俗解释有了 IP 地址,为什么还要用 MAC 地址?

题记:既生亮何生瑜。 摘要:标题虽然是为了解释有了 IP 地址,为什么还要用 MAC 地址,但是本文的重点在于理解为什么要有 IP 这样的东西。本文对读者的定位是知道 MAC 地址是什么,IP 地址是什么。 一开始时,网络中的机器并不多。大家都连到同一个集线器就可以了,就可以实现互通。这时,机器 A 发消息到机器 B ,消息头里附上机器 B 的MAC,集线器收到消息后就广播给所有连到集线器的机器。 机器 C 收到消息,发现消息里的 MAC 地址和自己的不一样,就丢弃。机器B发现消息里的 MAC 地址和自己一样,就收到下并解析。 这样机制带来问题很明显:首先每次广播,给所在网络带来不必要的浪费。所以,就出现了交换机。它能识别消息里的目标 MAC 地址后,直接就消息丢到机器 B 所连接的端口中。另一个角度,交换机必须记住所有的 MAC 地址和端口之间的关系。 这样的机制在网络规规模小的时候是高效的。但是当网络规模扩大到全球的时候,不可能让一台交换机记录下全球这么多的网络设备,也不可能让全球的机器连接到一台交换机上。 那如果是多台交换机呢? 想像一下,你是斯坦福的学生,你的电脑 x 的网络直连的是学校的交换机,而学校的交换机又连美国国家网络交换机。而美国国家网络交换机又直接的是中国国家网络交换机,中国服务器 y 直连的是中国国家交换机。 你想访问中国的服务器 y 中的资源。你了解到服务器 y 的 MAC 地址是00:0C:29:01:00:12,所以你在消息里附上这个 MAC 地址。 学校交换机收到消息后,拿到 MAC 地址后就愣了,这是要发给谁啊?因为中国服务器 y 并不是直连学校交换机的。这时,学校交换机有一个选择,就是收到不明的 MAC 地址时,一律转发给默认端口。斯坦福交换机就将消息转给美国国家交换机。 美国国家交换机同样发愣了,因为没有这条 MAC 地址对应的端口。它又直接向默认端口:中国国家网络交换机。 中国国家网络交换机收到消息,发现自己记录了 MAC 地址 对应的是服务器 y。就直接将你这位斯坦福学生的消息转发到服务器 y 所连接的端口。 最终,我们的服务器 y 终于收到来自美国斯坦福学生的资源访问请求。 ...

2018-05-17 · 1 min · 111 words · 翟志军 Jack Zhai