计算机网络|从问题中了解网络层


从问题中了解网络层

    • 问题(Problem)
    • 参考文献

问题(Problem)
1.存在多种异构网络对不同网络之间的通信会造成一些麻烦,但为什么世界上还存在多种异构网络?
解答:世界上之所以存在着多种异构网络,就是因为仅用一种体系结构的网络根本无法满足所有用户的所有需求。
OSl假定全世界所有的人都在网络层使用X.25协议,并希望使用X.75协议将全球所有的X.25网络互连起来,从而实现全球任意计算机之间的通信。然而事实证明,大家并不愿意这样做,结果OSI失败了。这里的原因就是X.25网络并不能满足所有用户的需求,大量的用户还需要使用其他类型的网络。
在计算机网络发展初期,许多厂家都生产出具有自己独特体系结构的计算机网络。这些计算机网络就像一个个孤岛一样,它们是不能互相通信的。如果某公司的雇员需要同时接入三个不同厂商的计算机网络,那么他就需要用三台终端(即观看三个不同的屏幕显示)分别连接到不同的计算机网络。这显然是很不方便的。
在客观上存在多种异构计算机网络的现实情况下,普遍服务(universal service)的概念被提出来了。一个计算机通信系统若能够提供普遍服务,就表明该系统中的任何一对计算机都能够很方便地进行通信。像全世界的电话网就是能够提供普遍服务的一个成功例子。
在世界上存在大量异构计算机网络(它们的网络硬件和物理地址的编址方法都不一样)的现实情况下,要获得普遍服务,的确是相当困难的事。但IP协议成功地解决了这个难题。不管你使用的具体网络采用什么样的硬件结构,但只要你的网络使用IP协议并给连接在网络上的主机分配了合法的IP地址,那么连接到这种虚拟的IP互连网上的任何一对计算机都可以很方便地进行通信。
2.“IP网关”和“IP路由器”是否为同义语?
解答:当初发明TCP/IP的研究人员使用IP Gateway作为网际互连的设备。我国的网络工作者曾使用过多种译名,如网间连接器、网闸、信关、联网机等,但最后由全国自然科学名词审定委员会(这个委员会现在改名为“全国科学技术名词审定委员会”)在《计算机科学技术名词》中公布的Gateway标准译名为“网关”。
但是,在20世纪90年代初期美国一家厂商认为,将IP Gateway 改名为IP Router似乎更加有利于设备的销售。后来其他厂家也跟着改变产品的名称。在《计算机科学技术名词》中Router的标准译名是“路由器”。现在,大家就都基本上不再使用网关这一名词了。
我们可以认为“IP网关”和“IP路由器”是同义语。
3.IP的英文名字是Internet Protocol,其标准一名是“网际协议”。那么“IP协议”是否重复使用了“协议”,即“IP协议”变成了“网际协议协议”呢?
解答:我们知道,IP中的“P”就代表“协议”。因此仅仅说IP就已经是很清楚的了。但为了强调IP是一个协议,所以在IP的后面还是加上了“协议”二字。如果完全用汉字来表示“IP协议”,那么当然只能用一个“协议”,即“网际协议”。
和这个问题类似的还有名词PC (Personal Computer),即个人计算机。但有时为了强调PC是一个计算机,就常常在PC的后面加上一个“机”,变成了“PC机”。这当然不是表示“个人计算机机”,而仍然是“个人计算机”。
在英文的教科书或文献中,有时会遇到current flow这样的写法。我们知道,current是“电流”,而flow是“流”。显然,这里也有些重复,我们不应当把current flow译为“电流流”。
4.在文献中有时会见到对等连网(peer-to-peer networking),这是什么意思?
解答:这有两重意思。
首先,这表示在互联网中,任何两个计算机都可以平等地进行通信。互联网对通信双方计算机的大小是不关心的。连接在互联网上的,可能是一个很小的PC,而通信的对方可能是一个很大的巨型机。这和早期的网络很不一样。早期的网络是以一个很大的主机为中心,和这个主机通信的是外围的许多功能上相对较弱的小终端。但后来计算机网络发展到以网络为中心,所有连接到网络(或互联网)上的计算机都是平等的。“对等”也有“对称”的意思,但这并不是说,通信的两个计算机的大小规模必须是相似的,而是说,各种计算机都可以平等地连接到互联网上。
其次,对等连网有时还用来说明计算机的通信方式。计算机网络原来都是采用“客户-服务器”的通信方式。客户是通信服务的请求方,而服务器是通信服务的提供方。这两方在功能上显然是不对等的。客户进程比较简单,而服务器进程就比较复杂,运行服务器程序的机器也比较昂贵。但现在新的通信方式出现了,即相互通信的主机,可以互为客户方或服务器方,因此产生了对等连网这样的名词。
5.在互联网中,能否使用一个很大的交换机(switch)来代替全部的路由器?
解答:不行。
交换机和路由器的功能是很不一样的。
交换机可在一个单个的网络中和若干个计算机相连,并且可以将一个计算机发送过来的帧转发给另一个计算机。从这一点上看,交换机具有集线器的转发帧的功能。
但交换机比集线器的功能强很多。集线器在同一时间只允许一个计算机和其他计算机进行通信,但交换机允许多个计算机同时进行通信。
路由器连接两个或几个网络,路由器可在网络之间转发分组(即IP数据报)。特别是,这些互连的网络可以是异构的。
因此,如果是许多相同类型的网络互连在一起,那么用一个很大的交换机(如果能够找得到)代替原来的一些路由器是可以的。但目前的互联网是非常多的异构网络互连起来的,我们不可能找到一种交换机可以代替互联网中的全部路由器。因此,必须使用许多的路由器来进行网络互连。
6.为什么IP地址又称为“虚拟地址”?
解答:这是因为IP地址是靠软件来维持的而个是靠硬件地址。我们好像构成了一个很大的使用统一IP 协议的互连网络,但这个IP网络是虚拟的网络系统,因为它的通信系统,从层次上来看,是建筑在网络层上的,是抽象的通信系统。虽然许多大小不同的物理网络是相互连接起来了,但这些网络都有各自不同的物理层。例如,有的是无线网络,有的是光纤网络,并且数据的传送速率也可能相差很大。这些网络的数据链路层协议也是不相同的。如果我们从网络层来看这个庞大的异构网络,那么就好像是构成了一个很大的、统一的IP网络。
这种虚拟网络的地址也是虚拟的,因此IP地址又称为“虚拟地址"。实在的地址就是各网络和各主机的物理地址。
可以打一个比方。例如,我国所有的大学都有具体的、实在的门牌号码。我们通过邮政局给各大学寄信就要使用这样的具体地址。但是,假定教育部为了更加方便地管理这些大学,可以在一张图上把所有大学都按照一定的规律编上号码,而在这些具有编号的图上大学就构成了一个虚拟的全国大学网络。当教育部发送某个文件时,就可以按照指定的号码来发送给一些相关的大学。这就相当于我们在IP网络中按IP地址进行通信,但是文件的传送还是要按照各大学的具体门牌号码(相当于物理地址)由邮递员来交付。
7.有的文献上使用“虚拟分组”(virtual packet)这一名词。虚拟分组是什么意思?
解答:虚拟分组就是IP数据报。
因为互联网是由大量异构的物理网络互连而成的。这些物理网络的帧格式是各式各样的,它们的地址也可能是互不兼容的。路由器无法将一种格式的帧转发到另一种网络,因为另一种网络无法识别与自己格式不同的帧的地址。路由器也不可能对不同的地址格式进行转换。
为了解决这一问题,IP协议定义了IP数据报的格式。所有连接在互联网中的路由器都能识别IP数据报的IP地址,因此能够对IP数据报进行转发(在进行转发时当然要调用ARP协议以便获得相应的硬件地址)。我们知道,IP数据报是作为物理网络的帧的数据部分。各个物理网络在转发帧时,是根据帧首部中的硬件地址而不看(实际上也看不见)帧的数据部分。
由于所有的物理网络都看不见所传送的帧里面的IP数据报,这样就使得IP数据报得到“虚拟分组”这样的名称。
8.如图所示。五个网络用四个路由器(每一个路由器有两个端口)互连起来。能否改变这种连接方法,使用一个具有五个端口的路由器将这五个网络互连起来?
计算机网络|从问题中了解网络层
文章图片

