搜档网
当前位置:搜档网 › 《网络协议分析》习题答案

《网络协议分析》习题答案

备注:以下给出习题答案作为参考,对于部分习题,读者也可以思考给出更好的答案。

第一章

1. 讨论TCP/IP成功地得到推广和应用的原因

TCP/IP是最早出现的互联网协议,它的成功得益于顺应了社会的需求;DARPA采用开放策略推广TCP/IP,鼓励厂商、大学开发TCP/IP产品;TCP/IP与流行的UNIX系统结合是其成功的主要源泉;相对ISO的OSI模型,TCP/IP更加精简实用;TCP/IP技术来自于实践,并在实践中不断改进。

2. 讨论网络协议分层的优缺点

优点:简化问题,分而治之,有利于升级更新;

缺点:各层之间相互独立,都要对数据进行分别处理;每层处理完毕都要加一个头结构,增加了通信数据量。

3. 列出TCP/IP参考模型中各层间的接口数据单元(IDU)

应用层/传输层:应用层报文;

传输层/IP层:TCP报文段或UDP分组;

IP层/网络接口层:IP数据报;

网络接口层/底层物理网络:帧。

4. TCP/IP在哪个协议层次上将不同的网络进行互联?

IP层。

5. 了解一些进行协议分析的辅助工具

可在互联网上搜索获取适用于不同操作系统工具,比如Sniffer Pro、Wireshark以及tcpdump等。利用这些工具,可以截获网络中的各种协议报文,并进一步分析协议的流程、报文格式等。

6. 麻省理工学院的David Clark是众多RFC的设计者,在论及TCP/IP标准的形成及效果时,曾经讲过这样一段话:”We reject kings, presidents and voting. We believe in rough consensus and running code.”你对他的观点有什么评价。

智者见智,我认为这就是“实践是检验真理的唯一标准”。

7. 你认为一个路由器最基本的功能应该包含哪些?

对于网桥、网关、路由器等设备的分界已经逐渐模糊。现代路由器通常具有不同类型的接口模块并具有模块可扩展性,由此可以连接不同的物理网络;路由表的维护、更新以及IP数据报的选路转发等,都是路由器的基本功能。此外,路由器厂商应为使用者提供管理功能。

第二章

1. 尝试用Modem拨入某个ISP,并根据你的操作分析PPP的流程

实验题,若有接入ISP的环境,可直接测试;否则,可参考习题4一起测试。

2. 分析PAP和CHAP的优缺点

PAP简单,但安全性差;CHAP相对安全,但开销较大,且需要通信双方首先共享密钥。

3. 了解L2F和L2TP的思想及应用

这两个协议把PPP的两个端点延伸到互联网的任何角落,相当于在TCP/IP的应用层扩展了PPP的范围。其思想是发送方把PPP帧封装到L2F或L2TP报文中,接收方则对其解封以还原PPP帧,这样对于通信的两端来说看到的是PPP帧,相当于在互联网上架设了一条虚拟的PPP链路。它们主要用于构建VPN(虚拟专用网)。

4. 尝试Windows操作系统的“超级终端”功能

Windows超级终端功能在附件/通信功能下。可以用两台有Modem的计算机,各自连接

电话线,并尝试用该功能实现即时通信和文件传输的功能。

第三章

1. 理想情况下,可以有多少个A类网,每个A类网中包含多少个可以配置给主机的IP地址?可以有多少个B类网,每个B类网中包含多少个可以配置给主机的IP地址?

计算时去除广播地址、网络地址。

2. 在图3-7的例子中,假设初始时主机A、B和路由器R 的ARP缓存均为空,在B成功收到A的报文后,A、B、R的缓存中各包含了哪些条目?

A:IP1/MAC1

B:IP2/MAC2

R:IP A/MAC A,IP B/MAC B

3. 在Internet上下载Sniffer,截取ARP报文,分析其报文格式。

实验题,目的有二:一是分析ARP的流程、报文格式以及相应的帧格式,二是尝试Sniffer (协议分析工具)的不同功能。可利用Sniffer截获广播帧,以便获取ARP报文。也可以利用Sniffer监听网络中所有报文的功能以分析其中的ARP报文。

4. 假设主机A(IP A/MAC A)请求主机B(IP B/MAC B)的物理地址,广播地址用MAC broadcast表示。填充下图中带‘?’的字段。

