网站地图| 免费获取|
毕业论文网
  • 网站首页|
  • 论文范文|
  • 论文降重|
  • 职称论文发表|
  • 合作期刊|
  • 论文下载|
  • 计算机论文|
  • 外文翻译|
  • 免费论文|
  • 论文资料|
  • 论文开题报告
搜索

当前位置:毕业论文网 -> 免费论文 -> 计算机论文 -> 免费数据包截获技术的研究与实现(五)
计算机论文资料| ASP设计| Delphi| VB设计| JSP设计| ASP.NET设计| VB.NET| java设计| VC| pb| VS| dreamweaver| c#.net| vf| VC++| 计算机论文范文| 论文下载| 自动化论文

免费数据包截获技术的研究与实现(五)

最新活动:微信集50个赞就可获取任意一篇钻石会员文档。详情见微信集赞换文档
免费数据包截获技术的研究与实现(五) 可以收到任何在网络中传输的数据包;在以上条件下开始对数据包进行截获、分析。
 4.4数据包截获程序的具体实现原理
 数据包截获程序作为一种网络通讯程序,是通过对网卡的编程来实现网络通讯的,对网卡的编程是使用通常的套接字(socket)方式来进行。但是,通常的套接字程序只能响应与自己硬件地址相匹配的或是以广播形式发出的数据帧,对于其他形式的数据帧比如已到达网络接口但却不是发给此地址的数据帧,网络接口在验证投递地址并非自身地址之后将不引起响应,也就是说应用程序无法收取到达的数据包。而本设计的要求通过数据包截获程序从网卡接收所有经过它的数据包,因此,在该系统中将网卡以混杂模式替代通常的正常模式。
 本设计中,这种对网卡混杂模式的设置是通过原始套接字(raw socket)来实现的,这也有别于通常经常使用的数据流套接字和数据报套接字。在创建了原始套接字后,需要通过bind()函数将原始套接字绑定到本地网卡。为了让原始套接字能接受所有的数据,还需要通过WSAIoctl ()来进行设置。完成以上设置就可以开始对网络数据包进行嗅探了,对数据包的获取仍像流式套接字或数据报套接字那样通过recv()函数来完成。但是与其他两种套接字不同的是,原始套接字此时截获到的数据包并不仅仅是单纯的数据信息,而是包含有 IP头、 TCP头等信息头的最原始的数据信息,这些信息保留了它在网络传输时的原貌。通过对这些在低层传输的原始信息的分析可以得到有关网络的一些信息。由于这些数据经过了网络层和传输层的打包,因此需要根据其附加的帧头对数据包进行分析。下面先给出结构,数据包的总体结构如表3所示:
 表3  数据包总体结构
数据包 
IP头 TCP头(或其他信息头) 数据 
 数据在从应用层到达传输层时,将添加TCP数据段头,或是UDP数据段头。其中UDP数据段头比较简单,由一个8字节的头和数据部分组成,具体格式如表4所示:
 表4 UDP数据段头格式
 16位  16位 
 源端口  目的端口 
 UDP长度  UDP校验和 
 对于此UDP数据段头的分析在编程实现中可通过数据结构UDP_HEADER来定义:
typedef struct _udphdr    
 {
    unsigned short uh_sport;  //16位源端口
    unsigned short uh_dport;  //16位目的端口
    unsigned short uh_len;  //16位长度
    unsigned short uh_sum;  //16位校验和
} UDP_HEADER;
 而TCP数据头则比较复杂,以20个固定字节开始,在固定头后面还可以有一些长度不固定的可选项,表5给出TCP数据段头的格式组成:
 表5 TCP数据段头格式
 16位 16位 
 源端口 目的端口 
 顺序号 
 确认号 
TCP头长 (保留)7位 URG ACK PSH RST SYN FIN 窗口大小 
 校验和 紧急指针 
 可选项(0或更多的32位字) 
 数据(可选项) 
 
 对于此TCP数据段头的分析在编程实现中可通过数据结构TCP_HEADER来定义:
typedef struct _tcphdr    
{
 USHORT th_sport;    //16位源端口
 USHORT th_dport;    //16位目的端口
 unsigned int  th_seq;   //32位序列号
 unsigned int  th_ack;   //32位确认号
 unsigned char th_lenres;     //4位首部长度/6位保留字
 unsigned char th_flag;   //6位标志位
 USHORT th_win;    //16位窗口大小
 USHORT th_sum;    //16位校验和
 USHORT th_urp;    //16位紧急数据偏移量
}TCP_HEADER;
 在网络层,还要给TCP数据包添加一个IP数据段头以组成IP数据报。IP数据段头格式如表6所示:
 
 
 表6 IP数据段头格式
16位 16位 
版本 IHL 服务类型 总长 
标识 标志 分段偏移 
生命期 协议 头校验和 
源地址 
目的地址 
选项(0或更多) 
 同样,在实际编程中也需要通过一个数据结构来表示此IP数据段头,下面给出此数据结构的定义:
typedef struct _iphdr
{
 unsigned char h_lenver;  //4位首部长度+4位IP版本号
 unsigned char tos;      //8位服务类型TOS
 unsigned short total_len;  //16位总长度(字节)
 unsigned short ident;   //16位标识
 unsigned short frag_and_flags; //3位标志位
 unsigned char ttl;      //8

首页 上一页 2 3 4 5 6 7 8 下一页 尾页 5/9/9

免费数据包截获技术的研究与实现(五)由毕业论文网(www.huoyuandh.com)会员上传。
原创论文资料流程 相关论文
上一篇:免费手机吞吃蛇游戏的设计与开发 下一篇:免费网上战友录的设计与实现
推荐论文 本专业最新论文
Tags:数据 截获 技术 研究 实现 2010-04-01 10:52:35【返回顶部】
精彩推荐
发表论文

联系方式 | 论文说明 | 网站地图 | 免费获取 | 钻石会员 | 硕士论文资料


毕业论文网提供论文范文,论文代发,原创论文资料

本站部分文章来自网友投稿上传,如发现侵犯了您的版权,请联系指出,本站及时确认并删除  E-mail: 17304545@qq.com

Copyright@ 2009-2020 毕业论文网 版权所有