计算机网络之网络层

计算机网络之网络层

数据链路层是解决局域网内主机通信的问题,而我们的互联网则是由无数个小的局域网组成的。网络层就是来解决不同的局域网之间主机通信的问题。

这里有必要提指出网络层提供的两种服务。互联网发展初期,有人推崇计算机网络应该使用和电信网相同方式的「虚电路服务」,在两台主机间建立一条虚电路,提供通信所需一些资源,由网络提供可靠性传输服务。如下图

但是最终人们选择了简单灵活,不提供可靠性传输的「数据报服务」,可靠传输由传输层利用用户主机处理。这种方式使得网络造价低得多,极大的促进了互联网的发展。事实证明,这也是极其正确的选择。如下图

这里写图片描述

1. 什么是虚拟互联网络?

简单的说就是:大大小小的网络通过一些「中间设备」在 IP 协议的规定下将各种异构网络连接在一起,组成了互联网,从网络层看起来就好像一个统一的网络。这样极大的方便讨论网络层的问题。这些「中间设备」则有以下这些:

  • 工作在物理层的「转发器」
  • 工作在数据链路层的「网桥」,「交换机」
  • 工作在网络层的「路由器」
  • 网络层以上使用的「网关」

2. 大名鼎鼎的 IP 地址到底是何方神圣?

上篇文章已经讲过,在局域网中只有通过广播的方式得知接收方的 MAC 地址才能够进行通信,而在巨大的互联网中显然是不可能使用这种方式的。然后人们就想出了 IP 地址这样一个逻辑上的地址来代表互联网中的某个网络的某一台主机。通过 IP 地址找到目标主机所在的网络后,再通过广播的方式得到目标主机的 MAC 地址。

2.1 网络的划分

所以,你应该能想到, 4 个字节的 IP 地址,分为网络号和主机号两部分了吧!那当我们拿到一个 IP 地址时,到底哪一部分代表网络号,哪一部分代表主机号呢?

早期时,人们将 IP 地址分为如下 A 类、 B 类、 C 类、D 类、 E 类。如图:

这里写图片描述

那么各个类别的 IP 地址所拥有的最大网络数、第一个网络号,最后一个网络号,每个网络中的最大主机数分别是多少呢?参见下图:

这里写图片描述

A 类:网络号占 1 个字节,首位固定为 0

最大网络数,由于网络号全部为 0 的网络代表的是本网络,一般不指派,网络号为 127 的网络号用作本机给进程间通信,也不指派,因此网络数要减去 2 。

最大主机数,则因为主机号全部为 0 表示的是本主机所在的网络号,不可指派,主机号全部为 1 的则因为代表的是本网络的所有主机,不可指派。因此,最大主机数也要减去 2 。其他类别的网络同理,最大主机数都要减去 2

B 类:网络号占 2 字节,前两位固定为 10

最大网络数,网络号为 128 . 0 . 0 . 0 一般不指派,因此网络数要减去 1

C 类:网络号占 3 个字节,首位固定为 110

最大网络数,网络号为 192 . 0 . 0 . 0 一般不指派,因此网络数要减去 1

后来,人们发现这样分类导致 IP 地址利用率非常低下, IP 地址可能很快会用完,就想出了构造子网的方法。当一个机构需要使用一个和原来局域网不同的新的局域网时,而它申请的 IP 地址又没有用完,完全可以自己在其内部构造一个子网,而不需要重新申请新的 IP 地址 。 那么如何构造子网呢?

其实就是在原有的主机号上占用一部分「位」用来作为子网号,这种方式使得,在网络外部并看不出来是否划分了子网,仅此网络内部知晓。

这里写图片描述

如上图,我们以 B 类 IP 地址子网划分为例,解释如何构造子网,以及「子网掩码」的概念。

这里我们规定:要确定一个 IP 地址所处的网络号,必须由 IP 地址和它同为 4 字节的子网掩码按位相与得来的,对于没有划分子网的网络,其默认掩码如下图所示,即网络号所在的位全部置为 1

这里写图片描述

同理,在构造子网的时候,我们只要确定子网号所占的位数 ( 即确定将前面哪几位置为 1 ),就可以确定这个网络可以拥有的最大子网络数、第一个子网络号,最后一个子网络号,每个子网络中的最大主机数。

上述的 「 B 类 IP 地址子网划分」图,已经给出了子网所占位数和其他数据所对应的关系。不言而喻,根据需要划分子网的个数,确定网络号所占位数是「因」,子网掩码是「果」。因果关系搞清楚了,才能理解子网掩码,其实就是人为造出来由局域网内部确定内部的哪些主机是属于哪些子网的占 4 个字节的序列号而已。

再后来,人们发现划分子网还是不够灵活,仍然有许多 IP 地址被浪费。这是因为早期按照字节个数划分网络号的方式,不够灵活。应该更加人性化,按照位数来划分网络号,这种方式称为:无分类编址 CIDR ,也称作构造超网。

这种方式将 IP 地址按这样的格式表示: IP 地址 / 网络号所占位数。举例:128.14.35.7 / 20

这表示 IP 地址 128.14.35.7 的网络号所占位数为 20 位,可以轻易得出此 IP 地址的子网掩码为 255.255.240.0 ,网络号为 128.14.32.0

最后,即便 IP 地址经过改造,极大提高利用率,还是不够用了,这回标准制定者们直接将 IPv4 升级成了 IPv6 , IP 地址所占字节数直接从 4 个字节扩展到了 16 个字节,这回 IP 地址是可以保证彻底用不完了。

3. 路由选择协议?

当分组需要通过路由器分发到别的网络中,以便到达目的网络的时候,就涉及到路由选择的问题了。然而,由于 Internet 的规模太大,如果路由器中的路由表包含了所有网络的信息,会使得处理起来太麻烦等等问题,显然是不合理的。况且有的单位并不希望外部了解其内部的网络实现细节。因此,可以将互联网络划分为多个小的自治系统,系统内部采用的协议就叫做「内部网关协议」,自治系统之间采用的协议就叫做「外部网关协议」。

3.1 内部网关协议

这里仅仅介绍 RIP 协议,它要求每个路由器必须维护从它到每一个目的网络的距离,记录在路由表上。

RIP 协议的「距离」也称「跳数」,允许一条路径经过的路由器数目不得超多 15 个,它在规定的时间间隔和自己相邻的路由器交换所拥有的路由表,动态更新路由表,更新的原则称为「距离向量算法」。

接下来讲讲距离向量算法:

表 a:

目的网络距离下一条路由器
Net23R4
Net34R5

表 b:

目的网络距离下一条路由器
Net13R1
Net24R2
Net31直接交付

当路由器 R5 和路由器 R4 交换路由信息时 ( 只讨论 R5 的变化, R4 的变化同理 ),

第一步,将 R4 的路由表 b 的副本的所有下一跳改为 R1,距离全部加 1

第二步,对照 R5 的路由表 a,将表 a 中存在,表 b 中不存在的目的网络,添加至副本中

第三步,若某网络同时在表 a 和表 b 中存在,则比较下一跳路由器是否相同。相同则不改变副本的内容,不同则比较距离大小。若表 a 中的距离更小,则添加此条信息至副本中,距离更大,则不变。

最后的路由器 R5 更新后的路由表如下:

目的网络距离下一条路由器
Net14R4
Net25R4
Net32R4
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值