假设无盘站A(IP A/MAC A)请求自己的IP地址,RARP服务器的IP和MAC地址映射关系为IP S/MAC S,广播地址用MAC broadcast表示。填充下图中带‘?’的字段。

5. 在APNIC的主页上查询你自己的IP地址,得到的结果是什么?

利用DoS命令获取IP地址,并去https://www.sodocs.net/doc/2b19330318.html,查询。

6. 从地址长度的角度看,IPv6不再需要ARP,为什么?

IPv6地址长度为16字节,以太网MAC地址长度为6字节,可以利用直接映射的方法实现地址解析。

7. Windows操作系统对DOS命令“ping 主机自身的IP地址”和“ping 127.0.0.1”的后台处理方式有差别吗?设法用实验证实你的答案。

有。拔掉网线,ping主机自身的IP地址,结果是“Destination host unreachable”,但ping 127.0.0.1,显示的是主机活动有应答。但是用Sniffer截获数据,这两种ping报文都不出现在网络中。

8. 分析跨越2个或3个路由器转发IP数据报时ARP的使用步骤,以及经过每个步骤后通信双方及中间路由器ARP缓存的变化情况。

要点:ARP请求和应答不能跨路由器投递。细节与跨一个路由器时类似。

9. DOS下的arp命令仅能查看本地ARP缓存。如果本地缓存中没有存储某个IP对应的MAC,请结合其它DOS命令设计一个方法,在该方法使用后能够利用ARP命令看到该MAC。

首先使用“ping”命令,目标地址设置为目标IP,此时操作系统会在后台完成ARP的流程以获取目标MAC,并记入本地缓存。之后再利用ARP命令,就可以看到这个MAC了。10. 编写一个ARP欺骗程序,使得运行该程序的主机能够嗅探本网段内所有发往默认网关的数据。

要点1:该程序应能够获取网关的IP和MAC以及宿主机的IP和MAC;(为实施欺骗作准备)

要点2:该程序应能够发送ARP应答报文,并把其中的发送方物理地址/发送方IP地址的映射关系设置为宿主机的MAC/网关的MAC;(该步骤是实施欺骗)

要点3:该程序能够保存嗅探到的数据,并记录相应帧首部的源MAC和IP数据报中包含的源IP;(保存嗅探到的数据,并为转发该数据做准备,以便被嗅探的双方无法察觉)要点4:该程序应能够转发所有发送给网关的数据(ARP请求除外)以及从网关发出的数据。对于发送给网关的数据,帧首部的源和目标物理地址分别设置为被嗅探主机和网关的物理地址;对于从网关发出的数据,这两个地址分别设置为网关和被嗅探主机的IP地址。

11. 从传播的范围、实现的方式、需要的底层硬件支持等角度比较硬件广播、物理广播和IP广播的差异及联系。

硬件广播是指网络投递方式,是由硬件技术本身的属性决定的。比如以太网,它使用载波监听多路访问及冲突检测技术,这种技术本身具备广播的特性,即发送一个物理帧,无论其目标物理地址设置为什么,都必须以广播的方式进行投递,而线路上的所有主机都具备收到这个帧的可能性,为了区分目标和源,必须具备不冲突的地址。而所有收到数据的主机都必须依靠这个地址进行过滤,忽略不属于自己的数据,并把自己可接收的数据作进一步处理。对于拨号链路而言,其投递的方式是点到点的,线路的另一端就是目标,因此可以不必设置目标地址。

物理广播是指把帧的目标物理地址设置为硬件广播地址,这样网络中的所有主机都能收到这个数据并进行进一步的处理。物理广播的范围是确定的,它不能跨越物理网络实现。

IP广播是指把目标IP地址设置为IP广播地址,这样,某个IP网段内的所有主机都可以收到这个数据并进行处理。IP广播范围不限,可以跨越物理网络实现。

如果硬件为广播方式,则IP广播可以依托该技术实现,不必向每个主机复制数据;否则必须给目标网段中的每个IP复制一份数据,以实现广播的目的。

第四章

1. 阅读RFC2474,了解区分服务的目的。

此题有误,应该是“了解其中提及的区分服务的用途”。即“使用相同的码点合并数据流,或者使用相同的端点地址、不同的码点区分数据流。”

2. 只对数据报首部而不对数据计算检验和,有什么优缺点?

优点:简化IP软件的计算量,提高处理速度。对于路由器等转发设备,这点对于提高其性能很重要。此外,某些高层(或需要由IP封装)的协议已经有计算校验和的功能,即IP数据报的数据区已经被计算校验和,IP仅针对首部计算校验和可以避免重复劳动。

