武汉大学信管专业期末复习系列——《计算机网络》(谢希仁版)(网络层)
武汉大学信管专业期末复习系列——《计算机网络》(谢希仁版)(网络层)
*************************************************************************
免费订阅我的“信息管理与信息系统专业课期末复习”专栏,后续会相继推出其他专业课和平台课的期末复习资料哦
*************************************************************************
全文共计12340字,整理不易,如果觉得对你有帮助的话麻烦点个赞加收藏鸭~
目录
文章以上课老师讲述重点和PPT为复习内容,不同学校可能略有差异,但只要教材相同差别就不会太大,毕竟重点都是相通的。另外在讲的过程中我不会完全按照教材的顺序来,而是以我认为方便的方式进行讲解。
本章重点:
(1) 虚拟互连网络的概念
(2) IP 地址与物理地址的关系
(3) 传统的分类的 IP 地址(包括子网掩码)和无分类域间路由选择 CIDR
(4) 路由选择协议的工作原理
下面将一一介绍:
1. 网络层提供的两种服务
1. 面向连接的方式(虚电路服务):建立虚电路,保证通信需要的一切资源
2. 无连接的方式(数据报服务):网络层向上只提供灵活简单的、无连接的、尽最大努力交付的数据报服务。独立发送,特点是无顺序,还可能出错,丢失,重复。但是更健壮。
尽最大努力交付的好处如下:
可以使路由器做的简单,价格低廉(和电信网里的交换机比较)。如果主机间的进程要求可靠的,可以让主机的运输层负责,不需要网络层来负责

2.网际IP协议
2.1 虚拟互联网络
含义:不同的物理网络存在异构性(比如物理地址都不一样,以太网和卫星网),而虚拟互联网就能屏蔽物理网络的异构性。而IP协议就可以把这些性能各异的网络从用户看起来好像是一个统一的网络,期间最关键的就是IP地址,不管是卫星网络还是以太网,都是用的IP地址,路由器看的只是IP地址。这样当互联网上的主机进行通信时,就好像在一个网络上通信一样,而看不见具体的异构设备。
只要记住IP协议解决了物理网络异构性的问题就可以理解虚拟互联网络了。
下面将介绍网络层的重点——IP协议,在开始介绍IP地址的三个历史阶段前,我先进行一个总的概括,防止有同学看到后面逐渐分不清这三种IP编址的区别。
- 首先,我们需要知道IP地址指的是什么,所谓IP地址就是给每个因特网上的主机(或路由器)分配一个在世界范围是唯一的32位的标识符。
需要注意的是,主机一定是在因特网上的(全球最大的互联网),且一定有一个全球唯一的IP地址。而有些IP地址并不能在因特网上使用,而是供机构内部使用,被称为专用地址。我们大部分人家里使用的ip都是属于这种,是无法直接连接到因特网的。那就会有同学问了,但我不是可以上网吗?那其实是由ISP(网络服务提供商)动态分配给你的一个全球唯一的IP地址,并非你家路由器上写的IP地址能连网。
- 其次,我们需要知道的是IP地址的划分经过了三个历史阶段,分别是:
- 分类的IP地址。这是最基本的编址方法
- 子网的划分。这是对最基本的编址方法的改进
- 构成超网。这是比较新的无分类的编址方法,上面两个都把IP地址主要分成了A,B,C三类。
大家别着急,接下来我会按顺序对三种IP编址方法逐一介绍。不过这三种方法虽然不同,但是IP地址还是有些共性或者说特点是需要我们记住的:
1. ip地址从宏观上都可以看做是:网络号+主机号,而不论是哪种编址方法。一个网络号在整个因特网(注意IP地址都是在因特网中提的)必须是唯一的;一个主机号在它前面的网络号所指明的网络范围内必须是唯一的。这样带来的好处就是第一:ip地址管理机构只需要分配网络号(主机号位填0,如网络号222.1.1.0,),剩下的主机号由被分配的单位自行分配;第二:路由表的项目数大幅度减少,减少了路由表的存储空间和查找路由表的时间。
2. ip地址是标志一个主机和一条链路的接口:
路由器至少要有两个ip地址,特别强调网络号要不一样,因为连接了至少两个网络,主机插多个网卡也可以有多个ip地址
3. 一个网络是指具有相同网络号的主机的集合,转发器或网桥连接起来的若干个局域网仍为一个网络。
4. 在IP地址中,所有分配到网络号的网络都是平等的,即因特网平等的对待每一个IP地址。
OK,做完背景介绍以后,我们可以开始正式对ip地址的三种编址方法进行说明啦。
2.2 分类的IP地址
2.2.1 含义
前面提到,ip地址都可以看做是网络号+主机号的形式,而所谓的分类的ip地址不过是把前面的网络号进行了划分,一共分为五类:A,B,C,D,E。但常用的是前面的三类A类地址,B类地址和C类地址。由此可见,通过分类的ip地址,一个IP地址不仅指明一个主机,还指明了主机所连接到的网络(这为后面路由器中的路由表和路由选择做了铺垫)。
2.2.2 点分十进制法
ip地址都是32位的,所以如果采用二进制表示不利于人脑的记忆,于是就有了点分十进制表示法:将32位的ip地址中的每8位插入一个空格进行分割,并且每8个二进制数用十进制表示。下面举个栗子:
防止有同学忘记十进制和二进制的转换法则,这里贴个图帮大家回忆一下,怎么算我就不写了哈:
- 十进制转二进制
- 二进制转十进制

