资源描述
网络协议分析课后题答案
第五章
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时戳请求和应答报文进行时钟同时算法。
假设初始时戳为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, 还有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通信模型时, 用户端需要主动提议于服务器通信, 假如服务器位于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技术。
展开阅读全文