缺点:高层(或需要由IP封装)协议若需要保证可靠性,必须实现校验功能。

3. 在以太网上发送IP数据报时,是否总有必要使用校验和机制?请解释原因。

以太网帧本身包含帧校验和字段,校验区域包含了数据报,理论上IP不必使用校验和。但实际中,IP使用校验和机制是默认的。

4. IP规定数据报的重组地点是目的主机,有什么优缺点?

优点:简化中间路由器的操作,提高效率;避免重复分片;每个分片独立选路,增加了灵活性。

缺点:中间经过MTU较大的网络时,可能会浪费带宽。

5. 用C语言写出FreeBSD分片重组算法。

实验题,思想和要点已在教材中给出。

6. 写出基于洞的分片重组算法的步骤。

实验题,思想和要点已在教材中给出。

7. 设计程序,实现校验和算法。

实验题,思想和要点已在教材中给出。

8. 对拥有记录路由选项的数据报进行分片时,是否应将该选项复制到各分片中?为什么?对于拥有时戳选项的数据报呢?

不必。每个分片独自选路,即便记录,每个分片记录的信息也不一致。

9. 严格源路由选项的代码字段值为137,是如何得出的?

“复制”位为‘1’,表示选项应复制到所有分片;“选项类”为‘0’,选项号为‘9’,即“01001”,则整个代码字段二进制为“10001001”,十进制为137。

10. 使用环回地址可方便网络软件的开发。正常情况下,主机发送到127.0.0.1的数据报,会不会出现在本地网络?(为了证实你的答案,可将网线拔掉,ping 127.0.0.1,看是否有回送消息)

不会,有回送消息。

S的路由表。

12. 使用route程序,查看你的主机中的路由表,并尝试对各表项进行解释。

使用route PRINT即可查看本机路由表,其中通常包含到默认网关的路由、环回地址的路由、直连网段的路由、发往本主机的路由、本地广播路由、组播路由、全网路由(针对有限广播地址)。https://www.sodocs.net/doc/2b19330318.html,/103647/26957,此页面给出了一个实例及每条路由的解释。

13. 了解ISP(Internet服务提供商)是如何进行流量计费和流量控制的。

参考资料:

https://www.sodocs.net/doc/2b19330318.html,/k/net/2009-2/617560.html,

https://www.sodocs.net/doc/2b19330318.html,/html/Safe/Huawei/26028.html

https://www.sodocs.net/doc/2b19330318.html,/mpsite/solution/adslflow.html,

https://www.sodocs.net/doc/2b19330318.html,/download.do?id=708127,

https://www.sodocs.net/doc/2b19330318.html,/a/caozuoxitong/Linux/2010/0121/4077.html。

14. 为什么中间路由器转发数据报之前要重新计算校验和?

因为路由器对数据报进行了处理,部分字段值发生了变化:TTL值减‘1’,包含选项时选项的内容也要发生更改。因此,必须针对变化后的内容重新计算校验和。

15. 为什么一个IP数据报在传输过程中可能会被多次分片?举例说明。

在IP数据报的投递过程中可能会经过多个物理网络,每个网路的MTU不尽相同。只要转发过程中后一个网络的MTU小于之前网络的MTU,数据报就会被分片。

16. MF位是片未完位,那么假设收到一个包含MF=0的分片,能否说明已经收到了所有的分

片?如果答案是肯定的,请说明理由;如果是否定的,那么要这个位有什么用途呢?

不能。因为各个分片的投递是独立的,很可能最后一个分片(MF=0)的分片先于其它分片到达目的地。这个位标识最后一个分片,结合这个分片里的片偏移量和长度等信息,可以计算原始数据报的长度,为分配缓冲区等提供便利。

17. 为何使用源路由选项时,中间路由器要用自己的出口IP地址取代入口IP地址写入选项的地址表中?

为目的端发回响应提供便利。若响应仍走这条路由,则路由器出口的IP地址成为响应报文的入口IP。

18. 分析在编写本文讨论的两个分片重组算法程序时,为应对teardrop和Ping of Death 攻击,在哪些地方必须特别注意?

要点:特别注意分片合法性的验证。

第五章

1. 路由器是否应该优先处理ICMP报文?