现在有一个二进制的ip地址是:10000000.00001011.00000011.00011111
我们以点号为分割符,每8个二进制数转换成一个十进制数。
第一个字节就是128,第二个字节是11,第三个字节是3,第四个字节是31
于是10000000.00001011.00000011.00011111的点分十进制表示法就是128.11.3.31,是不是很简单?
2.2.3 常见的三类IP地址
1. A类地址:网络号占一个字节,主机号占3个字节,且以0开头的ip地址就属于A类地址。
关于A类地址的几个特性这里提一下:
- A类地址可指派的网络号是126个(2^7 - 2),注意减2的原因如下:第一,IP地址中的全0不使用。网络号字段为全0的IP地址是保留地址(这里减掉了A类网络号00000000);第二,网络号为127(即01111111)保留作为本地软件环回测试本主机之间进程的通信之用(这里减掉了A类网络01111111)。所以A类网络少的两个网络号分别是全0即00000000和127即01111111
- A类地址的主机号占3个字节,最大主机数是2^24 - 2,注意减2的原因是:全0的主机号表示该IP地址是本主机所连接到的单个网络地址;全1的主机号表示该网络上的所有主机。
2. B类地址:网络号占两个字节,主机号也占两个字节,且以10开头的ip地址就属于B类地址。
关于B类地址的几个特性这里提一下:
- B类地址可指派的网络号是(2^14 - 1) ,这里B类地址减1的原因大家注意。首先因为B类地址开头已经固定为10对吧,所以不存在IP地址全0的情况,这就少减一个网络号,然后B类地址也不存在127,而是从128开始,按理来说就不应该减掉任何的网络号啊。但是我翻阅课本后发现,课本说“但实际上B类网络地址128.0.0.0是不指派的,而可以指派的B类最小网络地址是128.1.0.0”,也就是课本告诉我们B类地址一定要减一个128.0.0.0的ip地址,或者说128.1的网络号。所以小伙伴们在这里就不用纠结了,因为课本说了B类地址要减一个网络号,大家记住就可以了。感兴趣的同学也可以自己查一下为什么128.0.0.0不指派。所以B类网络少的一个网路号就是128.0
- B类地址的主机号占2个字节,最大主机数是2^14 - 2,注意减2的原因是:全0的主机号表示该IP地址是本主机所连接到的单个网络地址;全1的主机号表示该网络上的所有主机。可以发现和A类地址是一样的。
3. C类地址:网络号占三个字节,主机号占1个字节,且以110开头的ip地址就属于C类地址。
关C类地址的几个特性这里提一下:
- C类地址可指派的网络号是(2^21 - 1) ,这里减一个网络号原因和B类地址一样,是192.0.0这个网络号不指派。原因感兴趣的同学也可以自查。所以C类网络少的一个网路号就是192.0.0
- C类地址的主机号占1个字节,最大主机数是2^8 - 2,注意减2的原因是:全0的主机号表示该IP地址是本主机所连接到的单个网络地址;全1的主机号表示该网络上的所有主机。可以发现和A类地址是一样的。
到这里ABC三类地址就介绍的差不多啦,先总结一下上面的特性:
首先三类网络最大主机数减2的原因都是一样的,就是主机号全0和主机号全1的情况不指派
然后是网络号,也很简单,A类网络首先存在网络号全0,就导致了ip地址全0的情况,这里就减掉了0这个网络号,即00000000,另外127这个网络号即01111111也不指派;而B类和C类则分别是128.0和192.0.0不指派。差别就是这样很简单。
还有一点大家要记住的就是不同类型网络的范围(只用记住网络号的范围),这个常考哦
A类:1-126
B类:128.1-191.255
C类:192.0.1-223.255.255
2.3 划分子网
下面介绍对分类的IP地址进行改进的一种IP编址方法:划分子网。
2.3.1 划分子网的原因
IP地址空间的利用率有限
给每一个物理网络只分配一个网络号会使路由表太大而影响网络性能,因为一个网络可能有多台主机,比如A类地址,那就够找的了
两级IP地址不够灵活。
2.3.2 划分子网的基本思想
(一)将物理网络划分为若干个子网,这些子网纯属单位内部的事,本单位以外看不见这个网络是由多少个子网组成的,对外仍是一个网路
(二)划分子网的方法是从主机号借用若干位作为子网号,于是2级ip地址就变成了3级ip地址。
(三)其他网路发送到本单位某个主机的IP数据报,仍然是根据IP数据报的目的网络号找到连接在本单位网络上的路由器。但此路由器在收到IP数据报后,再按目的网络号和子网号找到目的子网,然后再由负责在该子网内传递数据包的路由器或交换机把IP数据报交付目的主机(这里就已经进入到局域网了,应该是给到交换机,再由交换机给到目的主机。但是也有说有路由器的,没有细查哈。)
2.3.2 解密子网的方法——子网掩码
1.来源:从IP数据报本身无法看出目的主机所在网络是否划分了子网,也就无法把数据报发到子网中去,因此需要一个东东,可以根据IP数据报中的目的ip地址得出目的主机所在的网络地址(网络号+子网号),这东西就是子网掩码。同时,子网划分缩小了 IP 地址范围,将其限定在一定范围内的设备。比如一个A类网络最多有一千多万个主机,不划分子网就要在一千多万个主机中寻找目的主机.........
2.例子:

