网络层需要定义发送方和接收方的位置,并且在发送方和接收方中众多的交换机,路由器之中找到一个合理的路径进行传输数据
可以看到我们的IP地址只有32位,也就是说我们最多有42亿9000万个不同的主机,但是由于我们有各种服务器,物联网装备等等,所以这个数量对于我们来说是不够用的,我们通过以下
方式解决这个问题
并不是一个设备出厂时就绑定好一个IP地址,而是只有当其上网时才给分配一个IP地址,不上网时就把IP地址回收。这样的话当美国人那边到了深夜,就很多人不上网了,就可以给我们这分配很多的IP地址
并不是每个主机都有独立的IP地址
将IP地址分成两类
我们约定在同一个局域网内部,IP地址不可以重复,而在不同的局域网下,IP地址可以重复。在局域网内部如果访问外网的服务器,就用一个外网的IP来代替局域网中的所有设备
例如我的路由器的IP地址是1.2.3.4,我有三个设备,手机IP是192.168.1.1,平板IP是192.168.1.2,电脑IP是192.168.1.3。这些设备在我的局域网中的IP地址是不能相同的。当我想拿我的手机访问CSDN的服务器(IP是5.6.7.8)时,会构造这样的一份数据报
源IP地址:192.168.1.1
目的IP地址:5.6.7.8
而当这个数据报传输到路由器上时,会将192.168.1.1替换成1。2.3.4,并且记录这个映射关系,然后把数据发送给CSDN的服务器,服务器会收到这样的数据报
源IP地址:1.2.3.4
目的IP地址:5.6.7.8
然后CSDN会根据请求生成响应,构造下面这样的数据报
源IP地址:5.6.7.8
目的IP地址:1.2.3.4
而当这个数据发送到路由器上,路由器会根据之前的映射关系,把1.2.3.4替换成192.168.1.1,再发送回我的手机上
这样的话,我们就可以用一个外网IP地址代替很多的设备的IP地址,也就可以解决IP地址数量不够用的问题了
上述两个方法只是把不够用的资源通过不同的分配方式分给了主机,使得IP地址够用。然而想要根本上解决这个问题,我们可以使用IPv6这个协议。
IPv4使用4个字节表示IP地址,因此只有42亿个
而IPv6使用14个字节表示IP地址,这个数量就算给地球上每个沙子分配一个IP地址,也是够用的。
而IPv6之所以没有大量普及,就是因为其和IPv4不兼容,因此需要花钱换路由器。然而在国家的强制要求下,许多企业都升级成了IPv6,这也是防止美国对我们的限制
主要分为以下两个部分
也就是说,同一个局域网下的设备的网络号是相同的,不同的主机有不同的主机号,两个相邻的局域网的网络号是不同的
而子网掩码(32位)可以划分出来从哪一位到哪一位是网络号
例如这32位中前面是23个一,就代表前23位是网络号,后9位是主机号,而所有连接在同一个局域网中的设备的网络号相同,因此前23位都是相同的
而如果我的路由器连接了两个局域网,那么这两个局域网的网络号是不同的,也即是前23位是不同的
之所以我们的数据能够从发送者精确的规划出路径传送到接受者,就是因为路由选择的概念
当我们的数据到达路由器时,会把我们的数据报中的IP地址提供给路由器,路由器中有一个叫“路由表”的数据结构,也就是这个路由器认识的通往各个IP地址的路,如果认识,就直接告诉数据报应该怎么走,如果不认识,路由器就会把这个数据报转发给别的有可能认识的路由器
因此这个概念就相当于我们出去找地一样,问一个大爷路,这个大爷也许不知道应该怎么走,但是会告诉你一个大致的方向,你按照这个方向再去问问别人怎么走