资源预览内容
第1页 / 共7页
第2页 / 共7页
第3页 / 共7页
第4页 / 共7页
第5页 / 共7页
第6页 / 共7页
第7页 / 共7页
亲,该文档总共7页全部预览完了,如果喜欢就下载吧!
资源描述
实验五 IP协议分析在这个实验里,我们将研究 IP协议,通过执行 traceroute程序来分析 IP数据包发送和接收的过程。我们将研究 IP数据包的各个字段,详细学习 IP数据包的分片。一、捕获 traceroute 为了产生一个 IP数据包,我们将使用 traceroute程序来向一些目的地发送不同大小的数据包,这个软件我们在第一个实验已作过简单的尝试了。但我们试图在 IP头部首先发送一个或者更多的具有 TTL的数据包,并把 TTL的值设置为 1;然后向同一个目的地发送一系列具有 TTL值为 2的数据包;接着向同一个目的地发送一系列具有 TTL值为 3的数据包等等。路由器在每次接收数据包时消耗掉一个 TTL,当 TTL达到 0时,路由器将会向源主机返回一个 ICMP的消息(类型为 11的 TTL溢出),这样一个 TTL值为 1的数据包将会引起路由器从发送者发回一个 ICMP的 TTL溢出消息产生一跳,TTL值为 2的数据包发送时会引起路由器产生两跳, TTL值为 3的数据包则会引起路由器产生 3跳。基于这种方式,主机可以执行 traceroute观察 ICMP的 TTL溢出消息,记录每个路由器的 ICMP的溢出消息的源 IP地址,即可标识出主机和目的地之间的所有路由器。我们要运行 traceroute让它发送多种长度的数据包,由 Windows提供的 tracert程序不允许改变由 tracert程序发送的 ICMP的回复请求消息的大小,在 Windows下比较好的一个是 pingplotter,它可以在以下网站下载共享版本(现在已下载好存在共享文件夹的压缩包中): 安装 pingplotter标准版(你有一个 30天的试用期),通过对你所喜欢的站点执行一些 traceroute来熟悉这个工具。 ICMP回复请求消息的大小可以在 pingplotter中设置:Edit- Options-Default Setting-enginet,在 packet size字段中默认包的大小是 56字节。 pingplotter发送一系列 TTL值渐增的包时,Trace时间间隔的值和间隔的个数在 pingplotter中能够设置。按下面步骤做: 1 启动Iris,开始包捕获; 2 启动pingplotter,然后在“Address to Trace”窗口输入目的地目标的名字: 172.16.1.1 (1岛 输入172.16.6.1)在“# of times to Trace”区域输入 3。然后选择 Edit- Options-Default Setting-engine,确认在 packet size字段的值为 56,点 OK。然后按下 Trace按钮。你看到的 pingplotter窗口类似如上: 1. 接下来,发送一组具有较长长度的数据包,通过Edit- Options-Default Setting-engine在包大小区域输入值为 2000,点 OK。接着按下 Resume按钮; 2. 再发送一组具有更长长度的数据包,通过 Edit- Options-Default Setting-enginet在包大小区域输入值为 3500,点 OK。接着按下 Resume按钮; 3. 使用Iris 跟踪捕获 tracing;(下图为Ethereal捕获数据,仅供参考)二、观察捕获的数据你应该能看到由你的电脑和通过中间的路由器返回到你的电脑里的 ICMP的 TTL溢出消息所发送的 ICMP序列,把这些数据保存出来。然后回答以下问题:Q1.选择你的电脑所发送的第一个 ICMP请求消息,在包详细信息窗口扩展包的 Internet协议部分。你的电脑的 IP地址是多少?(192.168.157.120)Q2.在 IP包头部,上层协议区域的值是多少?Q3.IP头部有多少字节?(20bytes)IP数据包的有效载荷是多少字节?(36bytes)解释你是怎样确定有效载荷的数量的?(3)总长度减去IP首部长度Q4.这个 IP数据包被分割了吗?(没有)解释你是怎样确定这个数据包是否被分割?接下来单击列名按 IP源地址排序数据包,选择你的电脑发送的第一个 ICMP请求消息,扩展显示 IP协议的数据。 Q5.在包捕获列表窗口,你能看到在第一个 ICMP下的所有并发的 ICMP消息吗? Q6.往同一 IP的数据包哪些字段在改变,而且必须改变?(首部检验和,标识)为什么?哪些字段是保持不变的,而且必须保持不变? (版本,首部长度,区分服务,协议,源地址)Q7.描述一下在 IP数据包的 Identification字段的值是什么样的?(11650)接下来找到通过昀近的路由器发送到你的电脑去的 ICMP的 TTL溢出回复的系列,回答以下问题: Q8.Identification字段和 TTL字段的值是多少? (30366,128)Q9.所有的通过昀近的路由器发送到你的电脑去的 ICMP的 TTL溢出回复是不是值都保持不变呢?为什么?(是)接下去研究一下分片,先按时间顺序排序数据包,找出在 pingplotter中把包的大小改成 2000后,你的电脑所发送的第一个 ICMP请求消息。回答以下问题: Q10.那个消息是否传送多于一个 IP数据包的分片?(是)看第一个被分割的 IP数据包的片段,在 IP头部有什么信息指出数据包已经被分割?在 IP头部有什么信息指出这是否是第一个与后面片段相对的片段?这个 IP数据包的长度是多少? Q11.看被分割的 IP数据包的第二个片段。在 IP头部有什么信息指出这不是第一个数据包片段?有更多的片段吗?(没有)你是怎么知道的?和上一个分片的长度加起来是 2000吗? (不是,是2020)Q12.哪个字段在第一个和第二个片段之间的 IP头部改变了?(总长度,标志,片偏移,首部检验和)Identification变了吗?(没有)再找出在 pingplotter中把包的大小改成 3500后,你的电脑所发送的第一个 ICMP请求消息。回答以下问题: Q13.从原始的数据包中产生了多少片段?(3片)片偏移分别为多少?(0, 1480,2960)Q14.在片段之中 IP头部哪些字段改变了?(片偏移,总长度,标志,首部检验和)Identification变了吗?(没有)自主设计实验现在我们已经会分析 IP协议的数据包头部结构了,利用刚才收集的数据,自己想办法描绘和分析一下到你访问的服务器间的各个路由器的示意图,看是不是和 pingplotter得到的结果一致?再测试一下到 172.16.1.1的路由情况。实验六 ICMP协议分析在这个实验中,我们将探索 ICMP协议,如由 Ping程序产生的 ICMP消息、由 Traceroute程序产生的 ICMP消息和 ICMP消息的格式与内容等。一、ICMP与 Ping 按以下步骤进行: 1. Windows命令行提示符; 2. IRis Network Analyzer,开始捕捉数据包; 3. MS-DOS命令行下输入: ping n 10 172.16.1.1(1岛 输入172.16.6.1)参数“-n 10”说明需要发送 10个 ping消息。 (下图为Ethereal捕获数据,仅供参考)4.当 Ping程序终止后,停止用Iris捕获包。我们可以看到源端发出了 10个查问包并收到了 10个响应,可以对每一个响应源端计算往返时间(RTT),也不妨计算一下这 10个包平均 RTT。在第一个实验中作过类似的操作,让我们现在先看一下Iris捕获的包。先用“icmp”作为关键字过滤,注意到包列表显示出 20个包:源端发出的 10个 Ping询问和收到的 10个 Ping响应。另外注意到源端的 IP地址是形如 172.16.X.X的私有地址,目的地的 IP地址是 172.16.1.1的 Web服务器的地址。现在让我们展开由客户端发出的第一个包,在上图中包内容区提供了这个包的信息。我们看到包内的 IP数据包有协议号 01(这是 ICMP的协议号),这说明这个 IP数据包承载的是一个 ICMP包。然后我们展开 ICMP协议部分的信息,我们观察到这个 ICMP包的 Type为 8而 Code 为 0,这称为一个 ICMP“请求”包。我们还注意到这个 ICMP包中包括一个 checksum、一个 identifier和一个 sequence number。把数据保存出来后,回答下面的问题: Q1.你主机的 IP地址是什么?远程主机的 IP地址是什么? Q2.为什么一个 ICMP包没有源和目标端口号? Q3.检查由你主机发送的一个 Ping请求包。ICMP type和 code是多少?这个 ICMP包包含了哪些其他的字段?Checksum、sequence number和 identifier字段的值各为多少? Q4.检查相应的 Ping回应包, ICMP type和 code是多少?这个 ICMP包包含了哪些其他的字段?Checksum、sequence number和 identifier字段的值各为多少?二、ICMP与 Traceroute 现在让我们捕获由 Traceroute程序产生的 ICMP包以便继续我们的实验,我们将采用 Windows自带的 tracert程序,按以下步骤进行: 1.进入 Windows命令提示符; 2.开启 Iris Network Analyzer,开始捕捉数据包; 3.在 MS-DOS命令行下输入: tracert 172.16.1.1 (1岛 输入172.16.6.1)4.当 Traceroute程序终止后,停止用Iris捕获包。在运行结束后我们可以看到对每一个 TTL值,源端发出了三个探测包。 Traceroute显示了每一个探测包的 RTT值,以及返回 ICMP TTL耗尽消息的路由器的 IP地址(也可能包括名称)。下图的 Ethereal窗口则显示了由一个路由器返回的 ICMP包。注意这个 ICMP error包(TTL溢出包)和 ICMP Ping消息相比多了许多字段。(下图为Ethereal捕获数据,仅供参考)将捕获的数据保存后,完成以下问题: Q5.你主机的 IP地址是什么?远程主机的 IP地址是什么? Q6.检查 ICMP echo包,它和前半部分实验中的 ICMP ping查问包有否不同?如有,具体在何处? Q7.检查 ICMP error包,它的类型是什么, code是什么。它和 echo包相比有更多的字段,这些字段中包含了什么? Q8.检查源端收到的昀后三个 ICMP包。它们和 ICMP error包有何不同?为什么不同? Q9.在 tracert测算中是否有延迟明显高于其它的链路?基于路由器的名字,你能否猜测一下这两条链路末端路由器的所在位置?自主设计实验第一个实验中我们学过 PING命令的各种参数,请自己设计一个实验尝试用 32到 2048不同大小的数据包去完成 PING操作,记录并分析 RTT值变化的过程、 ICMP回应数据的结果,有什么特殊情况出现吗?是什么原因? /
收藏 下载该资源
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号