在 数据链路层 中,我们Get了数据包的定义(帧=标头+数据)、网卡的MAC地址、广播发送方式三个重要概念。并且我们知道在技术上,依靠MAC地址和广播的发送的方式,我们其实可以实现全世界范围内的计算机互相通信(比如西安和芝加哥)。留给你的问题是:广播的方式到底合适吗?回答:不能适用一般数据包的发送,会给网络造成很大的压力,是资源的浪费。就是这样,世界上这么多计算机,两两通信如果所有人都会收到,网络上的数据量将是不可估计的,会造成灾难。
实际上呢,目前的互联网在设计的时候,广播的方式是局限在发送者所在的子网络的。互联网是无数子网络共同组成的一个巨型网络,很难想象西安和芝加哥的电脑会在同一个子网络,这是不可能的。如下图是互联网的组成情况,想想我们之前对网络的定义:由多个局域网相连组成的,下面的子网络也就是局域网。
因此,必须找到一种方法,能够区分哪些MAC地址属于同一个子网络,哪些不是。如果是同一个子网络,就采用广播方式发送,否则就采用”路由”方式发送。(”路由”的意思,就是指如何向不同的子网络分发数据包,这是路由器干的活,我们先不涉及)遗憾的是,MAC地址本身无法做到这一点。它只与厂商有关,与所处网络无关。
这就导致了”网络层”的诞生。它的作用是引进一套新的地址,使得我们能够区分不同的计算机是否属于同一个子网络。这套地址就叫做”网络地址”,简称”网址”。
于是,”网络层”出现以后,每台计算机有了两种地址,一种是MAC地址,另一种是网络地址。两种地址之间没有任何联系,MAC地址是绑定在网卡上的,网络地址则是管理员分配的,它们只是随机组合在一起(因此网址可以变化)。
网络地址帮助我们确定计算机所在的子网络,MAC地址则将数据包送到该子网络中的目标网卡。因此,从逻辑上可以推断,必定是先处理网络地址,然后再处理MAC地址。
规定网络地址的协议,叫做IP协议。它所定义的地址,就被称为IP地址。
目前,广泛采用的是IP协议第四版,简称IPv4。这个版本规定,网络地址由32个二进制位组成。
我们习惯用分成四段的十进制数表示IP地址,从0.0.0.0一直到255.255.255.255。
互联网上的每一台计算机,都会分配到一个IP地址。这个地址分成两个部分,前一部分代表网络,后一部分代表主机。比如,IP地址172.16.254.1,这是一个32位的地址,假定它的网络部分是前24位(172.16.254),那么主机部分就是后8位(最后的那个1)。处于同一个子网络的电脑,它们IP地址的网络部分必定是相同的,也就是说172.16.254.2应该与172.16.254.1处在同一个子网络。