(2) Length = 460; ID = x; DF = 0; MF = 0; Offset = 60
35. If the bit rate of the line is b, the number of packets/sec that the router can emit is b/8192, so the number of seconds it takes to emit a packet is 8192/b.
To put out 65,536 packets takes 229 /b sec. Equating this to the maximum packet lifetime, we get 229 /b = 10. Then, b is about 53,687,091 bps.
36. 答:因为为每一个分割的片段选择路由都需要该选项信息,因此该选项必须出现在每一个片段中。
37. 答:除去2 位作为前缀,将剩下18 位表示网络。概念上,网络数目可以有18 2 或262144 个。然而,全0 和全1 是特别地址,所以只有262142 个可供分配。
38. 答:The address is 194.47.21.130.
39. 答:对于一个B 类网络,高端16 位形成网络号,低端16 位是子网或主机域。在子网掩码的低端16 位中,最高有效4 位为1111,因此剩下12 位用于主机号。因此,存在4096 个主机地址。但由于全0 和全1 是特别地址,因此最大的主机数目为4094。
40. To start with, all the requests are rounded up to a power of two. The starting address, ending address, and mask are as follows: A: 198.16.0.0 –198.16.15.255 written as 198.16.0.0/20
B: 198.16.16.0 – 198.23.15.255 written as 198.16.16.0/21 C: 198.16.32.0 – 198.47.15.255 written as 198.16.32.0/20 D: 198.16.64.0 – 198.95.15.255 written as 198.16.64.0/19 41. They can be aggregated to 57.6.96/19.
42. It is sufficient to add one new table entry: 29.18.0.0/22 for the new block. If an incoming packet matches both 29.18.0.0/17 and 29.18.0.0./22, the longest one wins. This rule makes it possible to assign a large block to one outgoing line but make an exception for one or more small blocks within its range.
43. The packets are routed as follows: (a) Interface 1 (b) Interface 0 (c) Router 2
(d) Router 1 (e) Router 2
44. After NAT is installed, it is crucial that all the packets pertaining to a single connection pass in and out of the company via the same router, since that is where the mapping is kept. If each router has its own IP address and all traffic belonging to a given connection can be sent to the same router, the mapping can be done correctly and multihoming with NAT can be made to work.
45. 答:不对。ARP 不是向网络层提供服务,它本身就是网络层的一部分,帮助向传输层提供服务。在数据链路层不存在IP 地址的问题。数据链路层协议是像HDLC 和PPP 这样的协议,它们把比特串从线路的一端传送到另一端。
46. 答:在RARP 的实现中有一个RARP 服务器负责回答查询请求。在ARP 的实现中没有这样的服务器,主机自己回答ARP 查询。
47. In the general case, the problem is nontrivial. Fragments may arrive out of order and some may be missing. On a retransmission, the datagram may be fragmented in different-sized chunks. Furthermore, the total size is not known until the last fragment arrives. Probably the only way to handle reassembly is to buffer all the pieces until the last fragment arrives and the size is known. Then build a buffer of the right size, and put the fragments into the buffer, maintaining a bit map with 1 bit per 8 bytes to keep track of which bytes are present in the buffer. When all the bits in the bit map are 1, the datagram is complete.
48. 答:对接收方而言,这是一个新的IP 数据报的一部分,该数据报的其他部分还不得而知,收到的这个片段被放在队列中,等待其余片段的到来,显然,在其余的片段不可能到达的情况下,这个片段最终也会因为超时而被丢弃。
49. 答:在头中的错误比在数据中的错误更严重。例如,一个坏的地址可能导致分组被投递到错误的主机。许多主机并不检查投递给它们的分组是否确实是要投递给它们的。它们假定网络从来不会把本来是要前往另一个主机的分组邮递给它们,有的时候数据不参与检验和的计算,因为这样做代价大,上层协议通常也做这种检验工作,从而引起重复和多余。
50. 答:在回答这一问题之前,我们需要搞清楚移动IP 的概念,允许其用户漫游的每个场点都必须建立一个本地代理。允许外界访问的每个场点都要建立一个外部代理。当一个移动主机抵达一个外部场点时,它与那里的外部代理主机联系,并进行登记。然后,该外部代理主机与移动用户的原居住地的本地代理联系,并给它一个转交地址,通常就是该外部代理的IP 地址。
当一个分组到达用户的本地LAN 时,它进入连接到该LAN 的某个路由器。路由器然后尝试以通常的方式寻找主机的位置。它广播一个ARP 分组,询问(例如)“160.80.40.20”的以太网地址是什么?“本地代理通过给出自己的以太网地址来应答这个询问。路由器把前往160.80.40.20 的分组发送给本地代理。本地代理又以隧道通信的方式把分组发送给转交地
址,即前往外部代理。外部代理再取出IP 分组,并投递到移动主机的数据链路地址。此外,原居住地的本地代理把转交地址提供给发送方,使得随后的分组可直接地隧道发往外部代理。
现在回到本题的解答。答案是仍然需要通过上述的本地代理和外部代理的一整套过程。实际上,明尼阿波利斯的局域网是无线网的事实并不会使得波士顿发给该用户的分组会突然的跳到明尼阿波利斯。在波士顿的本地代理必须把分组以隧道方式传给明尼阿波利斯的无线LAN 上的外部代理。看待这一问题的最好方法是用户必须接入明尼阿波利斯的LAN,并且是以与在明尼阿波利斯的其他用户一样的方式接入。连接是使用无线方式还是有线没有关系。
51*注意根据英文版,本题中应为每1ps 分配100 万地址,而不是12ps。
答:使用16 个字节,总的地址数为2或3.4×10。如果我们以每皮秒10,即每秒10的速率分配它们,这些地址将会持续3.4×1020 s,大约1013年。这个数字是宇宙年龄的1000 倍。 当然,地址空间不是扁平的,因此它们的分配不会是线性的。但这个计算结果表明,这么大的地址空间,几乎是永远也用不完的。
52. 答:设置协议段的目的是要告诉目的地主机把IP 分组交给那一个协议处理程序。中途的路由器并不需要这一信息,因此不必把它放在主头中。实际上,这个信息存在于头中,但被伪装了。最后一个(扩展)头的下一个字段就用于这一目的。
53. 答:从概念上讲,不需要改变。在技术上,由于被请求的IP 地址现在变大了,因此需要比较大的域。
128
38
6
18
第 6 章 传输层
1. 答:不是。事实上,LISTEN 调用可以表明建立新连接的意愿,但不封锁。当有了建立连接的尝试时,调用程序可以被提供一个信号。然后,它执行,比如说,OK 或REJECT 来接受或拒绝连接。然而,在原先的封锁性方案中,就缺乏这种灵活性。
2. 答:从“被动连接建立在进行中”到“已建立”的虚线不再依确认的传输情况而定。该变迁可立即发生。实质上,“被动连接建立在进行中”状态已经消失,因为它们什么时候都不可见。
3. If the client sends a packet to SERVER3PORT and the server is not listening to that port, the packet will not be delivered to the server.
4. 答:在具体解答这个问题之前,需要先熟悉一下时钟驱动方案的内容。首先我们引入参数T,假定在发送出一个分组之后等待长度等于T 的时间,我们就可以肯定,所有关于该分组的踪迹都已消失,不管是该分组本身,还是对于它的确认都不会再以外的出现。我们还假定,每个主机都配有一个表示一天的时间的时钟,不同主机上的时钟不必同步。每个时钟都采用二进制计数器的形式,并且以长度一致的间隔时间递增。而且,计数器的比特数必须等于或超过序列号所使用的比特数。最后一点,时钟被假定是连续运行,即使主机关闭时也不间断。
时钟驱动方案的基本思想是同一时间不会有两个活动的TPDUs 使用相同的序列号。在一条连接建立的时候,时钟的低端k 个比特被用作初始序列号(也是k 位)。因此,每条连接可以从不同的序列号开始为TPDU 编号。序列号空间应该足够大,使得当编号循环一周时,具有相同号码的旧的TPDU 已经不复存在。
当主机系统崩溃时会产生一些问题。在重新启动后,主机的传输层实体不知道它曾经处在序列号空间的什么位置。一种解决方法是要求传输实体在恢复后的T 秒内处于空闲状态,让所有老的TPDUs 都消失。然而,在一个复杂的互联网上,T 值可能很大,所以这不是一个好的解决方法。
为了避免从崩溃恢复后的T 秒不工作状态,需要对序列号的使用施加新的限制。在一些编号可能被用作初始序列号之前,必须在长度为T 的时间内禁止使用这些编号。在任何连接上发送TPDU 之前,传输层实体必须读一次时钟,检查该TPDU 的编号是否在禁止区内。 显然,在任何连接上的最大数据率是每个时钟滴答发送一个TPDU。在系统崩溃后重启动时,在打开一条新的连接之前,传输实体必须等待到下一个时钟滴答,以避免同样的号码重复使用。如果数据速率低于始终速率,实际使用的序列号对于时间的曲线将最终从左边进入禁止区。如果这样的情况发生了,要么延迟TPDU 达T 长度时间,或者重新同步序列号。 作为例子,如果在坐标起点发1 号TPDU,到接近时钟大循环编码的末尾才发送第2 个TPDU,此时为避免在下一大循环开始重复使用序列号,就需要在大循环接近末尾处重新同步,使用大的初始序列号,以避免使用禁止区号码。
(a) 时钟大循环周期是215,即32768 滴答,每滴答100ms,即0.1 秒,所以大循环周期是3276.8s 。假定数据产生速率非常低(接近零),那么发送方在3276.8-60=3271.8 秒时进入禁止区,需要进行一次重新同步。
(b) 每分钟使用240 个序列号,即每秒使用4 个号码,如果时间以t 表示(以秒为单位),那么实际的序列号是4t。当接近大循环的末尾时以及在下一大循环的开始阶段,4t 有一定的大小,位于禁止区的上方,现在由于每秒钟10个滴答,禁止区的左边是10(t-3216.8)。令 4t =10(t-3216.8),得 t=5316.3秒。即当 t=5316.3时,开始进入禁止区,因此当 t=5316.3时需要进行一次重新同步。
5. 答:首先看三次握手过程是如何解决延迟的重复到达的分组所引起的问题的。 正常情况下,当主机1 发出连接请求时,主机1 选择一个序号x,并向主机2 发送一个包含该序号的请求TPDU;接着,主机2 回应一个接受连接的TPDU,确认x,并声明自己所选用的初始序列号y;最后,主机1 在其发送的第一个数据TPDU 中确认主机2 所选择的初始序列号。
当出现延迟的重复的控制TPDU 时,一个TPDU 是来自于一个已经释放的连接的延迟重复的连接请求( CONNECTION REQUEST),该TPDU 在主机1 毫不知情的情况下到达主机2。
主机2 通过向主机1 发送一个接受连接的TPDU(CONNECTION ACCEPTED)来响应该TPDU,而该接受连接的TPDU 的真正目的是证实主机1 确实试图建立一个新的连接。在这一点上,关键在于主机2 建议使用y 作为从主机2 到主机1 交通的初始序列号,从而说明已经不存在包含序列号为y 的TPDU,也不存在对y 的应答分组。当第二个延迟的TPDU 到达主机2 时,z 被确认而不是y 被确认的事实告诉主机2 这是一个旧的重复的TPDU,因此废止该连接过程。在这里。三次握手协议是成功的。
最坏的情况是延迟的“连接请求”和对“连接被接收”的确认应答都在网络上存活。可以设想,当第2 个重复分组到达时,如果在网上还存在一个老的对序列号为y 的分组的确认应答,显然会破坏三次握手协议的正常工作,故障性的产生一条没有人真正需要的连接,从而导致灾难性的后果。
6. 答:我们知道,3 次握手完成两个重要功能,既要双方做好发送数据的准备工作(双方都知道彼此已准备好),也要允许双方就初始序列号进行协商,这个序列号在握手过程中被发送与确认。
现在把三次握手改成仅需要两次握手,死锁是可能发生的。作为例子。考虑计算机A和B 之间的通信。假定B 给A 发送一个连接请求分组,A 收到了这个分组,并发送了确认应答分组。按照两次握手的协定,A 认为连接已经成功的建立了,可以开始发送数据分组。 可是,B 在A 的应答分组在传输中被丢失的情况下,将不知道A 是否已经准备好,不知道A 建议什么样的序列号用于A 到B 的交通,也不知道A 是否同意A 所建议的用于B 到A交通的初始序列号,B 甚至怀疑A 是否收到自己的连接请求分组。在这种情况下,B 认为连接还未建立成功,将忽略A 发来的任何数据分组,只等待接收连接确认应答分组。而A在发出的分组超时后,重复发送同样的分组。这样就形成了死锁。
7. 答:(a)参见教材。
(b)不存在。对于多于两支部队的情况,问题在实质上是同样的。