1. 试说明IP地址与硬件地址的区别,为什么要使用这两种不同的地址?

解:

  1. IP地址放在IP数据报的首部,硬件地址则放MAC帧的首部;
  2. 在网络层和网络层以上使用IP地址,数据链路层及以下使用硬件地址
  3.  IP 地址就是给每个连接在因特网上的主机(或路由器)分配一个在全世界范围是唯一的 32 位的标识符。从而把整个因特网看成为一个单一的、抽象的网络
  4. MAC地址在一定程度上与硬件一致,基于物理、能够标识具体的链路通信对象、IP地址给予逻辑域的划分、不受硬件限制。
  5. 物理地址即硬件地址,由48bit构成。
  6. IP地址由32bit组成,是逻辑地址。
  7. 为什么要使用这两种不同的地址,是因为在因特网上,是使用IP地址独一无二的标识每个主机(或路由器),但在发送数据时,使用IP地址的IP数据报向下要交给数据链路层,被封装成MAC帧,而MAC帧在具体的物理网络(如局域网)中传送时使用的是物理地址。连接在通信链路上的设备(主机或路由器)在接收MAC帧时,其根据是MAC帧首部中的硬件地址。只有在剥去MAC帧首部和尾部后将MAC层的数据上交给网络层,网络层才能在IP数据报中找到源IP地址和目的IP地址。

 

9.

(1)子网掩码为255.255.255.0代表什么意思?

(2)一网络的现在掩码为255.255.255.248,问该网络能够连接多少个主机?

(3)一A类网络和一B网络的子网号subnet-id分别为16个1和8个1,问这两个子网掩码有何不同?

(4)一个B类地址的子网掩码是255.255.240.0。试问在其中每一个子网上的主机数最多是多少?

(5)一A类网络的子网掩码为255.255.0.255;它是否为一个有效的子网掩码?

(6)某个IP地址的十六进制表示C2.2F.14.81,试将其转化为点分十进制的形式。

(7)C类网络使用子网掩码有无实际意义?为什么?

解:

1.

有三种含义分别代表A、B、C类网。

  • A类网的子网掩码,对于A类网络的IP地址,前8位表示网络号,后24位表示主机号,使用子网掩码255.255.255.0表示前8位为网络号,中间16位用于子网段的划分,最后8位为主机号。
  • B类网,对于B类网络的IP地址,前16位表示网络号,后16位表示主机号,使用子网掩码255.255.255.0表示前16位为网络号,中间8位用于子网段的划分,最后8位为主机号。
  • C类网,这个子网掩码为C类网的默认子网掩码。

2.

255.255.255.248转化成二进制,一个数字代表八位转化成二进制数就变成了11111111.11111111.11111111.11111000.由此子网掩码可以看到主机号还剩3位,但又由于全1和全0的主机号不用, 每一个子网上的主机为2^3-2=6 台。    

3.

A类网络:11111111   11111111   11111111   00000000

由此可知子网掩码为255.255.255.0

B类网络    11111111   11111111   11111111   00000000

由此可知子网掩码为255.255.255.0

看出两个网络的子网掩码格式是一样的,但是A类网络和B类网络他们的子网号占的位数不一样A占16位,B占8位,那么A可分配的子网号大大多于B。且他们的网络号也不一样。

4.

240转化成二进制数就是11110000     主机号的位数为4+后面8位=12位,又因为全为0和全为1的主机号不分配,故最大主机数为: 2^12-2=4094个

5.

把这个子网掩码换成2进制数为:  11111111   11111111 00000000 11111111

可以看出它是一个有效的子网掩码,它的子网号分配不连续,主机号在子网号前八位和后八位之间,一般不推荐这么使用。

6.

C2 2F 14  81转化成十进制194.47.20.129由IP地址指派范围表看出它是一个 C类地址。

7.

有实际意义.由IP地址指派范围表,C类子网IP地址的32位中,前24位是网络号,后8位是主机号.如果划分子网,一般选择后8位中的高位,这样做可以进一步划分网络,并且不增加路由表的内容,但是主机数会减少很多。子网掩码的作用就是告诉机器 哪部分是子网的网络地址,哪部分是主机地址,这样与机器之间才能通信。划分子网增加了灵活性。

10.试辨认以下IP地址的网络类别。

(1)128.36.199.3    (2)21.12.240.17   (3)183.194.76.253     (4)

192.12.69.248  (5)89.3.0.1        (6)200.3.6.2

解:

由IP地址指派范围表可以看出

A类第一个可以指派的网络号是1

B类第一个可以指派的网络号是128.1

C类第一个可以指派的网络号是192.0.1

  1. 和(5)是A类,(1)和(3)是B类,(4)和(6)是C类.

 

16.在互联网中将IP数据报分片传送的数据报在最后的目的主机进行组装。还可以有另一种做法,即数据报片通过一个网络就进行一次组装。是比较这两种方法的优劣。

解:

第二种做法不好,因为在目的站而不是在中间的路由器进行组装是由于:

  1. 路由器处理数据报更容易、方便、快捷而且效率还更高,延迟还特别的小,如果处理很长的报文那么经历的时间就会很长,那么经历的路由器越多时间会更长。
  2. 数据报的每一个分片可能经过不同的路径。如果在每一个中间的网络进行组装可能缺少几个数据报片,那么将组装的报文将不能用。

  (4)如果分组后面要经过一个网络,那么这些数据报片会被划分成更小的片。如果在中间的网络进行组装那么将组装很多次。

  (5)为适应路径上不同链路段所能许可的不同分片规模,可能要重新分片或组装。

  1. 主机A发送IP数据报给主机B,途中经过了5个路由器。试问在IP数据报的发送过程中总共使用了几次ARP?

解:

途经5个路由器,那么在发送过程中开始发送,原主机会用一次ARP地址解析协议找到第一个路由器的物理地址,每经历一个路由器就会使用一次ARP地址解析协议,故总共会用到6次。

20.设某路由器建立了如下路由表:

目的网络          子网掩码            下一跳

128.96.39.0      255.255.255.128      接口m0

128.96.39.128    255.255.255.128     接口m1

128.96.40.0      255.255.255.128      R2

192.4.153.0      255.255.255.192      R3

*(默认)         ——             R4

 现共收到5个分组,其目的地址分别为:

(1)128.96.39.10

(2)128.96.40.12

(3)128.96.40.151

(4)192.153.17

(5)192.4.153.90

试分别计算其下一跳。

解:

(1)目的站IP地址为:128.96.39.10查找路由表,根据路由表找到其对应的子网掩码为255.255.255.128,然后用目的站IP地址与子网掩码相与,得到目的网络号128.96.39.0,查看路由表可知该分组经接口0转发。

