我们假设有两个独立且毫不相关的计算机,一台在青海,一台在河南,想要进行数据传输(聊天),没网是不行的。这个网指的就是互联网( Internet )。这个 Internet 它是一个通信协议。什么是协议?打个比方,就好比我们打电话,在中国,中国有十几亿人,地大物博,全国各地都有自己的方言,还有些地方使用自己的民族语言,这时候想要良好的沟通就必须使用一个统一的标准,就是普通话。大家都讲普通话,沟通起来就没有问题了。那如果是不同国家进行沟通呢?我们可以选择使用英语进行交流,那英语就是全世界国家通用的一个标准,计算机就好比是分布在全世界各个角落的人,计算机之间通话也要找一个统一的标准,这个标准就是 Internet 标准,又叫做 Internet 协议。
我在上面说了 Internet 协议,互联网协议按照功能的不同,分为 osi 七层, tcp / ip 五层, tcp / ip 四层协议。如下图:
osi 的七层协议体系结构的概念清楚,理论也比较完善,但它既复杂又不实用, ISO 制定的 osi 协议参考模型的过于庞大、复杂招致了许多批评。于此对照,由技术人员自己开发的 TCP / IP 协议获得了更为广泛的应用。因此,我们只需要弄明白 TCP / IP 五层协议 就能了解和明白计算机最底层的通信是怎么回事。
现在大家先想一想生活中,如果是之前说的广播,就相当于在一间教室里你正在上课,你要给某个女孩传纸条,那你要在纸条外面写上你和你要传的女孩的名字,再在里面写上你要写的话,写好后折起来,你和女孩的名字在外,内容在内,然后让同学一个一个帮你传,每个同学在传的时候都会看外面写的名字,如果不是他,就继续传,直到传到的人是你写的那个女孩为止。那这间教室就相当于一个局域网。好,现在我们要实现局域网和局域网之间的通信,比如此时位于青海的你要给河南的朋友送东西,你不可能用广播的方式了,你只能快递,这个青海和河南以及还有很多不同的省份是我国的土地划分中的一部分,每一个省也可以看作是一个个局域网,那在网络中,我国就相当于广域网,那不同的局域网是如何划分的呢?MAC 地址是没办法区分的,因为 MAC 地址上只有厂商的流水号,这就引出我要说的网络层,网络层引出了一套新的地址来区分不同的局域网/子网,这一套地址就是网络地址。
规定网络地址的协议叫 IP 协议,它定义的地址叫 IP 地址。其实跟我国的省份名差不多,继续说送快递,你要把送的东西包装好,在外面写上你自己的地址和省份地址,还有朋友的地址和省份地址,交给青海的快递公司,然后青海的快递公司转交给河南的快递公司,最后由河南的快递公司分配给你朋友,你朋友就收到快递了。在这有两点需要注意:
你要同时写两个地址,自己的地址( MAC 地址)和省份地址( IP 地址),这样就能确定所要 接收和发送人的具体的位置了。
青海的快递公司和河南的快递公司就相当于路由器
子网掩码
在这给大家普及一下子网掩码,我们上面说有了 IP 地址和 MAC 地址,我们就能让任何计算机之间进行通信了,那现在再想想,如果我要用我的计算机给另外一台计算机实现通信,我是不是要判断要通信的计算机是否和我的计算机在同一个 IP 地址中,相当于上面例子中我和我要送东西的朋友是否在一个省,这个时候就需要用子网掩码,我拿着我的 IP 地址和对方的子网掩码通过计算,判断是否在同一个 IP 地址下,如果在同一个IP 地址下,我可以用广播的形式进行通信,如果不在同一个 IP 地址下,我可以先把数据传给我方的路由器,再由我方的路由器把数据传给对方的路由器,最后由对方的路由器把数据传给要接收数据的计算机。这样说,再联系上面已经说过的,我想不难理解了。
再回顾一下啊,以太网的头是包含了自己的 MAC 地址和目标 MAC 地址的,那如何查 找目标 MAC 地址呢?前辈们弄了一个叫 ARP 协议的东西专门来解析目标 MAC 地址。它是如何工作的?首先,它是数据链路层的东西,在我们发送一个数据包的时候是包含着对方的 IP 地址的。例如我(172.13.4.58)想发送一条数据给女朋友(172.13.4.90),首 先,我得先拿到女朋友的MAC地址才可以通信。此时,我们会先计算一下我和女朋友 是否在一个子网内(子网掩码)
在一个子网内,直接广播发送一个数据包
子网内的计算机发现了这个包之后会返回一个数据包并且带有 MAC 地址,这样就通过 IP 地址找到了目标主机的 MAC 地址,接下来就可以进行数据传输了。