3. 子网掩码中的1就是网络地址(包括了原来的2级ip地址时的网络号和子网号),0就是主机地址。并且1最好要连续。
4. 子网掩码的重要性:是一个网络或子网的重要属性,路由器交换信息必须把自己所在的网络或者子网的子网掩码告诉相邻路由器。
2.3.3 使用子网时分组的转发
此时路由器中的路由表包括三个内容:目的网络地址、子网掩码和下一跳地址。
具体步骤:
1. 从收到的数据报首部中提取目的IP地址D。
2. 先判断是否为直接交付(判断方法:对与路由器直接相连的网络逐个检查,将这些网络的子网掩码与D进行与运算(全1为1,其他情况为0),判断结果是否为这些网络,是的话说明目的网路就是与该路由器直接相连的网络,否则不是),是的话就把数据报直接进行交付(当然还要把D换成对应的MAC地址,然后打包成数据帧发送给目的主机,结束转发任务)
3. 如果不是直接交付,再看看路由表中是否有特定主机路由,有的话直接发送到指定的下一跳路由器。
4. 如果既不是直接交付、又没有特定主机路由,就需要和路由表中剩下的每一行(目的网络地址、子网掩码、下一条地址)进行比对,同样是将每个目的网络地址的子网掩码和D进行与运算,判断结果是不是目的网络地址,是的话就把分组转发到下一跳的路由器,实现间接交付。
5. 如果也不是间接交付,再看看路由表中有没有默认路由器,有的话就发给默认的路由器。
6. 上面的条件都不满足的话就报错
2.4 构成超网(无分类编址CIDR)
2.4.1 网络前缀
1. 定义:CIDR把32位的IP地址划分为两个部分。前面的部分是“网络前缀”,用来指明网络,后面的用来指定主机。是不是听上去有点熟悉,这不是和最初的分类的ip地址一样吗?但是注意了这已经是无分类的两级ip地址,不再区分ABC类地址。
2. CIDR的两个特点:
- CIDR消除了传统的A类,B类,C类地址以及划分地址的概念。同时CIDR还使用斜线记法,在IP地址后面加上斜线,然后写上网络前缀所占的位数。
- CIDR把前缀都相同的连续的IP地址组成一个地址块。因此,我们只要知道其中任何一个地址,就可以得出这个地址块的最大地址和最小地址。
例如,IP地址128.14.35.7/20是某个地址块中的某个地址,现在把它改成二进制为:
128.14.35.7/20 = 10000000 00001110 00100011 00000111
可以得到:
最大地址 128.14.47.255 = 10000000 00001110 00101111 11111111
最小地址 128.14.32.0 = 10000000 00001110 00100000 00000000
当然,两个主机号是全0和全1的并不使用。
3. 与网络前缀的相关计算问题
在网络前缀这块会涉及到一些计算问题,这里进行整理。
给定某一个地址块中的某一个IP地址(123.45.67.89/27),求:
- 该地址块
1. 先将IP地址转成二进制(01111011 00101101 01000011 01011001)
2. 根据前缀的个数,将IP地址分成网络号和主机号(01111011 00101101 01000011 01011001)
3. 把二进制中的主机号全变为0,再把二进制转成十进制,最后用“斜线记法”表示(123.45.67.64/27)
4. 其实就是求该地址块的最小地址并用斜线记法表示
- 该地址块的最小地址,最大地址
1. 先将IP地址转成二进制(01111011 00101101 01000011 01011001)
2. 根据前缀的个数,将IP地址分成网络号和主机号(01111011 00101101 01000011 01011001)
3. 最小地址,把主机号改成全0得 01111011 00101101 01000011 010 00000,即
123.45.67.64
4. 最大地址,把主机号改成全1的 01111011 00101101 01000011 010 11111,即
123.45.67.95
- 该地址块包含的IP地址个数,主机的IP地址个数(IP地址个数-2,去掉主机号全0和全1的情况)
IP地址个数:2的(32 - 网络前缀数)的次方,这里为2^(32-27) = 32
主机的IP地址个数:IP地址个数减2,这里为32 - 2 = 30
- 该地址块包含的C类地址
先分析这个问题,其实所谓的包含了几个某类地址,就是换了一种方式问你它的IP地址的个数,会求上面的IP地址个数,这个就也会。我们知道C类地址有2^8个IP主机号(不去除主机号全0全1的情况),所以只需要让求得的IP地址个数/2^8即可
上面算得IP地址为2^5,所以这里包含的C类地址为2^(-3) = 1/8个C类地址
再举个例子:128.56.79.33/18
包含的C类地址为:2^(32-18)/2^8 = 2^6 = 64个C类地址
给定一个地址块136.23.12.64/26, 需要进一步划分为n(比如4)个一样的子网,求:
- 每个子网的网络前缀有多长
首先需要根据划分子网的个数,求得网络前缀的个数
这里是划分4个,也就是2^2个子网,所以26+2 = 28,得到每个子网的网络前缀为28
- 每一个子网中有多少个地址
这个其实就是算主机的位数,32-28=4,得2^4=16个地址
需要注意的是,这里没说是主机的地址,所以不用减2
- 每一个子网的地址块
要求子网的地址块,只需要根据子网的个数写出每个子网的号码
这里是4个子网,则子网号码分别为00,01,10,11
然后结合前面的网络号的二进制形式,就可以得到每个子网的地址块.但有时候不用每个字节的二进制都要算,这里原本地址块的前缀就有26位,所以只要把第四个字节64化成二进制,然后结合子网号就可以。
136.23.12.01000000(64)
136.23.12.01010000(80)
136.23.12.01100000(96)
136.23.12.01110000(112)
- 每一个子网的可分配给主机使用的最小地址和最大地址
这里根据上一题,把对应的地址块的主机号改成全0和全1,再分被加1和减1就可以得到最小地址和最大地址
需要注意的是,这里说了是主机的地址,所以需要减掉全0和全1的情况。
136.23.12.65/28 136.23.12.78/28
136.23.12.81/28 136.23.12.94/28
136.23.12.97/28 136.23.12.110/28
136.23.12.113/28 136.23.12.126/28
2.4.2 最长前缀匹配
在采用了CIDR的编址方法以后,路由器中路由表的项目也要发生相应的变化,每个项目至少包括两个部分:网络前缀(这个可以得出相应的地址掩码(和子网掩码一样,网络号的部分为1,其他为为0))和下一跳地址。但是在查找路由表的时候可能会得到不止一个匹配结果,这时就要选择最长的网路前缀。原因就在于:
越长的网络前缀越具体,所包含的信息越多
举个例子:路由表中有两个项目分别是:
206.0.68.0/22和206.0.71.128/25,目的地址D是206.0.71.130
D分别和这两个网络号的地址掩码进行与运算:
D 11111111 11111111 11111100 00000000 得 206.0.68.0/22
D 11111111 11111111 11111111 10000000 的206.0.71.128/25
都匹配,这时就要选择206.0.71.128/125
3. IP地址与硬件地址
了解完什么是IP地址以及IP地址的三种编码方式以后,我们再来了解网络层中的IP地址和物理层、数据链路层的硬件地址(也叫MAC地址)的关系。
3.1 IP地址与硬件地址的区别
从层次的角度看,物理地址是数据链路层和物理层使用的地址,而IP地址是网络层和以上各层使用的地址,是一种逻辑地址。