解答:一般说来,不采用这样的连接方法(用一个路由器连接五个网络)。这里有两个原因:
(1)路由器中的CPU和存储器是用来对通过该路由器的每一个IP数据报进行处理的。假若一个路由器和许多个网络相连接,那么这个路由器的处理器很可能没有足够的能力来处理通过它的所有IP数据报。
(2)冗余度可以提高互联网的可靠性。路由器和网络都有可能出现故障。如果将所有的路由选择功能集中在一个路由器上,则一旦该路由器出故障,整个互连网就无法工作。
因此,在规划互联网时,互联网的具体拓扑结构取决于物理网络的带宽、期望的通信量、对可靠性的需求,以及路由器硬件的价格。
9.当运行PING 127.0.0.1时,这个IP数据报将发送给谁?
解答:127.0.0.1是环回地址。主机将测试用的IP数据报发送给本主机的ICMP(而不是发送到互联网上)以便进行环回测试。
10.网络前缀是指网络号字段(net-id)中前面的几个类别位,还是指整个的网络号字段?
解答:网络前缀是指整个的网络号字段,即包括了最前面的几个类别位在内。网络前缀常常就简称为前缀。请注意,网络前缀不能把前面的类别位除外。
例如一个B类地址,10100000 00000000 00000000 00010000,其类别位就是最前面的两位:10,而网络前缀就是前16位:10100000 00000000。如下图所示。
计算机网络|从问题中了解网络层
文章图片