不。ICMP报文封装在IP报文中,和其它IP报文一样在路由器的队列中进行排队,路由器则按照先入先出的规则处理报文。对路由器而言,与优先权有关的不是IP数据报中封装的报文类型,而是IP首部中的QoS字段。

2. 如果携带ICMP报文的IP数据报出现差错,则不应产生新的ICMP报文。试解释其原因。

如果这个数据报再出现差错呢?这样规定是防止无休止地循环发送差错报告报文。

3. 如图5-16所示,数据从S发送到D,但是经过的路由器为:R1、R2、R3和R5。这是一条效率不高的路径。但R5不能发送ICMP重定向报文,将路由改为R1、R4和R5。为什么?

图5-16 ICMP不能重定向的例子

重定向报文仅能用于属于同一网络的主机和路由器之间。对于图中的例子,R5仅可能向D发送重定向报文,仅R1能向S发送重定向报文。

4. 假设以太网上有1个主机H与5个路由器相连。设计1个携带IP数据报的物理帧(稍微有点不合法),使得主机H发送它时,引起主机H接收10个数据报。

利用ICMP重定向报文和回送请求报文。H发送一个ICMP回送请求报文,其目的IP地址设计为自身,但是目的物理地址设置为硬件广播地址。这样,所有路由器都会收到这个报文并转发(5个),而这些路由器发现主机使用了非优化路由,则向该主机发送重定向报文(5个)。

5. 设计一个使用ICMP时戳请求和应答报文进行时钟同步的算法。

假设初始时戳为T i,接收时戳为T r,传送时戳是T t,发送方收到回应的时间是T h,则传输时延D t的估算方法如下:D t = (T h - T i) – (T t - T r)。其中(T h - T i)是整个往返的延时,而(T t - T r)是接收方的处理时间。

如果认为两个方向的通信时间大致相等,则单向传输时延应为D t /2,则发送方与接收方的时差应为T r–D t /2-T i。由此可以进行时钟同步。

6. ICMP时戳请求报文是否应包含一个指明报文何时发送的时戳?

不必。该机制中交互的对等端就是通信双方的ICMP协议模块,没有必要考虑由生成请求到发送到网络这段处理时间。(接收方之所以要加入接收时戳和传送时戳,是因为这两个时间的差值体现了ICMP本身的处理时间。)

7. 在Windows系统中,也可以使用ping程序来查看数据报所经过的路径。但当路径长度超过9时,则不能使用ping程序。试解释原因。

ping –r可以实现记录路由的ping功能。记录路由最大只能记录9个路由器。

8. 查阅资料,了解并使用图形化的traceroute工具。

最常见的VisualRoute,还有3d Traceroute,具体可到互联网搜索下载。

9. 本章提到,使用ICMP echo request报文时,数据区填充的内容由具体实现指定。在Windows下尝试Ping命令,看看Windows给数据区填的内容是什么?

见下图。

10. 为什么仅能向源站报告差错?

路由器收到IP数据报时,如果该数据报不包含记录路由、源路由选项,则不体现任何中间路由器信息,仅能体现源IP信息。因此,必须向源端报告差错。此外,路由器发现数据报发生差错时,无法判断究竟是在投递过程中的哪一步发生差错,因此,仅能向源站报告差错。

11. 为什么路由器通告报文的发送周期是10分钟,而一条路由的存活时间是30分钟?

考虑到通告报文可能丢失,存活时间必须大于发送周期。

12. 在ICMP目的站不可达报文中,有一类错误是“需要分片但DF置位(不能进行分片)”。基于此,请给出一个路径MTU的测量算法。

思想:发送IP数据报并强制该数据报不能分片,如果收到该类错误报告,说明该报文尺寸过大,则继续调小尺寸并继续发送该种IP数据报;如果未收到该类报告,说明尺寸偏小或正好,此时可以增大IP数据报的尺寸。

为了较快地逼近实际值,可以首先将第一个探测报文的尺寸设置为最大IP数据报长度,之后利用二分算法的思想调整探测报文尺寸。

13. 你能否给出其它用于traceroute程序的判断是否到达目标的方法?

可以将探测报文改为UDP报文,并把其目的端口号设置为一个不常用的端口。这样,中间路由器返回的是ICMP超时报文,而目标返回的是ICMP端口不可达报文,由此可以判断到达了目的端。

14. 阅读RFC1393,看看有没有其它实现traceroute的方法。

该方法的思想是对ICMP ECHO报文进行扩展,增加新选项以实现路径发现功能,具体阅

相关主题