IP地址放在IP数据报的首部(包括源IP地址和目的IP地址),而硬件地址则放在MAC帧的首部(也包括源地址和目的地址)。在数据链路层看不见数据报的IP地址,只有MAC帧被剥去首尾部,上传到网络层,才能从IP数据报中获得IP地址。

上面这张图反映了在通信过程中,数据上到路由器是为了查找路由表(即利用IP地址)找到下一跳的地址,这里使用了IP地址;而数据再下回到数据链路层则是利用MAC物理地址进行真正的数据传输,这里使用了物理地址。所以也印证了我上面说的,网路层及以上使用IP地址,数据链路层和物理层使用MAC地址。
3.2 地址解析协议ARP
了解了IP地址和物理地址的区别以及各自的作用后,我们不禁会想,那该如何通过IP地址去获得物理地址呢?这里就需要用到我们的地址解析协议ARP了。
3.2.1 关于ARP
ARP是用来解决已知主机的IP地址但不知道对应物理地址的问题的,并且是解决同一个局域网上的主机或路由器的IP地址与物理地址的映射问题。
ARP协议本身属于网络层的一个协议。
每一个主机都有一个APR高速缓存,用来存放本局域网中各个主机和路由器的IP地址到物理地址的迎神表。
3.2.2 ARP解析的过程
我们知道了ARP是用来解决已知主机的IP地址但不知道对应物理地址的问题的,因此当主机A要向主机B发送IP数据报时,先会在自己的ARP高速缓存中查看有无B的IP地址,有的话就直接找到B的物理地址,然后把数据报封装成MAC帧发给主机B。
只有主机A的高速缓存中没有B的IP地址到物理地址的映射时,ARP才会启动,具体过程如下:
1. ARP进程在本局域网广播发送一个ARP请求分组(为了让B可以找到自己,A把自己的IP地址和物理地址的映射关系也写在里面了)
2. 在本局域网上所有主机上运行的ARP进程都收到此请求分组
3. 主机B的IP地址与ARP请求分组中要查询的IP地址一致,就收下这个ARP请求分组,并向主机A发送APR响应分组,其中就有自己的物理地址。发送方式是单播,其他主机收不到。而哪些IP地址不与请求分组中的查询IP地址一致的,就不理睬这个请求分组。
4. 主机A收到B的ARP响应分组后,就在其ARP高速缓存中写入主机B的IP地址到物理地址的映射关系。
4. IP数据报的格式
一个IP数据报是由首部和数据两部分组成。首部的前一部分是固定长度,共20字节后面是一些可选字段,其长度是可变的,不用管。
4.1 IP数据报首部的固定部分中的各个字段
4.1.1 版本:
通信双方使用的IP协议版本必须一致,目前广泛使用的是IPv4.
4.1.2 首部长度:
最常用的首部长度是20节
4.1.3 区分服务:
用来获得更好的服务(没啥用)
4.1.4 总长度:
首部和数据之和的长度
这个字段有所讲究。我们知道,在IP层下面的数据链路层协议都规定了一个数据帧中的数据字段长度的最大值,被称为最大传输单元MTU,当一个数据报封装成帧时,此数据报的总长度(首部加数据部分)不能超过MTU。因此过长的数据报,就需要分片。
4.1.5 标识:
每传输一个数据报,标识值就加1。这个不是给每个数据报上序号的,而是为了解决一个数据报分片以后如何拼凑回去的问题。当一个数据报被分片成多个时,那么每个分片都会标上同样的序号。
4.1.6 标志:
MF(More Fragment)和DF(Don't Fragment),MF = 1表示后面还有分片,MF = 0 表示没有分片;DF = 0表示可以分片, FDF = 1表示不可以分片。
4.1.7 片偏移:
分片后,每个字节在原来的超级长的数据报中的位置。说到这里大家可能不明白片偏移的具体含义,也不知道应该怎么计算,没关系,下面我用几道题目进行说明。
题目1 一个数据报总长度为3820字节,数据部分为3800字节(首部为固定首部,长度20字节),先能够传送的最大数据长度为1420字节,问应当划分为几个短些的数据报片?各数据报片的数据字段长度、片偏移字段和MF标志应为何值》
首先,能够传送的最大数据长度为1420字节,那么去掉20字节的首部长度,每个分片的数据字段长度最大为1400字节,而现在数据部分有3800字节,那么很明显,应该是分为三个数据报片,前两个的数据报片的数据部分为1400、1400字节,第三个报片的数据部分为1000字节。
所以,分为3个数据报片,各报片的数据字段长度分别为1400、1400、1000。片偏移字段为0/8=0、0+1400/8=175, (0+1400+1400)/8=350。MF标志分别为1、1、0
题目2 一个数据报总长度为4000字节(固定首部长度),能够传送的最大数据长度为1500字节,问应当划分为几个短些的数据报片?各数据报片的数据字段长度、片偏移字段和MF标志应为何值》
首先,能够传送的最大数据长度为1500字节,那么去掉20字节的首部长度,每个分片的数据字段长度最大为1480字节,而现在数据部分有3980字节,那么很明显,应该是分为三个数据报片,前两个的数据报片的数据部分为1480、1480字节,第三个报片的数据部分为1020字节。
所以,分为3个数据报片,各报片的数据字段长度分别为1480、1480、1020。片偏移字段为0/8=0、0+1480/8=185, (0+1480+1480)/8=370。MF标志分别为1、1、0
题目3 若要让主机PC1向主机PC2发送的ICMP数据包(本身首部自带8个字节,后面封装成IP数据报已然要加上20个字节)分为 2个分片, 则 Ping 命令中的报文长度(这里没算上8个字节的ICMP报文首部长度)应为多大范围?为什么?
这题难度也不大。我们假设报文长度为X,那么加上8个字节后,就成为了整个IP数据报的数据部分,再加20个字节就是IP数据报的总长度了。所以IP数据报的总长度为20+8+X,而数据部分长度为8 + X
它要求分为两个分片,我们知道一个分片的数据部分长度最大为1480字节(默认是以太网),因此:
1480 < 8+X <= 1480+1480得
1472 < X <= 2952,取整数就是:[1473,2952]
4.1.8 生存时间TTL:
就是一个数据报能够经过的路由器的个数,也叫作跳数。每经过一个路由器,TTL就会减一。当TTL为0,路由器就丢弃这个数据报。
4.1.9 协议:
就是此数据报携带的数据是使用何种协议,方便IP层知道要把数据部分上交给哪个处理过程
4.1.10 首部检验和:
这个字段只检验数据报的首部,但不包括数据部分,可以减少计算量,并且也不采用CRC检验码。
4.2 IP层转发分组的流程
类似于上面提到的划分子网以后转发分组的流程
具体步骤:
1. 从收到的数据报首部中提取目的IP地址D,得出目的网络N。
2. 先判断是否为直接交付(判断方法:对与路由器直接相连的网络逐个检查,将这些网络的子网掩码与D进行与运算(全1为1,其他情况为0),判断结果是否为这些网络,是的话说明目的网路就是与该路由器直接相连的网络,否则不是),是的话就把数据报直接进行交付(当然还要把D换成对应的MAC地址,然后打包成数据帧发送给目的主机,结束转发任务)
3. 如果不是直接交付,再看看路由表中是否有特定主机路由,有的话直接发送到指定的下一跳路由器。
4. 如果既不是直接交付、又没有特定主机路由,就需要和路由表中剩下的每一行(目的网络地址、子网掩码、下一条地址)进行比对,同样是将每个目的网络地址的子网掩码和D进行与运算,判断结果是不是目的网络地址,是的话就把分组转发到下一跳的路由器,实现间接交付。
5. 如果也不是间接交付,再看看路由表中有没有默认路由器,有的话就发给默认的路由器。
6. 上面的条件都不满足的话就报错
5. 因特网的路由选择协议
5.1 路由选择协议的基本概念
5.1.1 理想的路由算法
1. 算法必须正确和完整
2. 算法计算简单
3. 算法具有自适应性
4. 算法公平
5. 算法具有稳定性
6. 算法应是最佳的
7. 静态路由选择策略和动态路由选择策略:区分标准就是能否自适应网络状态的变化。
5.1.2 分层次的路由选择协议
因特网(最大的互联网)采用的路由选择协议是自适应的(动态的)、分布式路由选择协议
自治系统:多个互联网组成的,一般是行政区域为单位(或者ISP)。自治系统内部使用一样的路由选择协议,所以对外(其他的自治系统)则表现的是一个单一的和一致的路由选择策略。
内部网关协议(IGP,Interior Gateway Protocol. 内部的路由选择也叫域内路由选择):在一个自治系统内部使用的路由选择协议,最常用的是RIP和OSPF(不用管)
外部网关协议(EGP,External Gateway Protol. 外部的路由选择也叫域间路由选择):不同的自治系统间的路由选择协议,最多的是BGP协议(目前是BGP-4)
5.2 内部网关协议RIP
5.2.1 工作原理
RIP是一种分布式的基于距离向量的路由选择协议。解释一下这里定义的距离:距离也叫跳数,就是指经过的路由器的个数。
RIP规定跳数最多为15,16就是不可达。因此RIP只用与较小的互联网。
5.2.2 特点
RIP的工作特点:
(1)仅和相邻的路由器交换信息,不相邻的路由器不交换信息。
(2)路由器交换的信息是路由表,即该路由器到本自治网络中所有网络的最短距离和到每个网络应经过的下一跳路由器
(3)按固定的时间间隔交换路由信息。
5.2.3 距离向量算法(协议工作的过程)
先假设有两条路由器A和路由器B,路由器A收到B发来的路由表并准备进行更新,更新的步骤如下(以下路由器A,B的路由表也检查A,B):
1. 先更改路由器B发过来的路由表B。把下一跳地址全部换成路由器B自身,并把距离字段加1
2. 再来更新路由器A的路由表A。对更改过的B中的每一个项目X依次做如下判断(目的网络不同的直接换下一个比较):
A中所有项目的目的网络中没有项目X的目的网络,则A添加X
A中存在目的网络和X相同的项目,并且下一跳地址和X的不一样,则X替换A中这个项目(注意不管距离字段谁大谁小哦)
A中存在目的网络和X相同的项目,但是下一跳地址和X的不一样,且距离比X的小,则A不做改变,换B的下一个项目X1
A中存在目的网络和X相同的项目,但是下一跳地址和X的不一样,且距离比X的大,则X替换A中的这个项目
A中存在目的网络和X相同的项目,但是下一跳地址和X的不一样,且距离等于X的,则A不做改变,换B的下一个项目X1
下面举几个例子:
题目一
路由器A的路由表A 目的网络 距离 下一跳路由器 n1 3 B n2 4 R5 ... ...
...
路由器B发来的路由表B 目的网络 距离 下一跳路由器 n1 3 R4 n2 4 R5 n3 1
直接交付 步骤1,修改路由表B
步骤2,依次用修改过的B中的每一个项目去与A比对
修改后的路由表B 目的网络 距离 下一跳路由器 n1 3+1=4 B n2 4+1=5 B n3 1+1=2
B
- 第一条X1与A的第一条比对,目的网络都是n1,下一跳路由器也一样都是B,所以X1代替A的第一条
- 第二条X2与A的第一条比对,目的网络不一样,换A的第二条比对。目的网络都是n2,下一跳地址不同,而A第二条的距离比X2短,所以不变。
- 第三条X3与A的前两条都不一样,说明A中没有X3,因此直接加到A中,得到下面A更新后的路由表A
路由器A更新过的路由表A 目的网络 距离 下一跳路由器 n1 4 B n2 4 R5 n3 2 B
题目二
假定路由器A的路由表A如下:
路由表A 目的网络 距离 下一跳路由器 N1 4 B N2 2 C N3 1 F N4 5 G 现在A收到从C发来的路由消息如下
路由表C 目的网络 距离C N1 2 N2 1 N3 3 N4 7 试求出路由器A更新后的路由表(详细说明每一个步骤)
第一步,修改路由表C,为C添加下一跳路由器字段,并全部填写C;距离字段全部加1,得到修改后的路由表C:
第二步,将C中的每个项目同路由表A中的每个项目比较。第一条比较:下一跳不一样,但是C的距离短,替代A的;第二条比较:下一跳也一样,直接替换。第三条比较:下一跳不一样,A的距离短,不变;第四条比较:下一跳不一样,A的距离短,不变。可以得到下面的更新过的路由表A:
修改过的路由表C 目的网络 距离C 下一跳路由器 N1 2+1=3 C N2 1+1=2 C N3 3+1=4 C N4 7+1=8 C
更新过的路由表A 目的网络 距离 下一跳路由器 N1 3 C N2 2 C N3 1 F N4 5 G
全文共计12340字,整理不易,如果觉得对你有帮助的话麻烦点个赞加收藏鸭~
另外如果你对这类复习文章感兴趣的话,可以免费订阅我的“信息管理与信息系统专业课期末复习”专栏,里面后续会推出信管专业其他专业课的期末复习资料。
更多推荐
所有评论(0)