使用Wireshark分析IP协议

  • 格式:doc
  • 大小:1.05 MB
  • 文档页数:9

使用Wireshark分析IP协议

一、实验目的

1、分析IP协议

2、分析IP数据报分片

二、实验环境

与因特网连接的计算机,操作系统为Windows,安装有Wireshark、IE等软件。

三、实验步骤

IP协议是因特网上的中枢。它定义了独立的网络之间以什么样的方式协同工作从而形成一个全球户联网。因特网内的每台主机都有IP地址。数据被称作数据报的分组形式从一台主机发送到另一台。每个数据报标有源IP地址和目的IP地址,然后被发送到网络中。如果源主机和目的主机不在同一个网络中,那么一个被称为路由器的中间机器将接收被传送的数据报,并且将其发送到距离目的端最近的下一个路由器。这个过程就是分组交换。

IP允许数据报从源端途经不同的网络到达目的端。每个网络有它自己的规则和协定。IP能够使数据报适应于其途径的每个网络。例如,每个网络规定的最大传输单元各有不同。IP允许将数据报分片并在目的端重组来满足不同网络的规定。

DHCP报文:

(1)DHCP-DISCOVER:DHCP客户端广播发送的,用来查找网络中可用的DHCP服务器。

(2)DHCP-OFFER:DHCP服务器用来响应客户端的DHCP-DISCOVER请求,并为客户端指定相应配置参数。

(3)DHCP-REQUEST:DHCP客户端广播发送DHCP服务器,用来请求配置参数或者续借租用。

(4)DHCP-ACK:DHCP服务器通知客户端可以使用分配的IP地址和配置参数。

(5)DHCP-NAK:DHCP服务器通知客户端地址请求不正确或者租期已过期,续租失败。

(6)DHCP-RELEASE:DHCP客户端主动向DHCP服务器发送,告知服务器该客户端不再需要分配的IP地址。

(7)DHCP-DECLINE:DHCP客户端发现地址冲突或者由于其它原因导致地址不能使用,则发送DHCP-DECLINE报文,通知服务器所分配的IP地址不可用。

(8)DHCP-INFORM:DHCP客户端已有IP地址,用它来向服务器请求其它配置参数

图1 DHCP报文

1、使用DHCP获取IP地址

(1)打开命令窗口,启动Wireshark。

(2)输入”ipconfig / release”。这条命令会释放主机目前的IP地址,此时,主机IP地址会变为0.0.0.0。

(3)然后输入”ipconfig / renew”命令。这条命令让主机获得一个网络配置,包括新的IP地址。

(4)等待,直到”ipconfig / renew”终止。然后再次输入”ipconfig / renew” 命令。

(5)当第二个命令”ipconfig / renew” 终止时,输入命令”ipconfig / release” 释放原来的已经分配的IP地址。 (6) 开始分组捕获:选择“抓包”下拉菜单中的“抓包参数选择”命令,在WireShark:“抓包选项”窗口中可以设置分组捕获的选项。

(7) 在这次实验中,使用窗口中显示的默认值。选择“抓包”下拉菜单中的“网络接口”命令,显示计算机中所安装的网络接口(即网卡)。需要选择电脑真实的网卡,点击后显示本机的IP地址。

(8) 随后,点击“开始”则进行分组捕获,所有由选定网卡发送和接收的分组都将被捕获。

(9) 待捕获一段时间,选择主窗口中有的“stop”按钮,可以停止分组的捕获,如图2所示:

图2 Wireshark俘获的分组

对此分组进行分析: ipconfig 命令被用于显示机器的IP地址及修改IP地址的配置。当输入命ipconfig /release命令时,用来释放机器的当前IP地址。释放之后,该机没有有效的IP地址并在分组2中使用地址0.0.0.0作为源地址。电脑的IP 地址是192.168.0.100,如图3所示:

图3 电脑的IP地址

分组2是一个DHCP Discovery(发现)报文,如图4所示。当一台没有IP地址的计算机申请IP地址时将发送该报文。DHCP Discovery报文被发送给特殊的广播地址:255.255.255.255,该地址将到达某个限定广播范围内所有在线的主机。理论上,255.255.255.255能够广播到整个因特网上,但实际上并不能实现,因为路由器为了阻止大量的请求淹没因特网,不会将这样的广播发送到本地网之外。

在DHCP Discover报文中,客户端包括自身的信息。特别是,它提供了自己的主机名和其以太网接口的物理地址。这些信息都被DHCP用来标识一个已知的客户端。DHCP服务器可以使用这些信息实现一系列的策略,比如,分配与上次相同的IP地址,分配一个上次不同的IP地址,或要求客户端注册其物理层地址来获取IP地址。

在DHCP Discover报文中,客户端还详细列出了它希望从DHCP服务器接收到的信息。在图5的Parameter Request List中包含了除客户端希望得到的本地网络的IP地址之外的其他数据项。这些数据项中许多都是一台即将连入因特网的计算机所需要的数据。例如,客户端必须知道的本地路由器的标识。任何目的地址不在本地网的数据报都将发送到这台路由器上。也就是说,这是发向外网的数据报在通向目的端的路径上遇到的第一台中间路由器。

图4 DHCP Discovery

客户端必须知道自己的子网掩码。子网掩码是一个32位的数,用来与IP地址进行“按位逻辑与运算”从而得出网络地址。所有可以直接通信而不需要路由器参与的机器都有相同的网络地址。因此,子网掩码用来决定数据报是发送到本地路由器还是直接发送到本地目的主机。

