实验5_分析IP数据报格式
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验5 分析IP数据报格式
5.1 实验目的
了解IP数据报的格式;
理解IP 各个数据项的涵义;
5.2 相关背景知识
1. Winpcap基本介绍
数据报捕获的原理:为了进行数据报,网卡必须被设置为混杂模式。
在现实的网络环境中,存在着许多共享式的以太网络。
这些以太网是通过Hub 连接起来的总线网络。
在这种拓扑结构的网络中,任何两台计算机进行通信的时候,它们之间交换的报文全部会通过Hub 进行转发,而Hub以广播的方式进行转发,网络中所有的计算机都会收到这个报文,不过只有目的机器会进行后续处理,而其它机器简单的将报文丢弃。
目的机器是指自身MAC 地址与消息中指定的目的MAC 地址相匹配的计算机。
网络监听的主要原理就是利用这些原本要被丢弃的报文,对它们进行全面的分析,这样就可以得到整个网络中信息的现状。
Tcpdump的简单介绍:Tcpdump是Unix平台下的捕获数据报的一个架构。
Tcpdump最初有美国加利福尼亚大学的伯克利分校洛仑兹实验室的Craig Leres、Van Jcaobson和Steve McCanne共同开发完成,它可以收集网上的IP数据报文,并用来分析网络可能存在的问题。
现在,Tcpdump已被移植到几乎所有的UNIX系统上,如:HP-UX、SCO UNIX、SGI Irix、SunOS、Mach、Linux和FreeBSD等等。
更为重要的是Tcpdump是一个公开源代码和输出文件格式的软件,我们可以在Tcpdunp的基础上进行改进,加入辅助分析的功能,增强其网络分析能力。
(详细信息可以参看相关的资料)。
Winpcap的简单介绍:Winpcap是由意大利Fulvio Risso和Loris Degioanni等人提出并实现的应用于Win32平台的数据报捕获与分析的一种软件包,包括内核级的数据报监听设备驱动程序、低级动态链接库(Packet.dll) 和高级系统无关库(Winpcap.dll)。
Winpcap 由3个模块组成:(1)NPF(NetgroupPacket Filter),是一个虚拟设备驱动程序文件。
它的功能是过滤数据报,并把这些数据报原封不动地传给用户态模块。
(2)Packet.dll为Win32平台提供了一个公共的接口。
不同版本的Windows系统都有自己的内核模块和用户层模块。
Packet.dll直接映射了内核的调
用,运行在用户层,把应用程序和数据报监听设备驱动程序隔离开,使应用程序可以不加修改地在不同的Windows系统上运行。
通过Packet.dll提供的能用来直接访问BPF驱动程序的包驱动API利用raw模式发送和接收包。
(3)Wpcap.dll是不依赖于操作系统的。
Wpcap.dll 和应用程序链接在一起,使用低级动态链接库提供的服务,向应用程序提供完善的监听接口和更加友好、功能更加强大的函数调用。
Winpcap(Windows packet capture)是Windows平台下一个免费、公共的网络访问系统。
开发winpcap这个项目的目的在于为win32应用程序提供访问网络底层的能力。
它提供了以下的各项功能:
(1)捕获原始数据报,包括在共享网络上各主机发送/接收的以及相互之间交换的数据报;
(2)在数据报发往应用程序之前,按照自定义的规则将某些特殊的数据报过滤掉;
(3)在网络上发送原始的数据报;
(4)收集网络通信过程中的统计信息。
(详细信息可以参看相关的资料)
2. IP数据报的格式
IP数据报的由首部和数据两部分组成。
首部的前一部分是固定长度,共20个字节,是所有IP数据报必须具有的。
在首部的固定部分的后面是一些可选字段,其长度是可变的。
下图是IP数据报的格式:
0 4 8 16 19 24 31
图5-1 IP数据报的格式
3. TCP报文段的格式
一个TCP报文段分为首部和数据两部分,TCP的全部功能都体现在首部中各个字段的作用。
基于这一点,能清楚了TCP首部各个字段的作用也就掌握了TCP的工作原理。
TCP报文首部的前20个字节是固定的,后面有4N字节是根据需要而增加的选项(N必须是整数),因此TCP首部的最小长度是20字节。
图5-2是TCP数据报文首部的格式。
0 8 16 24 31
图5-2 TCP 数据报文的首部格式 TCP 是TCP/IP 体系中面向连接的运输层协议,它提供全双工的和可靠交付的服务。
TCP 则提供面向连接的服务,在传送数据之前必须先建立连接,数据传送结束后要释放连接。
由于TCP 要提供可靠的、面向连接的运输服务,因此,不可避免地增加了许多开销,如确认、流量控制、计时器以及连接管理等,这就使协议数据单元的首部增加很多。
4. UDP 数据报的格式
UDP 在传送数据之前不需要先建立连接,远地主机的运输层在收到UDP 数据报文后,不需要给出任何确认。
因此UDP 数据报的首比较简单。
UDP 数据报首部由4个字段组成,每个字段都是2个字节。
UDP 首部格式及含义见表5-1.
表5-1 UDP 首部格式及含义
5. 伪首部
无论是TCP 报文段,还是UDP 数据报,在计算校验和时,都需要增加12个字节的伪首部。
所谓伪首部是因为这种首部并不是TCP
报文段或UDP 数据报的真正首部,只是在计算校验和时,临时和TCP 报文段或UDP 数据报连接在一起,得到一个过渡的TCP 报文段或UDP 数据报。
校验和就是按照这个过渡的TCP 报文段或UDP 数据报计算的。
伪首部不向下传送也不向上传递,而仅仅是为了计算校验和。
伪首部各字段内容及长度如图5-3所示。
字节 4 4 1 1 2
图5-3 求检验和时增加的伪首部
5.3 实验内容
1. 查看捕获到的数据报的首部;
2. 解读本程序的源代码;
3. 根据所捕获到的IP数据报中协议字段值,每一种协议选择一条记录分别填入表5-2中;
表5-2 IP数据报格式表
4. 分析实验结果,加深对数据报首部个字段的理解;
5. 整理实验结果,书写实验报告。
5.4 实验步骤
运行程序monitor.exe文件,将显示如图5-4所示运行界面:
图5-4 运行界面1
选中一条数据报记录,点击“数据分析”,运行界面如图5-5所示:
图5-5 运行界面2
或者选择其他抓包工具,抓取IP数据报进行相应的记录和分析。
5.5 实验要求
1. 理解IP数据报的概念和格式,要求至少记录分析三种不同类型数据内容的IP数据报:ICMP、TCP、UDP等。
注意:若想捕获到协议类型为ICMP协议的IP数据报,请事先运行ping命令,例如ping 192.168.1.98 –t。
2.了解Winpcap等抓包程序的原理和体系结构。
3. 理解IP数据报中数据部分的内容:TCP报文段和UDP用户数据报的首部格式。
4. 理解伪首部的概念。
5. 写出自己实验过程中出现的问题、解决方法,及实验的心得体会。