实验五-IP协议分析

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

实验五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回应数据的结果,有什么特殊情况出现吗?是什么原因?。

相关文档
最新文档