协议解析器程序winpcap资料_第1页
协议解析器程序winpcap资料_第2页
协议解析器程序winpcap资料_第3页
协议解析器程序winpcap资料_第4页
协议解析器程序winpcap资料_第5页
已阅读5页,还剩3页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、实验四编写协议解析器程序一、 实验要求及目的使用 libpcap/winpcap 进行网络抓包,并解析网络数据包的各层首部字段。通过编写程序,捕获一段时间内以本机为源地址或目的地址的 IP 数据包,统计 IP 数据包的信息,解析首部字段,帮助加深对 IP 协议的工作原理和工作过程的认识以及掌握 winpcap 抓包原理。二、实验运行环境本实验是是用 winpcap 进行网络抓包,基于 windows 系统,下载 WpdPack 4.1.2 安装包,在 Visio stdio 2012 上配置 winpcap 抓包环境,再编写 C+代码实现网络抓包。三、 实验原理TCP/IP 协议族的分层结构包

2、括应用层, 传输层,互联网络层和主机 -网络层,其结构如图 1 所示 :应用层Telnet、 TFP、SMTPDNS、 TFTP、SNMP传输层TCPUDP互联网络层IP主机 -网络层Ethernet,Token Ring,X.25,SLIP,PPP图 1 TCP/IP 协议族的分层结构其中 IP 协议是保证以太网正常运行的最重要的协议之一,只要用于负责IP寻址,路由选择和 IP 数据报的分割与组装。 IP 协议是直接位于数据链路层之上,负责将源主机的报文分组发送到目的主机。 IP 协议是一种不可靠,无连接的数据报传送服务协议, 它提供的是一种 “尽力而为 ”的服务。 为了向传输层屏蔽的通信子

3、网的差异, IP 协议制订了统一的 IP 数据报格式。IP 数据报的长度是可变的,它分为报头和数据两个部分。基本的20B.选项字段的长度范围是 040B,所以 IP 数据报报头的长度是范围是IP 报头是20-60B。IPV4 IP 数据报的结构如图2 所示:图 2 IP 数据包格式IP 首部封装具体解释如下:(1)版本 占 4 位,是指 IP 协议的版本。通信双方使用的 IP 协议版本必须一致。目前广泛使用的 IP 协议版本号为 4(即 IPv4 )(2)首部长度 占 4 位,可表示的最大十进制数值是 15。这个字段所表示数的单位是 32 位字长( 1 个 32 位字长是 4 字节),因此,当

4、 IP 的首部长度为 1111 时(即十进制的 15),首部长度就达到 60 字节。当 IP 分组的首部长度不是 4 字节的整数倍时, 必须利用最后的填充字段加以填充。 因此数据部分永远在 4 字节的整数倍开始,这样在实现 IP 协议时较为方便。首部长度限制为 60 字节的缺点是有时可能不够用。 但这样做是希望用户尽量减少开销。 最常用的首部长度就是 20 字节(即首部长度为 0101),这时不使用任何选项。(3)区分服务 占 8 位,用来获得更好的服务。这个字段在旧标准中叫做服务类型,但实际上一直没有被使用过。 1998 年 IETF 把这个字段改名为区分服务 DS(Differentiat

5、ed Services)。只有在使用区分服务时,这个字段才起作用。(4)总长度总长度指首部和数据之和的长度,单位为字节。总长度字段为 16 位,因此数据报的最大长度为216-1=65535 字节。(5)标识 (identification) 占 16 位。 IP 软件在存储器中维持一个计数器,每产生一个数据报,计数器就加 1,并将此值赋给标识字段。但这个 “标识 ”并不是序号,因为 IP 是无连接服务,数据报不存在按序接收的问题。当数据报由于长度超过网络的 MTU 而必须分片时,这个标识字段的值就被复制到所有的数据报的标识字段中。相同的标识字段的值使分片后的各数据报片最后能正确地重装成为原来的