请注意,不能认为网络前缀是100000 00000000,也就是说,不能把最前面的两位“10”(类别位)去掉。类别位是包括在net-id之内的。
11.有的书(如[COME06])将IP地址分为前缀和后缀两大部分,它们和网络号字段及主机号字段有什么关系?
解答:前缀(prefix)就是网络号字段net-id,而后缀(suffix)就是主机号字段host-id。如下图是以C类地址为例来说明前缀和后缀是什么的。
计算机网络|从问题中了解网络层
文章图片

如果网络划分了子网,那么前缀还应包括子网号字段。
12.IP地址中的前缀和后缀最大的不同是什么?
解答:不同点有:
(1)前缀是由互联网管理机构进行分配的,而后缀是由分配到前缀的单位自行分配的
(2)IP数据报的寻址是根据前缀来找目的网络,找到目的网络后再根据后缀找到目的主机。
13.IP数据报中数据部分的长度是可变的(即IP数据报不是定长的)。这样做有什么好处?
解答:这样做的好处是可以满足各种应用的需要。有时在键盘上键入的一个字符就可以构成一个很短的IP数据报。但有的应用程序需要将很长的文件构成一个大的IP数据报(最长为64KB,包括首部在内)。当然,大多数IP数据报的数据部分长度都远大于首部长度。这样做的好处是可以提高传输效率(首部开销所占的比重就较小)。
14.IP地址中各种类别的地址所拥有的地址数目的比例是怎样的?
解答:IPv4的各种类别的地址所拥有的地址数目的比例如图所示。
计算机网络|从问题中了解网络层
文章图片