(2)目的IP地址为:128.96.40.12。

① 目的站IP地址为:128.96.39.10查找路由表,根据路由表找到其对应的子网掩码255.255.255.128相与得128.96.40.0,不等于128.96.39.0。故此目的站IP不在同一个局域网。

② 根据路由表在与子网掩码255.255.255.128相与得128.96.40.0,查路由表得,该项分组经R2转发。

(3)目的IP地址为:128.96.40.151,与子网掩码255.255.255.128相与后得128.96.40.128,查找路由表没有目的网络号,再与子网掩码255.255.255.192相与后得128.96.40.128,也没有,因此,该分组只能转发选择默认路由,R4转发。

(4)目的IP地址为:192.4.153.17。与子网掩码255.255.255.128相与后得192.4.153.0。发现其与目的IP地址不在一个局域网,故再与子网掩码255.255.255.192相与后得192.4.153.0,查路由表得,该分组经R3转发。

(5)目的IP地址为:192.4.153.90,与子网掩码255.255.255.128相与后得192.4.153.0。查路由表他和192.4.153.0对应的子网掩码不一样。故又与子网掩码255.255.255.192相与后得192.4.153.64,,没有因此,该分组转发选择默认路由,经R4转发。

21.某单位分配到一个B类IP地址,其net-id为129.250.0.0.该单位有4000台机器,分布在16个不同的地点。如选用子网掩码为255.255.255.0,试给每一个地点分配一个子网掩码号,并算出每个地点主机号码的最小值和最大值。

解:

由题意得:B类网络,那么前2个字节代表网络号,4000/16=250,每个地点平均250台机器。又因为子网掩码为255.255.255.0,那么可分配的主机数为2^8-2=254>250,又因为子网号占8位共有子网数=2^8-2=254>16,故能满足实际需求。可给每个地点分配如下子网号码

地点: 子网号(subnet-id) 子网网络号   主机IP的最小值和最大值

1:    00100001           129.250.33.0    129.250.33.1—129.250.33.254   

2:    00100010           129.250.34.0    129.250.34.1—129.250.34.254

3:    00100011           129.250.35.0    129.250.35.1—129.250.35.254

4:    00100100           129.250.36.0    129.250.36.1—129.250.36.254

5:    00100101           129.250.37.0    129.250.37.1—129.250.37.254

6:    00100110           129.250.38.0    129.250.38.1—129.250.38.254

7:    00100111           129.250.39.0    129.250.39.1—129.250.39.254

8:    00101000           129.250.40.0    129.250.40.1—129.250.40.254

9:    00101001           129.250.41.0    129.250.41.1—129.250.41.254

10:   00101010           129.250.42.0    129.250.42.1—129.250.42.254

11:   00101011           129.250.43.0    129.250.43.1—129.250.43.254

12:   00101100           129.250.44.0    129.250.44.1—129.250.44.254

13:   00101101           129.250.45.0    129.250.45.1—129.250.45.254

14:   00101110           129.250.46.0    129.250.46.1—129.250.46.254

15:   00101111           129.250.47.0    129.250.47.1—129.250.47.254

16:   00110000           129.250.48.0    129.250.48.1—129.250.48.254

24.试找出可产生以下数目的A类子网的子网掩码(采用连续掩码)。

  (1)2,(2)6,(3)30,(4)62,(5)122,(6)250.

解:

2=2^2-2

6=2^3-2

30=2^5-2

62=2^6-2

122<2^7-2

250<2^8-2

故子网掩码分别为:

11111111.11000000.00000000.00000000

11111111.11100000.00000000.00000000

11111111.11111000.00000000.00000000

11111111.11111100.00000000.00000000

11111111.11111110.00000000.00000000

11111111.11111111.00000000.00000000

(1)255.192.0.0,(2)255.224.0.0,(3)255.248.0.0,(4)255.252.0.0,(5)255.254.0.0,(6)255.255.0.0

  1. 以下有4个子网掩码。哪些是不推荐使用的?为什么?

(1)176.0.0.0,(2)96.0.0.0,(3)127.192.0.0,(4)255.128.0.0。

解:

(1)、(2)、(3)这三个子网号不连续,故不推荐使用。

只有(4)是连续的1和连续的0的掩码,是推荐使用的。

26.有如下的4个/24地址块,试进行最大可能性的聚会。

212.56.132.0/24

212.56.133.0/24

212.56.134.0/24

212.56.135.0/24

解:

由于此题地址掩码是/24,所以前三位代表网络号加子网号,由于与第三位不同所以我们只需要求出第三位的相应的二进制数找出其最大聚合

132转化成二进制为10000100

133转化成二进制为10000101

134转化成二进制为10000110,

135转化成二进制为10000111

所以共同的前缀有16+6=22位,所以聚合的地址块是: 212.56.132.0/22

  1. 有两个CIDR地址块208.128/11和208.130.28/22。是否有那一个地址块包含了另一个地址?如果有,请指出,并说明理由。

解:

首先这道题第一个字节都一致,如果有包含也只需要从网络前缀的第二个字节开始看。

208.128/11的前缀转化成二进制为:11010000 100

208.130.28/22的前缀转化成二进制为:11010000 10000010 000101,从这里可以看出它的前11位与208.128/11的前缀是一致的,所以208.128/11地址块包含了208.130.28/22这一地址块。

  1. 已知路由器R1的路由表如表4—13所示。

表4-13 习题4-28中路由器R1的路由表

地址掩码 目的网络地址 下一跳地址       路由器接口

/26     140.5.12.64        180.15.2.5           m2

/24     130.5.8.0            190.16.6.2           m1

/16     110.71.0.0        ……               m0

/16     180.15.0.0        ……   m2

/16     190.16.0.0        ……               m1

默认 默认            110.71.4.5           m0

试画出各网络和必要的路由器的连接拓扑,标注出必要的IP地址和接口。对不能确定的情应该指明。

解:                                           

            计算机网络 谢希仁 课后习题部分答案-编程之家                                

 

由路由表,我们先画出R1路由器,有路由表我们可以知道一共有4个路由器,140.5.12.64/26和路由器180.15.2.5,相连,但此二者网络前缀不一致,故其二者间接相连,中间过程未知,同样130.5.8.0/24和路由器190.16.6.2相连,中间过程未知。有网络聚合可知,路由器180.15.2.5又和目的网络180.15.0.0/16相连;路由器190.16.6.2和目的网络190.16.0.0/16

