实验6IP数据报格式.pdf
1 实验 6 分析 IP 数据报格式 6.1 实验目的 1.了解 IP 数据报的格式;2.理解 IP 各个数据项的涵义;3.理解 TCP、UDP 协议的工作原理;4.了解 TCP 报文段、UDP 数据报各个字段的作用。6.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 户态模块。(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 字节是根 3 据需要而增加的选项(N 必须是整数),因此 TCP 首部的最小长度是 20 字节。图 5-2 是 TCP 数据报文首部的格式。0 8 16 24 31 源端口 目的端口 序号 确认号 数据偏移 保留 U R C A C K P S H R S T S N Y F I N 窗口 校验和 紧急指针 选项(长度可变)填充 图 5-2 TCP 数据报文的首部格式 TCP 是 TCP/IP 体系中面向连接的运输层协议,它提供全双工的和可靠交付的服务。TCP 则提供面向连接的服务,在传送数据之前必须先建立连接,数据传送结束后要释放连接。由于 TCP 要提供可靠的、面向连接的运输服务,因此,不可避免地增加了许多开销,如确认、流量控制、计时器以及连接管理等,这就使协议数据单元的首部增加很多。4.UDP 数据报的格式 UDP 在传送数据之前不需要先建立连接,远地主机的运输层在收到 UDP 数据报文后,不需要给出任何确认。因此 UDP 数据报的首比较简单。UDP 数据报首部由 4 个字段组成,每个字段都是 2 个字节。UDP 首部格式及含义见表 5-1.表 5-1 UDP 首部格式及含义 源端口 目的端口 长度 校验和 源端口号 目的端口号 UDP 数据报的长度 防止传输过程中出错 5.伪首部 无论是 TCP 报文段,还是 UDP 数据报,在计算校验和时,都需要增加 12个字节的伪首部。所谓伪首部是因为这种首部并不是 TCP 报文段或 UDP 数据报的真正首部,只是在计算校验和时,临时和 TCP 报文段或 UDP 数据报连接在一起,得到一个过渡的 TCP 报文段或 UDP 数据报。校验和就是按照这个过渡的TCP 报文段或 UDP 数据报计算的。伪首部不向下传送也不向上传递,而仅仅是为了计算校验和。伪首部各字段内容及长度如图 5-3 所示。字节 4 4 1 1 2 源 IP 地址 目的 IP 地址 0 6/17 TCP/UDP 长度 图 5-3 求检验和时增加的伪首部 4 6.3 实验内容 1.查看捕获到的数据报的首部;2.根据所捕获到的 IP 数据报中协议字段值,每一种协议选择一条记录分别填入表 5-2 中;表 5-2 IP 数据报格式表 版本:首部长度:服务类型:总长度:标识:标志:片偏移:生存时间:协议:首部校验和:源地址:目的地址:可选字段(长度可变):填充:数据部分:3.分析实验结果,加深对数据报首部个字段的理解;4.整理实验结果,书写实验报告。6.4 实验步骤 1.运行程序 Wiresharkr 软件,将显示如图 5-4 所示运行界面:图 5-4 运行界面 2.然后捕获数据包,如图 5-5 捕获数据包后的界面,所示 5 图 5-5 捕获数据包后的界面 3.在数据包列表中,选中一条数据报记录,运行界面如图 5-6 数据包列表,所示:图 5-6 数据包列表 在图 5-6 中,鼠标单击某个数据包反蓝显示。与此同时,在“数据包详细信息”窗口、“解析器窗口”中会分别显示这个数据包的所有信息以及 16 进制数据信息,如图 5-7 数据包详细信息,所示。图 5-7 数据包详细信息 或者选择其他抓包工具,抓取 IP 数据报进行相应的记录和分析。6 6.5 实验报告要求 在实验报告中应记录实验目的、实验环境,简要实验内容和实验步骤,实验数据要包括以下内容:1.记录本机 IP 协议的配置信息:IP 地址、子网掩码、默认网关;2.理解 IP 数据报的概念和格式,要求记录分析三种不同类型数据内容的 IP数据报:ICMP、TCP、UDP 等。3.理解 IP 数据报中数据部分的内容:TCP 报文段和 UDP 用户数据报的首部格式。4.写出自己实验过程中出现的问题、解决方法,及实验的心得体会。