大作业2:IP包的截获和研讨.doc

  1. 1、本文档共19页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
IP包的截获和解析实验报告 Q1201012 刘倩君 一.实验目的: 设计一个能够截获并解析IP数据包的程序,并根据这个程序,说明IP数据包的结构及IP协议的相关问题,从而IP层的工作原理有更好的理解和认识。 二.实验要求 : 本实验的目标是捕获网络中数据包,解析数据包的内容,将结果显示在标准输出上,并同时写入日志文件. 程序的具体要求如下: 1、能够捕获以太网数据帧,并且能够解析:数据包类型,数据包长度,源、目的MAC, 2、如果是IP数据包,则进行进一步解析。输出版本,头长度,服务类型,数据包总长度,数据包标识,分段标志,分段偏移值,生存时间,上层协议类型,头校验和,源IP地址和目的IP地址等内容. 3、在指定的日志文件中写入网卡、时间、数据包解析结果等内容。当程序接收到键盘输入Ctrl+C时退出. 三.主要数据结构 各种包头部、IP地址等的结构体定义在Header.h中。 1、以太网帧格式 因此,以太网帧头部的数据结构定义为: typedef struct tagDLCHeader /*以太网数据帧头部结构*/ { u_char DesMAC[6]; /* destination HW addrress */ u_char SrcMAC[6]; /* source HW addresss */ u_char Ethertype; /* ethernet type */ } DLCHEADER; 2、IP数据报格式 0 4 8 16 19 24 31 版本 报头标长 服务类型 总长度 标识 标志 片偏移 生存时间 协议 头校验和 源IP地址 目的IP地址 选项 填充域 数据部分 IP数据包的第一个字段是版本字段,其度是4位,表示所使用的IP协议的版本。本程序主要针对版本是IPV4的数据包的解析。 报头标长字段为4位,它定义了以4B为一个单位的IP包的报文长度.报头中除了选项字段和填充域字段外,其他各字段是定长的。因此,IP数据包的头长度在20—40B之间,是可变的。 服务类型字段共8位,用于指示路由器如何处理该数据包。 总长度字段为2B,它定义了以字节为单位的数据包的总长度,IP数据包的最大长度为65535B。 标识字段的长度为16位,用于识别IP数据包的编号,每批数据都要有一个标识值,用于让目的主机判断新来的数据属于哪个分组。 标志字段共3位,最高位是0.禁止分片标志DF(do not fragment)字段的值若为1,表示不能对数据包分片;若DF值为0,则表明可以分片。分片标志MF( more fragment)的值为1,表示接收到的不是最后一个分片;若MF值为0,表示接收到的是最后一个分片。 片偏移字段共13位,说明分片在整个数据包中的相对位置,片偏移值是以8B为单位来记数的,因此选择的分片长度应该是8B的整数倍。 生存时间(TTL)字段为8位,用来设置数据包在互联网络的传输过程的寿命,通常是用一个数据包可以经过的最多的路由器跳步数来限定的。 协议字段为8位,表示使用此IP数据包的高层协议类型,常用的协议号如下表所示. 序号 协议名称 序号 协议名称 1 2 4 6 8 ICMP IGMP IP inIP TCP EGP 17 41 46 89 UDP IPV6 RSVP OSPFA 头校验和字段为16位,用于存放检查报头错误的校验码,检验的范围是整个IP包的报头。校验和为0,说明数据报报头没有出错。 地址字段包括源地址和目的地址。源地址和目的地址的长度都是32位,分别表示发送数据包的源主机和目的主机的IP地址。 选项字段的长度范围为0~40B,主要用于控制和测试。在使用选项字段的过程中,有可能出现报头部分的长度不是32位的整数倍的情况。如果出现这种情况,就需要通过填充位来凑齐。 因此,IP数据报的头部定义如下: typedef struct ip_header{ u_char ver_ihl; // 4 bit 的版本信息 + 4 bits 的头长 u_char tos; // TOS 类型 u_short tlen; // 总长度 u_short identification; // Identification u_short flags_fo; // Flags (3 bits) + Fragment offset (13 bits) u_char ttl;

文档评论(0)

希望之星 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档