相连,又因为目的网络180.15.0.0/16和目的网络190.16.0.0/16、110.71.0.0/16没有吓一跳,故其二者和路由器R1直接相连,分别通过m2和m1、m0接口,最后默认吓一跳和110.71.0.0/16相连,此二者网络前缀一致,然后路由器110.71.4.5只能和互联网其他部分相连。

  1.  一个自治系统有5个局域网,其连接图如图4-66示。LAN2至LAN5上的主机数分别为: 91,150,3和15.该自治系统分配到的IP地址块为30.138.118/23。试给出每一个局域网的地址块(包括前缀)。

解:

由题意30.138.118/23地址掩码23位,故前23为网络号

118转化成二进制数为10111 011

分配网络前缀时应先分配地址数较多的前缀,

LAN2主机数91分配7位主机号位数

LAN3 主机数150 分配8….

LAN4 主机数3 分配3…..

LAN5 主机数15 分配5。。。

LAN1       30.138.119.192/27       

LAN2       30.138.119.0/25         

LAN3       30.138.118.0/24         

LAN4       30.138.119.144/29       

LAN5       30.138.119.192/26       

  1. 一个大公司有一个总部和三个下属部门。公司分配到的网络前缀是192.77.33/24.公司的网络布局如图4-56示。总部共有五个局域网,其中的LAN1-LAN4都连接到路由器R1上,R1再通过LAN5与路由器R5相连。R5和远地的三个部门的局域网LAN6~LAN8通过广域网相连。每一个局域网旁边标明的数字是局域网上的主机数。试给每一个局域网分配一个合适的网络的前缀。

解:

分配网络前缀时应先分配地址数较多的前缀。

192.77.33/24,前三个字节代表网络号,故分配局域网子网号应从第四个字节开始

LAN1:主机数50 主机号6位;LAN2:主机数10 主机号4位

LAN3:主机数30 主机号5位;LAN4:主机数10 主机号4位

LAN5:主机数4 主机号3位;LAN6:主机数20 主机号5位

LAN7:主机数20 主机号5位;LAN8:主机数25 主机号5位

而每一个广域网只需要分配两个接口即可,即分配两位,故分配如下

 

LAN1:192.77.33.128/26

LAN2:192.77.33.224/28

LAN3;192.77.33.64/27

LAN4:192.77.33.208/28

LAN5:192.77.33.240/29

WAN1:192.77.33.232/30

WAN2:192.77.33.236/30

WAN3:192.77.33.240/30

LAN6:192.77.33.96/27

LAN7:192.77.33.32/27

LAN8:192.77.33.160/27

 

  1.  以下地址中的哪一个和86.32/12匹配:请说明理由。

   (1)86.33.224.123:(2)86.79.65.216;(3)86.58.119.74; (4) 86.68.206.154。

解:

86.32/12   下划线上为12位前缀说明与第二字节有关,第一个字节都一样,第二字节,而32转化成二进制为0010 0000;

给出的四个地址的第二字节分别为:0010 0000 ,0100 0000,0011 0000和0100 0000。

综上(1)是匹配的。

  1. 以下地址中的哪一个地址2.52.90.140匹配?请说明理由。   

(1)0/4;(2)32/4;(3)4/6(4)80/4

2.52.90.140  è  0000 0010.52.90.140

0/4   è  0000 0000

32/4  è  0010 0000

4/6   è  0000 0100

80/4  è  0101 0000

可以看出只有1可能和2.52.90.140匹配,只有一网络前缀0000,而其他的网络前缀分别为

0010 、 0000 01 、0101

  1. 下面的前缀中的哪一个和地址152.7.77.159及152.31.47.252都匹配?请说明理由。   (1)152.40/13;(2)153.40/9;(3)152.64/12;(4)152.0/11。

解:

只需要写出下面前缀的二进制编码。

只需要看地址的前两个字节就可:

152.7.77.159:1001 1000 0000 0111

152.31.47.252:1001 1000 0001 1111

152转化成二进制数为1001 1000

152.40/13:1001 1000 0010 100

153.40/9: 1001 1001 0

152.64/12:1001 1000 0100

152.0/11: 1001 1000 000

前缀(4)和这两个地址都匹配

34. 与下列掩码相对应的网络前缀各有多少位?

   (1)192.0.0.0;(2)240.0.0.0;(3)255.224.0.0;(4)255.255.255.252。

解:

我们只需要看掩码中具有几个1就可以.

192:1100 0000

240:1111 0000

255.224:1111 1111  1110 0000

255.255.255.252:1111 1111 1111 1111 1111 1111 1111 1100

因此:

  1. /2 ; (2) /4 ; (3) /11 ; (4) /30 。

35.  已知地址块中的一个地址是140.120.84.24/20。试求这个地址块中的最小地址和最大地址。地址掩码是什么?地址块中共有多少个地址?相当于多少个C类地址?

解:

 地址掩码/20,说明我们只需要看第三个字节,84转化成二进制为:0101 0100,前4位是网络前缀最后四位。

故:

     最小地址是       140.120.80.0/20

     最大地址是       140.120.95.255/20

     地址线位数:12

     C类地址,地址线位数:8

     地址数2^12=4096.相当于2^4=16个C类地址。

  1. 已知地址块中的一个地址是190.87.140.202/29。重新计算上题。

解:

地址掩码/29,说明我们只需要看第四个字节,202转化成二进制为:1100 1010,前5位是网络前缀最后五位。

故:

     最小地址是           190.87.140.200/29  

     最大地址是           190.87.140.207/29  

 地址线位数:3

     C类地址,地址线位数:8

     地址数是2^3=8.

相当于1/32个C类地址。

37. 某单位分配到一个地址块136.23.12.64/26。现在需要进一步划分为4个一样大的子网。试问:

       (1)每一个子网的网络前缀有多长?

       (2)每一个子网中有多少个地址?

       (3)每一个子网的地址是什么?

       (4)每一个子网可分配给主机使用的最小地址和最大地址是什么?

解:

(1)

136.23.12.64/26除去网络前缀还剩6位地址

4个子网则分配两位地址足矣,故每个子网前缀28位。

(2)

去掉网络号,子网号,每个子网的地址中有4位留给主机用,因此共有2^4=16个地址。

(3)

四个子网的地址块是:

第一个地址块136.23.12.64/28,

第二个地址块136.23.12.80/28,

第三个地址块136.23.12.96/28,

第四个地址块136.23.12.112/28,

  1.  

第一个地址块

      最小地址:主机号为0001 以此地址为136.23.12.65/28

   最大地址:主机号为1110 以此地址为136.23.12.78/28

