1、网络协议分析课后题答案第五章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。
2、为什么?图5-16 ICMP不能重定向的例子重定向报文仅能用于属于同一网络的主机和路由器之间。对于图中的例子,R5仅也许向D发送重定向报文,仅R1能向S发送重定向报文。4.假设以太网上有1个主机H与5个路由器相连。设计1个携带IP数据报的物理帧(稍微有点不合法),使得主机H发送它时,引起主机H接受10个数据报。运用ICMP重定向报文和回送请求报文。H发送一个ICMP回送请求报文,其目的IP地址设计为自身,但是目的物理地址设立为硬件广播地址。这样,所有路由器都会收到这个报文并转发(5个),而这些路由器发现主机使用了非优化路由,则向该主机发送重定向报文(5个)。5.设计一个使用ICMP时戳请求和应
3、答报文进行时钟同步的算法。假设初始时戳为Ti,接受时戳为Tr,传送时戳是Tt,发送方收到回应的时间是Th,则传输时延Dt的估算方法如下:Dt= (Th- Ti) (Tt- Tr)。其中(Th- Ti)是整个往返的延时,而(Tt- Tr)是接受方的解决时间。假如认为两个方向的通信时间大体相等,则单向传输时延应为Dt/2,则发送方与接受方的时差应为TrDt/2-Ti。由此可以进行时钟同步。6. ICMP时戳请求报文是否应包含一个指明报文何时发送的时戳?不必。该机制中交互的对等端就是通信双方的ICMP协议模块,没有必要考虑由生成请求到发送到网络这段解决时间。(接受方之所以要加入接受时戳和传送时戳,是
4、由于这两个时间的差值体现了ICMP自身的解决时间。)7.在Windows系统中,也可以使用ping程序来查看数据报所通过的途径。但当途径长度超过9时,则不能使用ping程序。试解释因素。ping r可以实现记录路由的ping功能。记录路由最大只能记录9个路由器。8.查阅资料,了解并使用图形化的traceroute工具。最常见的VisualRoute,尚有3d Traceroute,具体可到互联网搜索下载。9.本章提到,使用ICMP echorequest报文时,数据区填充的内容由具体实现指定。在Windows下尝试Ping命令,看看Windows给数据区填的内容是什么?见下图。10.为什么仅能
5、向源站报告差错?路由器收到IP数据报时,假如该数据报不包含记录路由、源路由选项,则不体现任何中间路由器信息,仅能体现源IP信息。因此,必须向源端报告差错。此外,路由器发现数据报发生差错时,无法判断究竟是在投递过程中的哪一步发生差错,因此,仅能向源站报告差错。11.为什么路由器通告报文的发送周期是10分钟,而一条路由的存活时间是30分钟?考虑到通告报文也许丢失,存活时间必须大于发送周期。12.在ICMP目的站不可达报文中,有一类错误是“需要分片但DF置位(不能进行分片)”。基于此,请给出一个途径MTU的测量算法。思想:发送IP数据报并强制该数据报不能分片,假如收到该类错误报告,说明该报文尺寸过大
6、,则继续调小尺寸并继续发送该种IP数据报;假如未收到该类报告,说明尺寸偏小或正好,此时可以增大IP数据报的尺寸。为了较快地逼近实际值,可以一方面将第一个探测报文的尺寸设立为最大IP数据报长度,之后运用二分算法的思想调整探测报文尺寸。13.你能否给出其它用于traceroute程序的判断是否到达目的的方法?可以将探测报文改为UDP报文,并把其目的端标语设立为一个不常用的端口。这样,中间路由器返回的是ICMP超时报文,而目的返回的是ICMP端口不可达报文,由此可以判断到达了目的端。14.阅读RFC1393,看看有没有其它实现traceroute的方法。该方法的思想是对ICMP ECHO报文进行扩展
7、,增长新选项以实现途径发现功能,具体阅读该标准既可。第六章1.分析传输层的作用,并与概述中所讨论的通用分层模型思想相比较。加强和填补IP层的服务。“加强”指提供可靠性,而TCP/IP的传输层则提供了不同的可靠性级别以适应不同的应用需求;填补指提供端到端的服务,并通过不同的端标语区分不同的上层应用。2.运用端标语而不是进程标记符来指定一台机器的目的进程,有什么优点?进程标记符是动态变化的,每次应用程序重启都会相应不同的标记符,而端标语是相对固定的。网络通信中的客户端需要积极与服务器建立连接,其连接的目的必须是固定的,因此,必须用端标语来标记。3.使用预分派的UDP端标语,有什么优点?此题忽略,无
8、意义。4.能否将同一端标语分派给两个进程使用,设法通过实验证实你的结论?不能。运用Socket编程,使用bind函数将同一端口绑定给两个应用(套接字),后启动的应用(进程)无法使用该套接字。5.为什么UDP校验和独立于IP校验和?你是否反对这样一个协议:对涉及UDP报文在内的整个IP数据报使用一个校验和?IP仅针对首部计算校验和,UDP报文封装在IP数据报中作为数据报的数据区,因此单独计算校验和。这样整个IP数据报都可以被校验。反对。IP和UDP属于不同的协议模块和层次,合并校验不利于区分错误来源。此外,在数据报投递过程中,对于目的不是自身的数据报,路由器则仅解决IP部分,不关注高层,分开计算
9、时,当发现IP发生差错就可进行相应解决,合并计算校验和则不便于这种解决。在目的端,数据在接受过程中则是沿着协议栈逐层向上递交的,分开计算时当IP首部发生差错,数据报就不会递交给UDP模块,合并时则无法实现这一点。6.接受端收到有差错的UDP报文时应如何解决?发生差错有几种情况:若UDP目的端标语未开放,则返回ICMP端口不可达报文;若检查校验和时发生差错,则丢弃。7.一个UDP数据报首部的十六进制表达为:0632 0045 001C E217。试求源端口、目的端口、用户数据报的总长度、数据部分长度。这个数据报是从客户发送给服务器还是从服务器发送给客户的?使用UDP的这个服务器程序是什么?题目有
10、误,应改成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端口是否开放?向该端口发送UD
11、P报文,若收到ICMP端口不可达报文,则该端口未开放。10.从网络安全的角度看,使用知名端标语会不会存在安全风险?单看这种行为,不会存在风险。但是知名端口与一些知名应用相关,这些应用也许存在安全缺陷,比如协议自身有缺陷,或者实现有安全漏洞。因此,黑客袭击的第一步往往是实行端口扫描,为随后的袭击环节奠定基础。第八章8.1对于使用代理ARP的路由器,假如使用主机地址表来决定是否回答ARP请求,只要在某个网络中添加一个新主机,就必须修改该选路表。考虑如何分派IP地址才干在不改变选路表的情况下添加主机。(提醒:考虑子网)用路由器连接的每个物理网络被分派连续的IP地址段,这样,路由器可以使用网络号/掩码
12、的格式来表述:到某个网段的机器用代理ARP。这样,只要新主机的地址处在这个网段,就不必修改选路表。8.2透明路由器可否用于局域网,如以太网?为什么?从工作机制和地址使用方法看,使用该技术需要有巨大的IP地址空间(A类),因此,不合用于局域网。8.3考虑一个B类网络号的固定子网划分,使它能适应至少76个网络。每个网络上能有多少台主机?76个网络,意味着至少应当有7个比特被拿出来作为网络号,主机号部分为9比特,则每个网络上最多的主机数为29-2=510。(去除全0和全1)。8.4对一个C类网络地址,划分子网是否故意义?有。可以划分出小规模的子网以便进行控制和管理。最小的子网仅包含4个地址,这个子网
13、中有两个地址可用,用于路由器的点对点连接,分别分派给点到点链路的两个点。8.5在一个路由器上同时使用代理ARP和子网编址是否可行?假如可行,请说明如何做到;假如不可行,解释为什么。可以。参考习题8.1。,分别给出了实例。8.6为什么说使用代理ARP的网络容易受到ARP欺骗(即任意一台机器都能顶替其他任何机器)?应当,由于连接是要占用系统资源的,对于接受大量连接请求的服务器而言尤为重要。实际中服务器通常具有半开连接检测功能,细节见7.3.4。8.7当使用两个NAT盒连接三个地址域时,潜在的问题是什么?考虑使用私有IP地址的情况:使用C/S通信模型时,客户端需要积极发起于服务器的通信,假如服务器位
14、于NAT盒后(图中两个192.168.168.0/18地址域中的一个),则通信会失败。实际中,服务器通常不应被配置私有地址(为本私有地址域提供服务的服务器除外)。另一种想法:假如两个NAT盒后的两个地址域使用相同的私有地址,则无法通信。8.8当使用两个NAT盒连接三个地址域时,目的地址会被转换几次?源地址会被转换几次?各2次。8.9考虑通过互联三个地址域的两个NAT盒发送的ICMP主机不可达报文,将发生几次地址转换?将发生几次端标语转换?要点:需同时转换封装ICMP报文的IP报文首部的IP地址,以及ICMP报文中包含的犯错数据报IP首部的地址和端标语。8.10 NAT对于主机是完全透明的吗?为了回答这个个问题,请给出主机可以传输的一个报文序列,(使用这个序列,主机就可)以拟定它(自己)是否隐藏在一个NAT盒后。运用UDP报文和Traceroute技术。