6、数据报。(6)标志 (flag)占 3 位,但目前只有 2 位有意义。标志字段中的最低位记为 MF(More Fragment)。MF=1 即表示后面 “还有分片 ” 的数据报。 MF=0 表示这已是若干数据报片中的最后一个。标志字段中间的一位记为 DF(Dont Fragment),意思是 “不能分片 ”。只有当 DF=0 时才允许分片。(7)片偏移占 13 位。片偏移指出:较长的分组在分片后,某片在原分组中的相对位置。也就是说,相对用户数据字段的起点,该片从何处开始。片偏移以 8 个字节为偏移单位。这就是说,每个分片的长度一定是 8 字节( 64 位)的整数倍。(8)生存时间占 8 位,生

7、存时间字段常用的的英文缩写是TTL(Time ToLive) ,表明是数据报在网络中的寿命。由发出数据报的源点设置这个字段。其目的是防止无法交付的数据报无限制地在因特网中兜圈子, 因而白白消耗网络资源。最初的设计是以秒作为 TTL 的单位。每经过一个路由器时,就把 TTL 减去数据报在路由器消耗掉的一段时间。 若数据报在路由器消耗的时间小于 1 秒,就把 TTL 值减 1。当 TTL 值为 0 时,就丢弃这个数据报。(9)协议 占 8 位,协议字段指出此数据报携带的数据是使用何种协议,以便使目的主机的 IP 层知道应将数据部分上交给哪个处理过程。(10)首部检验和 占 16 位。这个字段只检验

8、数据报的首部,但不包括数据部分。这是因为数据报每经过一个路由器, 路由器都要重新计算一下首部检验和(一些字段,如生存时间、标志、片偏移等都可能发生变化)。不检验数据部分可减少计算的工作量。(11)源 IP 地址占 32 位。表示发送数据报的源主机的IP 地址(12)目的 IP 地址占 32 位。本实验的 IP 数据包首部定义如下:struct ip_header#if defined(WORDS_BIENDIAN)u_int8_tip_version:4,ip_header_length:4;#elseu_int8_tip_header_length:4,ip_version:4;#endif

9、u_int8_tip_tos;u_int16_tip_length;u_int16_tip_id;u_int16_tip_off;u_int8_tip_ttl;u_int8_tip_protocol;u_int16_tip_checksum;struct in_addr ip_souce_address;struct in_addr ip_destination_address;捕获 IP 数据包,一般借助 winpcap 或 libpcap 提供的 API 对网络数据包进行抓取。 winpcap 是为 windows 开发环境提供的库函数,而 libpcap 则是为 Linux 开发环境提供

10、的库函数。它们都是一个强大的网络开发库,可以实现许多功能,如获取可用的网络适配器、获取指定适配器信息(比如名称和描述信息)、捕获指定网卡的数据封包、 发送数据封包、 过滤捕获的包以获取特定包等。 两者提供的接口基本一致, 只是某些函数名略有不同。 在使用前必须将 winpcap 或 libpcap 安装在系统上,在使用时必须在工程中加入对应的开发包并在程序中声明。在抓取数据包后, 对其进行分析, 要参考数据包的格式, 所以数据包的格式是相当重要的。在抓包时,首先是获得链路层的帧,根据帧头可以获得源 mac 和目的 mac 以及上层的协议。根据帧头的长度将指针往后移,然后可以获得IP 数据报的头

11、部指针,根据报头信息可以获得源IP、目的 IP、上层协议、头部长度、总长度等信息。四、实验编程思路在本次实验编程中使用winpcap 捕获 IP 数据包的过程如下:首先获取网络设备的列表,这一步骤通过函数 pcap_lookupdev()来实现,第二步是用函数 pcap_open_live()打开找到的网卡设备。 pcap_open_live()中有一个参数为超时返回的间隔, 通常设为 500ms即可。第三步是用 pcap_compile()编译抓包的过滤规则。第四步用 pcap_compile()来编译抓包的过滤规则,最后 pcap_loop() 开 始 抓 包 。 最 后 用 函 数 ip_protool_packet_callback 以 及 函 数ethernet_protocol_packet_callback来输出抓包后分析的首部信息。五、程序运行结果及分析本次实验一共抓取 5 个数据包,分析出了数据包的长度, MAC 帧源地址,目的地址以及的分析出来上层协议是 IP 协议。解析 IP 数据包的首部,输

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论