网络协议分析课后题答案Word文档下载推荐.docx
《网络协议分析课后题答案Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《网络协议分析课后题答案Word文档下载推荐.docx(6页珍藏版)》请在冰豆网上搜索。
为什么?
图5-16ICMP不能重定向的例子
重定向报文仅能用于属于同一网络的主机和路由器之间。
对于图中的例子,R5仅可能向D发送重定向报文,仅R1能向S发送重定向报文。
4.
假设以太网上有1个主机H与5个路由器相连。
设计1个携带IP数据报的物理帧(稍微有点不合法),使得主机H发送它时,引起主机H接收10个数据报。
利用ICMP重定向报文和回送请求报文。
H发送一个ICMP回送请求报文,其目的IP地址设计为自身,但是目的物理地址设置为硬件广播地址。
这样,所有路由器都会收到这个报文并转发(5个),而这些路由器发现主机使用了非优化路由,则向该主机发送重定向报文(5个)。
5.
设计一个使用ICMP时戳请求和应答报文进行时钟同步的算法。
假设初始时戳为Ti,接收时戳为Tr,传送时戳是Tt,发送方收到回应的时间是Th,则传输时延Dt的估算方法如下:
Dt
=(Th
-Ti)–(Tt
-Tr)。
其中(Th
-Ti)是整个往返的延时,而(Tt
-Tr)是接收方的处理时间。
如果认为两个方向的通信时间大致相等,则单向传输时延应为Dt
/2,则发送方与接收方的时差应为Tr–Dt/2-Ti。
由此可以进行时钟同步。
6.ICMP时戳请求报文是否应包含一个指明报文何时发送的时戳?
不必。
该机制中交互的对等端就是通信双方的ICMP协议模块,没有必要考虑由生成请求到发送到网络这段处理时间。
(接收方之所以要加入接收时戳和传送时戳,是因为这两个时间的差值体现了ICMP本身的处理时间。
)
7.
在Windows系统中,也可以使用ping程序来查看数据报所经过的路径。
但当路径长度超过9时,则不能使用ping程序。
试解释原因。
ping–r可以实现记录路由的ping功能。
记录路由最大只能记录9个路由器。
8.
查阅资料,了解并使用图形化的traceroute工具。
最常见的VisualRoute,还有3dTraceroute,具体可到互联网搜索下载。
9.
本章提到,使用ICMPecho
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的方法。
该方法的思想是对ICMPECHO报文进行扩展,增加新选项以实现路径发现功能,具体阅读该标准既可。
第六章
分析传输层的作用,并与概述中所讨论的通用分层模型思想相比较。
加强和弥补IP层的服务。
“加强”指提供可靠性,而TCP/IP的传输层则提供了不同的可靠性级别以适应不同的应用需求;
弥补指提供端到端的服务,并通过不同的端口号区分不同的上层应用。
利用端口号而不是进程标识符来指定一台机器的目的进程,有什么优点?
进程标识符是动态变化的,每次应用程序重启都会对应不同的标识符,而端口号是相对固定的。
网络通信中的客户端需要主动与服务器建立连接,其连接的目标必须是固定的,因此,必须用端口号来标识。
使用预分配的UDP端口号,有什么优点?
此题忽略,无意义。
能否将同一端口号分配给两个进程使用,设法通过实验证实你的结论?
不能。
利用Socket编程,使用bind函数将同一端口绑定给两个应用(套接字),后启动的应用(进程)无法使用该套接字。
为什么UDP校验和独立于IP校验和?
你是否反对这样一个协议:
对包括UDP报文在内的整个IP数据报使用一个校验和?
IP仅针对首部计算校验和,UDP报文封装在IP数据报中作为数据报的数据区,因此单独计算校验和。
这样整个IP数据报都可以被校验。
反对。
IP和UDP属于不同的协议模块和层次,合并校验不利于区分错误来源。
此外,在数据报投递过程中,对于目标不是自身的数据报,路由器则仅处理IP部分,不关注高层,分开计算时,当发现IP发生差错就可进行相应处理,合并计算校验和则不便于这种处理。
在目的端,数据在接收过程中则是沿着协议栈逐层向上递交的,分开计算时当IP首部发生差错,数据报就不会递交给UDP模块,合并时则无法实现这一点。
6.
接收端收到有差错的UDP报文时应如何处理?
发生差错有几种情况:
若UDP目的端口号未开放,则返回ICMP端口不可达报文;
若检验校验和时发生差错,则丢弃。
一个UDP数据报首部的十六进制表示为:
06320045001CE217。
试求源端口、目的端口、用户数据报的总长度、数据部分长度。
这个数据报是从客户发送给服务器还是从服务器发送给客户的?
使用UDP的这个服务器程序是什么?
题目有误,应改成06320035001CE217。
(不用改)
源端口:
1568(0632),目的端口53(0035),报文长度28字节(001C),数据部分长度28-8=20字节。
客户端发给服务器,服务器程序是DNS。
原题目是45,是69,TFTP。
假定一台主机连接在以太网上,它要发送总长度为8192字节的UDP报文。
该报文最终被分成多少个IP数据报投递?
以太网MTU为1500字节。
假设IP不使用选项,则其长度为20字节,所以预留给UDP的长度为1480字节。
所以最终的分片数为|8192/1480|+1=6,其中“||”标识取整。
如何判断远程机器上的某个UDP端口是否开放?
向该端口发送UDP报文,若收到ICMP端口不可达报文,则该端口未开放。
从网络安全的角度看,使用知名端口号会不会存在安全风险?
单看这种行为,不会存在风险。
但是知名端口与一些知名应用相关,这些应用可能存在安全缺陷,比如协议本身有缺陷,或者实现有安全漏洞。
因此,黑客攻击的第一步往往是实施端口扫描,为随后的攻击步骤奠定基础。
第八章
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通信模型时,客户端需要主动发起于服务器的通信,如果服务器位于NAT盒后(图中两个192.168.168.0/18地址域中的一个),则通信会失败。
实际中,服务器通常不应被配置私有地址(为本私有地址域提供服务的服务器除外)。
另一种想法:
如果两个NAT盒后的两个地址域使用相同的私有地址,则无法通信。
8.8
当使用两个NAT盒连接三个地址域时,目的地址会被转换几次?
源地址会被转换几次?
各2次。
8.9
考虑通过互联三个地址域的两个NAT盒发送的ICMP主机不可达报文,将发生几次地址转换?
将发生几次端口号转换?
要点:
需同时转换封装ICMP报文的IP报文首部的IP地址,以及ICMP报文中包含的出错数据报IP首部的地址和端口号。
8.10NAT对于主机是完全透明的吗?
为了回答这个个问题,请给出主机能够传输的一个报文序列,(使用这个序列,主机就可)以确定它(自己)是否隐藏在一个NAT盒后。
利用UDP报文和Traceroute技术。