《网络协议分析》习题答案
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
备注:以下给出习题答案作为参考,对于部分习题,读者也可以思考给出更好的答案。
第一章
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地址,并去查询。
6. 从地址长度的角度看,IPv6不再需要ARP,为什么?
IPv6地址长度为16字节,以太网MAC地址长度为6字节,可以利用直接映射的方法实现地址解析。
7. Windows操作系统对DOS命令“ping 主机自身的IP地址”和“”的后台处理方式有差别吗?设法用实验证实你的答案。
有。
拔掉网线,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,看是否有回送消息)不会,有回送消息。
11. 对于如图4-15
12. 使用route
使用route PRINT即可查看本机路由表,其中通常包含到默认网关的路由、环回地址的路由、直连网段的路由、发往本主机的路由、本地广播路由、组播路由、全网路由(针对有限广播地址)。
,此页面给出了一个实例及每条路由的解释。
13. 了解ISP(Internet服务提供商)是如何进行流量计费和流量控制的。
参考资料:
,
,
,。
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。
这是一条效率不高
R4和R5。
为什么?
的路径。
但R5不能发送ICMP重定向报文,将路由改为R1、
图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报文进行扩展,增加新选项以实现路径发现功能,具体阅读该标准既可。
第六章
1. 分析传输层的作用,并与概述中所讨论的通用分层模型思想相比较。
加强和弥补IP层的服务。
“加强”指提供可靠性,而TCP/IP的传输层则提供了不同的可靠性级别以适应不同的应用需求;弥补指提供端到端的服务,并通过不同的端口号区分不同的上层应用。
2. 利用端口号而不是进程标识符来指定一台机器的目的进程,有什么优点?
进程标识符是动态变化的,每次应用程序重启都会对应不同的标识符,而端口号是相对固定的。
网络通信中的客户端需要主动与服务器建立连接,其连接的目标必须是固定的,因此,必须用端口号来标识。
3. 使用预分配的UDP端口号,有什么优点?
此题忽略,无意义。
4. 能否将同一端口号分配给两个进程使用,设法通过实验证实你的结论?
不能。
利用Socket编程,使用bind函数将同一端口绑定给两个应用(套接字),后启动的应用(进程)无法使用该套接字。
5. 为什么UDP校验和独立于IP校验和?你是否反对这样一个协议:对包括UDP报文在内的整个IP数据报使用一个校验和?
IP仅针对首部计算校验和,UDP报文封装在IP数据报中作为数据报的数据区,因此单独计算校验和。
这样整个IP数据报都可以被校验。
反对。
IP和UDP属于不同的协议模块和层次,合并校验不利于区分错误来源。
此外,在数据报投递过程中,对于目标不是自身的数据报,路由器则仅处理IP部分,不关注高层,分开计算时,当发现IP 发生差错就可进行相应处理,合并计算校验和则不便于这种处理。
在目的端,数据在接收过程中则是沿着协议栈逐层向上递交的,分开计算时当IP首部发生差错,数据报就不会递交给UDP模块,合并时则无法实现这一点。
6. 接收端收到有差错的UDP报文时应如何处理?
发生差错有几种情况:若UDP目的端口号未开放,则返回ICMP端口不可达报文;若检验校验和时发生差错,则丢弃。
7. 一个UDP数据报首部的十六进制表示为:0632 0045 001C E217。
试求源端口、目的端口、用户数据报的总长度、数据部分长度。
这个数据报是从客户发送给服务器还是从服务器发送给客户的?使用UDP 的这个服务器程序是什么?
题目有误,应改成0632 0035 001C E217。
(不用改)
源端口:1568(0632),目的端口53(0035),报文长度28字节(001C),数据部分长度28-8=20字节。
客户端发给服务器,服务器程序是DNS。
原题目是45,是69,TFTP。
8. 假定一台主机连接在以太网上,它要发送总长度为8192字节的UDP报文。
该报文最终被分成多少个IP数据报投递?
以太网MTU为1500字节。
假设IP不使用选项,则其长度为20字节,所以预留给UDP的长度为1480字节。
所以最终的分片数为|8192/1480|+1=6,其中“||”标识取整。
9. 如何判断远程机器上的某个UDP端口是否开放?
向该端口发送UDP报文,若收到ICMP端口不可达报文,则该端口未开放。
10. 从网络安全的角度看,使用知名端口号会不会存在安全风险?
单看这种行为,不会存在风险。
但是知名端口与一些知名应用相关,这些应用可能存在安全缺陷,比如协议本身有缺陷,或者实现有安全漏洞。
因此,黑客攻击的第一步往往是实施端口扫描,为随后的攻击步骤奠定基础。
第八章
8.1 对于使用代理ARP的路由器,如果使用主机地址表来决定是否回答ARP请求,只要在某个网络中添加一个新主机,就必须修改该选路表。
考虑如何分配IP地址才能在不改变选路表的情况下添加主机。
(提示:考虑子网)
用路由器连接的每个物理网络被分配连续的IP地址段,这样,路由器可以使用网络号/掩码的格式来表述:到某个网段的机器用代理ARP。
这样,只要新主机的地址处于这个网段,就不必修改选路表。
8.2 透明路由器可否用于局域网,如以太网?为什么?
从工作机制和地址使用方法看,使用该技术需要有巨大的IP地址空间(A类),因此,不适用于局域网。
8.3 考虑一个B类网络号的固定子网划分,使它能适应至少76个网络。
每个网络上能有多少台主机?
76个网络,意味着至少应该有7个比特被拿出来作为网络号,主机号部分为9比特,则每个网络上最多的主机数为29-2=510。
(去除全0和全1)。
8.4 对一个C类网络地址,划分子网是否有意义?
有。
可以划分出小规模的子网以便进行控制和管理。
最小的子网仅包含4个地址,这个子网中有两个地址可用,用于路由器的点对点连接,分别分配给点到点链路的两个点。
8.5 在一个路由器上同时使用代理ARP和子网编址是否可行?如果可行,请说明如何做到;如果不可行,解释为什么。
可以。
参考习题8.1。
,
分别给出了实例。
8.6 为什么说使用代理ARP的网络容易受到ARP欺骗(即任意一台机器都能顶替其他任何机器)?
应该,因为连接是要占用系统资源的,对于接收大量连接请求的服务器而言尤为重要。
实际中服务器通常具有半开连接检测功能,细节见7.3.4。
8.7 当使用两个NAT盒连接三个地址域时,潜在的问题是什么?
考虑使用私有IP地址的情况:
使用C/S通信模型时,客户端需要主动发起于服务器的通信,如果服务器位于NA T盒后(图中两个192.168.168.0/18地址域中的一个),则通信会失败。
实际中,服务器通常不应被配置私有地址(为本私有地址域提供服务的服务器除外)。
另一种想法:如果两个NA T盒后的两个地址域使用相同的私有地址,则无法通信。
8.8 当使用两个NAT盒连接三个地址域时,目的地址会被转换几次?源地址会被转换几次?
各2次。
8.9 考虑通过互联三个地址域的两个NAT盒发送的ICMP主机不可达报文,将发生几次地址转换?将发生几次端口号转换?
要点:需同时转换封装ICMP报文的IP报文首部的IP地址,以及ICMP报文中包含的出错数据报IP首部的地址和端口号。
8.10 NAT对于主机是完全透明的吗?为了回答这个个问题,请给出主机能够传输的一个报文序列,(使用这个序列,主机就可)以确定它(自己)是否隐藏在一个NAT盒后。
利用UDP报文和Traceroute技术。