A类地址占IP地址总数的一半,B类地址数是A类地址数的一半,即占IP地址总数的1/4,C类地址数是B类地址数的一半,即占IP地址总数的1/8,而D类和E类地址数又是C类地址数的一半,即各占IP地址总数的1/16。
需要注意的是:尽管A类地址的总数等于4倍的C类地址数,但分配IP地址是分配地址前缀而不是分配整个32位的IP地址,因此C类地址可供分配的地址前缀数目要比A类地址可供分配的地址前缀数目多一万多倍 ( 2 24 ? 3 / 2 8 ? 1 = 16384 ) (2^{24-3}/2^{8-1}=16384) (224?3/28?1=16384)。
15.在IP地址中,为什么使用最前面的一位或几位来表示地址的类别?
解答:知道了IP地址的类别,就可以很快地将IP地址的前缀和后缀区分开来,这在路由器寻找下一跳地址时是必须做的一件事。
但是怎样才能尽快地让计算机完成这一动作呢?我们知道,计算机进行位操作(如左移、右移、布尔运算等)要比进行整数运算快得多。因此,IP地址的类别划分就用地址中最前面的一位或几位来标志地址的类别。
16.全1的IP地址是否是向整个互联网进行广播的一种地址?
解答:不是。
设想一下,如果是向整个互联网进行广播的地址,那么一定会在互联网上产生极大的通信量,这样会严重地影响互联网的正常工作,甚至还会使互联网瘫痪。
因此,在IP地址中的全1地址表示仅在本网络上(就是发送这个IP数据报的主机所连接的局域网)进行广播。这种广播叫做受限的广播(limited broadcast)。
如果net-id是具体的网络号,而host-id是全1,就叫做定向广播(directed broadcast),因为这是对某一个具体的网络(即net-id指明的网络)上的所有主机进行广播的一种地址。
17.IP协议有分片的功能,但广域网中的分组则不必分片。这是为什么?
解答:IP数据报可能要经过许多个网络,而源主机事先并不知道数据报后面要经过的这些网络所能通过的分组的最大长度是多少。等到IP数据报转发到某个网络时,可能才发现数据报太长了,因此在这时就必须进行分片。
但广域网能够通过的分组的最大长度是该广域网中所有主机都事先知道的,源主机不可能发送网络不支持的过长分组,因此广域网就没有必要将已经发送出的分组再进行分片。
18.路由表中只给出到目的网络的下一跳路由器的IP地址,然后在下一个路由器的路由表中再给出再下一跳路由器的IP地址,最后才能到达目的网络进行直接交付。采用这样的方法有什么好处?
解答:这样做的最大好处是使得路由选择成为动态的,十分灵活。当IP数据报传送到半途时,若网络的情况发生了变化(如网络拓扑变化或出现了拥塞),由于各路由器中的路由表是经常动态更新的,因此中途的路由器就会适应网络的这种变化,而改变其下一跳路由,从而实现了动态路由选择。
19.链路层广播和IP广播有何区别?
解答:链路层广播是用数据链路层协议(在第二层),在一个以太网上实现的对该局域网上所有主机的MAC帧进行广播。
IP广播则是用IP协议(在第三层),通过互联网实现的对一个网络(即目的网络)上所有主机的IP数据报广播。
20.主机在接收一个广播帧或多播帧时,其CPU所要做的事情有何区别?
解答:在接收广播帧时,主机通过其适配器(即网络接口卡NIC)接收每一个广播帧,然后将其传递给操作系统。CPU执行协议软件,并界定是否接受和处理该帧。
在接收多播帧时,CPU要对适配器进行配置,而适配器根据特定的多播地址表来接收帧。凡与此多播地址表不匹配的帧都将被NIC丢弃。因此在多播的情况下,是适配器NIC而不是CPU决定是否接收一个帧。
21.有的路由器在和广域网相连时,在该路由器的广域网接口处并没有硬件地址,这怎样解释?
解答:每一个连接到广域网的路由器显然必须要有一个硬件地址,否则就无法进行通信。但是具体的细节可能会有相当大的差别。例如,我们的电话机和墙上的电话线路RJ-11插孔一连接就可以打电话。这表明电话机一定有一个唯一的电话号码(即硬件地址)。但是,这个电话号码并没有存储在电话机的某个地方。有些广域网也采用类似这样的技术。也就是说,每一个连接都有一个唯一的硬件地址,但这个地址并不一定存储在路由器的接口上。
22.IP地址和电话号码相比,有何异同之处?
解答:下面分别介绍异同之处。
相同之处:
(1)唯一性。
每个电话机的电话号码(指包括国家码以及区号在内的号码)在电信网上是唯一的。每个主机的IP地址在互联网上也是唯一的。
(2)分等级的结构。
电话号码:[国家号码][区号][局号][电话机号][分机号]。IP地址:[网络号][主机号],或[网络号][子网号][主机号]。
不同之处:
各国的电话号码都是自主设置的,因此号码的位数可以各不相同。请注意,这里的“位”是十进制位。
但IP地址则一律是32位的固定长度(这是IPv4的地址长度。若使用IPv6,则地址长度为128位)。请注意,这里的“位”是二进制位。
因此电话号码空间是不受限的。当一个城市的电话号码空间不够用时,就可以增加电话号码的位数(例如6位不够用了就升级为7位,以后又不够用了就再升级为8位)。但IP地址空间是受限的,全部的IP地址用尽后就必须将IPv4升级到IPv6。
电话号码中的“国家号码”“区号”“局号”都能直接反映出具体的地理位置(或范围),
但从IP地址的“网络号”却不能直接反映出具体的地理位置(或范围)。IP地址的管理机构在分配IP地址时并不是先将整个的地址空间按国家来分配,而是按网络来分配(不管这个网络在哪个国家)。
但是有的IP地址可以反映出一定的地理范围。例如,顶级域名采用国家域名的,如顶级域名是.cn的应当是在中国,但在中国的什么地方则不知道; 而二级域名若采用省级域名,如采用.js.cn的应当是在中国的江苏省,但在江苏省的什么地方也不知道。然而在采用通用顶级域名时,如采用.com或.net或.org时,则无法知道该主机在哪一个国家或地区。
23.“尽最大努力交付”(best effort delivery)都有哪些含义?解答:
(1)不保证源主机发送出来的IP数据报一定无差错地交付到目的主机。
(2)不保证源主机发送出来的IP数据报都在某一规定的时间内交付到目的主机。
(3)不保证源主机发送出来的IP数据报一定按发送时的顺序交付到目的主机。
(4)不保证源主机发送出来的IP数据报不会重复交付到目的主机。
(5)不故意丢弃IP数据报。丢弃IP数据报的情况是:路由器检测出首部检验和有错误; 或由于网络中通信量过大,路由器或目的主机中的缓存已无空闲空间(或接近用尽)。
但是要注意,IP 数据报的首部中有一个“首部检验和”。当它检验出IP 数据报的首部出现了差错时,就将该数据报丢弃。
因此,凡交付目的主机的IP数据报都是IP数据报的首部没有出现差错的或没有检测出来有差错的。这就是说,传输过程中出现差错的IP数据报都被丢弃了。例如,源主机一连发送了10000个IP数据报,结果有9999个IP数据报都出现了差错,因而都被丢弃了。这样,只有一个不出错的IP数据报最后交付目的主机。这也完全符合“尽最大努力交付”的原则。甚至当所发送的10000个IP数据报都被丢弃了,我们也不能说这不是“尽最大努力交付”,只要路由器不是故意地丢弃IP数据报就行了。
现在互联网上绝大多数的通信量都是属于“尽最大努力交付”的。如果数据必须可靠地交付目的地,那么使用IP协议的高层软件就必须负责解决这一问题(例如,使用可靠交付的TCP协议)。
24.假定在一个局域网中计算机A发送ARP请求分组,希望找出计算机B的硬件地址。这时局域网上的所有计算机都能收到这个广播发送的 ARP 请求分组。试问这时由哪一个计算机使用ARP响应分组把计算机B的硬件地址告诉计算机A?
解答:这要区分两种情况。
(1)如果计算机B和计算机A都连接在同一个局域网上,那么就是计算机B发送ARP响应分组。
(1)如果计算机B和计算机A不是连接在同一个局域网上,那么就必须由一个与A连接在同一个局域网上的路由器来转发ARP请求分组。这时,该路由器向计算机A发送ARP回答分组,给出该路由器的硬件地址。
25.有人把ARP列入网络接口层,即认为ARP不在IP层,这样对吗?
解答:这样认为也是可以的。本来ARP就是位于IP层和数据链路层之间的。《计算机网络》是将ARP画在IP层的下面。我们知道IP层和以上各层都使用IP地址,而数据链路层则使用硬件地址。ARP进行这两个地址的转换:IP地址→ARP→硬件地址。
ARP报文中既有IP地址又有硬件地址。因此将ARP列入网络接口层也是可以的。
同理,RARP也可以这样看待,因为:硬件地址→RARP→IP地址。
26.一个主机要向另一个主机发送IP数据报,是否使用ARP就可以得到该目的主机的硬件地址,然后直接用这个硬件地址将IP数据报发送给目的主机?
解答:有时是这样,但有时也不是这样。
ARP只能对连接在同一个网络上的主机或路由器进行地址解析。
计算机网络|从问题中了解网络层
文章图片

