一、实验目的和要求
• 熟练掌握Ethereal的使用方法
• 能对捕获到的包进行较深入的分析
• 掌握IP层的作用以及IP地址的分类方法
• 掌握IP数据包的组成和网络层的基本功能。
二、实验内容
常见网络命令使用;启动Ethereal并设置相应的选项,进行一次简单的ICMP,观察捕获到的数据包,过滤出IP数据包,分析每个IP分组的细节,查看IP数据包的结构与含义,观察IP协议的功能。
三、实验设备
PC机、Ethereal软件、WinpCap软件
四、背景知识
1、IP 地址的编址方法
IP 地址是为每个连接在互联网上的主机分配的唯一识别的 32 位标识符。IP 地址的编址方法共经历了三个阶段:
(1) 分类的IP 地址
这是一种基于分类的两级IP 地址编址的方法。
表1 IP 地址的分类
IP 地址
类型 | 第一字节 十进制范围 | 二进制 固定最高位 | 二进制 网络位 | 二进制 主机位 |
A 类 | 1-126 | 0 | 8 位 | 24 位 |
B 类 | 128 -191 | 10 | 16 位 | 16 位 |
C 类 | 192 -223 | 110 | 24 位 | 8 位 |
D 类 | 224 -239 | 1110 | 组播地址 | |
E 类 | 240 -254 | 1111 | 保留试验使用 |
如表1 所示,IP 地址分为A,B,C,D,E 五类,其中A、B、C 类地址为可分配主机地址,而D 类地址为组播地址,E 类地址保留以备将来的特殊使用。IP 地址采用点分十进制方式记录,每个地址表被视为4 个以点分隔开的十进制整数,每个整数对应一个字节。
A、B、C 三类地址由两部分组成:网络地址和主机地址,这三类地址的网络地址部分的长度不一样。每个A 类地址的网络中可以有 1600 万台主机;每个B 类地址的网络中可以有65534 台主机;每个C 类地址的网络中可以有254 台主机。 这样对于一个共有几十台计算机的局域网来说即使分配一个C 类地址也是一种浪费。为此,提出了子网和子网掩码的概念。
(2)划分子网的IP 地址
子网就是将一个A 类、B 类或 C 类网络分割成许多小的网络,每一个小的网络就称为子网。划分子网采用 “网络号”+“子网号”+“主机号”三级编址的方法。在划分了子网的网络地址中,子网掩码用于确定网络地址。
子网掩码是一个和IP 地址对应的 32 位二进制数。子网掩码中与IP 地址的网络地址对应的部分为 1,与主机地址对应的部分为0。这样把网络接口的IP 地址与该接口上的掩码相与就得到该接口所在网络的网络地址,而把该IP 地址与掩码的反码相与则可得到主机地址。
(3)无分类域间路由选择CIDR
无分类域间路由选择CIDR 是根据划分子网阶段的问题提出的编址方法。IP 地址采用“网络前缀”+“主机号”的编址方式。目前CIDR 是应用最广泛的编址方法,它消除了传统的A、B、C 类地址和划分子网的概念,提高了IP 地址资源的利用率,并使得路由聚合的实现成为可能。
2、IP 报文格式
IP 报文由报头和数据两部分组成,如图1 所示:
图1 IP 报文格式
其中主要字段的意义和功能如下:
* 版本:指IP 协议的版本;
* 头长:是指IP 数据报的报头长度,它以4 字节为单位。IP 报头长度至少为 20 字节,如果选项部分不是4 字节的整数倍时,由填充补齐;
* 总长度:为整个IP 数据报的长度;
* 服务类型:规定对数据报的处理方式;
* 标识:是IP 协议赋予数据报的标志,用于目的主机确定数据分片属于哪个报文;
* 标志:为三个比特,其中只有低两位有效,这两位分别表示该数据报文能否分段和是否该分段是否为源报文的最后一个分段;
* 生存周期:为数据报在网络中的生存时间,报文每经过一个路由器时,其值减 1,当生存周期变为 0 时,丢弃该报文;从而防止网络中出现循环路由;
* 协议:指IP 数据部分是由哪一种协议发送的;
* 校验和:只对IP 报头的头部进行校验,保证头部的完整性;
* 源IP 地址和目的IP 地址:分别指发送和接收数据报的主机的IP 地址。
3、IP 数据报的传输过程
在互联网中,IP 数据报根据其目的地址不同,经过的路径和投递次数也不同。当一台主机要发送 IP 数据报时,主机将待发送数据报的目的地址和自己的子网掩码按位 “与”,判断其结果是否与其所在网络的网络地址相同,若相同,则将数据报直接投递给目的主机,否则,将其投递给下一跳路由器。
路由器转发数据报的过程如下:
① 当路由器收到一个数据报文时,对和该路由器直接相连的网络逐个进行检查,即用目的地址和每个网络的子网掩码按位 “与”,若与某网络的网地址相匹配,则直接投递;否则,执行2。
② 对路由表的每一行,将其中的子网屏蔽码与数据报的目的地址按位“与”,若与该行的目的网络地址相等,则将该数据报发往该行的下一跳路由器;否则,执行3。
③ 若路由表中有一个默认路由,则将数据报发送给路由表所指定的默认路由器。否则,报告转发出错。
五、实验步骤
1、运行ipconfig命令
(1)在“工具”菜单中选择“命令行”,出现提示符后输入ipconfig/all
(2)观察运行结果,获得本机的IP地址及子网掩码;
(3)分析本主机属于哪一类IP地址,网络号、子网号和主机号分别是什么;
(4)利用本机的IP地址及子网掩码,找出地址本中与本机属于同一子网的主机。
2、运行ping 命令
Ping 命令是调试网络常用的工具之一。它通过发出ICMP Echo 请求报文并监听其回应来检测网络的连通性。
Ping 命令只有在安装了TCP/IP 协议之后才可以使用,其命令格式如下:
ping [-t] [-a] [-n count] [-l size] [-f] [-i TTL] [-v TOS] [-r count] [-s count]
[[-j host-list] | [-k host-list]] [-w timeout] target_name
这里对实验中可能用到的参数解释如下:
* -t :用户所在主机不断向目标主机发送回送请求报文,直到用户中断;
* -n count:指定要Ping 多少次,具体次数由后面的count 来指定 ,缺省值为4;
* -l size:指定发送到目标主机的数据包的大小 ,默认为32字节,最大值是65,527;
* -w timeout:指定超时间隔,单位为毫秒;
* target_name:指定要 ping 的远程计算机。
(1)在“工具”菜单中选择“命令行”,出现提示符后输入ping X.X.X.X –t(X.X.X.X为相邻计算机的IP地址,可以通过ipconfig/all得到)。
(2)观察运行结果,判断本机与相邻计算机的连通性;
3、运行Traceroute 命令
Traceroute 命令用来获得从本地计算机到目的主机的路径信息。在MS Windows中该命令为Tracert,而UNIX 系统中为Traceroute。
Tracert 先发送 TTL 为 1 的回显请求报文,并在随后的每次发送过程将TTL 递增 1,直到目标响应或 TTL 达到最大值,从而确定路由。它所返回的信息要比ping 命令详细得多,它把您送出的到某一站点的请求包,所走的全部路由均告诉您,并且告诉您通过该路由的IP是多少,通过该IP 的时延是多少。
Tracert 命令同样要在安装了TCP/IP 协议之后才可以使用,其命令格式为:
tracert [-d] [-h maximum_hops] [-j computer-list] [-w timeout] target_name
参数含义为:
* -d:不解析目标主机的名称;
* -h:指定搜索到目标地址的最大跳跃数;
* -j:按照主机列表中的地址释放源路由;
* -w:指定超时时间间隔,程序默认的时间单位是毫秒。
(1)在“工具”菜单中选择“命令行”,出现提示符后输入tracert www.sohu.com。
(2)观察运行结果,查看从本地计算机到目的主机的路径信息。
4、运行netstat命令
Netstat命令用于显示与IP、ICM、TCP和UDP协议相关的统计数据,一般用于检验本机各端口的网络连接情况。
(1)在命令行提示符下运行:
C:>netstat –r ;显示本机路由表,记录本机的缺省网关的IP地址;
(2)在命令行提示符下运行:
C:>netstat –s ;观察IP协议部分,查看本机已经接收和发送的IP报文个数。
5、IP协议分析(具体设置参考实验一、二)
(1)首先关闭所有的应用程序,打开浏览器,点击菜单栏上的“工具”,点击“Internet选项”,清除缓存的临时文件,那么捕获的数据包更加单纯,利于分析。
(2)打开 Ethereal 软件,最初的时候窗口中都没有数据,因为 Ethereal 还没有开始捕获包。
(3)开始准备捕捉,首先设置好Caption Options,Captrue Filter 设置为 “No Broadcast and no Multicast ”,点击“start”开始捕获。
(4)在“工具”菜单中选择“命令行”,出现提示符后输入ping X.X.X.X(X.X.X.X为不同组计算机的IP地址,可以通过ipconfig/all得到)。
(5)观察运行结果,判断本机与相邻计算机的连通性;
(6)通过Ethereal查看Ping运行过程;
(7)分析ICMP和IP协议。
(8)在“工具”菜单中选择“命令行”,出现提示符后输入ping X.X.X.X –l 4500 –n 2(X.X.X.X为不同组计算机的IP地址,可以通过ipconfig/all得到)。
(9)分析ICMP和IP协议。
六、思考题
Q1. 通过步骤(4)找到第一个 ICMP请求数据包,观察 ICMP封装的结构关系,记录各层的协议名称。
ICMP协议,UDP协议,TCP协议,以太网协议。
Q2. 通过步骤(4)您截获几个ICMP 报文?分别属于那种类型?并将分析结构填入下表:
表2 ICMP 协议报文分析
报文号 | 源IP | 目标IP | ICMP 报文格式 | |||
类型 | 代码 | 标识 | 序列号 | |||
1 | 202.114.187.62 | 202.114.187.1 | 8 | 0 | 0x0200 | 0x4600 |
2 | 202.114.187.1 | 202.114.187.62 | 0 | 0 | 0x0200 | 0x4600 |
3 | 202.114.187.62 | 202.114.187.1 | 8 | 0 | 0x02000 | 0x4600 |
4 | 202.114.187.1 | 202.114.187.62 | 0 | 0 | 0x0200 | 0x4600 |
5 | 202.114.187.62 | 202.114.187.1 | 8 | 0 | 0x0200 | 0x4600 |
6 | 202.114.187.1 | 202.114.187.62 | 0 | 0 | 0x0200 | 0x4600 |
答:报文的序列号保证了报文应答的一一对应。
Q4. 通过步骤(4)在ICMP request中,目标计算机的IP地址的十进制和十六进制表示各是多少?你的电脑IP地址呢? 他们分别是哪类地址?
答:目的主机:202.114.187.62 十六进制:ca 72 bb 3e
源主机:202.114.187.1 十六进制:ca 72 bb 1
两者都属于C类IP
Q5. 通过步骤(4),找到ICMP request的那个包,分析IP包各字段信息。
表3 IP 协议报文分析
字段 | 报文信息 | 说明 |
版本 | 4 | Version:4 |
头长 | 20 byte | Header length:20 bytes |
服务类型 | 0x00 | Differentiated Services Filed:0x00 |
总长度 | 60 | Total:60 bytes |
标识 | 0x00d2 | Identification:60 |
标志 | 0x00 | Flags:0x00 |
片偏移 | 0 | Fragment offset:0 |
生存周期 | 128 | Time of live:128 |
协议 | ICMP | Protocol: ICMP(0x01) |
校验和 | 0x227c(correct) | Header checksum:0x227c(correct) |
源地址 | 202.114.187.62 | Source:202.114.187.62 |
目的地址 | 202.114.187.1 | Destination:202.114.187.1 |
65535byte
Q7. 通过步骤(8), 对截获的报文分析,将属于同一ICMP 请求报文的分片找出来,主机PC1向主机PC2 发送的ICMP 请求报文分成了几个分片?
4个分片
Q8. 通过步骤(8), 将第二个ICMP 请求报文的分片信息填入下表。
表3 ICMP 请求报文分片信息
分片序号 | 标识(Identification) | 标志(Flag) | 片偏移(Fragment Offset) | 数据长度 |