1、实验三 使用 Wireshark 分析 IP 协议一、实验目的1、分析 IP 协议2、分析 IP 数据报分片二、实验环境与因特网连接的计算机,操作系统为 Windows,安装有 Wireshark、IE 等软件。三、实验步骤IP 协议是因特网上的中枢。它定义了独立的网络之间以什么样的方式协同工作从而形成一个全球户联网。因特网内的每台主机都有 IP 地址。数据被称作数据报的分组形式从一台主机发送到另一台。每个数据报标有源 IP 地址和目的IP 地址,然后被发送到网络中。如果源主机和目的主机不在同一个网络中,那么一个被称为路由器的中间机器将接收被传送的数据报,并且将其发送到距离目的端最近的下一个路
2、由器。这个过程就是分组交换。IP 允许数据报从源端途经不同的网络到达目的端。每个网络有它自己的规则和协定。IP 能够使数据报适应于其途径的每个网络。例如,每个网络规定的最大传输单元各有不同。IP 允许将数据报分片并在目的端重组来满足不同网络的规定。表 1.1 DHCP 报文报文类型 主要功能DHCP-DISCOVER DHCP 客户端广播发送的,用来查找网络中可用的 DHCP服务器DHCP-OFFER DHCP 服务器用来响应客户端的 DHCP-DISCOVER 请求,并为客户端指定相应配置参数DHCP-REQUEST DHCP 客户端广播发送 DHCP 服务器,用来请求配置参数或者续借租用D
3、HCP-ACK DHCP 服务器通知客户端可以使用分配的 IP 地址和配置参数DHCP-NAK DHCP 服务器通知客户端地址请求不正确或者租期已过期,续租失败DHCP-RELEASE DHCP 客户端主动向 DHCP 服务器发送,告知服务器该客户端不再需要分配的 IP 地址DHCP-DECLINE DHCP 客户端发现地址冲突或者由于其它原因导致地址不能使用,则发送 DHCP-DECLINE 报文,通知服务器所分配的 IP 地址不可用DHCP-INFORM DHCP 客户端已有 IP 地址,用它来向服务器请求其它配置参数图 3.1 DHCP 报文1、使用 DHCP 获取 IP 地址(1)打开
4、命令窗口,启动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)停止分组俘获。如图 3.2 所示:图 3.2 Wireshark 俘获的分组下
5、面,我们对此分组进行分析:IPconfig 命令被用于显示机器的 IP 地址及修改 IP 地址的配置。当输入命ipconfig /release 命令时 , 用来释放机器的当前 IP 地址。释放之后,该机没有有效的 IP 地址并在分组 2 中使用地址 0.0.0.0 作为源地址。分组 2 是一个 DHCP Discover(发现)报文,如图 3.2 所示。当一台没有 IP 地址的计算机申请 IP 地址时将发送该报文。DHCP Discovery 报文被发送给特殊的广播地址:255.255.255.255,该地址将到达某个限定广播范围内所有在线的主机。理论上,255.255.255.255 能够
6、广播到整个因特网上,但实际上并不能实现,因为路由器为了阻止大量的请求淹没因特网,不会将这样的广播发送到本地网之外。在 DHCP Discover 报文中,客户端包括自身的信息。特别是,它提供了自己的主机名和其以太网接口的物理地址。这些信息都被 DHCP 用来标识一个已知的客户端。DHCP 服务器可以使用这些信息实现一系列的策略,比如,分配与上次相同的 IP 地址,分配一个上次不同的 IP 地址,或要求客户端注册其物理层地址来获取 IP 地址。在 DHCP Discover 报文中,客户端还详细列出了它希望从 DHCP 服务器接收到的信息。在 Parameter Request List 中包含
7、了除客户端希望得到的本地网络的 IP 地址之外的其他数据项。这些数据项中许多都是一台即将连入因特网的计算机所需要的数据。例如,客户端必须知道的本地路由器的标识。任何目的地址不在本地网的数据报都将发送到这台路由器上。也就是说,这是发向外网的数据报在通向目的端的路径上遇到的第一台中间路由器。图 3.3 DHCP Discovery客户端必须知道自己的子网掩码。子网掩码是一个 32 位的数,用来与 IP地址进行“按位逻辑与运算” 从而得出网络地址。所有可以直接通信而不需要路由器参与的机器都有相同的网络地址。因此,子网掩码用来决定数据报是发送到本地路由器还是直接发送到本地目的主机。图 3.4 Para
8、meter Request List客户端还必须知道它们的域名和它们在本地域名服务器上的标识。域名是一个可读的网络名。IP 地址为 192.168.1.1 的 DHCP 服务器回复了一个 DHCP OFFER 报文。该报文也广播到 255.255.255.255,因为尽管客户端还不知道自己的 IP 地址,但它将接收到发送到广播地址的报文。这个报文中包含了客户端请求的信息,包括IP 地址、本地路由器、子网掩码、域名和本地域名服务器。在分组 5 中,客户端通过发送 DHCP Request(请求)报文表明自己接收到的 IP 地址。最后,在分组 6 中 DHCP 服务器确认请求的地址并结束对话。此后
9、,客户端开始使用它的新的 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 分
10、配的 IP 地址有特定的租用时间。为了保持对某个 IP 的租用,客户端必须更新租用期。当输入第二个命令 ipconfig /renew 后,在分组中就会看到更新租用期的过程。DHCP Request 请求更新租用期。DHCP ACK 包括租用期的长度。如果在租用期到期之前没有 DHCP Request 发送,DHCP 服务器有权将该 IP 地址重新分配给其他主机。最后,在输入命令 ipconfig /release 后的结果。在 DHCP 服务器接收到这个报文后,客户停止对该 IP 的使用。如有需要 DHCP 服务器有权重新对 IP 地址进行分配。2、分析 IPv4 中的分片在第二个实验中,我
11、们将考察 IP 数据报首部。俘获此分组的步骤如下:(1( 启动 Wireshark,开始分组俘获(“Capture”-“interface”-“start”)。(2( 启动 pingplotter( pingplotter 的下载地址为 ),在“Address to trace:”下面的输入框里输入目的地址,选择菜单栏“Edit”-“Options”-“Packet”,在“Packet size(in bytes defaults=56):”右边输入 IP 数据报大小:5000,按下“OK” 。最后按下按钮“Trace”,你将会看到 pingplotter 窗口显示如下内容,如图 3 所示:图
12、 3 ping plotter(3( 停止 Wireshark。设置过滤方式为:IP,在 Wireshark 窗口中将会看到如下情形,如图 4 所示。在分组俘获中,你应该可以看到一系列你自己电脑发送的“ICMP Echo Request”和由中间路由器返回到你电脑的“ICMP TTL-exceeded messages。图 4 用 Wireshark 所俘获的分组下面,我们来分析具体分组:IP 层位于传输层和链路层之间。在传输层协议是 UDP,链路层协议是以太网。发送两个 UDP 数据报,每个包含 5000 个字节的数据部分和 8 字节的 UDP首部。在分组 103-105 和分组 108-1
13、10 分别代表了先后发送的两个 UDP 数据报。当 IP 层接收到 5008 字节的 UDP 数据报时,它的工作是将其作为 IP 数据报在以太网传输。以太网要求一次传输的长度不大于 1514 个字节,其中有 14字节是以太网帧首部。IP 被迫将 UDP 数据报作为多个分片发送。每个分片必须包含以太网帧首部、IP 数据报首部。每个分片还会包含 UDP 数据报的有效负载(首部和数据)的一部分。IP 将原始数据报的前 1480 个字节(含 1472 个字节的数据和含 8 个字节的UDP 首部)放在第一个分片中。后面两个分片每个均含 1480 个字节的数据,最后一个分片中包含的数据为 568 个字节)
14、 。为了让接收段重组原始数据,IP 使用首部的特殊字段对分片进行了编号。标识字段用于将所有的分片连接在一起。分组 103-105 含有相同的标识号0xfd2b,分组 108-110 的标识号是 0xfd2c.片漂移量指明了分组中数据的第一个字节在 UDP 数据报中的偏移量。例如分组 103 和分组 108 的偏移量都是 0,因为它们都是第一个分片。最后在标识字段中有一位用来指明这个分片后是否还有分片。分组 103 到分组 104 和分组 108 到分组 109 均对该位置进行了置位。分组 105 和分组 110由于是最后一个分片而没有对该位置位。四、实验报告内容回答以下问题:1、选择你的电脑所
15、发送的第一个 ICMP 请求消息,在包详细信息窗口扩展包的 Internet 协议部分。你的电脑的 IP 地址是多少?2、在 IP 包头部,上层协议区域的值是多少?3、IP 头部有多少字节?IP 数据包的有效载荷是多少字节?解释你是怎样确定有效载荷的数量的?4、这个 IP 数据包被分割了吗?解释你是怎样确定这个数据包是否被分割?5、接下来单击列名按 IP 源地址排序数据包,选择你的电脑发送的第一个ICMP 请求消息,扩展显示 IP 协议的数据。6、在包捕获列表窗口,你能看到在第一个 ICMP 下的所有并发的 ICMP 消息吗?7、往同一 IP 的数据包哪些字段在改变,而且必须改变?为什么?哪些字段是保持不变的,而且必须保持不变?8、描述一下在 IP 数据包的 Identification 字段的值是什么样的?