第二个地址块

   最小地址:主机号为0001 以此地址为136.23.12.81/28

   最大地址:主机号为1110 以此地址为136.23.12.94/28

第三个地址块

   最小地址:主机号为0001 以此地址为136.23.12.97/28

   最大地址:主机号为1110 以此地址为136.23.12.110/28

第四个地址块

   最小地址:主机号为0001 以此地址为136.23.12.113/28

   最大地址:主机号为1110 以此地址为136.23.12.126/28

41. 假定网络中的路由器B的路由表有如下的项目(这三列分别表示“目的网络”、“距离”和“下一跳路由器”)

                  N1        7        A

                  N2        2        B

                  N6        8        F

                  N8        4        E

                  N9        4        F

现在B收到从C发来的路由信息(这两列分别表示“目的网络”“距离”):

                  N2        4

                  N3        8

                  N6        4

                  N8        3

                  N9        5

试求出路由器B更新后的路由表(详细说明每一个步骤)。

解:

由距离向量算法:

路由器B首先会把下一跳地址都改为C,并把所有的“距离”字段的值加一,

N2        5       C    

                  N3        9       C

                  N6        5       C

                  N8        4       C

                  N9        6       C

与路由器B的路由表进行比较,

N2        5       C    相同的下一跳,更新

                  N3        9       C    新的项目,添加进来

                  N6        5       C    不同的下一跳,距离更短,更新

                  N8        4       C    不同的下一跳,距离一样,不改变

                  N9        6       C    不同的下一跳,距离更大,不改变

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

N1   7  A    无新信息,不改变

N2   5  C    相同的下一跳,更新

N3   9  C    新的项目,添加进来

N6   5  C    不同的下一跳,距离更短,更新

N8   4  E    不同的下一跳,距离一样,不改变

N9   4  F    不同的下一跳,距离更大,不改变

 

42. 假定网络中的路由器A的路由表有如下的项目(格式同上题):

            N1          4          B

            N2          2          C

            N3          1          F

            N4          5          G

   现将A收到从C发来的路由信息(格式同上题):

            N1          2

            N2          1

            N3          3

            N4          7

试求出路由器A更新后的路由表(详细说明每一个步骤)。

解:

由距离向量算法:

路由器A首先会把下一跳地址都改为C,并把所有的“距离”字段的值加一,

N1        3       C    

                  N2        2       C

                  N3        4       C

                  N4        8       C

                 与路由器A的路由表进行比较,

N1        3       C    不同的下一跳,距离更短,改变

                  N2        2       C    相同的下一跳,距离一样,更新

                  N3        4       C    不同的下一跳,距离更大,不改变

                  N4        8       C    不同的下一跳,距离更大,不改变

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

N1   3  C    不同的下一跳,距离更短,改变

N2   2  C    相同的下一跳,距离一样,更新后与A表一致不变

N3   1  F    不同的下一跳,距离更大,不改变

N4   5  G    不同的下一跳,距离更大,不改变

 

 

 

 

  1. 假设一段地址的首地址为146.102.29.0,末地址为146.102.32.255,求这个地址段的地址数。

解:

这个题首先用他的末地址-他的首地址得到他的差地址

146.102.32.255-146.102.29.0=0.0.3.255

地址数=0*256^3+0*256^2+3*256^1+255+1=1024个

故此地址块共有1024个地址

 

  1.  求下列每一个地址的类别。
  1. 227.12.14.87
  2. 193.14.56.22
  3. 14.23.120.8
  4. 252.5.15.111

解:

由课本图4-5得:

A类网络的IP地址范围为1.0.0.1-127.255.255.254;

B类网络的IP地址范围为:128.1.0.1-191.255.255.254;

C类网络的IP地址范围为:192.0.1.1-223.255.255.254。

D类网络的IP地址范围为:224-239

E类网络的IP地址范围为:240-254

所以(1)是D类地址

  1. 是C类地址
  2. 是A类地址
  3. 是E类地址

 

  1. 给出某地址块中的一个地址为73.22.17.25.求该地址块的地址数及其首地址和末地址。

解:

由73可以知道它是一个A类地址,那么他的地址数为去掉前8位网络号,剩下的24位均为地址号  故共有 2^24=16777216个地址。

首地址为73.0.0.0/8  即网络号后面,地址号均为0的

末地址为73.255.255.255/8  即网络号后面地址号均为1的

 

  1. 某单位分配到一个起始地址为14.24.74.0/24的地址块。该单位需要用到三个子网,他们的三个子地址块的具体要求是:子网N1需要120个地址,子网N2需要60个地址,子网N3需要10个地址,请给出地址块的分配方案。

解:

由题意的:

最佳方案是分配网络前缀时应先分配地址数较多的前缀

14.24.74.0/24代表前三个字节为网络前缀(网络号),那么

由N1 120个地址可得N1的主机地址位数为7

由N2 60个地址可得N1的主机地址位数为6

由N3 10个地址可得N3的主机地址位数为4

综上:N1  14.24.74.0/25,末地址为14.24.74.127/25

子网号(最后一位):地址号   0 0000000  到   1 11111110

N2  14.24.74.128/26,末地址为14.24.74.191/26

子网号(最后2位):地址号  10 000000  到    10 111111

N3  14.24.74.192/28,末地址为14.24.74.207/28

子网号(最后4位):地址号  1100  0000  到    1100 1111   

 

 

 

  1. 如图4-68所示,网络145.13.0.0/16划分为四个子网N1,N2,N3和N4.这四个子网与路由器R连接的接口分别是m0,m1,m2和m3.路由器R的第五个接口m4连接到互联网。
  1. 试给出路由器R的路由表。
  2. 路由器R收到一个分组,其目的地址是145.13.160.78.试给出这个分组是怎样被转发到的。

计算机网络 谢希仁 课后习题部分答案-编程之家

解:

(1)

有题目可以看出四个网络地址的地址掩码均为/18,故可以得出子网掩码均为255.255.192.0,而且N1、N2、N3、N4均与路由器R通过接口直接相连,故由路由器R与N1、N2、N3、N4通信均为直接交付。路由器R与互联网通过m4接口相连,故此为路由器R的默认下一跳通过m4接口通信。

 由路由表

路由器R的路由表

 目的网络地址    目的网络的子网掩码   下一跳

145.13.0.0     255.255.192.0         直接交付,接口m0

145.13.64.0    255.255.192.0         直接交付,接口m1

145.13.128.0   255.255.192.0         直接交付,接口m2

145.13.192.0   255.255.192.0         直接交付,接口m3

     *                          *                    默认路由器,接口m4

  1. 根据最长前缀匹配原则145.13.160.78=145.13.1010 0000.78

 而145.13.0.0=145.13.0000 0000.0

