本人一直想找时间系统整理一下之前做过的一些实验,便于后续用到的时候可以尽快的使用,po出来也便于大家交流学习,有问题欢迎交流指正,与诸君共勉!
实验目的及要求
|
实验内容
- 熟悉计算机网络常用数据包抓取方法
- 熟悉IP协议数据报格式以及IP数据报首部各部分的作用
实验环境
硬件:PC 机,网线,Wireshark软件
实验步骤
1. 选取分析的协议 IP 协议,复习教材相关内容。
2. 准备好必须的硬件设备及网络; 按照实验环境中的硬件要求在机房中选取符合实验条件的 pc 机。
3. 启动 Wireshark 抓包软件。
4. 启动协议 IP 所必须的软件环境或应用。
5. 抓包并选取具有代表性的数据包进行分析; 在抓的所有包中选择出一个便于分析网络层 IP 协议的,进行分析
6. 撰写实验报告
实验结果
1、基础知识——IP数据报格式、首部各字段意义
图1-1 IP数据报格式
IP数据报格式如图1-1所示,每个字段的含义如下:
(1) 版本(version)
占4位,表示 IP 协议的版本。通信双方使用的 IP 协议版本必须一致。目前广泛使用的IP协议版本号为 4,即 IPv4。
(2) 首部长度(网际报头长度IHL)
占4位,可表示的最大十进制数值是15。这个字段所表示数的单位是32位字长(1个32位字长是 4 字节)。因此,当 IP 的首部长度为1111时(即十进制的15),首部长度就达到 60 字节。当IP分组的首部长度不是4字节的整数倍时,必须利用最后的填充字段加以填充。
数据部分永远在 4 字节的整数倍开始,这样在实现 IP 协议时较为方便。首部长度限制为 60 字节的缺点是,长度有时可能不够用,之所以限制长度为 60 字节,是希望用户尽量减少开销。最常用的首部长度就是 20 字节(即首部长度为 0101),这时不使用任何选项。
(3) 区分服务(tos)
也被称为服务类型,占 8 位,用来获得更好的服务。这个字段在旧标准中叫做服务类型,但实际上一直没有被使用过。1998 年 IETF 把这个字段改名为区分服务(Differentiated Services,DS)。只有在使用区分服务时,这个字段才起作用。
(4) 总长度(totlen)
首部和数据之和,单位为字节。总长度字段为16位,因此数据报的最大长度为 2^16-1=65535 字节。
(5) 标识(identification)
用来标识数据报,占 16 位。IP 协议在存储器中维持一个计数器。每产生一个数据报,计数器就加1,并将此值赋给标识字段。当数据报的长度超过网络的MTU,而必须分片时,这个标识字段的值就被复制到所有的数据报的标识字段中。具有相同的标识字段值的分片报文会被重组成原来的数据报。
(6) 标志(flag)
占3位。第一位未使用,其值为0。第二位称为DF(不分片),表示是否允许分片。取值为0时,表示允许分片;取值为1时,表示不允许分片。第三位称为MF(更多分片),表示是否还有分片正在传输,设置为0时,表示没有更多分片需要发送,或数据报没有分片。
(7) 片偏移(offsetfrag)
占 13 位。当报文被分片后,该字段标记该分片在原报文中的相对位置。片偏移以 8 个字节为偏移单位。所以,除了最后一个分片,其他分片的偏移值都是 8 字节(64 位)的整数倍。
(8) 生存时间(TTL)
表示数据报在网络中的寿命,占 8 位。该字段由发出数据报的源主机设置。其目的是防止无法交付的数据报无限制地在网络中传输,从而消耗网络资源。
路由器在转发数据报之前,先把 TTL 值减 1。若 TTL 值减少到 0,则丢弃这个数据报,不再转发。因此,TTL 指明数据报在网络中最多可经过多少个路由器。TTL 的最大数值为 255。若把 TTL 的初始值设为 1,则表示这个数据报只能在本局域网中传送。
(9) 协议
表示该数据报文所携带的数据所使用的协议类型,占 8 位。该字段可以方便目的主机的 IP 层知道按照什么协议来处理数据部分。不同的协议有专门不同的协议号。
例如,TCP 的协议号为 6,UDP 的协议号为 17,ICMP 的协议号为 1。
(10) 首部检验和(checksum)
用于校验数据报的首部,占 16 位。数据报每经过一个路由器,首部的字段都可能发生变化(如TTL),所以需要重新校验。而数据部分不发生变化,所以不用重新生成校验值。
(11) 源地址
表示数据报的源 IP 地址,占 32 位。
(12) 目的地址
表示数据报的目的 IP 地址,占 32 位。该字段用于校验发送是否正确。
(13) 可选字段
该字段用于一些可选的报头设置,主要用于测试、调试和安全的目的。这些选项包括严格源路由(数据报必须经过指定的路由)、网际时间戳(经过每个路由器时的时间戳记录)和安全限制。
(14) 填充
由于可选字段中的长度不是固定的,使用若干个 0 填充该字段,可以保证整个报头的长度是 32 位的整数倍。
(15) 数据部分
表示传输层的数据,如保存 TCP、UDP、ICMP 或 IGMP 的数据。数据部分的长度不固定。
2、实验步骤——截图及详细说明
2.1 了解wireshark软件
启动wireshark软件,开启抓包界面如图2-1。
图2-1 wireshark抓包界面
Display Filter(显示过滤器),用于设置过滤条件进行数据包列表过滤。
Packet List Pane(数据包列表),用于显示捕获到的数据包,每个数据包包含编号,时间戳,源地址,目标地址,协议,长度,以及数据包信息。不同协议的数据包使用了不同的颜色区分显示。
抓包界面数据包列表的着色规则如图2-2。
图2-2 着色规则
说明:数据包列表区中不同的协议使用了不同的颜色区分。协议颜色标识定位在菜单栏View-->Coloring Rules,可自定义。
Packet Details Pane(数据包详细信息), 在数据包列表中选择指定数据包,在数据包详细信息中会显示数据包的所有详细信息内容。
数据包详细信息面板是最重要的,用来查看协议中的每一个字段。各部分信息分别为
(1)Frame: 物理层的数据帧概况
(2)Ethernet II: 数据链路层以太网帧头部信息
(3)Internet Protocol Version 4: 互联网层IP包头部信息
(4)Transmission Control Protocol: 传输层T的数据段头部信息,此处是TCP
(5)Hypertext Transfer Protocol: 应用层的信息,此处是HTTP协议
Dissector Pane(数据包字节区)。
2.2 了解wireshark过滤器
(1)抓包过滤器
捕获过滤器的菜单栏路径为Capture-->Capture Filters。用于在抓取数据包前设置。如图2-3。
图2-3 Capture Filters初界面
图2-4 设置捕获过滤器情况
如图2-4为设置捕获过滤器情况。设置过滤器为ip host 192.168.43.95 and icmp,只捕获主机IP为192.168.43.95的ICMP数据包。
本机ping www.baidu.com后捕获的报文如图2-5。
图2-5 本机ping www.baidu.com后捕获的报文
显示过滤器是用于在抓取数据包后设置过滤条件进行过滤数据包。
在捕获时未设置捕获规则直接通过网卡进行抓取所有数据包,如图2-6。
图2-6 未设置捕获规则抓包
-
2.3抓包并选取数据包进行分析
图2-7抓包界面
抓包并选取一个数据包进行分析,抓包界面如图2-7。
3、实验结果截图及分析
选取数据包的详细信息如图2-8。
图2-8抓取数据包详细信息
对该数据包分析如下:
A. Version: 4,IP协议版本为IPv4;
B. Header length: 20 bytes,头部数据长度为20字节;
C. Differentiated Services Field: 0x00 (DSCP 0x00: Default; ECN: 0x00: Not-ECT (Not ECN-Capable Transport)),区分的服务领域:0x00 (默认的是DSCP:0x00);
D. Total Length:40,整个数据报的长度;
E. Identification:0x02f0(752),表示当前的数据报;
F. Flags: 0x40 ,Don't Fragment,不支持分片;
G. Fragment offset: 0,分组偏移量为0;
H. Time to live: 64,TTL,生存时间为64,表示该包在被丢弃前最多能经过的路由器个数为64,当数据包传输到一个路由器之后,TTL就自动减1,如果减到0了还没有传送到目标主机,那么就自动丢失。
I. Protocol:TCP(6),上层协议为TCP(6)
J. Header checksum: 0X0000[valid disabled],头部校验和
K. [Header checksum status: Unverified]:头部数据校验状态。
L. Source Address: 192.168.43.95,源IP地址为192.168.43.95;
M. Destination Address: 163.177.151.109,目标IP地址为163.177.151.109。
4.实验心得或实验过程中遇到的问题和解决的方法
4.1 实验心得
本次实验前首先对IP协议的理论知识进行了巩固,实验前下载了wireshark软件,并通过网络方式寻找辅助使用教程,对wireshark软件的使用方法有了初步掌握。实验过程中使用wireshark软件的进行抓包分析的过程更使我熟练掌握了wireshark软件的使用方法。通过实验加深了对于网络层IP协议理论知识的理解,学会了独立分析协议的具体内容。
通过对于wireshark工具的学习,体会到计算机学科中实践操作的重要性,以及实践操作对于理论知识理解的显著积极作用。实验过程中也通过自己的兴趣与解决问题的导向,自主探索了许多IP知识,了解了更多计算机网络中数据传输的具体过程,对课本理论知识有了更为深刻的理解。今后的学习生活中也要时刻提醒自己,对于理论知识的理解要基于实践与应用的基础之上。
4.2 实验过程中遇到的问题及解决办法
本次实验过程中的主要问题来自于对于wireshark软件的使用以及各个功能的理解,如数据包列表区中不同的协议使用的不同的颜色区分的含义、过滤器的设置方法等。
通过在网络上搜集相关资料,较为全面地了解了wireshark的功能,学习了wireshark的使用方法,并成功利用wireshark完成了本次实验。
5、实验习题
5.1 IP 数据报中的首部检验和并不检验数据报中的数据。这样做的最大好处是什么?坏处是什么?
好处:每次分组转发时都要计算首部检验和,IP数据报中的首部检验和不检验数据部分,减少了计算量,加快了分组转发的速率。
坏处:数据部分出现差错时不能及早发现。
5.2 试说明IP地址与硬件地址的区别。为什么要使用这两种不同的地址?
区别:IP地址位于IP数据报的首部,硬件地址位于MAC帧的首部,在网络层及以上使用IP地址,在数据链路层及以下使用硬件地址。在 IP 层抽象的互连网上,我们看到的只是 IP 数据报,路由器根据目的站的IP地址进展选路。在具体的物理网络的链路层,我们看到的只是MAC帧,IP 数据报被封装在MAC帧里面。MAC帧在不同的网络上传送时,其MAC帧的首部是不同的。这种变化在上面的IP 层上是看不到的。
原因:每个路由器都有 IP 地址和硬件地址。各种各样的MAC地址之间的转换工作比较复杂。使用 IP 地址与硬件地址,尽管连接在一起的网络的硬件地址体系各不一样, IP 层抽象的互连网却屏蔽了下层这些很复杂的但细节,并使我们能够使用统一的、抽象的 IP 地址进展通信。