由于A和B连接在同一个网络上,因此主机A使用ARP协议就可得到B的硬件地址,然后用B的硬件地址,将IP数据报组装成帧,发送给B。
但当目的主机是F时,情况就不同了。A无法得到F的硬件地址,A只能先将IP数据报发送给本网络上的一个路由器(路由器 R 1 R_1 R1?)。因此A发送IP数据报给F时,在地址解析方面要经过以下三个步骤:
(1)A先通过ARP解析出路由器 R 1 R_1 R1?的硬件地址,将IP数据报发送到 R 1 R_1 R1?。
(2) R 1 R_1 R1?再通过ARP解析出 R 2 R_2 R2?的硬件地址,将IP数据报转发到 R 2 R_2 R2?。
(3) R 2 R_2 R2?再通过ARP解析出F的硬件地址,将IP数据报交付F。
因此,A发送IP数据报给F要经过三次ARP地址解析。A只知道F的IP地址,但并不知道F的硬件地址。
27.在互联网中最常见的分组长度大约是多少个字节?
解答:以太网是和互联网相连的最常用的局域网,而以太网的数据字段最多只允许装入1500字节,因此在互联网上传送的分组长度一般都不会超过1500字节。
由于现在互联网上最常用的应用程序是电子邮件和万维网。这两个应用程序都使用TCP进行传输,因此经常要用到TCP的确认报文段。这种TCP确认报文段没有数据,只有20字节的首部,再加上IP数据报的20字节首部,使得IP数据报(即分组)的长度只有40字节。
根据美国MCI主干网上传送的分组的统计数据,大约有40%的分组为40字节长(即它们携带的数据都是TCP的确认报文段); 大约有15%的分组为576字节左右的长度(即IP数据报的默认长度); 大约有10%的分组为1500字节长; 超过1500字节的分组数是很少的。
28.IP数据报的最大长度是多少个字节?
解答:最大长度是 64 K B ( 1 K = 2 10 ) 64KB(1K=2^{10}) 64KB(1K=210),因为其首部的总长度字段只有16位长。但实际上最多只能表示65535字节而不是65536字节,因为在二进制中的16个1表示十进制的 ( 2 16 ? 1 ) (2^{16} - 1) (216?1)。
请注意:这里所说的最大长度是指IP协议给IP数据报长度规定的上限,是不允计超过的。但若IP数据报的长度超过了数据链路层的最大传送单元MTU,或超过了路由器和主机能够处理的长度限制,那么在传送这种IP数据报时就必须进行分片,而分片将导致IP数据报的传输效率下降,应当尽可能避免。
IP协议规定,所有的主机和路由器必须能够处理的IP数据报长度不得小于576字节。这就是说,只要IP数据报的长度不超过576字节,这样的IP数据报通过互联网时就肯定不需要进行分片(数据链路层的MTU没有小于576字节的,因此不必考虑数据链路层是否能够传送576字节长的数据)。
当IP数据报的长度超过576字节但小于65535字节时,肯定是能够通过互联网的,但是否需要进行分片,则取决于:
(1)这个长度是否超过数据链路层的MTU值。
(2)这个长度是否超过途经路由器的处理能力。
顺便指出,上面提到的576字节是这样得到的。考虑要传送的数据长度是512字节,加上20字节的固定IP首部和最多40字节的可变IP首部,共572字节。再考虑有4字节的富裕量,就得出了576字节。请注意:576字节是IPv4规定的数值。现在 IPv6已经把这个数值提高到了1280字节(见RFC 2460)。这就是说,只要IP数据报的长度不超过1280字节,在IPv6网络中传送时,就肯定不需要进行分片。
29.IP数据报的首部最大长度是多少个字节?典型的IP数据报首部是多长?
解答:IP数据报首部中有一个首部长度字段,4位长,可表示的最大十进制数字是15。
因此首部长度的最大值是15个4字节长的字,即 60字节。
典型的IP数据报不使用首部中的选项,因此典型的IP数据报首部长度是20字节。
30.IP 数据报在传输的过程中,其首部长度是否会发生变化?
解答:不会。但首部中的某些字段(如标志、生存时间、首部检验和等)的数值一般都要发生变化。
31.当路由器利用IP数据报首部中的“首部检验和”字段检测出在传输过程中出现了差错时,就简单地将其丢弃。为什么不发送一个ICMP报文给源主机呢?
解答:IP协议并不要求源主机重传有差错的IP数据报。保证无差错传输是由TCP协议完成的。另一方面,首部检验和只能检验出lP数据报的首部是否出现差错,但不知道首部中的源地址字段有没有出错。如果源地址出现了差错,那么将这种IP数据报传送到错误的地址也是没有任何意义的。
32.RIP 协议的好处是简单,但缺点是不够稳定。有的书上介绍“触发更新”“水平分割”和“毒性逆转”。能否简单介绍一下它们的要点?
解答:现将三者的要点简要介绍如下。
(1)触发更新
若网络中没有变化,则按通常的30秒间隔发送更新信息; 若有变化,路由器就立即发送其新的路由表。这个过程叫做触发更新。
触发更新可提高稳定性。每一个路由器在收到有变化的更新信息时就立即发出新的信息,这比平均的15秒要少得多。虽然触发更新可大大地改进路由选择,但它不能解决所有的路由选择问题。例如,用这种方法不能处理路由器出故障的问题。
(2)分割范围
分割范围(split horizons)是提高稳定性的第二种方法(注: split horizon有不少人译为“水平分割”。实际上这里horizon的意思是“范围”,因此译为“分割范围”较为合适)。它在发送路由选择报文时使用了选择性,路由器必须区分不同的接口。如果路由器从一个接口已经收到了到某个网络的路由更新信息,那么到这个同样网络的路由更新信息一定不能再通过这个接口回送过去。如果一个接口通过了给某一个路由器更新的信息,那么这个更新信息一定不能再发送回去。因为这是那个路由器已经知道了的信息,因而是不需要的。分割范围可明显地提高稳定性。如下图就能说明问题。
计算机网络|从问题中了解网络层
文章图片