145.13.64.0= 145.13.0100 0000.0

145.13.128.0 =145.13.1000 0000.0

145.13.192.0 =145.13.1100 0000.0

 故收到的分组从路由器的接口m2转发。

  1. 收到一个分组,其目的地址D=11.1.2.5.要查找的路由表中有这样三项:

      路由1 到达网络11.0.0.0/8

      路由2 到达网络11.1.0.0/16

      路由3 到达网络11.1.2.0/24

试问在转发这一个分组应当选择哪一个路由?

解:

目的地址11.1.2.5转化成二进制00001011 00000001  00000010 00000101

路由1 到达网络11.0.0.0/8转化成二进制00001011 00000000 00000000 00000000

路由2 到达网络11.1.0.0/16转化成二进制00001011 00000001 00000000 00000000

路由3 到达网络11.1.2.0/24转化成二进制00001011 00000001 00000010 00000000

目的网络分别与路由1、2、3到达网络的地址掩码/8、/16、/24进行“与运算”得11.0.0.0、11.1.0.0、11.1.2.0发现结果都匹配,但根据最长前缀匹配准则得出选择路由3

  1. 同上题。假定路由1的目的网络11.0.0.0/8中有一台主机H,其IP地址是11.1.2.3.

当我们发送一个分组给主机H时,根据最长前缀匹配准则,上面这个路由表却把这个分组转发到路由3的目的网络11.11.2.0/24.是最长最长前缀匹配准则有时会出错吗?

解:

根据题意,主机H的IP地址11.1.2.3为目的网络11.0.0.0/8中的一台主机,但是网络11.0.0.0/8在分配本网络的主机号时,不允许重复使用地址块11.1.0.0 /16中的任何一台主机号。所以这个主机的IP为11.1.2.3不应该是路由一目的网络中的。况且网络11.1.0.0/16存在IP地址是11.1.2.3的主机,这样会和主机H一样,从而会引起地址上的混乱,所以他的前提条件不存在,那么最长前缀匹配准则是没有问题的。

 

5—05 试举例说明有些应用程序愿意采用不可靠的UDP,而不用采用可靠的TCP。

首先UDP是面向无连接的服务,它特点就是,用这种协议传输数据速度快。使用这种协议追求的是传输的即时性而不是传输的质量。他支持一对多的通信。比如现在的各大直播App。

熊猫TV,斗鱼TV,虎牙以及QQ的视频聊天,语音聊天等等这些实时性要求比较高,而且对数据报的损失有一定的承受能力的应用都用UDP,TCP首先不支持一对多的通信,他要求点对点面向连接的可靠的通信,再者TCP数据报出错则会引起重传,这会造成一定的时延,所以实时性要求不高。故这些应用程序不采用TCP链接

5—06 接收方收到有差错的UDP用户数据报时应如何处理?

UDP的首部中有个检验和字段,主要是检测UDP用户数据报在传输过程中是否有错,如果有错就选择丢弃。

 

5—07   如果应用程序愿意使用UDP来完成可靠的传输,这可能吗?请说明理由

这是有可能的,因为UDP收到有差错的数据报就选择丢弃,如果但应用程序中能够提供让UDP有差错的数据报进行重传的机制的话也能实现可靠的传输。

5—08   为什么说UDP是面向报文的,而TCP是面向字节流的?

因为从课本UDP面向报文的概述中可以得到:发送方 UDP 对应用程序交下来的报文,在添加首部后就向下交付 IP 层。UDP 对应用层交下来的报文,既不合并,也不拆分,而是保留这些报文的边界。这就是说,应用交给UDP多长的报文,UDP就照常发送,即一次发送一个报文;接收方 UDP 对 IP 层交上来的 UDP 用户数据报,在去除首部后就原封不动地交付上层的应用进程,一次交付一个完整的报文。也因此应用程序必须选择合适大小的报文。

 

TCP面向字节流是因为:应用程序和TCP的交互一次是一个数据块,但TCP把应用程序交下数仅仅看成一连串的无结构的字节流,TCP不知道字节流的含义,但接收方的应用程序收到的字节流必须和发送方发出的字节流一样。接收方的应用程序也必须有能力识别收到的字节流。

5—09 端口的作用是什么?为什么端口要划分为三种?

端口也称为协议端口,它的作用是为了使运行不同操作系统的计算机的应用进程能够互相通信。端口是应用层服务的的一种代号,它用来标志应用层的进程

端口号分为服务器端使用的端口号(熟知端口号、登记端口号)、客户端使用的端口号(短暂端口号)

划分这三种端口号就很容易通过报文首部中发现这条报文是从服务器发送给客户端的,还是有客户端发送给服务器的。而且通过端口的划分,我们就能够知道一种些常用的应用程序的端口号,利于我们访问这些应用程序。

熟知端口:数值一般为0~1023.标记常规的服务进程;IANA把他们交给TCP/ip中一些最重要的应用程序。

登记端口号:数值为1024~49151,标记没有熟知端口号的服务程序;

客户端使用的端口号:这些端口号仅在客户进程运行时才进行动态选择。通信结束后端口号就不复存在。这个端口号供给其他应用进程使用。

 

5—11 某个应用进程使用运输层的用户数据报UDP,然而继续向下交给IP层后,又封装成IP数据报。既然都是数据报,可否跳过UDP而直接交给IP层?哪些功能UDP提供了但IP没提提供?

不可跳过,因为IP数据报只能找到是哪一个目的主机而无法找到是哪一个目的进程。

UDP在IP的数据报之上增加了应用进程的复用和分用功能以及差错检验的功能。

5—14 一UDP用户数据报的首部十六进制表示是:06 32 00 45 00 1C  E2 17.试求源端口、目的端口、用户数据报的总长度、数据部分长度。这个用户数据报是从客户发送给服务器发送给客户?使用UDP的这个服务器程序是什么?

解:

06 32 00 45 00 1C  E2 17

源端口:0632转化成十进制数是1586

目的端口:00 45转化成十进制数是69

长度:00 1C转化成十进制数是28字节

数据部分长度:总长度-首部长度=28-8=20字节

源端口号1586是登记端口号

目的端口69是孰知端口号,故服务器程序是TFTP。所以此UDP用户数据报是从客户发给服务器。

5—15 使用TCP对实时话音数据的传输有什么问题?使用UDP在传送数据文件时会有什么问题?

使用TCP对实时话音数据的传输,TCP是面向连接的可靠的传输,他收到有差错的报文段就要进行重传,而实时语音数据传输,要求的是实时性,这一点TCP可能做不到。

