<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/">
  <channel>
    <title>网络 on 翟志军 Jack Zhai</title>
    <link>https://showme.codes/tags/%E7%BD%91%E7%BB%9C/</link>
    <description>Recent content in 网络 on 翟志军 Jack Zhai</description>
    <generator>Hugo</generator>
    <language>en-us</language>
    <copyright>showme.codes</copyright>
    <lastBuildDate>Thu, 17 May 2018 00:00:00 +0000</lastBuildDate>
    <atom:link href="https://showme.codes/tags/%E7%BD%91%E7%BB%9C/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>通俗解释有了 IP 地址，为什么还要用 MAC 地址？</title>
      <link>https://showme.codes/zh-cn/2018-5-17-understand-mac-ip/</link>
      <pubDate>Thu, 17 May 2018 00:00:00 +0000</pubDate>
      <guid>https://showme.codes/zh-cn/2018-5-17-understand-mac-ip/</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;题记：既生亮何生瑜。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;摘要：标题虽然是为了解释有了 IP 地址，为什么还要用 MAC 地址，但是本文的重点在于理解为什么要有 IP 这样的东西。本文对读者的定位是知道 MAC 地址是什么，IP 地址是什么。&lt;/p&gt;
&lt;p&gt;一开始时，网络中的机器并不多。大家都连到同一个集线器就可以了，就可以实现互通。这时，机器 A 发消息到机器 B ，消息头里附上机器 B 的MAC，集线器收到消息后就广播给所有连到集线器的机器。&lt;/p&gt;
&lt;p&gt;机器 C 收到消息，发现消息里的 MAC 地址和自己的不一样，就丢弃。机器B发现消息里的 MAC 地址和自己一样，就收到下并解析。&lt;/p&gt;
&lt;p&gt;&lt;img alt=&#34;image.png&#34; loading=&#34;lazy&#34; src=&#34;https://showme.codes/assets/images/292372-dc3520e3cf34d31d.png&#34;&gt;&lt;/p&gt;
&lt;p&gt;这样机制带来问题很明显：首先每次广播，给所在网络带来不必要的浪费。所以，就出现了交换机。它能识别消息里的目标 MAC 地址后，直接就消息丢到机器 B 所连接的端口中。另一个角度，交换机必须记住所有的 MAC 地址和端口之间的关系。&lt;/p&gt;
&lt;p&gt;这样的机制在网络规规模小的时候是高效的。但是当网络规模扩大到全球的时候，不可能让一台交换机记录下全球这么多的网络设备，也不可能让全球的机器连接到一台交换机上。&lt;/p&gt;
&lt;p&gt;那如果是多台交换机呢？&lt;/p&gt;
&lt;p&gt;想像一下，你是斯坦福的学生，你的电脑 x 的网络直连的是学校的交换机，而学校的交换机又连美国国家网络交换机。而美国国家网络交换机又直接的是中国国家网络交换机，中国服务器 y 直连的是中国国家交换机。&lt;/p&gt;
&lt;p&gt;你想访问中国的服务器 y 中的资源。你了解到服务器 y 的 MAC 地址是00:0C:29:01:00:12，所以你在消息里附上这个 MAC 地址。&lt;/p&gt;
&lt;p&gt;学校交换机收到消息后，拿到 MAC 地址后就愣了，这是要发给谁啊？因为中国服务器 y 并不是直连学校交换机的。这时，学校交换机有一个选择，就是收到不明的 MAC 地址时，一律转发给默认端口。斯坦福交换机就将消息转给美国国家交换机。&lt;/p&gt;
&lt;p&gt;美国国家交换机同样发愣了，因为没有这条 MAC 地址对应的端口。它又直接向默认端口：中国国家网络交换机。&lt;/p&gt;
&lt;p&gt;中国国家网络交换机收到消息，发现自己记录了 MAC 地址 对应的是服务器 y。就直接将你这位斯坦福学生的消息转发到服务器 y 所连接的端口。&lt;/p&gt;
&lt;p&gt;最终，我们的服务器 y 终于收到来自美国斯坦福学生的资源访问请求。&lt;/p&gt;
&lt;p&gt;&lt;img alt=&#34;image.png&#34; loading=&#34;lazy&#34; src=&#34;https://showme.codes/assets/images/292372-dee29f5c16c55875.png&#34;&gt;&lt;/p&gt;</description>
    </item>
  </channel>
</rss>