R 1 R_1 R1?发送[Net1,1,-]给 R 2 R_2 R2?,表明“我到Net1的距离是1,直接交付”。
R 2 R_2 R2?从这个RIP报文进来的端口不再发送关于到Net1的信息,而只从另外的端口发送[Net1,2, R 1 R_1 R1?],表明“我到Net1的距离是2,经过 R 1 R_1 R1?。
当Net1出故障后, R 1 R_1 R1?发送[Net1,16,-]给 R 2 R_2 R2?,表明“我到Net1的距离是16,直接交付”(距离是16就表示不能到达)。
R 2 R_2 R2?从另外的端口发送[Net1,16, R 1 R_1 R1?],表明“我到Net1的距离是16,经过 R 1 R_1 R1?,”
这样就使其他路由器很快都知道Net1出了故障。
(3)毒性逆转
毒性逆转(poison reverse)是分割范围的一种变形。使用这种方法时,路由器收到的信息用来更新路由表,然后通过所有的接口发送出去。但是,已经从一个接口来的一个路由表项目在通过同样的接口发送出去时,就要将其度量置为16。
33.IP数据报必须考虑最大传送单元MTU(Maximum Transfer Unit)。这是指哪一层的最大传送单元?包括不包括首部或尾部等开销在内?
解答:这是指IP层下面的数据链路层的最大传送单元,也就是下面的MAC帧的数据字段,不包括MAC帧的首部和尾部的各字段。因为IP数据报是装入到MAC帧中的数据字段,因此数据链路层的MTU数值就是IP数据报所容许的最大长度(是总长度,即首部加上数据字段)。
34.如果一个路由器要同时连接在一个以太网和一个ATM 网络上,需要有什么样的硬件加到路由器上?
解答:需要有两个适配器,即一个以太网适配器(网卡)和一个ATM适配器(网卡)。
35.《计算机网络》中的B类网络145.13.0.0在划分子网时,所给出的三个子网号是怎样得出的?
解答:本题假定子网号subnet-id占用8位。可见子网掩码是255.255.255.0。IP地址中的最后8位就留作主机号。假定我们不使用全0和全1的子网号,那么一共有 2 8 ? 2 = 254 2^8-2=254 28?2=254个子网号可供选择。教材中的例子是随意选择了3,7和21作为三个子网号。于是这三个子网的地址是:
145.13.3.0
145.13.7.0
145.13.21.0
【计算机网络|从问题中了解网络层】36.“交换(switching)”的准确含义是什么?解答:这个名词并没有统一的精确定义。
根据[COME04](Computer Networks and Internets with Internet Applications,4ed,2004)第676页:
Switching,A general term used to describe the operation of a switch. Because it isassociated with hardware, switching is usually higher speed than routing. Also, switching differsfrom routing because switching uses the hardware address in a frame.
(交换,用来描述交换机的运行的通用名词。由于交换与硬件相关,因此交换比路由选择要快些。此外,交换与路由选择还有一个区别,就是交换使用一个帧中的硬件地址。)
Switch,An electronic device that forms the center of a star topology network. A switchuses the destination address in a frame to determine which computer should receive the frame.
(交换机,形成星形网络中心的一种电子设备。交换机使用一个帧中的目的地址来确定哪一个计算机将接收这个帧。)
英文单词switch本来是“开关”的意思。当switch最初用在电话系统中时就译成了“交换机”,而表示动作的switching就译为“交换”。因此,电话系统使用的交换体制就称为“电路交换”。
在 Perlman 的[PERLO0]一书中的第531页也有类似的解释:
Switch,Anything that moves data.Somehow the term is applied to imply that the device isfast and cheap.Can be a bridge (layer 2 switch) or router (layer 3 switch), or sometimes used forsomething that moves ATM cells.
(交换机,可移动数据的任何东西。不知是什么原因,这个名词用来暗示这种设备比较快和比较便宜。交换机可以是网桥(第二层交换机)或路由器(第三层交换机),有时也可以是移动ATM信元的ATM交换机。)
可以看出,Perlman对 switch 的定义就比Comer 的定义更广泛一些,因为switch 在某些情况下还可以表示一个网桥或路由器,同时也不局限于用在星形网络中。
现在需要注意的是,关于 Packet switching 这一名词中的switching。大家知道,Packet switching 的标准译名是“分组交换”。这里的“交换”完全是为了和电路交换的“交换”相对应。我们知道,分组交换就是对分组进行存储转发,而转发又是根据路由器中的转发表,是
通过计算机软件来查找下一跳应当转发到哪一个结点去的。因此分组交换的“交换”并没有“使用硬件地址”或“比路由选择更快”的含义,而只是一般地表示“可以将数据从一个地方移动到另一个地方”。
37.为什么生存时间TTL (Time To Live)原来用秒作为单位,而现在TTL却表示数据报在网络中所能通过的路由器数的最大值?
解答:最初TTL是用秒作为单位,表示一个数据报在网络中的最长生存时间。TTL可用来防止数据报无限期地在网络中兜圈子(这样会浪费网络的资源)。例如,把数据报的 TTL初始值设置为70秒,就表示在该数据报进入网络后只要经过了70秒就要把它丢弃,哪怕它就快要到达目的站了。
但后来发现这样做很不方便(互联网中没有时钟同步关系的路由器都要计算通过它的数据报在网络中的逗留时间),于是就改用另一种方法,即让TTL表示数据报在网络中所能够通过的路由器数的最大值。例如,把数据报的TTL初始值设置为60,就表示:若该数据报在经过60个路由器后还没有到达目的站,则最后到达的那个路由器就立即把这个数据报丢弃,使它不再占用网络的资源。每一个路由器在转发数据报时,应把数据报首部中的TTL值减1。若TTL值减为零,就把它丢弃。因此,现在的TTL表示数据报在网络传送过程中的最大跳数。
38.有人认为,不使用CIDR也行。例如,使用CIDR时,给某单位分配了一个地址块/20,相当于16个C类地址块。如果不使用CIDR,而直接给该单位分配16个C类地址块,那么在效果上不是一样吗?
解答:在效果上是不一样的!
如果不采用CIDR,而直接给该单位分配16个C类地址块,那么就相当于给该单位分配了16个C类网络。这个单位对外界来说,是16个C类网络。而每一个C类网络都要在本单位外面的路由表中占有一个表项,使得路由表更大了。当本单位内的许多主机相互通信时,由于跨越了不同的网络,都必须使用路由器来转发IP数据报。可见由此造成的开销是很大的。因此,一般说来,这个单位不愿意接受16个C类地址块,而希望得到一个B类地址块(当然,这很难申请到)。
实际上,一个B类地址块太大了。它相当于256个C类地址块,而这个单位只需要16个C类地址块,即只用到一个B类地址块的1/16。因此对于只需要16个C类地址块的单位,不应当给这个单位分配一个B类地址块,而是应当采用CIDR,给这个单位分配一个地址块/20。
问题4-39.在划分子网时,有时要考虑到“子网号subnet-id 不能取为全0或全”,但有时又允许把子网号subnet-id 取为全0或全1。你能够举出一些依据吗?
解答:这是有依据的。我们知道,1985年8月颁布的RFC 950是互联网的正式标准STD#5,即正式标准的编号第5。在RFC 950中有这样一段话:
零地址表示“这个”,而全1地址表示“所有的”。因此,地址128.9.255.255表示在网络128.9上面的所有主机。地址0.0.0.37表示在这个网络上的主机37。如果把这种解释扩展到划分子网中的特殊地址,那么全0和全1的子网号是不允许指派的。例如,6位的子网号除了0和63以外的都可以使用。如果使用了全0和全1的子网号,那么在某些情况下,例如,在向一个网络上的所有子网进行多播时,就可能会出现混乱。
然而在1995年12月颁布的RFC 1878中却提出了不同的看法。RFC 1878指出全0和全1的子网号都可以指派,因为现在的软件技术都可以使用所有的子网号。但RFC 1878并不是互联网的标准文档,而只是被列入“提供信息的(Informational)。因此许多路由器的生产商对这个RFC文档的解释并不一致。这样,在打算采用全1或全0子网号时,一定要先弄清所采用的路由器是否支持这样做,或必须在路由器进行配置时输入什么样的命令。
参考文献 [1] 谢希仁. 计算机网络. 7版. 北京:电子工业出版社,2017

    推荐阅读