使用UDP在传送数据文件时,因为UDP是面向无连接的不可靠传输,所以应用程序可能接受有差错的数据文件。

5—17 在停止等待协议中,如果收到重复的报文段时不予理睬(即悄悄地丢弃它而其他什么也没做)是否可行?试举出具体的例子说明理由。

不可行,如果收到重复的报文段不予理睬,那么发送端就会以为接收端没有收到该报文段,于是还会重发该报文段,这种效果与报文段丢失一致。

5—22 主机A向主机B发送一个很长的文件,其长度为L字节。假定TCP使用的MSS有1460字节。

(1) 在TCP的序号不重复使用的条件下,L的最大值是多少?

(2) 假定使用上面计算出文件长度,而运输层、网络层和数据链路层所使用的首部开销共66字节,链路的数据率为10Mb/s,试求这个文件所需的最短发送时间。

 解:

  1.  TCP首部当中序号字段中共有也就是L_max的最大值是2^32=4GB字节。
  2. MSS最大报文段大小1460字节,L_max/MSS 约= 2941758个报文

2941758*66这个是所有的报文段首部开销。

总的字节数=2941758*66+L_max=4489123390个字节

又因为链路的数据率为10Mb/s,1个字节8位故:

N*8/(10*10^6)= 3591.3秒,所以最短的发送时间为3591.3秒。

 

 

5—23 主机A向主机B连续发送了两个TCP报文段,其序号分别为70和100。试问:     

(1) 第一个报文段携带了多少个字节的数据?

(2) 主机B收到第一个报文段后发回的确认中的确认号应当是多少?

(3) 如果主机B收到第二个报文段后发回的确认中的确认号是180,试问A发送的第二个报文段中的数据有多少字节?

(4) 如果A发送的第一个报文段丢失了,但第二个报文段到达了B。B在第二个报文段到达后向A发送确认。试问这个确认号应为多少?

       解:

(1)发送了两个连续报文段分别为70和100,可以推断第一个报文段的数据序号是70-99,所以共30字节的数据。

(2)B收到了第一个报文段后,那么他希望收到下一个字节的序号,就是第二个报文段的第一个字节的序号,也就是确认号应为100.

(3)主机B收到第二个报文段后发回的确认中的确认号是180,这个也就是第三个报文段的第一个字节的序号是180,可以推断出第二个报文段从100-179,所以共80字节。      

(4)第一个报文段丢失,那么往后的报文段就不连续了,所以主机A还要重传第一个报文段,所以这个确认号应该为70

5—25 为什么在TCP首部中要把TCP端口号放入最开始的4个字节?

这是为了ICMP网际控制报文协议,来使更加有效的转发IP数据报和提高交付成功的机会。差错报文时需要用这两个端口来确定是哪条连接出了差错。所以ICMP的差错报文中要包含IP首部后面的8个字节的内容,而这里面有TCP首部中的源端口和目的端口。如果不放在前四个字节,ICMP的差错报文就包含不到TCP端口号了,而TCP端口号这个信息对源点通知高层协议是有用的。

5—26 为什么在TCP首部中有一个首部长度字段,而UDP的首部中就没有这个这个字段?       

TCP首部格式中TCP首部长度是可变的,它的首部是固定首部加上选项字段的,TC首部长度不唯一,但是UDP首部长度是固定的8个字节;有了首部长度字段也是个冗余字段,没必要。

5—28 主机A向主机B发送TCP报文段,首部中的源端口是m而目的端口是n。当B向A发送回信时,其TCP报文段的首部中源端口和目的端口分别是什么?

很显然是n和m。

5—29 在使用TCP传送数据时,如果有一个确认报文段丢失了,也不一定会引起与该确认报文段对应的数据的重传。试说明理由。

有可能是TCP发送端还没有到超时计时器到期,就收到了序号更高的报文段的确认信号。这时就不会重传,而是根据确认号发送数据。

5—30 设TCP使用的最大窗口为65535字节,而传输信道不产生差错,带宽也不受限制。若报文段的平均往返时延为20ms,问所能得到的最大吞吐量是多少?

因为传输信道不产生差错,带宽也不受限制。所以

最大吞吐量=最大窗口*8/平均往返时延=65535*8b/0.02s=26.2Mb/s。

 

 

5—31 通信信道带宽为1Gbit/s,端到端时延为10ms。TCP的发送窗口为65535字节。试问:可能达到的最大吞吐量是多少?信道的利用率是多少?

  

发送字节总位数=(发送窗口值+TCP最大首部)*8=65536×8+40×8=524600 bit

往返时延=2*端到端时延=0.02s

       信道带宽=1*10^9 bit/s

       分组发送时间=发送窗口值/信道带宽=65536*8/10^9=0.000524288s

       最大吞吐量=(发送字节总位数)/(分组发送时间+往返时延)约=25.5Mb/s

信道利用率=(分组发送时间)/(分组发送时间+往返时延)约=2.55%

 

5—33  假定TCP在开始建立连接时,发送方设定超时重传时间是RTO=6s。

(1)当发送方接到对方的连接确认报文段时,测量出RTT样本值为1.5s。试计算现在的RTO值。

(2)当发送方发送数据报文段并接收到确认时,测量出RTT样本值为2.5s。试计算现在的RTO值。

答:

(1)

由公式RTO=RTTs+4*RTTd。

RTTd:RTT的偏差加权均值。  

RTTs:加权平均往返时间

初次测量时,RTTd(1)= RTT(1)/2;     

后续测量中,新的RTTd=(1-β)* 旧的RTTd+β*  |  RTTs- 新的RTT样本|;

       β=1/4

       由题意,RTT(1)样本值为1.5秒,

       那么:由于第一次测量到RTT样本时,RTTs(1)就取所测量到的样本值

RTTs(1)=RTT(1)=1.5s   RTTd(1)=RTT(1)/2=0.75s

       RTO(1)=RTTs(1)+4RTTd(1)=1.5+4*0.75=4.5s

 

(2)由题意得:

第二回的RTT也就是RTT(2)=2.5s

RTTs(1)=1.5s   RTTd(1)=0.75s

RTTs(2)=1/8*2.5+7/8*1.5=1.625s

     RTTd(2)=(1-β)* RTTd(1)+β*{ RTTs(2)- RTT(2)}=0.75*3/4+|1.625-2.5|/4=25/32    RTO(2)=RTTs(2)+4RTTd(2)=1.625+4*25/32=4.75s