图5 Parameter Request List

客户端还必须知道它们的域名和它们在本地域名服务器上的标识。域名是一个可读的网络名。

IP地址为192.168.1.1的DHCP服务器回复了一个DHCP OFFER报文。该报文也广播到255.255.255.255,因为尽管客户端还不知道自己的IP地址,但它将接收到发送到广播地址的报文。这个报文中包含了客户端请求的信息,包括IP地址、本地路由器、子网掩码、域名和本地域名服务器。

在分组5中,客户端通过发送DHCP Request(请求)报文表明自己接收到的IP地址。最后,在分组6中DHCP服务器确认请求的地址并结束对话。此后,客户端开始使用它的新的IP地址作为源地址。

在分组3和分组7的地址ARP协议引起了注意。在分组3中,DHCP服务器询问是否有其它主机使用IP地址192.168.1.100(该请求被发送到广播地址)。这就允许DHCP服务器在分配IP之前再次确认没有其它主机使用该IP地址。在获取其IP地址之后,客户端会发送3个报文询问其他主机是否有与自己相同的IP地址。前4个ARP请求都没有回应。DHCP服务器再次询问哪个主机拥有IP地址192.168.1.100,客户端两次回答它占有该IP同时提供了自己的以太网地址。

通过DHCP分配的IP地址有特定的租用时间。为了保持对某个IP的租用,客户端必须更新租用期。当输入第二个命令ipconfig /renew后,在分组中就会看到更新租用期的过程。DHCP

Request请求更新租用期。DHCP ACK包括租用期的长度。如果在租用期到期之前没有DHCP

Request发送,DHCP服务器有权将该IP地址重新分配给其他主机。

最后,在输入命令ipconfig /release后的结果。在DHCP服务器接收到这个报文后,客户停止对该IP的使用。如有需要DHCP服务器有权重新对IP地址进行分配。

2、分析IPv4中的分片

考察IP数据报首部。俘获此分组的步骤如下:

(1) 启动Wireshark,开始分组俘获(“Capture”-----“interface…”----“start”)。

(2) 启动pingplotter,在“Address to trace:”下面的输入框里输入目的地址,选择菜单栏“Edit”---“Options”---“Packet”,在“Packet size(in bytes defaults=56):”

右边输入IP数据报大小:5000,按下“OK”。最后按下按钮“Trace”,你将会看到pingplotter窗口显示如下内容,如图6所示:

图6 ping plotter

(3) 停止Wireshark。设置过滤方式为:IP,在Wireshark窗口中将会看到如下情形,如图7所示。 在分组俘获中,可以看到一系列自己电脑发送的“ICMP Echo Request”和由中间路由器返回到电脑的“ICMP TTL-exceeded messages。

图7 用Wireshark 所俘获的分组

同一IP 的数据包必须改变的字段:identification(标识)、header chechsum(头部检验和),因为标识是源主机富裕IP数据报的标识符、头部检验和用于保证IP数据报报头的完整性。必须保持不变的字段:version(版本)、header length(头部长度)、differentiated services field(区分服务)、flags(标记)、 fragment offset(片偏移)、 protocol(协议)、 destination(目的地址)。

分析具体分组:

IP层位于传输层和链路层之间。在传输层协议是UDP,链路层协议是以太网。发送两个UDP数据报,每个包含5000个字节的数据部分和8字节的UDP首部。在分组103-105和分组108-110分别代表了先后发送的两个UDP数据报。

当IP层接收到5008字节的UDP数据报时,它的工作是将其作为IP数据报在以太网传输。以太网要求一次传输的长度不大于1514个字节,其中有14字节是以太网帧首部。

IP被迫将UDP数据报作为多个分片发送。每个分片必须包含以太网帧首部、IP数据报首部。每个分片还会包含UDP数据报的有效负载(首部和数据)的一部分。

IP将原始数据报的前1480个字节(含1472个字节的数据和含8个字节的UDP首部)放在第一个分片中。后面两个分片每个均含1480个字节的数据,最后一个分片中包含的数据为568个字节)。

为了让接收段重组原始数据,IP使用首部的特殊字段对分片进行了编号。标识字段用于将所有的分片连接在一起。分组103-105含有相同的标识号0xfd2b,分组108-110的标识号是0xfd2c.片漂移量指明了分组中数据的第一个字节在UDP数据报中的偏移量。例如分组103和分组108的偏移量都是0,因为它们都是第一个分片。

最后在标识字段中有一位用来指明这个分片后是否还有分片。分组103到分组104和分组108到分组109均对该位置进行了置位。分组105和分组110由于是最后一个分片而没有对该位置位。

四、小结:

经过本次实验的我学会了如何使用WireShark进行基本的数据的抓取,以及对数据包的简单分析,我学习到Wireshark是一个网络协议检测工具,支持Windows平台和Unix平台,我一般只在Windows平台下使用Wireshark,在Windows平台下,Wireshark通过WinPcap进行抓包,封装的很好,使用起来很方便,可以很容易的制定抓包过滤器或者显示过滤器。加深了对常用网络协议IP的理解。

由于自身能力和时间的限制,对更加细节的流程把握的不是很好,希望能够随着今后对课程体系更深入的学习能有进一步的改进。同时,此次课程设计也让我看到了自己的不足,自己对本专业的相关知识掌握的还很少,还有很多知识都没掌握,还让我认识到解决问题的方法、途径很多做事要开阔自己的思维,看待问题要从多个角度看。