原始数据报 数据报片1 数据报片2 数据报片3 总长度(字节) 数据长度(字节) 4000 1500 1500 1040 3980 1480 1480 1020 MF 0 1 1 0 片偏移 0 0 185 370 6-19分两种情况(使用子网掩码和使用CIDR)写出因特网的IP层查找路由的算法。
6-24一个自治系统有5个局域网,其连接图如图6-61所示。LAN2至LAN5上的主机数分别为:91,150,3和15。该项自治系统分配到的IP地址块为30.138.118/23。试给出每一个局域网的地址块(包括前缀)。 解:分配网络前缀时应先分配地址数较多的前缀。 地址块30.138.118/23可写成30.138.118.0/23
写成二进制表示:00011110 10001010 01110110 00000000 掩码 11111111 11111111 11111110 00000000 LAN3有150个主机加一个路由器地址为151个地址。 地址块 00011110 10001010 0111011* ******** 分配地址块 00011110 10001010 01110110 ******** 即 30.138.118.0/24
LAN2有91个主机加一个路由器地址为92个地址。 分配地址块 00011110 10001010 01110111 0******* 即 30.138.119.0/25
LAN5有15个主机加一个路由器地址为16个地址。需要/27地址块,可分配/26地址块。 分配地址块 00011110 10001010 01110111 10****** 即 30.138.119.128/26
LAN4有3个主机加一个路由器地址为4个地址。至少需要/29地址块 分配地址块 00011110 10001010 01110111 11000*** 即 30.138.119.192/29
LAN1至少有3个IP地址供路由器用。也分一个/29地址块 分配地址块 00011110 10001010 01110111 11001*** 即 30.138.119.200/29
6-20试找出可产生以下数目的A类子网的子网掩码(采用连续掩码) (1)2,(2)6,(3)20,(4)62,(5)122,(6)250
答:(3)20+2=22<25(加2即将不能作为子网号的全1和全0的两种,所以子网号占用5bit,所以网络号加子网号共13bit,子网掩码为前13个1后19个0,即255.248.0.0。依此方法: (1)255.192.0.0,(2)255.224.0.0,(4)255.252.0.0,(5)255.254.0.0,(6)255.255.0.0 6-21以下有四个子网掩码,哪些是不推荐使用的?
(1)176.0.0.0,(2)96.0.0.0,(3)127.192.0.0,(4)255.128.0.0 答:只有(4)是连续的1和连续的0的掩码,是推荐使用的。 6-22有如下的四个/24地址块,试进行最大可能的聚合。
212.56.132.0/24,212.56.133.0/24。212.56.134.0/24,212.56.135.0/24 答:212=(11010100)2,56=(00111000)2
132=(10000100)2, 133=(10000101)2 134=(10000110)2, 135=(10000111)2
所以共同的前缀有22位,即11010100 00111000 100001,聚合的CIDR地址块是:212.56.132.0/22 6-23有两个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这一地址块。
6-31 IGP和EGP这两类协议的主要区别是什么?
6-34假定网络中的路由器B的路由表有如下的项目(这三列分别表示“目的网络”、“距离”和“下一跳路由器”)
N1 7 A N2 2 C N6 8 F N8 4 E N9 4 F
现在B收到从C发来的路由信息(这两列分别表示“目的网络”和“距离” ):
N2 4
N3 8 N6 4 N8 3 N9 5
试求出路由器B更新后的路由表。 解:路由器B更新后的路由表如下:
N1 7 A 无新信息,不改变 N2 5 C 相同的下一跳,更新 N3 9 C 新的项目,添加进来
N6 5 C 不同的下一跳,距离更短,更新 N8 4 E 不同的下一跳,距离一样,不改变 N9 4 F 不同的下一跳,距离更大,不改变
6-35假定网络中的路由器A的路由表有如下的项目(这三列分别表示“目的网络”、“距离”和“下一跳路由器”)
N1 4 B N2 2 C N3 1 F N4 5 G
现在A收到从C发来的路由信息(这两列分别表示“目的网络”和“距离” ):
N1 2 N2 1 N3 3
试求出路由器A更新后的路由表。 解:路由器A更新后的路由表如下:
N1 3 C 不同的下一跳,距离更短,改变 N2 2 C 不同的下一跳,距离一样,不变 N3 1 F 不同的下一跳,距离更大,不改变 N4 5 G 无新信息,不改变
第七章 运输层
7-01(1)试说明运输层的作用。网络层提供数据报或虚电路服务对上面的运输层有何影响?
(2)当应用程序使用面向连接的TCP和无连接的IP时,这种传输是面向连接的还是面向连接的? (3)接收端收到有差错的UDP用户数据报时应如何处理?
答:(1)从通信和信息处理的角度来看,运输层向它上面的应用层提供通信服务。运输层为应用进程之间提供端到端的逻辑通信。
(2)都是。这要从不同层次来看。在运输层是面向连接的,在网络层则是无连接的。 (3)丢弃。
7-04解释为什么突然释放运输连接就可能丢失用户数据而使用TCP的连接释放方法就可保证不丢失数据。 答:当主机1和主机2之间连接建立后,主机1发送了一个TCP数据段并正确抵达主机2,接着主机1发送另一个TCP数据段,这次很不幸,,主机2在收到第二个TCP数据段之前发出了释放连接请求,如果就这样突然释放连接,显然主机1发送的第二个TCP报文段会丢失。而使用TCP的连接释放方法,主机2发出了释放连接的请求,那么即使收到主机1的确认后,只会释放主机2到主机1方向的连接,即主机2不再向主机1发送数据,而仍然可接收主机1发来的数据,所以可保证不丢失数据。
7-05试用具体例子说明为什么在运输连接建立时要使用三次握手。说明如不这样做可能会出现什么情况。 答:我们知道,3次握手完成两个重要的功能,既要双方做好发送数据的准备工作(双方都知道彼此已准备好),也要允许双方就初始序列号进行协商,这个序列号在握手过程中被发送和确认。
现在把三次握手改成仅需要两次握手,死锁是可能发生的。作为例子,考虑计算机A和B之间的通信,假定B给A发送一个连接请求分组,A收到了这个分组,并发送了确认应答分组。按照两次握手的协定,A认为连接已经成功地建立了,可以开始发送数据分组。可是,B在A的应答分组在传输中被丢失的情况下,将不知道A是否已准备好,不知道A建议什么样的序列号,B甚至怀疑A是否收到自己的连接请求分组。在这种情况下,B认为连接还未建立成功,将忽略A发来的任何数据分组,只等待连接确认应答分组。而A在发出的分组超时后,重复发送同样的分组。这样就形成了死锁。
7-06一个TCP报文段的数据部分最多为多少字节?为什么?如果用户要传送的数据的字节长度超过TCP报文段中的序号字段可能编出的最大序号,问还能否用TCP来传送?
答:65495字节。此数据部分加上TCP首部的20字节,再加上IP数据报的首部的20字节,正好是IP数据报的最大长度。当然,IP首部包含了选择,则IP首部长度超过20字节,这时TCP报文段的数据部分的长度将小于65495字节。
7-10设TCP使用的最大窗口为64KB,即64*1024字节。而传输信道貌岸然的带宽可认为 是不受限制的。若报文段的平均时延为20ms,问所能得到的最大的吞吐量是多少?
答:可见在报文段平均往返时延20ms内,发送方最多能发送64×1024×8比特,所以最大的吞吐量为=64×1024×8÷(20×10-3)=26214400bit/s=26.21Mbit/s