5—34 已知第一次测得TCP的往返时延的当前值是30 ms。现在收到了三个接连的确认报文段,它们比相应的数据报文段的发送时间分别滞后的时间是:26ms,32ms和24ms。设α=0.1。试计算每一次的新的加权平均往返时间值RTTs。讨论所得出的结果。

由题意得:

a=0.1, RTT(1)=30ms,RTT(2)=26ms,RTT(3)=32ms,RTT(4)=24ms

由公式:新的RTTs=(1-a)x(旧的RTTs)+a x(新的RTT样本)

RTTs2=RTT(1)*(1-a) +RTT(2)*a=29.6ms

RTTs3=RTT(3)*a+RTT(2)*(1-a)=29.84ms

RTTs4=RTT(4)*a+RTT(3)*(1-a)=29.256ms

三次算出加权平均往返时间分别为29.6,29.84和29.256ms。

可以看出,RTT样本值虽然变化很大,但是加权平均往返时间却都变化很小,具体点就是RTT的样本值变化多达20%时,加权平均往返时间RTTs变化却只有零点几。

5—39 TCP的拥塞窗口cwnd与传输轮次n的关系如下所示:

Cwnd

1

2

4

8

16

32

33

34

35

36

37

38

39

n

1

2

3

4

5

6

7

8

9

10

11

12

13

Cwnd

40

41

42

21

22

23

24

25

26

1

2

4

8

n

14

15

16

17

18

19

20

21

22

23

24

25

26

  1. 试画出如图5-25所示的拥塞窗口与传输轮次的关系曲线。
  2. 指明TCP工作在慢开始阶段的时间间隔。
  3. 指明TCP工作在拥塞避免阶段的时间间隔。
  4. 在第16轮次和第22轮次之后发送方式是通过收到三个重复的确认还是通过超时检测到丢失了报文段
  5. 在第一轮次第十八轮次和第24轮次发送时,门限ssthresh分别被设置为多大?
  6. 在第几轮次发出第70个报文段?
  7. 假定在第26轮次之后收到了三个重复的确认,因而检测出报文段的丢失,那么拥塞窗口cwnd和门限ssthresh应设置为多大?

解:

计算机网络 谢希仁 课后习题部分答案-编程之家

(2)由图可以看出共有两次慢开始时间间隔:【1,6】,【23,26】

(3)拥塞避免的时间间隔:【6,16】,【17-22】.

(4)在第16轮次,第17轮次cwnd为21,也就是说发送方这时侯启动了快恢复算法,将ssthresh调整为cwnd/2,而且紧接着执行的拥塞避免算法,进而判断他是收到三个重复的确认检测到丢失了报文段。

在第23轮次,他的拥塞窗口值调整到了1,并且之后进入了慢开始阶段,所以它是通过通过超时检测到丢失了报文段。

  1. 第一轮次慢开始刚开始门限ssthresh为32,通过cwnd为32就开始进行拥塞避免算法就能够看出;

第十八轮次因为之前收到了3个重复的确认,所以门限ssthresh值为21.

第24轮次之前有过超时。门限值调整为22轮次窗口值的一半为13

  1. 通过前n个轮次窗口值之和可以知道,当n为7的时候,大于70,所以是第7个轮次
  2. 如果收到三个重复的确认,那么ssthresh=新cwnd=旧cwnd/2=4.

 

 

5—47 一个客户向服务器请求建立TCP连接。客户在TCP连接建立的三次握手中的最后一个报文段中捎带上一些数据,请求服务器发送一个长度为L字节的文件。假定:

(1)客户和服务器之间的数据传输速率是R字节/秒,客户与服务器之间的往返时间是RTT(固定值)。

(2)服务器发送的TCP报文段的长度都是M字节,而发送窗口大小是nM字节。

(3)所有传送的报文段都不会出错(无重传),客户收到服务器发来的报文段后就及时发送确认。

(4)所有的协议首部开销都可忽略,所有确认报文段和连接建立阶段的报文段的长度都可忽略(即忽略这些报文段的发送时间)。

试证明,从客户开始发起连接建立到接收服务器发送的整个文件多需的时间T是: T=2RTT+L/R                           当nM>R(RTT)+M

或  T=2RTT+L/R+(K-1)[M/R+RTT-nM/R]   当nM<R(RTT)+M

其中,K=[L/nM],符号[x]表示若x不是整数,则把x的整数部分加1。

解:

  1. 由题意得:长度为L字节数据传输速率是R字节/秒TCP报文段的长度都是M字节发送窗口大小是nM字节
  • 如果发送窗口值较大的时候,nM>R(RTT)+M时,最后加上连接请求,请求发送文件和最后一个确认到达所需要的时间共2RTT,加上一次性连续发送报文段要L/R的时间,

总耗时=2RTT+L/R

  • 发送窗口较小的情况即nM<R(RTT)+M,发送一组nM个字节后必须停顿下来,等收到确认后继续发送。共需K=[L/nM]个周期:

其中前K-1个周期每周期耗时M/R+RTT,共耗时(K-1)(M/R+RTT)      

 第K周期剩余字节数Q=L-(K-1)*nM,需耗时Q/R

总耗时最后加上连接请求,请求发送文件和最后一个确认到达所需要的时间共2RTT

 总耗时=2*RTT+(K-1)M/(R+RTT)+Q/R=2*RTT+L/R+(K-1)[( M/R+RTT)-nM/R]

综上所述,结论得证。

6-02  域名系统的主要功能是什么?域名系统中的本地域名服务器、根域名服务器、顶级域名服务器以及权限域名权服务器有何区别?

 解:

域名系统的主要功能:用来将便于人们使用的机器名字即(域名)解析为主机能识别的IP地址。

区别:共有四种不同类型的域名服务器。即本地域名服务器、根域名服务器、权限域名服务器、顶级域名服务器区别如下:

根域名服务器:它是最高层次的域名系统,也是最重要的。所有的根域名服务器都知道所有的顶级域名服务器的域名和IP地址。不管哪一个本地域名服务器都要对互联网上任何一个域名进行解析,他无法解析,就首先要求求助于根域名服务器。根域名服务器分布不均衡。

顶级域名服务器:管理在该顶级域名服务器注册的所有二级域名。当收到DNS请求,就给相应的回答。

权限域名服务器:他是负责一个区的域名服务器,当一个权限域名服务器还不能给出最后的查询回答时,就会发出查询请求的DNS客户,下一步应当找哪一个权限域名服务器。

本地域名服务器:它不属于域名服务器层次结构,但它对域名系统很重要。当一台主机发出DNS查询请求时,这个查询请求报文就发给本地域名服务器。

6-03  举例说明域名转换的过程。域名服务器中的高速缓存的作用是什么?

