计算机网络知识点汇总(考研用)——第四章:网络层
计算机网络知识点汇总(考研用)——第四章:网络层
本文参考于《2021年计算机网络考研复习指导》(王道考研),《计算机网络》
思维导图:
文章目录
4.网络层
4.1 网络层的功能
4.1.1 异构网络互联
所谓网络互联,是指将两个以上的计算机网络,通过一定的方法,用一种或多种通信处理设备(即中间设备)相互连接起来,以构成更大的网络系统。中间设备又称中间系统或中继系统。根据所在的层次,中继系统分为以下4种:
(1)物理层中继系统:中继器、集线器Hub
(2)数据链路层中继系统:网桥或交换机
(3)网络层中继系统:路由器
(4)网络层以上的中继系统:网关(原定义,现在对网关的定义已改变)
使用物理层或数据链路层的中继系统时,只是把一个网络扩大了,而从网络层的角度看,它仍然是同一个网络,一般并不称之为网络互联。因此网络互联通常是指用路由器进行网络互联和路由选择。 路由器是一台专用计算机,用于在互联网中进行路由选择
TCP/IP体系在网络互联上采用的做法是在网络层(即IP层)采用标准化协议,但相互连接的网络可以是异构的。
上图显示了许多计算机网络通过一些路由器进行的互联。由于参加互联的计算机网络都使用相同的网际协议(Internet Protocol,IP),因此可以把互联后的计算机网络视为上右图所示的一个虚拟IP网络。
虚拟互联网络也就是逻辑互联网络,即互联起来的各种物理网络的异构性本来是客观存在的,但是通过使用IP就可以使这些性能各异的网络在网络层上看起来好像是一个统一的网络。这种使用IP的虚拟互联网络可简称为IP网络。
使用虚拟互联网络的好处是:当互联网上的主机进行通信时,就好像在一个网络上通信一样,而看不见互联的具体的网络异构细节(如具体的编址方案、路由选择协议等)
4.1.2 路由与转发
路由器主要完成两个功能:一是路由选择(确定哪一条路径),二是分组转发(当一个分组到达时所采取的动作)。前者是根据特定的路由选择协议构造出路由表,同时经常或定期地和相邻路由器交换路由信息而不断地更新和维护路由表。后者处理通过路由器的数据流,关键操作是转发表查询、转发及相关的队列管理和任务调度等。
(1)路由选择
指按照复杂的分布式算法,根据从各相邻路由器所得到的关于整个网络拓扑的变化情况,动态地改变所选择的路由
(2)分组转发
指路由器根据转发表将用户的IP数据报从合适的端口转发出去
路由表是根据路由选择算法得出的,而转发表是从路由表得出的。转发表的结构应当使查找过程最优化,路由表则需要对网络拓扑变化的计算最优化。 在讨论路由选择的原理时,往往不去区分转发表和路由表,而是笼统地使用路由表一词
4.1.3 拥塞控制
在通信子网中,因出现过量的分组而引起网络性能下降的现象称为拥塞。例如,某个路由器所在链路的带宽为R B/s,如果IP分组只从它的某个端口进入,那么其速率为rin B/s。当分组到达路由器的速率接近R时,平均时延急剧增加,并且会有大量的分组被丢弃(路由器端口的缓冲区是有限的),整个网络的吞吐量会骤降,源与目的地之间的平均时延也会变得近乎无穷大。
判断网络是否进入拥塞状态的方法是,观察网络的吞吐量与网络负载的关系:如果随着网络负载的增加,网络的吞吐量明显小于正常的吞吐量,那么网络就可能已进入轻度拥塞状态;如果网络的吞吐量随着网络负载增加而下降,那么网络就可能已进入拥塞状态;如果网络的负载继续增大,而网络的吞吐量下降到0,那么网络就可能已进入死锁状态。
拥塞控制的作用是确保子网能够承载所达到的流量,这是一个全局性的过程,涉及各方面的行为:主机、路由器及路由器内部的转发处理过程等。单一地增加资源并不能解决拥塞。
流量控制和拥塞控制的区别:流量控制往往是指在发送端和接收端之间的点对点通信量的控制。流量控制所要做的是抑制发送端发送数据的速率,以便使接收端来得及接收。而拥塞控制必须确保通信子网能够传送待传送的数据,是一个全局性的问题,涉及网络中所有的主机、路由器及导致网络传输能力下降的所有因素。
拥塞控制的方法有两种:
(1)开环控制
在设计网络时事先将有关发生拥塞的因素考虑周到,力求网络在工作时不产生拥塞。这是一种静态的预防方法。一旦整个系统启动并运行,中途就不再需要修改。开环控制手段包括确定何时可接收新流量、何时可丢弃分组及丢弃哪些分组,确定何种调度决策等。所有这些手段的共性是,在做决定时不考虑当前网络的状态。
(2)闭环控制
事先不考虑有关发生拥塞的各种因素,采用监测网络系统去监视,及时检测哪里发生了拥塞,然后将拥塞信息传到合适的地方,以便调整网络系统的运行,并解决出现的问题。闭环控制是基于反馈环路的概念,是一种动态的方法
例题:路由器连接的异构网络是指()
A.网络的拓扑结构不同
B.网络中计算机的OS不同
C.数据链路层和物理层均不同
D.数据链路层协议相同,物理层协议不同
答案:C;
例题:在路由器互联的多个局域网的结构中,要求每个局域网()
A.物理层协议可以不同,而数据链路层及其以上的高层协议必须相同
B.物理层、数据链路层协议可以不同,而数据链路层以上的高层协议必须相同
C.物理层、数据链路层、网络层协议可以不同,而网络层以上的高层协议必须相同
D.物理层、数据链路层、网络层及高层协议都可以不同
答案:C;路由器是第三层设备,向传输层及以上层次隐藏下层的具体实现,所以物理层、数据链路层、网络层协议可以不同。而网络层之上的协议数据是路由器所不能处理的,因此网络层以上的高层协议必须相同。使用特定的路由器连接IPv4与IPv6网络,就是典型的网络层协议不同而实现互联的例子。
4.2 路由算法
4.2.1 静态路由与动态路由
从能否随网络的通信量或拓扑自适应地进行调整变化来划分,路由算法可分为如下两大类:
静态路由算法 (又称非自适应路由算法):
指由网络管理员手工配置的路由信息。 当网络的拓扑结构或链路的状态发生变化时,网络管理员需要手工去修改路由表中相关的静态路由信息。大型和复杂的网络环境通常不宜采用静态路由。
动态路由算法 (又称自适应路由算法):
指路由器上的路由表项是通过相互连接的路由器之间彼此交换信息,然后按照一定的算法优化出来的,而这些路由信息会在一定时间间隙里不断更新,以适应不断变化的网络,随时获得最优的寻路效果。
静态路由算法的优点是简便、可靠,在负荷稳定、拓扑变化不大的网络中运行效果很好,因此仍广泛用于高度安全的军事系统和较小的商业网络。动态路由算法能改善网络的性能并有助于流量控制;但算法复杂,会增加网络的负担,有时因对动态变化的反应太快而引起振荡,或反应太慢而影响网络路由的一致性。 常用的动态路由算法可分为两类:距离-向量路由算法和链路状态路由算法
4.2.2 距离-向量路由算法
在距离-向量路由算法中,所有结点都定期地将它们的整个路由选择表传送给所有与之直接相邻的结点。 这种路由选择表包含:(1)每条路径的目的地(另一结点)(2)路径的代价(也称距离)
这里的距离是一个抽象的概念,如RIP就将距离定义为跳数。跳数指从源端口到达目的端口所经过的路由个数,每经过一个路由器,跳数加1。
在这种算法中,所有结点都必须参与距离向量交换,以保证路由的有效性和一致性,也就是说,所有的结点都监听从其他结点传来的路由选择更新信息,并在下列情况下更新它们的路由选择表:
(1)被通告一条新的路由,该路由在本结点的路由表中不存在,此时本地系统加入这条新的路由
(2)发来的路由信息中有一条到达某个目的地的路由,该路由与当前使用的路由相比,有较短的距离(较小的代价)。此种情况下,就用经过发送路由信息的结点的新路由替换路由表中到达那个目的地的现有路由。
距离-向量路由算法的实质是,迭代计算一条路由中的站段数或延迟时间,从而得到到达一个目标的最短(最小代价)通路。它要求每个结点在每次更新时都将它的全部路由表发送给所有相邻的结点。 显然,更新报文的大小与通信子网的结点个数成正比,大的通信子网将导致很大的更新报文。 由于更新报文发给直接邻接的结点,所以所有结点都将参加路由选择信息交换。基于这些原因,在通信子网上传送的路由选择信息的数量很容易变得非常大。
最常见的距离-向量路由算法是RIP算法,它采用跳数作为距离的度量。
4.2.3 链路状态路由算法
链路状态路由算法要求每个参与该算法的结点都具有完全的网络拓扑信息,它们执行下述两项任务。第一,主动测试所有邻接结点的状态。 两个共享一条链接的结点是相邻结点,它们连接到同一条链路,或者连接到同一广播型物理网络。第二,定期地将链路状态传播给你所有其他结点(或称路由结点)。 典型的链路状态算法是OSPF算法
在一个链路状态路由选择中,一个结点检查所有直接链路的状态,并将所得的状态信息发送给网上的所有其他结点,而不是仅送给那些直接相连的结点。每个结点都用这种方式从网上所有其他的结点接收包含直接链路状态的路由选择信息。
每当链路状态报文到达时,路由结点便使用这些状态信息去更新自己的网络拓扑和状态“视野图”,一旦链路状态发生变化,结点就对更新的网络图用Dijsktra最短路径算法重新计算路由,从单一的源出发计算到达所有目的结点的最短路径。
链路状态路由算法主要有三个特征:
(1)向本自治系统中所有路由器发送信息,这里使用的方法是泛洪法,即路由器通过所有端口向所有相邻的路由器发送信息。而每个相邻路由器又将此信息发往其所有相邻路由器(但不再发送给刚刚发来信息的那个路由器)
(2)发送的信息是与路由器相邻的所有路由器的链路状态, 但这只是路由器所知道的部分信息。所谓“链路状态”,是指说明本路由器与哪些路由器相邻及该链路的“度量”。 对于OSPF算法,链路状态的“度量”主要用来表示费用、距离、时延、带宽等。
(3)只有当链路状态发生变化时,路由器才向所有路由器发送此消息。
由于一个路由器的链路状态只涉及相邻路由器的连通状态,而与整个互联网的规模并无直接关系,因此链路状态路由算法可以用于大型的或路由信息变化聚敛的互联网环境。
链路状态路由算法的主要优点是,每个路由结点都使用同样的原始状态数据独立地计算路径,而不依赖中间结点的计算;链路状态报文不加改变地传播,因此采用该算法易于查找故障。当一个结点从所有其他结点接收到报文时,它可以在本地立即计算正确的通路,保证一步汇聚。最后,由于链路状态报文仅运载来自单个结点关于直接链路的信息,其大小与网络中的路由结点数目无关,因此链路状态算法比距离-向量算法有更好的规模可伸展性。
距离-向量路由算法与链路状态路由算法的比较:在距离-向量路由算法中,每个结点仅与它的直接邻居交谈,它为它的邻居提供从自己到网络中所有其他结点的最低费用估计。在链路状态路由算法中,每个结点通过广播的方式与所有其他结点交谈,但它仅告诉它们与它直接相连的链路的费用。 相较之下,距离-向量路由算法有可能遇到路由环路等问题。
4.2.4 层次路由
当网络规模扩大时,路由器的路由表成比例地增大。这不仅会消耗越来越多的路由器缓冲区空间,而且需要用更多CPU时间来扫描路由表,用更多的带宽来交换路由状态信息。因此路由选择必须按照层次的方式进行。
因特网将整个互联网划分为许多较小的自治系统(注意一个自治系统中包含很多局域网),每个自治系统有权自主地决定本系统内应采用何种路由选择协议。 如果两个自治系统需要通信,那么就需要一种在两个自治系统之间的协议来屏蔽这些差异。据此,因特网把路由选择协议划分为两大类:
(1)一个自治系统内部所使用的路由选择协议称为内部网关协议IGP,也称域内路由选择,具体的协议有RIP和OSPF等。
(2)自治系统之间所使用的路由选择协议称为外部网关协议EGP,也称域间路由选择,用在不同自治系统的路由器之间交换路由信息,并负责为分组在不同自治系统之间选择最优的路径。具体的协议有BGP
使用层次路由时,OSPF将一个自治系统再划分为若干区域(Area),每个路由器都知道在本区域内如何把分组路由到目的地的细节,但不用知道其他区域的内部结构。
采用分层次划分区域的方法会使交换信息的种类增多,使OSPF协议更加复杂。但这样做能使每个区域内部交换路由信息的通信量大大减小,因而使OSPF协议能够用于规模很大的自治系统中。
例题:
答案:B;R3将到该网络的距离设为16(16表示不可达)。当R2从R3收到路由信息时,记录R1可达(RIP的特点是坏消息传得慢,R1并未收到R3发来的路由信息),从路由器到直连网络的距离定义为1,因此R2更新后的距离为3
例题:下列关于路由器直接交付的说法中,错误的是()
1.路由选择分直接交付和间接交付
2.直接交付时,两台机器可不在同一物理网段内
3.间接交付时,不涉及直接交付
4.直接交付时,不涉及路由器
答案:2,3
例题:下列关于分层路由的描述中,()是错误的
A.采用分层路由后,路由器被划分成区域
B.每个路由器不仅知道如何将分组路由到自己区域的目标地址,而且知道如何路由到其他区域
C.采用分层路由后,可将不同的网络连接起来
D.对于大型网络,可能需要多级的分层路由来管理
答案:B;
4.3 IPv4
4.3.1 IPv4分组
IP定义数据传送的基本单元——IP分组及其确切的数据格式。IP也包括一套规则,指明分组如何处理、错误怎样控制。IP还包含非可靠投递的思想,以及与此关联的分组路由选择的思想。
1.IPv4分组的格式
一个IP分组由首部和数据两部分组成。首部前一部分的长度固定,共20B, 是所有IP分组必须具有的。在首部固定部分的后面是一些可选字段,其长度可变,用来提供错误检测及安全等机制。
(1)版本
指IP的版本,如版本号为4
(2)首部长度
占4位。以32位(4B)为单位,最大值为60B(15x4B)。 最常用的首部长度是20B,此时不使用任何选项(即可选字段)
(3)总长度
占16位。指首部和数据之和的长度,单位为字节,因此数据报的最大长度为2^16-1=65535B。以太网帧的最大传送单元MTU为1500B,因此当一个IP数据报封装成帧时,数据报的总长度(首部加数据)一定不能超过下面数据链路层的MTU值。
(4)标识
占16位。它是一个计数器,每产生一个数据报就加1,并赋值给标识字段。但它并不是“序号”(因为IP是无连接服务)。当一个数据报的长度超过网络的MTU时,必须分片,此时每个数据报片都复制一次标识号,以便能正确重装成原来的数据报
(5)标志
占3位,标志字段的最低位为MF,MF=1表示后面还有分片,MF=0表示最后一个分片。标志字段中间的一位是DF,只有当DF=0时才允许分片。
(6)片偏移
占13位,它指出较长的分组在分片后,某片在原分组中的相对位置。片偏移以8个字节为偏移单位,即每个分片的长度一定是8B(64位)的整数倍。
(7)首部校验和
占16位。IP数据报的首部校验和只校验分组的首部,而不校验数据部分。
(8)生存时间
占8位。数据报在网络中可通过的路由器数的最大值,标识分组在网络中的寿命,以确保分组不会永远在网络中循环。路由器在转发分组前,先把TTL减1。若TTL被减为0,则该分组必须丢弃。
(9)协议
占8位。指出此分组携带的数据使用何种协议,即分组的数据部分应交给哪个传输层协议,如TCP、UDP等。其中值为6表示TCP,值为17表示UDP。
(10)源地址字段
占4B, 标识发送方的IP地址
(11)目的地址字段
占4B, 标识接收方的IP地址
注意在IP数据报首部中三个关于长度的标记,一个是首部长度,一个是总长度,一个是片偏移,基本单位分别为4B、1B、8B。
2.IP数据报分片
一个链路层数据报能承载的最大数据量称为最大传送单元MTU。 因为IP数据报被封装在链路层数据报中,因此链路层的MTU严格地限制着IP数据报的长度,而且在IP数据报的源与目的地路径上的各段链路可能使用不同的链路层协议,有不同的MTU。 例如,以太网的MTU为1500B, 而许多广域网的MTU不超过576B。当IP数据报的总长度大于链路MTU时,就需要将IP数据报中的数据分装在两个或多个较小的IP数据报中,这些较小的数据报称为片。
片在目的地的网络层被重新组装。目的主机使用IP首部中的标识、标志和片偏移字段来完成对片的重组。 创建一个IP数据报时,源主机为该数据报加上一个标识号。当一个路由器需要将一个数据报分片时,形成的每个数据报(即片)都具有原始数据报的标识号。当目的主机收到来自同一发送主机的一批数据报时,它可以通过检查数据报的标识号来确定哪些数据报属于同一个原始数据报的片。IP首部中的标志位有3比特,但只有后2比特有意义,最低位是MF位(More Fragment),次低位是DF位(Don’t Fragment)。只有当DF=0时,该IP数据报才可以被分片。MF则用来告知目的主机该IP数据报是否为原始数据报的最后一个片。当MF=1时,表示相应的原始数据报还有后续的片;当MF=0时,表示该数据报是相应原始数据报的最后一个片。目的主机在对片进行重组时,使用片偏移字段来确定片应放在原始IP数据报的哪个位置。
例如,一个长4000B的IP数据报(首部20B,数据部分3980B)到达一个路由器,需要转发到一条MTU为1500B的链路上。这意味着原始数据报中的3980B数据必须被分配到3个独立的片中(每片也是一个IP数据报)。假定原始数据报的标识号为777,那么分成的3片如图:
由于偏移值的单位是8B,所以除最后一个片外,其他所有片中的有效数据载荷都是8的倍数
IP有分片的功能,但广域网中的分组则不必分片。为什么?
IP数据报可能要经过许多个网络,而源节点事先并不知道数据报后面要经过的这些网络所能通过的分组的最大长度是多少。等到IP数据报转发到某个网络时,中间结点可能才发现数据报太长了,因此在这时就必须分片
但广域网能够通过的分组的最大长度是该广域网中所有结点都事先知道的,源结点不可能发送网络不支持的过长分组。因此广域网没有必要将已经发送出的分组再进行分片。
3.网络层转发分组的流程
网络层的路由器执行的分组转发算法如下:
(1)从数据报的首部提取目的主机的IP地址D,得出目的网络地址N
(2)若网络N与此路由器直接相连,则把数据报直接交付给目的主机D,这称为路由器的直接交付;否则是间接交付, 执行步骤3
(3)若路由表中有目的地址为D的特定主机路由(对特定的目的主机指明一个特定的路由,通常是为了控制或测试网络,或出于安全考虑才采用的), 则把数据报传送给路由表中所指明的下一跳路由器;否则,执行步骤4
(4)若路由表中有到达网络N的路由,则把数据报传送给路由表指明的下一跳路由器;否则,执行步骤5
(5)若路由表中有一个默认路由,则把数据报传送给路由表中所指明的默认路由器;否则,执行步骤6
(6)报告转发分组出错
得到下一跳路由器的IP地址后并不是直接将该地址填入待发送的数据报,而是将该IP地址转换成MAC地址(通过ARP),将其放到MAC帧首部中,然后根据这个MAC地址找到下一跳路由器。在不同网络中传送时,MAC帧中的源地址和目的地址要发生变化,但是网桥在转发帧时,不改变帧的源地址。
4.3.2 IPv4地址与NAT
1.IPv4地址
连接到因特网上的每台主机(或路由器)都分配一个32比特的全球唯一标识符,即IP地址。 传统的IP地址是分类的地址,分为A、B、C、D、E五类。
无论哪类IP地址,都由网络号和主机号两部分组成。 即IP地址::={<网络号 >,<主机号 >}。其中网络号标志主机(或路由器)所连接到的网络。一个网络号在整个因特网范围内必须是唯一的。主机号标志该主机(或路由器)。一台主机号在它前面的网络号所指明的网络范围内必须是唯一的。 由此可见,一个IP地址在整个因特网范围内是唯一的。
分类的IP地址如图:
在各类IP地址中,有些IP地址具有特殊用途,不用做主机的IP地址:
主机号为0表示本网络本身, 如202.98.174.0
主机号全为1表示本网络的广播地址,又称直接广播地址,如202.98.174.255
127.0.0.0保留为环路自检(Loopback Test)地址,此地址表示任意主机本身,目的地址为环回地址的IP数据报永远不会出现在任何网络上。
32位全为0,即0.0.0.0表示本网络上的本主机
32位全为1,即255.255.255.255表示整个TCP/IP网络的广播地址,又称受限广播地址。实际使用时,由于路由器对于广播域的隔离,255.255.255.255等效为本网络的广播地址。
常用的三种类别IP地址的使用范围如下:
A类地址可用的网络数是2^7-2,减2的原因是:第一,网络号字段全为0的IP地址是保留地址,意思是“本网络”; 第二,网络号为127的IP地址是环回测试地址。B类地址的可用网络数为2^14-1,减1的原因是128.0这个网络是不可指派的。C类地址的可用网络数为
2 ^21-1,减1的原因是网络号为192.0.0的网络是不可指派的
IP地址有以下重要特点:
(1)每个IP地址都由网络号和主机号两部分组成,因此IP地址是一种分等级的地址结构。分等级的好处是:①IP地址管理机构在分配IP地址时只分配网络号(第一级),而主机号(第二级)则由得到该网络的单位自行分配, 方便了IP地址的管理;②路由器仅根据目的主机所连接的网络号来转发分组(而不考虑目标主机号),从而减小了路由表所占的存储空间。
(2)IP地址是标志一台主机(或路由器)和一条链路的接口。当一台主机同时连接到两个网络时,该主机就必须同时具有两个相应的IP地址,每个IP地址的网络号必须与所在网络的网络号相同,且这两个IP地址的网络号是不同的。因此IP网络上的一个路由器必然至少应具有两个IP地址(路由器每个端口必须至少分配一个IP地址)
(3)用转发器或桥接器(网桥等)连接的若干LAN仍然是同一个网络(同一个广播域),因此该LAN中所有主机的IP地址的网络号必须相同,但主机号必须不同。
(4)在IP地址中,所有分配到网络号的网络(无论是LAN还是WAN)都是平等的
(5)在同一个局域网上的主机或路由器的IP地址中的网络号必须是一样的。路由器总是具有两个或两个以上的IP地址,路由器的每个端口都有一个不同网络号的IP地址。
2.网络地址转换
网络地址转换是指通过将专用网络地址转换为公用地址(如Internet)从而对外隐藏内部管理的IP地址。它使得整个专用网只需要一个全球IP地址就可以与因特网连通, 由于专用网本地IP地址是可重用的,所以NAT大大节省了IP地址的消耗。同时,它隐藏了内部网络结构,从而降低了内部网络受到攻击的风险。
此外,为了网络安全,划出了部分IP地址为私有IP地址。私有IP地址只用于LAN,不用于WAN连接(因此私有IP地址不能直接用于Internet,必须通过网关利用NAT把私有IP地址转换为Internet中合法的全球IP地址后才能用于Internet),并且允许私有IP地址被LAN重复使用。 这有效地解决了IP地址不足的问题。私有IP地址网段如下:
A类:1个A类网段,即10.0.0.0~10.255.255.255
B类:16个B类网段,即172.16.0.0~172.31.255.255
C类:256个C类网段,即192.168.0.0~192.168.255.255
在因特网中的所有路由器,对目的地址是私有地址的数据报一律不进行转发。 这种采用私有IP地址的互联网称为专用互联网或本地互联网。私有IP地址也称为可重用地址。
使用NAT时需要在专用网连接到因特网的路由器上安装NAT软件,NAT路由器至少有一个有效的外部全球地址。使用本地地址的主机和外界通信时,NAT路由器使用NAT转换表将本地地址转换成全球地址,或将全球地址转换成本地地址。NAT转换表中存放着{本地IP地址:端口}到{全球IP地址:端口}的映射。通过{ip地址:端口}这样的映射方式,可让多个私有IP地址映射到同一个全球IP地址。
以宿舍共享宽带上网为例,假设某宿舍办理了2Mb/s的电信宽带,那么这个宿舍就获得了一个全球IP地址(如138.76.29.7),而宿舍内4台主机使用私有地址(如192.168.0.0网段)。宿舍的网关路由器应开启NAT功能,并且某时刻路由器上的NAT转发表如下:
当路由器从LAN端口收到源IP及源端口号为192.168.0.2:2233的数据报时,就将其映射为138.76.29.7:5001,然后从WAN端口发送到因特网上。当路由器从WAN端口收到目的IP及目的端口号为138.76.29.7:5060的数据报时,就将其映射成192.168.0.3:1234,然后从LAN端口发送给相应的本地主机。这样,只需要一个全球地址,就可以让多台主机同时访问因特网。
普通路由器在转发IP数据报时,不改变其源IP地址和目的IP地址。而NAT路由器在转发IP数据报时,一定要更换其IP地址(转换源IP地址或目的IP地址)。普通路由器仅工作在网络层,而NAT路由器转发数据报时需要查看和转换传输层的端口号。
4.3.3 子网划分与子网掩码、CIDR
1.子网划分
两级IP地址的缺点:IP地址空间的利用率有时很低;给每个物理网络分配一个网络号会使路由表变得太大而使网络性能变坏;两级的IP地址不够灵活。
从1985年起,在IP地址中又增加了一个“子网号字段”,使两级IP地址变成了三级IP地址。这种做法称为子网划分。
子网划分的基本思路如下:
(1)子网划分纯属一个单位内部的事情。单位对外仍然表现为没有划分子网的网络。
(2)从主机号借用若干比特作为子网号, 当然主机号也就相应减少了相同的比特。三级IP地址的结构如下:IP地址={<网络号>,<子网号>,<主机号>}
(3)凡是从其他网络发送给本单位某台主机的IP数据报,仍然是根据IP数据报的目的网络号,先找到连接到本单位网络上的路由器。然后该路由器在收到IP数据报后,按目的网络号和子网号找到目的子网。最后把IP数据报直接交付给目的主机。
注意:
(1)划分子网只是把IP地址的主机号这部分进行再划分,而不改变IP地址原来的网络号。 因此,从一个IP地址本身或IP数据报的首部,无法判断源主机或目的主机所连接的网络是否进行了子网划分。
(2)RFC 950规定,对分类的IPv4地址进行子网划分时,子网号不能为全1或全0。但随着CIDR的广泛使用,现在全1和全0的子网号也可使用,但一定要谨慎使用,要弄清你的路由器所用的路由选择软件是否支持全0或全1的子网号。
(3)不论是分类的IPv4地址还是CIDR,其子网中的主机号为全0或全1的地址都不能被指派。子网中主机号全0的地址为子网的网络号,主机号全1的地址为子网的广播地址。
2.子网掩码
为了告诉主机或路由器对一个A类、B类、C类网络进行了子网划分,使用子网掩码来表达对原网络中主机号的借位。
子网掩码是一个与IP地址相对应的、长32bit的二进制串,它由一串1和跟随的一串0组成。其中,1对应于IP地址中的网络号及子网号,而0对应于主机号。计算机只需将IP地址和其对应的子网掩码逐位“与”(逻辑AND运算),就可得出相应子网的网络地址。
现在的因特网标准规定:所有的网络都必须使用子网掩码。如果一个网络未划分子网,那么就采用默认子网掩码。 A、B、C类地址的默认子网掩码分别为255.0.0.0、255.255.0.0、255.255.255.0。 例如,某主机的IP地址192.168.5.56,子网掩码为255.255.255.0,进行逐位“与”运算后,得出该主机所在子网的网络号为192.168.5.0。
由于子网掩码是一个网络或一个子网的重要属性,所以路由器在相互之间交换路由信息时,必须把自己所在网络(或子网)的子网掩码告诉对方。路由表中的每个条目,除要给出目的网络地址和下一跳地址外,还要同时给出该目的网络的子网掩码。
在使用子网掩码的情况下:
(1)一台主机在设置IP地址信息的同时,必须设置子网掩码
(2)同属于一个子网的所有主机及路由器的相应端口,必须设置相同的子网掩码。
(3)路由器的路由表中,所包含信息的主要内容必须有目的网络地址、子网掩码、下一跳地址。
使用子网掩码时路由器的分组转发算法如下:
(1)从收到的分组的首部提取目的IP地址,记为D
(2)先判断是否为直接交付。对路由器直接相连的网络逐个进行检查:用各网络的子网掩码和D逐位相与,看结果是否和相应的网络地址匹配。若匹配,则将分组直接交付,否则间接交付, 执行步骤(3)
(3)若路由表中有目的地址为D的特定主机路由,则将分组传送给路由表中所指明的下一跳路由器;否则,执行(4)
(4)对路由表中的每一行(目的网络地址、子网掩码、下一跳地址)中的子网掩码和D逐位相“与”,其结果为N。若N与该行的目的网络地址匹配,则将分组传送给该行指明的下一跳路由器; 否则,执行步骤(5)
(5)若路由表中有一个默认路由,则将分组传送给路由表中所指明的默认路由器;否则,执行步骤(6)
(6)报告转发分组出错
3.无分类域间路由选择CIDR
无分类域间路由选择是在变长子网掩码的基础上提出的一种消除传统A、B、C类网络划分,并且可以在软件的支持下实现超网构造的一种IP地址的划分方法。
例如,如果一个单位需要2000个地址,那么就给它分配一个2048地址的块(8个连续的C类网络),而不是一个完全的B类地址。这样可以大幅度提高IP地址空间的利用率,减小路由器的路由表大小,提高路由转发能力。CIDR的主要特点如下:
(1)消除了传统A、B、C类地址及划分子网的概念, 因而可以更有效地分配IPv4的地址空间。CIDR使用网络前缀的概念代替子网络的概念。 因此,IP地址的无分类两级编址为:IP::={<网络前缀>,<主机号>}。
CIDR还使用斜线记法(或称CIDR记法), 即IP地址/网络前缀所占比特数。其中,网络前缀所占比特数对应于网络号的部分,等效于子网掩码中连续1的部分。 例如,对于128.14.32.5/20这个地址,它的掩码是20个连续的1和后续12个连续的0,通过逐位相与的方法可以得到该地址的网络前缀(或直接截取前20位):
CIDR虽然不使用子网,但仍然使用掩码一词。“CIDR不使用子网”是指CIDR并没有在32位地址中指明若干位作为子网字段。但分配到一个CIDR地址块的组织,仍可以在本组织内根据需要划分出一些子网。 例如,某组织分配到地址块/20,就可以再继续划分为8个子网(从主机号中借用3位来划分子网),这时每个子网的网络前缀就变成了23位。全0和全1的主机号地址一般不使用
(2)将网络前缀都相同的连续IP地址组成“CIDR地址块”。一个CIDR地址块可以表示很多地址,这种地址的聚合称为路由聚合,或称构成超网。 路由聚合使得路由表中的一个项目可以表示多个原来传统分类地址的路由,有利于减少路由器之间的路由选择信息的交换,从而提高网络性能。
例如,在上图所示的网络中,如果不使用路由聚合,那么R1的路由表中需要分别有到网络1和网络2的路由表项。网络1和网络2的网络前缀在二进制表示下,前16位相同,第17位不同,并且从R1到网络1和网络2的路由的下一跳皆为R2。若使用路由聚合,在R1看来,网络1和网络2可以构成一个更大的地址块206.1.0.0/16,到网络1和网络2的两条路由就可以聚合成一条到206.1.0.0/16的路由。
CIDR地址块中的地址数一定是2的整数次幂,实际可指派的地址数通常为2^N-2,N表示主机号的位数,主机号全0代表网络号,主机号全1为广播地址。网络前缀越短,其地址块所包含的地址数就越多。而在三级结构的IP地址中,划分子网是使网络前缀变长。
CIDR的优点在于网络前缀长度的灵活性。 由于上层网络的前缀长度较短,因此相应的路由表的项目较少。而内部又可采用延长网络前缀的方法来灵活地划分子网。
最长前缀匹配(最佳匹配):使用CIDR时,路由表中的每个项目由“网络前缀”和“下一跳地址”组成。在查找路由表时可能会得到不止一个匹配结果。此时,应当从匹配结果中选择具有最长网络前缀的路由,因为网络前缀越长,其地址块就越小,因而路由就越具体。
CIDR查找路由表的方法:为了更加有效地查找最长前缀匹配,通常将无分类编址的路由表存放在一种层次的数据结构中,然后自上而下地按层次进行查找。这里最常用的数据结构就是二叉线索。
网络前缀是指网络号字段(net-id)中前面的几个类别位还是指整个的网络号字段?
是指整个的网络号字段,包括最前面的几个类别位在内。网络前缀常简称为前缀。例如一个B类地址10100000 00000000 00000000 00000000,其类别位就是最前面的两位:10,而网络前缀就是前16位:10100000 00000000
4.3.4 ARP、DHCP与ICMP
1.IP地址与硬件地址
IP地址是网络层使用的地址,它是分层次等级的。硬件地址是数据链路层使用的地址(如MAC地址),它是平面式的。在网络层及网络层之上使用IP地址,IP地址放在IP数据报的首部,而MAC地址放在MAC帧的首部。通过数据封装,把IP数据报分组封装为MAC帧后,数据链路层看不见数据报分组中的IP地址。
由于路由器的隔离,IP网络中无法通过广播方式依靠MAC地址来完成跨网络的寻址,因此在IP网络的网络层只使用IP地址来完成寻址。寻址时,每个路由器依据其路由表(依靠静态路由或动态路由协议生成)选择到目标网络(即主机号全为0的网络地址)需要转发到的下一跳(路由器的物理端口号或下一网络地址),而IP分组通过多次路由转发到达目标网络后,改为在目标LAN中通过数据链路层的MAC地址以广播方式寻址。 这样可以提高路由选择的效率。
(1)在IP层抽象的互联网上只能看到IP数据报
(2)虽然在IP数据报首部中有完整的源IP地址和目的IP地址,但路由器只根据目的IP地址的网络号进行路由选择。
(3)在局域网的链路层,只能看见MAC帧。而通过路由器转发IP分组时,此IP分组在每个网络中都被路由器解封装和重新封装。因此IP数据报在被路由器转发时,其数据链路层封装所使用的MAC地址是不断改变的。这也决定了无法使用MAC地址跨网络通信。
(4)尽管互联在一起的网络的硬件地址体系各不相同,但IP层抽象的互联网却屏蔽了下层这些复杂的细节。只要我们在网络层上讨论问题,就能够使用统一的、抽象的IP地址研究主机与主机或路由器之间的通信。
路由器由于互联多个网络,因此它不仅有多个IP地址,也有多个硬件地址
IP地址与MAC地址:
交换机基于数据帧的MAC地址转发数据帧,路由器基于数据包(数据包=数据+IP地址(源、目标IP地址))的IP地址转发数据包
数据包在传输过程中不变,经过网络设备时,数据帧(数据帧=数据包+MAC地址(源、目标MAC))要用新的物理层地址重新封装
MAC地址决定了数据帧下一次由哪个设备接收,而IP地址决定了数据包的起点和终点。MAC地址每经过一个网络设备变一次。
2.地址解析协议ARP
无论网络层使用什么协议,在实际网络的链路上传送数据帧时,最终必须使用硬件地址。所以需要一种方法来完成IP地址到MAC地址的映射, 这就是地址解析协议(Address Resolution Protocol,ARP)。每台主机都设有一个ARP高速缓存,用来存放本局域网上各主机和路由器的IP地址到MAC地址的映射表,称ARP表。使用ARP来动态维护此ARP表。
ARP工作在网络层, 其工作原理如下:主机A欲向本局域网上的某台主机B发送IP数据报时,先在其ARP高速缓存中查看有无主机B的IP地址。如有,就可查出其对应的硬件地址,再将此硬件地址写入MAC帧,然后通过局域网将该MAC帧发往此硬件地址。如果没有,那么就通过使用目的MAC地址为FF-FF-FF-FF-FF-FF的帧来封装并广播ARP请求分组,使同一个局域网里的所有主机收到ARP请求。主机B收到该ARP请求后,向主机A发出响应ARP分组,分组中包含主机B的IP与MAC地址的映射关系,主机A在收到后将此映射写入ARP缓存,然后按查询到的硬件地址发送MAC帧。ARP由于“看到了”IP地址,所以它工作在网络层,而NAT路由器由于“看到了”端口,所以它工作在传输层。
ARP用于解决同一个局域网上的主机或路由器的IP地址和硬件地址的映射问题。如果所要找的主机和源主机不在同一个局域网上,那么就要通过ARP找到一个位于本局域网上的某个路由器的硬件地址,然后把分组发送给这个路由器,让这个路由器把分组转发给下一个网络。剩下的工作就由下一个网络来做,尽管ARP请求分组是广播发送的,但ARP响应分组是普通的单播,即从一个源地址发送到一个目的地址。
ARP的4种典型情况总结如下:
(1)发送方是主机时,要把IP数据报发送到本网络上的另一台主机。这时用ARP找到目的主机的硬件地址
(2)发送方是主机时,要把IP数据报发送到另一个网络上的一台主机。这时用ARP找到本网络上的一个路由器的硬件地址,剩下的工作由这个路由器来完成。
(3)发送方是路由器时,要把IP数据报转发到本网络上的一台主机。这时用ARP找到目的主机的硬件地址。
(4)发送方是路由器时,要把IP数据报转发到另一个网络上的一台主机。这时用ARP找到本网络上的一个路由器的硬件地址,剩下的工作由找到的这个路由器完成。
从IP地址到硬件地址的解析是自动进行的,主机的用户并不知道这种地址解析过程。只要主机或路由器和本网络上的另一个已知IP地址的主机或路由器进行通信,ARP就会自动地将这个IP地址解析为链路层所需要的硬件地址。
假定在一个局域网中的计算机A发送ARP请求分组,希望找出计算机B的硬件地址。这时局域网上的所有计算机都能收到这个广播发送的ARP请求分组。试问这时由哪个计算机使用ARP响应分组将计算机B的硬件地址告诉计算机A?
这要区分两种情况。第一,如果计算机B和计算机A都连接在同一个局域网上,那么就是计算机B发送ARP响应分组。第二,如果计算机B和计算机A不连接在同一个局域网上,那么就必须由一个连接计算机A所在局域网的路由器来转发ARP请求分组。这时,该路由器向计算机A发送ARP回答分组,给出自己的硬件地址。
3.动态主机配置协议DHCP
动态主机配置协议(Dynamic Host Configuration Protocol,DHCP)常用于给主机动态地分配IP地址,它提供了即插即用联网的机制, 这种机制允许一台计算机加入新的网络和获取IP地址而不用手工参与。DHCP是应用层协议,它是基于UDP的。
DHCP的工作原理如下:使用客户/服务器方式。需要IP地址的主机在启动时就向DCHP服务器广播发送发现报文,这时该主机就成为DHCP客户。本地网络上所有主机都能收到此广播报文,但只有DHCP服务器才回答此广播报文。DHCP服务器先在其数据库中查找该计算机的配置信息。若找到,则返回找到的信息。若找不到,则从服务器的IP地址池中取一个地址分配给该计算机。DHCP服务器的回答报文称为提供报文。
DHCP服务器聚合DHCP客户端的交换过程如下:
(1)DHCP客户机广播“DHCP发现”消息,试图找到网络中的DHCP服务器,以便从DHCP服务器获得一个IP地址。
(2)DHCP服务器收到“DHCP发现”消息后,向网络中广播“DHCP提供”消息,其中包括提供DHCP客户机的IP地址和相关配置信息。
(3)DHCP客户机收到“DHCP提供”消息,如果接收DHCP服务器所提供的相关参数,那么通过广播“DHCP请求”消息向DHCP服务器请求提供IP地址。
(4)DHCP服务器广播“DHCP确认”消息,将IP地址分配给DHCP客户机
DHCP允许网络上配置多台DHCP服务器,当DHCP客户机发出DHCP请求时,有可能收到多个应答信息。这时,DHCP客户机只会挑选其中的一个,通常挑选最先到达的。
DHCP服务器分配给DHCP客户的IP地址是临时的, 因此DHCP客户只能在一段有限的时间内使用这个分配到的IP地址。DHCP称这段时间为租用期。租用期的数值应由DHCP服务器自己决定,DHCP客户也可在自己发送的报文中提出对租用期的要求。
DHCP是应用层协议,因为它是通过客户/服务器方式工作的, DHCP客户端向DHCP服务器请求服务。应用层协议有两种工作方式:客户/服务器方式和P2P方式,而其他层次的协议是没有这两种工作方式的。
DHCP的客户端和服务器端需要通过广播方式来进行交互,原因是在DHCP执行期间,客户端和服务器端都没有标识自己身份的IP地址,因此不可能通过单播的形式进行交互。采用UDP而不采用TCP的原因是:TCP需要建立连接,如果连对方的IP地址都不知道,那么更不可能通过双方的套接字建立连接。
4.网际控制报文协议ICMP
为了提高IP数据报交付成功的机会,在网络层使用了网际控制报文协议(Internet Control Message Protocol,ICMP)来让主机或路由器报告差错和异常情况。ICMP报文作为IP层数据报的数据,加上数据报的首部,组成IP数据报发送出去。ICMP是IP层协议。
ICMP报文的种类有两种,即ICMP差错报告报文和ICMP询问报文。
ICMP差错报告报文用于目标主机或到目标主机路径上的路由器向源主机报告差错和异常情况。 共有以下5种类型:
(1)终点不可达
当路由器或主机不能交付数据报时,就向源点发送终点不可达报文
(2)源点抑制
当路由器或主机由于拥塞而丢弃数据报时,就向源点发送源点抑制报文,使源点知道应当把数据报的发送速率放慢。
(3)时间超过
当路由器收到生存时间TTL为0的数据报时,除丢弃该数据报外,还要向源点发送时间超过报文。当终点在预先规定的时间内不能收到一个数据报的全部数据报片时,就把已收到的数据报片都丢弃,并向源点发送时间超过报文。
(4)参数问题
当路由器或目的主机收到的数据报的首部中有的字段的值不正确时,就丢弃该数据报,并向源点发送参数问题报文
(5)改变路由(重定向)
路由器把改变路由报文发送给主机,让主机知道下次应将数据报发送给另外的路由器(可通过更好的路由)
不应发送ICMP差错报文的几种情况如下:
(1)对ICMP差错报告报文不再发送ICMP差错报告报文
(2)对第一个分片的数据报片的所有后续数据报片都不发送ICMP差错报告报文
(3)对具有组播地址的数据报都不发送ICMP差错报告报文
(4)对具有特殊地址(如127.0.0.0或0.0.0.0)的数据报不发送ICMP差错报告报文
ICMP询问报文有4种类型:回送请求和回答报文、时间戳请求和回答报文、掩码地址请求和回答报文、路由器询问和通告报文,最常用的是前两类。
ICMP的两个常见应用是分组网间探测PING(用来测试两台主机之间的连通性)和Traceroute(UNIX中的名字,在Windows中是tracert,可以用来跟踪分组经过的路由)。其中PING使用了ICMP回送请求和回答报文,Traceroute(Tracert)使用了ICMP时间超过报文。
PING工作在应用层,它直接使用网络层的ICMP,而未使用传输层的TCP或UDP。Traceroute/Tracert工作在网络层
例题:
答案:B;
例题:下列地址中,属于单播地址的是()
A.172.31.128.255/18 B.10.255.255.255
C.192.168.24.59/30 D.224.105.5.211
答案:B、C主机号全为1,为广播地址,D选项为D类组播地址
例题:在子网192.168.4.0/30中,能接收目的地址为192.168.4.3的IP分组的最大主机数是()
A.0 B.1 C.2 D.4
答案:C;
例题:把IP网络划分为子网,这样做的好处是()
A.增加冲突域的大小 B.增加主机的数量
C.减少广播域的大小 D.增加网络的数量
答案:C;划分子网可以增加子网的数量,子网之间的数据传输需要通过路由器进行,因此自然就减少了广播域的大小。另外,划分子网,由于子网号占据了主机号位,会减少主机的数量;划分子网仅提高了IP地址的利用率,并不增加网络的数量
例题:一台主机有两个IP地址,一个地址是192.168.11.25,另一个地址可能是()
A.192.168.11.0 B.192.168.11.26
C.192.168.13.25 D.192.168.11.24
答案:C;
例题:
答案:D;
例题:位于不同子网中的主机之间相互通信时,下列说法中正确的是()
A.路由器在转发IP数据报时,重新封装源硬件地址和目的硬件地址
B.路由器在转发IP数据报时,重新封装源IP地址和目的IP地址
C.路由器在转发IP数据报时,重新封装目的硬件地址和目的IP地址
D.源站点可以直接进行ARP广播得到目的站点的硬件地址
答案:IP数据报的首部既有源IP地址,又有目的IP地址,但在通信中路由器只根据目的IP地址进行路由选择。IP数据报在通信过程中,首部的源IP地址和目的IP地址在经过路由器时不会发生改变。由于相互通信的主机不在同一个子网内,因此不可以直接通过ARP广播得到目的站的硬件地址。硬件地址只具有本地意义,因此每当路由器将IP数据报转发到一个具体的网络中时,都需要重新封装源硬件地址和目的硬件地址。
例题:根据NAT协议,下列IP地址中()不允许出现在因特网上
A.192.172.56.23 B.172.15.34.128
C.192.168.32.17 D.172.128.45.34
答案:C;
例题:
答案:C;NAT的表项需要管理员添加,这样才能控制一个内网到外网的网络连接。
例题:在TCP/IP体系结构中,直接为ICMP提供服务的协议是()
A.PPP B.IP C.UDP D.TCP
答案:B;UDP是传输层协议,为应用层提供服务
例题:若将101.200.16.0/20划分为5个子网,则可能的最小子网的可分配IP地址数是()
A.126 B.254 C.510 D.1022
答案:B;为了保证某子网的可分配IP地址数尽可能小,即要让其他子网的可分配IP地址数尽可能大,不能采用平均划分的方法,而要采用变长的子网划分方法,也就是最大子网用1位子网号,第二大子网用2位子网号,依次类推
子网1:101.200.00010000.00000001~101.200.00010111.11111110
子网2:101.200.00011000.00000001
子网3:101.200.00011100.00000001
子网4:101.200.00011110.00000001
子网5:101.200.00011111.00000001
例题:某网络的一台主机产生了一个IP数据报,头部长度为20B,数据部分长度为2000B。该数据报需要经过两个网络到达目的主机,这两个网络所允许的最大传输单位MTU分别为1500B和576B。问原IP数据报到达目的主机时分成了几个IP小报文?每个报文的数据部分长度分别是多少?
答案:经过第一个网络后分成了两个IP小报文,数据长度分别是1480B,520B;第一个报文经过第二个网络后,变成数据部分长度分别为552B、552B、376B的三个小报文;第二个报文不用分片;
最终到达目的主机时,为数据长度分别为552B、552B、376B、520B的四个小报文
例题:设目的地址为201.230.34.56,子网掩码为255.255.240.0,求子网地址
答案:201.230.32.0
例题:现有一公司需要创建内部网络,该公司包括工程技术部、市场部、财务部和办公室4个部门,每个部门有20~30台计算机。
(1)若要将几个部门从网络上分开,如果分配给该公司使用的一个地址为一个C类地址,网络地址为192.168.161.0,那么如何划分网络?可以将几个部门分开?
(2)确定各部门的网络地址和子网掩码,并写出分配给每个部门网络中的主机IP地址范围
答案:由于每个部门主机数相差不多,不能使用变长子网划分;使用子网号的比特数为3,主机号的比特数为5,子网掩码均为255.255.255.224;注意子网号不能为全0或全1,每个子网的主机数最多为32-2=30
例题:考虑某路由器具有下表所示的路由表项。
(1)假设路由器收到两个分组:分组A的目的地址为131.128.55.33,分组B的目的地址为131.128.55.38。确定路由器为这两个分组选择的下一跳,并加以说明
(2)在路由表中增加一个路由表项,它使以131.128.55.33为目的地址的IP分组选择A作为下一跳,而不影响其他目的地址的IP分组的转发
(3)在路由表中增加一个路由表项,使所有目的地址与该路由表中任何路由表项都不匹配的IP分组被转发到下一跳E
(4)将131.128.56.0/24划分为4个规模尽可能大的等长子网,给出子网掩码及每个子网的可分配地址范围
答案:(1)分组A:C;分组B:B;
(2)只需构造一条网络前缀和该地址匹配32位的项即可。 增加表项:网络前缀131.128.55.33/32;下一跳A
(3)增加一条默认路由:网络前缀0.0.0.0/0;下一跳E; 用无类别域间路由标记表示的IPv4默认路由是0.0.0.0/0。因为子网掩码是/0,所以它是最短的可能匹配。 当查找不到匹配的路由时,自然而然就会转而使用这条路由。
(4)2位作为子网位,CIDR广泛使用后允许子网位为全0和全1;
例题:
答案:LAN3:主机数150,主机号8bit,网络前缀24。取24位为0,30.138.118.0/24
LAN2:主机数91,主机号7bit,网络前缀25。取第24、25位为10,30.138.119.0/25
LAN5:主机数15,主机号5bit,网络前缀27。取第24、25、26、27位为1110,30.138.119.192/27
注意一个路由器端口也需要占用一个IP地址;LAN1:共有3个路由器,再加上一个网关地址,至少需要4个IP地址。 主机号3bit,网络前缀29。取第24、25、26、27、28、29位为111101,30.138.119.232/29
LAN4:主机数为3,主机号为3bit,网络前缀29。取第24、25、26、27、28、29位为111110,30.138.119.240/29
例题:
答案:(1)202.118.1.0/25;202.118.1.128/25;
(2)R1必须为域名服务器设定特定路由,否则将找不到特定的域名服务器主机。由于R1专门为域名服务器设定了一个特定的路由表项,因此该路由表项中的子网掩码应为255.255.255.255(只有和全1的子网掩码相与时,才能完全保证和目的IP地址一样,从而选择该特定路由)。到互联网中的目的网络IP地址不可能全包含在路由表中,必须设置默认路由。因此R1到互联网的路由实质上相当于一个默认路由(即当某一目的网络IP地址与路由表中其他任何一项都不匹配时,匹配该默认路由表)
(3)
例题:一个IPv4分组到达一个结点时,其首部信息(以十六进制表示)为:0x45 00 00 54 00 03 58 50 20 06 FF F0 7C 4E 03 02 B4 0E 0F 02。请回答:
(1)分组的源IP地址和目的IP地址各是什么(点分十进制表示法)
(2)该分组数据部分的长度是多少
(3)该分组是否已经分片?如果有分片,那么偏移量是多少
答案:(1)124.78.3.2;180.14.15.2
(2)64B;(3)为最后一个分片,MF=0,DF=1,片偏移6224,单位为8B;
例题:
(1)主机A所在网络的网关路由器的相应端口的MAC地址是多少
(2)该IP分组所携带的数据量为多少字节
(3)如果该分组需要被路由器转发到一条MTU为380B的链路上,那么路由器将做何种操作
答案:(1)源MAC地址为网关路由器端口的MAC地址(若为A发出的帧,则目的MAC地址为默认网关的MAC地址)。 00:00:5e:00:01:01
(2)380B
(3)DF=1,不能分片,此时,路由器应进行的操作是丢弃该分组,并用ICMP差错报文向源主机报告
例题:
(1)DHCP服务器可为主机2~主机N动态分配IP地址的最大范围是什么?主机2使用DHCP协议获取IP地址的过程中,发送的封装DHCP Discover报文的IP分组的源IP地址和目的IP地址分别是多少
(2)若主机2的ARP表为空,则该主机访问Internet时,发出的第一个以太网帧的目的MAC地址是什么?封装主机2发往Internet的IP分组的以太网帧的目的MAC地址是什么?
(3)若主机1的子网掩码和默认网关分别配置为255.255.255.0和111.123.15.2,则该主机是否能访问WWW服务器?是否能访问Internet?请说明理由。
答案:(1)111.123.15.5~111.123.15.254;0.0.0.0;255.255.255.255
(2)ff-ff-ff-ff-ff-ff ; 00-a1-a1-a1-a1-a1
(3)如果网络A中的主机发现数据包的目的主机不在本地网络中,就把数据包转发给自己的网关,再由网关转发给网络B的网关,网络B的网关再转发给网络B的某个主机。主机1能访问WWW服务器,但不能访问Internet。由于主机1的子网掩码配置正确而默认网关IP地址被错误地配置为111.123.15.2(正确IP地址是111.123.15.1),所以主机1可以访问在同一个子网内的WWW服务器,但当主机1访问Internet时,主机1发出的IP分组会被路由到错误的默认网关(111.123.15.2),从而无法到达目的主机
例题:
答案:(1)192.168.1.127;192.168.1.128;有一个地址分配给了路由器端口, 还能连接45台
(2)776;2个;0;97
4.4 IPv6
4.4.1 IPv6的主要特点
解决IP地址耗尽问题的措施有以下三种:①采用无类别编址CIDR,使IP地址的分配更加合理;②采用网络地址转换(NAT)方法以节省全球IP地址;③采用具有更大地址空间的新版本的IPv6。其中前两种方法只是延长了IPv4地址分配结束的时间,只有第三种方法从根本上解决了IP地址的耗尽问题。
IPv6的主要特点如下:
(1)更大的地址空间。IPv6将地址从IPv4的32位增大到了128位。IPv6地址的字节数(16B)是IPv4地址的字节数(4B)的平方
(2)扩展的地址层次结构
(3)灵活的首部格式
(4)改进的选项
(5)允许协议继续扩充
(6)支持即插即用(即自动配置)
(7)支持资源的预分配
(8)IPv6只有在包的源节点才能分片,是端到端的,传输路径中的路由器不能分片, 所以从一般意义上说,IPv6不允许分片(不允许类似IPv4在路由分片)
(9)IPv6首部长度必须是8B的整数倍,而IPv4首部是4B的整数倍。
(10)增大了安全性。身份验证和保密功能是IPv6的关键特征
虽然IPv6与IPv4不兼容,但总体而言它与所有其他的因特网协议兼容,包括TCP、UDP、ICMP、IGMP、OSPF、BGP和DNS,只是在少数地方做了必要的修改(大部分是为了处理长的地址)。IPv6相当好地满足了预定的目标,主要体现在:
(1)首先也是最重要的,IPv6有比IPv4长得多的地址。IPv6的地址用16个字节表示,地址空间是IPv4的2^96倍
(2)简化了IP分组头,它包含8个域。这一改变使得路由器能够更快地处理分组,从而可以改善吞吐率
(3)更好地支持选项。一些从前必要的段现在变成了可选段。此外,表示选项的方式的改变还能加快分组的处理速度
4.4.2 IPv6地址
IPv6数据报的目的地址可以是以下三种基本类型地址之一:
(1)单播
单播就是传统的点对点通信
(2)多播
多播是一点对多点的通信,分组被交付到一组计算机的每台计算机
(3)任播
这是IPv6增加的一种类型。任播的目的站是一组计算机,但数据报在交付时只交付其中的一台计算机,通常是距离最近的一台计算机。
IPv4地址通常使用点分十进制表示法。在IPv6标准中指定了一种比较紧凑的表示法,即把地址中的每4位用一个16进制数表示,并用冒号分割每16位,如4BF5:AA12:0216:FEBC:BA5F:039A:BE9A:2170
通常可以把IPv6地址缩写成更紧凑的形式。当16位域的开头有一些0时,可以采用一种缩写表示法,但在域中必须至少有一个数字。例如,可以把地址4BF5:0000:0000:0000:BA5F:039A:000A:2176缩写为4BF5:0:0:0:BA5F:39A:A:2176
当有相继的0值域时,还可以进一步缩写。这些域可以用双冒号(::)缩写。双冒号表示法在一个地址中仅能出现一次,因为0值域的个数没有编码,需要从指定的总的域个数来推算。这样一来,前述地址可被更紧凑地书写成4BF5::BA5F:39A:A:2176
IPv6扩展了IPv4地址的分级概念,它使用以下3个等级:第一级(*)指明全球都知道的公共拓扑;第二级(场点级)指明单个场点;第三级指明单个网络接口。 IPv6采用多级体系主要是为了使路由器能够更快地查找路由。
IPv4向IPv6过渡只能采用逐步演进的办法,同时还必须使新安装的IPv6系统能够向后兼容。IPv6系统必须能够接收和转发IPv4分组,并且能够为IPv4分组选择路由。
IPv4向IPv6过渡可以采用双协议栈和隧道技术两种策略:双协议技术是指在一台设备上同时装有IPv4和IPv6协议栈, 那么这台设备既能和IPv4网络通信,又能和IPv6网络通信。如果这台设备是一个路由器,那么在路由器的不同接口上分别配置了IPv4地址和IPv6地址,并很可能分别连接了IPv4网络和IPv6网络;如果这台设备是一台计算机,那么它将同时拥有IPv4地址和IPv6地址,并具备同时处理这两个协议地址的功能。隧道技术是指将整个IPv6数据报封装到IPv4数据报的数据部分,使得IPv6数据报可以在IPv4网络中传输。
例题:与IPv4相比,IPv6()
A.采用32位IP地址 B.增加了头部字段数目
C.不提供QoS保障 D.没有提供校验和字段
答案:C;IPv6支持QoS(服务质量),以满足实时、多媒体通信的需要。由于目前网络传输介质的可靠性较高,出现比特错误的可能性很低,且数据链路层和传输层有自己的校验,为了效率,IPv6没有校验和字段。
例题:下列关于IPv6的描述中,错误的是()
A.IPv6的首部长度是不可变的
B.IPv6不允许分片
C.IPv6采用了16B的地址,在可预见的将来不会用完
D.IPv6使用了首部校验和来保证传输的可靠性
答案:D;
4.5 路由协议
4.5.1 自治系统
自治系统(Autonomous System,AS):单一技术管理下的一组路由器,这些路由器使用一种AS内部的路由选择协议和共同的度量来确定分组在该AS内的路由,同时还使用一种AS之间的路由选择协议来确定分组在AS之间的路由。
一个自治系统内的所有网络都由一个行政单位管辖,一个自治系统的所有路由器在本自治系统内都必须是连通的。
4.5.2 域内路由与域间路由
自治系统内部的路由选择称为域内路由选择,自治系统之间的路由选择称为域间路由选择。 因特网有两大类路由选择协议
1.内部网关协议(Interior Gateway Protocol,IGP)
内部网关协议即在一个自治系统内部使用的路由选择协议,它与互联网中其他自治系统选用什么路由选择协议无关。目前这类路由选择协议使用得最多,如RIP和OSPF
2.外部网关协议(External Gateway Protocol,EGP)
若源站和目的站处在不同的自治系统中,当数据报传到一个自治系统的边界时(两个自治系统可能使用不同的IGP),就需要使用一种协议将路由选择信息传递到另一个自治系统中。这样的协议就是外部网关协议EGP。目前使用最多的外部网关协议是BGP-4
上图是两个自治系统互联的示意图。每个自治系统自己决定在本自治系统内部运行哪个内部路由选择协议(例如,可以是RIP,也可以是OSPF),但每个自治系统都有一个或多个路由器,除运行本系统的内部路由选择协议外,还要运行自治系统间的路由选择协议(如BGP-4)
4.5.3 路由信息协议(RIP)
路由信息协议(Routing Information Protocol,RIP)是内部网关协议IGP中最先得到广泛应用的协议。RIP是一种分布式的基于距离向量的路由选择协议,其最大优点就是简单。
1.RIP规定
(1)网络中的每个路由器都要维护从它自身到其他每个目的网络的距离记录(这是一组向量,称为距离向量)
(2)距离也称跳数(Hop Count),规定从一个路由器到直接连接网络的距离(跳数)为1。而每经过一个路由器,距离(跳数)加1。
(3)RIP认为好的路由就是它通过的路由器的数目少,即优先选择跳数少的路径
(4)RIP允许一条路径最多只能包含15个路由器(即最多允许15跳)。因此距离等于16时,它表示网络不可达。 可见RIP只适用于小型互联网。 距离向量路由可能会出现环路的情况,规定路径上的最高跳数的目的是为了防止数据报不断循环在环路上, 减少网络拥塞的可能性。
(5)RIP默认在任意两个使用RIP的路由器之间每30s广播一次RIP路由更新信息,以便自动建立并维护路由表(动态维护)
(6)在RIP中不支持子网掩码的RIP广播,所以RIP中每个网络的子网掩码必须相同。但在新的RIP2中,支持变长子网掩码和CIDR
2.RIP的特点
(1)仅和相邻路由器交换信息
(2)路由器交换的信息是当前路由器所知道的全部信息,即自己的路由表
(3)按固定的时间间隔交换路由信息,如每隔30s
RIP通过距离向量算法来完成路由表的更新。 最初,每个路由器只知道与自己直接相连的网络。通过每30s的RIP广播,相邻两个路由器相互将自己的路由表发给对方。于是经过第一次RIP广播,每个路由器就知道了与自己相邻的路由器的路由表(即知道了距离自己跳数为1的网络的路由)。同理,经过第二次RIP广播,每个路由器就知道了距离自己跳数为2的网络的路由… …因此经过若干RIP广播后,所有路由器都最终知道了整个IP网络的路由表,称为RIP最终是收敛的。通过RIP收敛后,每个路由器到每个目标网络的路由都是距离最短的(即跳数最少,最短路由),哪怕还存在另一条高速(低时延)但路由器较多的路由。
3.距离向量算法
每个路由表项目都有三个关键数据:<目的网络N,距离d,下一跳路由器X>。 对于每个相邻路由器发送过来的RIP报文,执行如下步骤:
(1)对地址为X的相邻路由器发来的RIP报文,先修改此报文中的所有项目:把“下一跳”字段中的地址都改为X,并把所有“距离”字段的值加1。
(2)对修改后的RIP报文中的每个项目,执行如下步骤:
①当原来的路由表中没有目的网络N时,把该项目添加到路由表中
②当原来的路由表中有目的网络N,且下一跳路由器的地址是X时,用收到的项目替换原路由表中的项目
③当原来的路由表中有目的网络N,且下一跳路由器的地址不是X时,如果收到的项目中的距离d小于路由表中的距离,那么就用收到的项目替换原路由表中的项目;否则什么也不做。
(3)如果180s(RIP默认超时时间为180s)还没有收到相邻路由器的更新路由表,那么把此相邻路由器记为不可达路由器,即把距离设置为16(距离为16表示不可达)
(4)返回
RIP最大的优点是实现简单、开销小、收敛过程较快。RIP的缺点如下:
(1)RIP限制了网络的规模,它能使用的最大距离为15(16表示不可达)
(2)路由器之间交换的是路由器中的完整路由表,因此网络规模越大,开销也越大
(3)网络出现故障时,会出现慢收敛现象(即需要较长时间才能将此信息传送到所有路由器),俗称“坏消息传得慢”,使更新过程的收敛时间长
RIP是应用层协议,它使用UDP传送数据(端口520)。RIP选择的路径不一定是时间最短的,但一定是具有最少路由器的路径。 因为它是根据最少的跳数进行路径选择的。
4.5.4 开放最短路径优先(OSPF)协议
1.OSPF协议的基本特点
开放最短路径优先OSPF协议是使用分布式链路状态路由算法的典型代表,也是内部网关协议IGP的一种。OSPF与RIP相比有以下4点主要区别:
(1)OSPF向本自治系统中的所有路由器发送信息,这里使用的方法是洪泛法。而RIP仅向自己相邻的几个路由器发送信息。
(2)发送的信息是与本路由器相邻的所有路由器的链路状态,但这只是路由器所知道的部分信息。“链路状态”说明本路由器和哪些路由器相邻及该链路的“度量”(或代价)。 而在RIP中,发送的信息是本路由器所知道的全部信息,即整个路由表。
(3)只有当链路状态发生变化时,路由器才用洪泛法向所有路由器发送此消息,并且更新过程收敛得快,不会出现RIP“坏消息传得慢”的问题。 而在RIP中,不管网络拓扑是否发生变化,路由器之间都会定期交换路由表的信息。
(4)OSPF是网络层协议,它不使用UDP或TCP,而直接用IP数据报传送(其IP数据报首部的协议字段为89)。而RIP是应用层协议,它在传输层使用UDP
用UDP传送是指将信息作为UDP报文的数据部分,使用IP数据报传送是指将该信息直接作为IP数据报的数据部分。RIP报文是作为UDP数据报的数据部分。
除以上区别外,OSPF还有以下特点:
(1)OSPF对不同的链路可根据IP分组的不同服务类型(TOS)而设置成不同的代价。因此,OSPF对于不同类型的业务可计算出不同的路由,十分灵活。
(2)如果到同一个目的网络有多条相同代价的路径,那么可以将通信量分配给这几条路径。这称为多路径间的负载平衡。
(3)所有在OSPF路由器之间交换的分组都具有鉴别功能,因而保证了仅在可信赖的路由器之间交换链路状态信息
(4)支持可变长度的子网划分和无分类编址CIDR
(5)每个链路状态都带上一个32位的序号,序号越大,状态就越新
2.OSPF的基本工作原理
由于各路由器之间频繁地交换链路状态信息,因此所有路由器最终都能建立一个链路状态数据库。这个数据库实际上就是全网的拓扑结构图,它在全网范围内是一致的(称为链路状态数据库的同步)。然后,每个路由器根据这个全网拓扑结构图,使用Dijkstra最短路径算法计算从自己到各目的网络的最优路径,以此构造自己的路由表。此后,当链路状态发生变化时,每个路由器重新计算到各目的网络的最优路径,构造新的路由表。
虽然使用Dijkstra算法能够计算出完整的最优路径,但路由表中不会存储完整路径,而只存储下一跳(只有到了下一跳路由器,才能知道再下一跳应当怎样走)
为使OSPF能够用于规模很大的网络,OSPF将一个自治系统再划分为若干更小的范围,称为区域。 划分区域的好处是,将利用洪泛法交换链路状态信息的范围局限于每个区域而非整个自治系统,减少了整个网络上的通信量。在一个区域内部的路由器只知道本区域的完整网络拓扑,而不知道其他区域的网络拓扑情况。 这些区域也有层次之分。处在上层的域称为主干区域,负责连通其他下层的区域,并且还连接其他自治域。
3.OSPF的五种分组类型
OSPF共有以下五种分组类型:
(1)问候分组
用来发现和维持邻站的可达性
(2)数据库描述分组
向邻站给出自己的链路状态数据库中的所有链路状态项目的摘要信息。
(3)链路状态请求分组
向对方请求发送某些链路状态项目的详细信息
(4)链路状态更新分组
用洪泛法对全网更新链路状态
(5)链路状态确认分组
对链路更新分组的确认
通常每隔10s,每两个相邻路由器要交换一次问候分组, 以便知道哪些站可达。在路由器刚开始工作时,OSPF让每个路由器使用数据库描述分组和相邻路由表交换本数据库中已有的链路状态摘要信息。然后,路由器使用链路状态请求分组,向对方请求发送自己所缺少的某些链路状态项目的详细信息。 经过一系列的这种分组交换,就建立了全网同步的链路数据库。下图给出了OSPF的基本操作,说明了两个路由器需要交换的各种类型的分组
在网络运行的过程中,只要一个路由器的链路状态发生变化,该路由器就要使用链路状态更新分组,用洪泛法向全网更新链路状态。其他路由器在更新后,发送链路状态确认分组对更新分组进行确认。
为了确保链路状态数据库与全网的状态保持一致,OSPF还规定每隔一段时间(如30分钟)就刷新一次数据库中的链路状态。 由于一个路由器的链路状态只涉及与相邻路由器的连通状态,因而与整个互联网的规模并无直接关系。因此,当互联网规模很大时,OSPF要比RIP好得多,而且OSPF协议没有“坏消息传播得慢”的问题。
4.5.5 边界网关协议BGP
边界网关协议(Border Gateway Protocol,BGP)是不同自治系统的路由器之间交换路由信息的协议,是一种外部网关协议。边界网关协议常用于互联网的网关之间。路由表包含已知路由器的列表、路由器能够达到的地址及到达每个路由器的路径的跳数。
内部网关协议主要设法使数据报在一个AS中尽可能有效地从源站传送到目的站。在一个AS内部不需要考虑其他方面的策略。然而BGP使用的环境却不同,主要原因如下:
(1)因特网的规模太大,使得自治系统之间路由选择非常困难
(2)对于自治系统之间的路由选择,要寻找最佳路由是很不现实的
(3)自治系统之间的路由选择必须考虑有关策略
边界网关协议BGP只能力求寻找一条能够到达目的网络且比较好的路由(不能兜圈子),而并非寻找一条最佳路由。BGP采用的是路径向量路由选择协议,它与距离向量协议和链路状态协议有很大的区别。BGP是应用层协议,它是基于TCP的。
BGP的工作原理如下:每个自治系统的管理员要选择至少一个路由器(可以有多个)作为该自治系统的“BGP发言人”。一个BGP发言人与其他自治系统中的BGP发言人要交换路由信息,就要先建立TCP连接(可见BGP报文是通过TCP传送的,也就是说BGP报文是TCP报文的数据部分),然后在此连接上交换BGP报文以建立BGP会话,再利用BGP会话交换路由信息。当所有BGP发言人都相互交换网络可达性的信息后,各BGP发言人就可找出到达各个自治系统的较好路由。
每个BGP发言人除必须运行BGP外,还必须运行该AS所用的内部网关协议,如OSPF或RIP。BGP所交换的网络可达性信息就是要到达某个网络(用网络前缀表示)所要经过的一系列AS。 下图给出了一个BGP发言人交换路径向量的例子:
BGP的特点如下:
(1)BGP交换路由信息的结点数量级是自治系统的数量级,要比这些自治系统中的网络数少很多
(2)每个自治系统中BGP发言人(或边界路由器)的数目是很少的。这样就使得自治系统之间的路由选择不致过分复杂
(3)BGP支持CIDR,因此BGP的路由表也就应当包括目的网络前缀、下一跳路由器,以及到达该目的网络所要经过的各个自治系统序列
(4)在BGP刚运行时,BGP的邻站交换整个BGP路由表,但以后只需在发生变化时更新有变化的部分。 这样做对节省网络带宽和减少路由器的处理开销都有好处
BGP-4共使用4种报文:
(1)打开(Open)报文
用来与相邻的另一个BGP发言人建立关系
(2)更新(Update)报文
用来发送某一路由的信息,以及列出要撤销的多条路由
(3)保活(Keepalive)报文
用来确认打开报文并周期性地证实邻站关系
(4)通知(Notification)报文
用来发送检测到的差错
RIP、OSPF、BGP的比较如下:
例题:用于域间路由的协议是()
A.RIP B.BGP C.OSPF D.ARP
答案:B
例题:BGP交换的网络可达性信息是()
A.到达某个网络所经过的路径 B.到达某个网络的下一跳路由器
C.到达某个网络的链路状态摘要信息 D.到达某个网络的最短距离及下一条路由器
答案:A;BGP交换的路由信息是到达某个目的网络所要经过的各个自治系统序列而不仅仅是下一跳
例题:RIP使用UDP,OSPF使用IP,而BGP使用TCP。这样做有何优点?为什么RIP周期性地与邻站交换信息而BGP却不这样做
答案:RIP处于UDP的上层,RIP所接收的路由信息都封装在UDP数据报中;OSPF的位置位于网络层,由于要交换的信息量较大,因此应使报文的长度尽量短,因此采用IP;BGP要在不同的自治系统之间交换路由信息,由于网络环境复杂,需要保证可靠的传输,所以选择TCP
内部网关协议主要设法使数据报在一个自治系统中尽可能有效地从源站传送到目的站,在一个自治系统内部并不需要考虑其他方面的策略,然而BGP使用的环境却不同。主要有以下三个原因:第一,因特网规模太大,使得自治系统之间的路由选择非常困难;第二,对于自治系统之间的路由选择,要寻找最佳路由是不现实的;第三,自治系统之间的路由选择必须考虑有关策略。由于上述情况,BGP只能力求寻找一条能够到达目的网络且较好的路由,而并非寻找一条最佳路由,所以BGP不需要像RIP那样周期性地和邻站交换路由信息。
例题:
(1)试求路由器B更新后的路由表并说明主要步骤
(2)当路由器B收到发往网络N2的IP分组时,应该做何处理?
答案:(1)注意新的目的网络地址需增加表项。
(2)丢弃该IP分组并向源主机报告目的不可达。
例题:
答案:(1)
(2)E0; (3)BGP-4;TCP;
例题:
请根据题描述的网路,回答下列问题:
(1)假设路由表结构包括(目的网络,下一跳,接口),请给出题图中的R1的路由表,要求包括到达题图中子网192.1.X.X的路由,且路由表中的路由项尽可能少.
(2)当主机192.168.1.130向主机192.1.7.211发送一个TTL=64的IP分组时R1通过哪个接口转发该IP分组?主机192.1.7.211收到的IP分组的TTL是多少?
(3)若R1增加一条Metric为10的链路链接Internet,则题表中R1的LSI需要增加哪些信息?
答案:(1)一个路由器有多个IP地址,R3在Link2上的本地IP地址为10.1.1.10,即为R3在Link2上的IP地址,R1的路由表中目的网络192.1.5.0/24的下一跳地址为R3在Link2上的IP地址,即为上述地址。
(2)L0;61
(3)增加一条特殊的直连网络,网络前缀Prefix为0.0.0.0/0,Metric为10
4.6 IP组播
4.6.1 组播的概念
为了能够支持像视频点播和视频会议这样的多媒体应用,网络必须实施某种有效的组播机制。使用多个单播传送来仿真组播总是可能的,但这会引起主机上大量的处理开销和网络上太多的交通量。人们所需要的组播机制是让源计算机一次发送的单个分组可以抵达用一个组地址标识的若干目标主机,并被它们正确接收。
组播一定仅用于UDP, 它对将报文同时送往多个接收者的应用来说非常重要。而TCP是一个面向连接的协议,它意味着分别运行于两台主机(由IP地址来确定)内的两个进程(由端口号来确定)之间存在着一条连接,因此会一对一地发送。
使用组播的缘由是,有的应用程序要把一个分组发送给多个目的地主机。不是让源主机给每个目的地主机都发送一个单独的分组,而是让源主机把单个分组发送给一个组播地址,该组播地址标识一组地址。网络(如因特网)把这个分组的副本投递给该组中的每台主机。主机可以选择加入或离开一个组,因此一台主机可以同时属于多个组。
因特网中的IP组播也使用组播组的概念,每个组都有一个特别分配的地址,要给该组发送的计算机将使用这个地址作为分组的目标地址。在IPv4中,这些地址在D类地址空间中分配,而IPv6也有一部分地址空间保留给组播组。
主机使用一个称为IGMP(因特网组管理协议)的协议加入组播组。它们使用该协议通知本地网络上的路由器关于要接收发送给某个组播组的分组的愿望。通过扩展路由器的路由选择和转发功能,可以在许多路由器互联的支持硬件组播的网络上实现因特网组播。
需要注意,主机组播时仅发送一份数据,只有数据在传送路径出现分岔时才将分组复制后继续转发。 因此,对发送者而言,数据只需发送一次就可以发送到所有接收者, 大大减轻了网络的负载和发送者的负担。组播需要路由器的支持才能实现,能够运行组播协议的路由器称为组播路由器。 单播与组播的比较如图:
4.6.2 IP组播地址
IP组播使用D类地址格式。D类地址的前四位是1110,因此D类地址范围是224.0.0.0~239.255.255.255。每个D类IP地址标志一个组播组。
组播数据报和一般的IP数据报的区别是,前者使用D类IP地址作为目的地址,并且首部中的协议字段值是2,表明使用IGMP。 需注意:
(1)组播数据报也是尽最大努力交付,不提供可靠交付
(2)组播地址只能用于目的地址,而不能用于源地址
(3)对组播数据报不产生ICMP差错报文。 因此,若在PING命令后键入组播地址,将永远不会收到响应。
(4)并非所有D类地址都可作为组播地址
IP组播可分为两种:一种只在本局域网上进行硬件组播;另一种则在因特网的范围内进行组播。在因特网上进行组播的最后阶段,还是要把组播数据报在局域网上用硬件组播交付给组播组的所有成员。 下面讨论硬件组播
IANA(The Internet Assigned Numbers Authority,互联网数字分配机构)拥有的以太网组播地址的范围是从01-00-5E-00-00-00到01-00-5E-7F-FF-FF。在每个地址中,只有23位可用作组播。这只能和D类IP地址中的23位有一一对应关系。D类IP地址可供分配的有28位,在这28位中,前5位不能用来构成以太网的硬件地址。
例如,IP组播地址224.128.64.32(即E0-80-40-20)和另一个IP组播地址224.0.64.32(即E0-00-40-20)转换成以太网的硬件组播地址都是01-00-5E-00-40-20。由于组播IP地址与以太网硬件地址的映射关系不是唯一的,因此收到组播数据报的主机,还要在IP层利用软件进行过滤,把不是本主机要接收的数据报丢弃。
4.6.3 IGMP与组播路由算法
要使路由器知道组播组成员的信息,需要利用因特网组管理协议(Internet Group Management Protocol,IGMP)。连接到局域网上的组播路由器还必须和因特网上的其他组播路由器协同工作,以便把组播数据报用最小代价传送给所有组成员,这就需要使用组播路由选择协议。
IGMP并不是在因特网范围内对所有组播组成员进行管理的协议。IGMP不知道IP组播组包含的成员数,也不知道这些成员分布在哪些网络上。IGMP让连接到本地局域网上的组播路由器知道本局域网上是否有主机参加或退出了某个组播组。
IGMP应视为TCP/IP的一部分,其工作可分为两个阶段
第一阶段:当某台主机加入新的组播组时,该主机应向组播组的组播地址发送一个IGMP报文,声明自己要成为该组的成员。本地的组播路由器收到IGMP报文后,将组成员关系转发给因特网上的其他组播路由器。
第二阶段:因为组成员关系是动态的,本地组播路由器要周期性地探询本地局域网上的主机,以便知道这些主机是否仍继续是组的成员。只要对某个组有一台主机响应,那么组播路由器就认为这个组是活跃的。但一个组在经过几次的探询后仍然没有一台主机响应时,则不再将该组的成员关系转发给其他的组播路由器。
组播路由选择实际上就是要找出以源主机为根结点的组播转发树,其中每个分组在每条链路上只传送一次(即在组播转发树上的路由器不会收到重复的组播数据报)。不同的多播组对应于不同的多播转发树;同一个多播组,对不同的源点也会有不同的多播转发树。
在许多由路由器互联的支持硬件多点传送的网络上实现因特网组播时,主要有三种路由算法:第一种是基于链路状态的路由选择;第二种是基于距离-向量的路由选择;第三种可以建立在任何路由器协议之上,因此称为协议无关的组播(PIM)
例题:以下关于组播概念的描述中,错误的是()
A.在单播路由选择中,路由器只能从它的一个接口转发收到的分组
B.在组播路由选择中,路由器可以从它的多个接口转发收到的分组
C.用多个单播仿真一个组播时需要更多的带宽
D.用多个单播仿真一个组播时时延基本上是相同的
答案:D;
例题:因特网的组播是怎样实现的?为什么因特网上的组播比以太网上的组播复杂得多?
答案:因特网的组播是靠路由器来实现的,这些路由器必须增加一些能够识别组播的软件。能够运行组播协议的路由器可以是一个单独的路由器,也可以是运行组播软件的普通路由器。因特网上的组播比以太网上的组播复杂得多,因为以太网本身支持广播和组播,而因特网上当前的路由器和许多物理网络都不支持广播和组播。
4.7 移动IP
4.7.1 移动IP的概念
支持移动性的因特网体系结构与协议共称为移动IP,它是为了满足移动结点(计算机、服务器、网段等)在移动中保持其连接性而设计的。 更确切地说,移动IP技术是指移动结点以固定的网络IP地址实现跨越不同网段的漫游功能,并保证基于网络IP的网络权限在漫游过程中不发生任何改变。移动IP的目标是把分组自动地投递给移动结点。一个移动结点是把其连接点从一个网络或子网改变到另一个网络或子网的主机。使用移动IP,一个移动结点可以在不改变其IP地址的情况下改变其驻留位置。
基于IPv4的移动IP定义三种功能实体:移动结点、归属代理(也称本地代理)和外埠代理(也称外部代理)。归属代理和外埠代理又统称为移动代理。
(1)移动结点
具有永久IP地址的移动结点
(2)本地代理
在一个网络环境中,一个移动结点的永久“居所”被称为归属网络,在归属网络中代表移动结点执行移动管理功能的实体称为归属代理(本地代理),它根据移动用户的转交地址,采用隧道技术转交移动结点的数据包。
(3)外部代理
在外部网络中帮助移动结点完成移动管理功能的实体称为外部代理。
移动IP和移动自组网络并不相同,移动IP技术使漫游的主机可以用多种方式连接到因特网,移动IP的核心网络功能仍然是基于固定互联网中一直使用的各种路由选择协议,移动自组网络是将移动性扩展到无线领域中的自治系统,它具有自己独特的路由选择协议,并且可以不和因特网相联。
移动IP与动态IP是两个完全不同的概念,动态IP是指局域网中的计算机可以通过网络中的DHCP服务器动态地获得一个IP地址,而不需要用户在计算机的网络设置中指定IP地址。
4.7.2 移动IP通信过程
在移动IP中,每个移动结点都有一个唯一的本地地址,当移动结点移动时,它的本地地址是不变的, 在本地网络链路上每个本地结点还必须有一个本地代理来为它维护当前的位置信息,这就需要引入转交地址。当移动结点连接到外地网络链路上时,转交地址就用来标识移动结点现在所处的位置,以便进行路由选择。移动结点的本地地址与当前转交地址的联合称为移动绑定或简称绑定。当移动结点得到一个新的转交地址时,通过绑定向本地代理进行注册,以便让本地代理即时了解移动结点的当前位置。
移动IP技术的基本通信流程如下:
(1)移动结点在本地网时,按传统的TCP/IP方式进行通信(在本地网中有固有的地址)
(2)移动结点漫游到一个外地网络时,仍然使用固定的IP地址进行通信。 为了能够收到通信对端发给它的IP分组,移动结点需要向本地代理注册当前的位置地址,这个位置地址就是转交地址(它可以是外部代理的地址或动态配置的一个地址)
(3)本地代理接收来自转交地址的注册后,会构建一条通向转交地址的隧道,将截获的发给移动结点的IP分组通过隧道送到转交地址处。
(4)在转交地址处解除隧道封装,恢复原始的IP分组,最后送到移动结点,这样移动结点在外网就能够收到这些发送给它的IP分组
(5)移动结点在外网通过外网的路由器或外部代理向通信对端发送IP数据包。
(6)移动结点来到另一个外网时,只需向本地代理更新注册的转交地址,就可继续通信。
(7)移动结点回到本地网时,移动结点向本地代理注销转交地址,这时移动结点又将使用传统的TCP/IP方式进行通信。
移动IP为移动主机设置了两个IP地址,即主地址和辅地址(转交地址)。移动主机在本地网时,使用的是主地址。当移动到另一个网络时,需要获得一个临时的辅地址,但此时主地址仍然不变。从外网移回本地网时,辅地址改变或撤销,而主地址仍然保持不变。
例题:以下关于移动IP基本工作原理的描述中,错误的是()
A.移动IP的基本工作过程可以分为代理发现、注册、分组路由与注销4个阶段
B.结点在使用移动IP进行通信时,归属代理和外部代理之间需要建立一条隧道
C.移动结点到达新的网络后,通过注册过程把自己新的可达信息通知外部代理
D.移动IP的分组路由可以分为单播、广播与组播
答案:C;
例题:如果一台主机的IP地址为160.80.40.20/16,那么当它移动到了另一个不属于160.80/16子网的网络中时,它将()
A.可以直接接收和直接发送分组,没有任何影响
B.既不可以直接接收分组,也不可以直接发送分组
C.不可以直接发送分组,但可以直接接收分组
D.可以直接发送分组,但不可以直接接收分组
答案:B;主机离开原子网后,不能直接接收和直接发送分组,但可以通过转交地址来间接接收和发送分组。
4.8 网络层设备
4.8.1 路由器的组成和功能
路由器是一种具有多个输入/输出端口的专用计算机,其任务是连接不同的网络(连接异构网络)并完成路由转发。在多个逻辑网络(即多个广播域)互联时必须使用路由器。
当源主机要向目标主机发送数据报时,路由器先检查源主机与目标主机是否连接在同一个网络上。如果源主机和目标主机在同一个网络上,那么直接交付而无须通过路由器。如果源主机和目标主机不在同一个网络上,那么路由器按照转发表(路由表)指出的路由将数据报转发给下一个路由器,这称为间接交付。可见,在同一个网络中传递数据无须路由器的参与,而跨网络通信必须通过路由器进行转发。例如,路由器可以连接不同的LAN,连接不同的VLAN,连接不同的WLAN,或者把LAN和WAN互联起来。路由器隔离了广播域。
从结构上看,路由器由路由选择和分组转发两部分构成,如图所示:
而从模型的角度看,路由器是网络层设备,它实现了网络模型的下三层,即物理层、数据链路层和网络层。
如果一个存储转发设备实现了某个层次的功能,那么它就可以互联两个在该层次上使用不同协议的网段(网络)。如果网桥实现了物理层和数据链路层,那么网桥可以互联两个物理层和数据链路层不同的网段;但中继器实现了物理层后,却不能互联两个物理层不同的网段,这是因为中继器不是存储转发设备,它属于直通式设备。
路由选择部分也称控制部分,其核心构件是路由选择处理机。路由选择处理机的任务是根据所选定的路由选择协议构造出路由表,同时经常或定期地和其他相邻路由器交换路由信息而不断更新和维护路由表。
分组转发部分由三部分组成:交换结构、一组输入端口和一组输出端口。输入端口在从物理层接收到的比特流中提取出链路层帧,进而从帧中提取出网络层数据报,输出端口则执行恰好相反的操作。 交换结构是路由器的关键部件,它根据转发表对分组进行处理,将某个输入端口进入的分组从一个合适的输出端口转发出去。有三种常用的交换方法:通过存储器进行交换、通过总线进行交换和通过互联网进行交换。交换结构本身就是一个网络。
路由器主要完成两个功能:一是分组转发,二是路由计算。前者处理通过路由器的数据流,关键操作是转发表查询、转发及相关的队列管理和任务调度等;后者通过和其他路由器进行基于路由协议的交互,完成路由表的计算。
路由器和网桥的重要区别是:网桥与高层协议无关,而路由器是面向协议的,它依据网络地址进行操作,并进行路径选择、分段、帧格式转换、对数据报的生存时间和流量进行控制等。现今的路由器一般都提供多种协议的支持,包括OSI、TCP/IP、IPX等
在一个互联网中,能否用一个很大的交换机switch来代替互联网中很多的路由器?
不能。交换机和路由器的功能是不同的
交换机可在单个网络中与若干计算机相连,并且可以将一台计算机发送过来的帧转发给另一台计算机。从这一点上看,交换机具有集线器的转发帧的功能,但交换机比集线器的功能强很多。在同一时间,集线器只允许一台计算机发送数据。
路由器连接两个或多个同构或异构的网络,在网络之间转发分组(即IP数据报)
因此,如果许多相同类型的网络互联时,那么用一个很大的交换机(如果能够找其他计算机进行通信,交换机允许找得到)代替原来的一些路由器是可行的。但若这些互联的网络是异构的网络,那么就必须使用路由器来进行互联。
路由器实现了物理层、数据链路层、网络层,这句话的含义是什么?
是指路由器有能力对这三层协议的控制信息进行识别、分析以及转换,直观的理解是路由器有能力对数据“包装”这三层协议或者“拆开”这三层协议。自然,路由器就有能力互联这三层协议不同的两个网络。
4.8.2 路由表与路由转发
路由表是根据路由选择算法得出的,主要用途是路由选择。标准的路由表一般有4个项目:目的网络IP地址、子网掩码、下一跳IP地址、接口。
在上图的网络拓扑中,R1的路由表如下,该路由表包含到互联网的默认路由
转发表是从路由表得出的,其表项和路由表项有直接的对应关系。但转发表的格式和路由表的格式不同,其结构应使查找过程最优化(而路由表则需对网络拓扑变化的计算最优化)。转发表中含有一个分组将要发往的目的地址,以及分组的下一跳(即下一步接收者的目的地址,实际为MAC地址)。 为了减少转发表的重复项目,可以使用一个默认路由代替所有具有相同下一跳的项目,并将默认路由设置得比其他项目的优先级低,如图所示:
路由表总是用软件来实现的;转发表可以用软件来实现,甚至也可以用特殊的硬件来实现。
注意转发和路由选择的区别:转发是路由器根据转发表把收到的IP数据报从合适的端口转发出去,它仅涉及一个路由器。而路由选择则涉及很多路由器,路由表是许多路由器协同工作的结果。这些路由器按照复杂的路由算法,根据从各相邻路由器得到的关于网络拓扑的变化情况,动态地改变所选择的路由,并由此构造出整个路由表。
在讨论路由选择的原理时,往往不区分转发表和路由表的区别,但要注意路由表不等于转发表。分组的实际转发是靠直接查找转发表,而不是直接查找路由表。
例题:下列关于IP路由器功能的描述中,正确的是()
1.运行路由选择协议,设置路由表; 2.监测到拥塞时,合理丢弃IP分组
3.对收到的IP分组头进行差错校验,确保传输的IP分组不丢失
4.根据收到的IP分组的目的IP地址,将其转发到合适的输出线路上
答案:1,2,4;不保证IP分组不丢失
例题:
(1)请写出路由器R1到4个子网的路由表
(2)试描述主机H1发送一个IP数据报到主机H2的过程(包括物理地址解析过程)
答案:(1)
(2)①主机H1首先构造一个源IP地址为202.99.98.18、目的IP地址为202.99.98.35的IP数据报,主机H1先把本子网的子网掩码与H2的IP地址逐位相与,所得结果不等于H1的网络地址,因此H1与H2不在同一子网,无法直接交付,然后将该数据报传送给数据链路层。
②主机H1通过ARP获得路由器R1(202.99.98.17)对应的MAC地址,并将其作为目的MAC地址,将H1的MAC地址作为源MAC地址填入封装有IP数据报的帧,然后将该帧发送出去
③路由器R1收到该帧后,去除帧头和帧尾,得到IP数据报,然后根据IP数据报中的目的IP地址(202.99.98.35)去查找路由表,得到下一跳地址为直接相连
④路由器R1通过ARP得到主机H2的MAC地址,并将其作为目的MAC地址,将R1的MAC地址作为源MAC地址填入封装有IP数据报的帧,然后将该帧发送到子网Net2上。
⑤主机H2将收到的帧,去除帧头和帧尾,并最终得到从主机H1发来的IP数据报
注意:在②中(发出的帧),帧的目的地MAC地址为默认网关的MAC地址;在④中(接收的帧),帧的源MAC地址为默认网关的MAC地址
例题:试简述路由器的路由功能和转发功能
答案:转发即当一个分组到达时所采取的动作。在路由器中,每个分组到达时对它进行处理,它在路由表中查找分组所对应的输出线路。通过查得的结果,将分组发送到正确的线路上。
路由算法是网络层软件的一部分,它负责确定一个进来的分组应该被传送到哪条输出线路上。路由算法负责填充和更新路由表,转发功能则根据路由表的内容来确定当每个分组到来时应该采取什么动作(如从哪个端口转发出去)
例题:
答案:(1)路由器、交换机、交换机
(2)设备1需要;IF1:192.168.1.254;IF2:192.168.1.1;IF3:192.168.1.65
(3)NAT服务
(4)H4
网关就是一个网络连接到另一个网络的关口。网关实质上是一个网络通向其他网络的IP地址,网关基本上可认为就是路由器
默认网关:
就好像一个房间可以有多扇门一样,一台主机可有多个网关。默认网关的意思是一台主机若找不到可用的网关,就把数据包发给默认指定的网关,由这个网关来处理数据包。现在的主机使用的网关,一般指的是默认网关。
IP网关和IP路由器是否为同义语?
当初发明TCP/IP的研究人员使用IP Gateway作为网际互联的设备,可以认为IP网关和IP路由器是同义词,现在的网关也可定义为路由器的接口(路由器接口的地址)。网关也可以指默认路由。
补充:
尽最大努力交付有哪些含义:
(1)不保证源主机发送的IP数据报一定无差错地交付到目的主机
(2)不保证源主机发送的IP数据报都在某一规定的时间内交付到目的主机
(3)不保证源主机发送的IP数据报一定按发送时的顺序交付到目的主机
(4)不保证源主机发送的IP数据报不会重复交付给目的主机
(5)不故意丢弃IP数据报。丢弃IP数据报的情况是:路由器检测出首部校验和有误;或由于网络中通信量过大,路由器或目的主机中的缓存已无空闲空间
需注意,IP数据报的首部中有一个首部校验和。当它检测出IP数据报的首部出现了差错时,就丢弃该数据报。因此,凡交付给目的主机的IP数据报都是IP首部没有差错或没有检测出差错的。也就是说,在传输过程中,出现差错的IP数据报都被丢弃了。
现在因特网上绝大多数的通信量都属于尽最大努力交付。如果数据必须可靠地交付给目的地,那么使用IP的高层软件必须负责解决这一问题。
链路层广播与IP广播有何区别?
链路层广播是用数据链路层协议(第二层)在一个以太网上实现的对该局域网上的所有主机进行广播MAC帧,而IP广播则是用IP通过因特网实现的对一个网络(即目的网络)上的所有主机进行广播IP数据报。
主机在接收一个广播帧或组播帧时,其CPU所要做的事情有何区别?
在接收广播帧时,主机通过其适配器(网卡,即网络接口卡NIC)接收每个广播帧,然后将其传递给OS。CPU执行协议软件,并界定是否接收和处理该帧。在接收组播帧时,CPU要对适配器进行配置,而适配器根据特定的组播地址表来接收帧。凡与此组播地址表不匹配的帧都将被NIC丢弃。因此在组播的情况下,是适配器NIC而不是CPU决定是否接收一个帧
本文地址:https://blog.csdn.net/qq_44709990/article/details/108913513
上一篇: 数据结构实验二——单链表的基本操作