解:

  1. 转换过程:

      假定域名为m.xyz.com的主机想知道另一台主机(域名为y.abc.com)的IP地址,那么他将进行以下查询:

  1. 主机m.xyz.com先向其本地域名服务器dns.xyz.com进行递归查询。
  2. 本地域名服务器采用迭代查询。他先向一个根域名服务器进行查询。
  3. 根域名服务器告诉本地域名服务器,下一次应查询的顶级域名服务器dns.com的IP地址。
  4. 本地域名服务器向顶级域名服务器dns.com进行查询.
  5. 权限域名服务器dns.abc.com告诉本地域名服务器,所查询的主机的IP地址。
  6. 本地域名服务器最后把查询结果告诉主机m.xyz.com。

就这样完成了域名的转化过程。

(2)作用:这样不仅可大大减轻根域名服务器的负荷,也使互联网上的 DNS 查询请求和回答报文的数量大为减少。

6-04  设想有一天整个因特网的DNS系统都瘫痪了(这种情况不大会出现),试问还可以给朋友发送电子邮件吗?

解:

有可能;如果你知道对方邮件服务器的IP地址,这样就不必用DNS域名系统解析域名了

6-15  假定你在浏览器上点击一个URL,但这个URL的ip地址以前并没有缓存在本地主机上。因此需要用DNS自动查找和解析。假定要解析到所要找的URL的ip地址共经过n个DNS服务器,所经过的时间分别是RTT1,RTT2,……RTTn。假定从要找的网页上只需要读取一个很小的图片(即忽略这个小图片的传输时间)。从本地主机到这个网页的往返时间是RTTw.试问从点击这个URL开始,一直到本地主机的屏幕上出现所读取的小图片,一共需要经过多少时间?

解:

所需时间共分为四个部分:解析IP地址、建立TCP连接、获得万维网文档和小图片的传输时间。

解析IP地址:解析IP地址毫无疑问就是经过n个DNS服务器的时间总和RTT1+RTT2+…+RTTn。     

建立TCP连接:TCP的三次握手需要1.5RTTw。

获得万维网文档:0.5RTTw。

小图片的传输时间:这里是0,因为本题忽略这个小图片的传输时间。

综上所述共需要2RTTw+RTT1+RTT2+…+RTTn。

6-16 在上题中,假定同一台服务器的HTML文件中又链接了三个非常小的对象。若忽略这些对象的发送时间,试计算客户点击读取这些对象所需的时间。

     (1)没有并行TCP连接的非持续HTTP;

     (2)使用并行TCP连接的非持续HTTP;

     (3)流水线方式的持续HTTP。

解:

    首先并行的TCP连接是指:HTTP 允许客户端打开多条连接,并行地执行多个 HTTP 事务。通过多条 TCP 连接发起并发的 HTTP 请求。

非持续HTTP是指:每次服务器发出一个对象后,相应的TCP连接就被关闭,也就是说每个连接都没有持续到可用于传送其他对象。每个TCP连接只用于传输一个请求消息和一个响应消息。

持续HTTP是指:服务器在发出响应后让TCP连接继续打开着。同一对客户/服务器之间的后续请求和响应可以通过这个连接发送。

流水线方式的持续HTTP:服务器不用等到收到前一个的响应在进行发送请求。

(1)这里是没有并行的TCP,且是非持续的HTTP:故此题加上URL连接共四个来连接对象,每一个都需要串行的建立TCP连接以及获得万维网文档所需要的时间。综上

所需时间=RTT1+RTT2+…+RTTn+8RTTw。

  1. 并行的TCP连接那么客户端可并行地执行多个 HTTP 事务。通过多条 TCP 连接发起并发的 HTTP 请求。上题点击URL的时间,加上点击此题三个连接只需要2个RTTw建立TCP连接以及获得万维网文档。所以共所需时间=RTT1+RTT2+…+RTTn+4RTTw。
  2. 因为采用流水线形式:那么相当于并行的TCP连接,又是持续HTTP,那么就是3个请求资源需要0.5RTTw,给与响应获得获得万维网文档需要0.5RTTw。加上上题的时间共

所需时间=RTT1+RTT2+…+RTTn+3RTTw。

7-09 公钥密码体制下的加密和解密过程是怎样的?为什么公钥可以公开?如果不公开是否可以提高安全性?

解:

  1. 加密解密过程:
  1. 密钥对产生器产生出接收者B的一对密钥,加密密钥PKb和解密密钥SKb,发送者A所用的加密密钥PKb就是接收者B的公钥,它向公众公开。而B所用的解密密钥SKb就是接收者B的私钥,对其它人都保密。
  2. 发送者A用B的公钥PKb通过E运算对明文X加密,得出密文Y,就发送给B,B用自己的私钥SKb通过D运算进行解密,恢复出明文。
  1. 公钥能公开:是因为虽然公钥可以用来加密但他不能用来解密。而且虽然计算机可以很容易的产生成对的PKb和SKb,但是从已知的PKb实际上不可能推导出SKb。
  2. 不公开不能提高安全性。首先任何加密算法的安全性取决于密钥的长度,以及攻破密文所需要的计算量而不是简单的取决于加密的体制。而且公钥不公开,也要给若干个想要给B发送报文的发送者发送公钥,多人以上知道密钥,该密钥也就不保密了。

 

 

 

7-19 图7-9的鉴别过程也有可能被骗子利用。假定A发送报文和B联系;但不巧被骗子P截获了,于是P发送报文给A:“我是B”。接着,A就发送图7-9中的第一个报文“A,Ra”,这里的Ra是不重数。本来,P必须也发给A另一个不重数,以及发回使用两人共同拥有的密钥Kab加密的Ra,即Kab(Ra)。但P根本就不知道Kab,只好就发送同样的Ra作为自己的不重数。A收到Ra后,发给P报文“Kab(Ra)”,P仍然不知道密钥Kab,也照样发回报文“Kab(Ra)”。接着A就把一些报文发送给P了。虽然P不知道密钥Kab,但可以慢慢设法攻破。试问A能否避免这样的错误?

解:能。不重数 (nonce) 就是一个不重复使用的大随机数,即“一次一数”。由于不重数不能重复使用,所以P在进行重放攻击时无法重复使用所截获的不重数。而此题使用的是对称密钥密码体制下进行不重数鉴别。

这里的AB双方有个共同的密钥,但是P第一次发送给A不重数Ra时,没有对不重数R(a)进行加密,也没有加上自己的不重数Rp,这时A就不会发送给P 报文Kab(Ra),因为不重数就是一个不重复使用的大随机数,即“一次一数”。也就不会有下面的过程了。