- 1、本文档共9页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
《网络性能分析》课程实验报告
实验名称
网络性能开源工具包
实验序号
1
姓 名
方海刚 系院专业
计算机
班级11网络1班
学 号
11103222116
实验日期
2014.9.9
指导教师
徐慧
成 绩
一、实验目的
熟悉WinPcap的使用;
掌握基于WinPcap网络嗅探器的开发过程。
二、实验内容与要求
开发出一个基于winpcap的网络嗅探器,能显示所捕获的数据包,并能做相应的分析 和统计。主要内容如下:
1、 列出监测主机的所有网卡,选择一个网卡进行监听。
2、 捕获所有流经网卡的数据包,并利用WinPcap函数库设置过滤规则(过滤的协议 包括tcp、udp、ICMP^ http> smtp> FTP、ip、arp)□
3、 分析捕获到的数据包的包头和数据,按照各种协议的格式进行格式化显示。
4、 捕获到的数据包包括时间戳、数据包长度、以太网类型、源mac地址、冃的mac 地址、协议类型、源ip地址、冃的ip地址。
三、实验过程
1、 实验环境配置软件环境
软件环境:visual studio 2010集成开发环境
开发配置:(1)点击工程一>属性一>配置属性一>VC++目录一>包含目录,winpc叩需要用到的包 含目录include所在的路径复制到包含目录中.(否则会出现找不到pcap.h文件)
(2)点击工程 >属性 >配置属性>VC++目录 >库目录,winpcap需要用到的库文件所在的 lib文件的路径复制到库目录屮。(否则会出现找不到pcap.h文件)
2、 程序的设计与实现
(1)数据包分析。通过对帧结构中部分字段进行判别,分析该数据包具体属于哪种协议 的数据包,,我们具体分析TCP,UDP,ICMP,ARP,HTTP数据包。
//Mac头部,总长度字节
typedef struct ethernet_header
{
u_char dstmac[6]; //目标mac地址
u char srcmac[6]: //源mdc地址
u_short eth_type; //以太网类型
} ethernet__header;
/* 4 bytes IP address */
typedef struet ip_address{
u_char bytel; //IP地址第个字段
u char byte2; //IP地址第个字段
u_char byte3; //IP地址第个字段 u_char by ted; //IP地址第个字段 }ipaddress;
//IP头部,总长度字节
typedef struct ip header
{
#if L1TTLE_END1AN
u_char ihl:4; //首部长度
u_char version:4;//版木
Seise
u_char version:4;//版本
u_char ihl:4; //首部长度
斗endif
u_char tos; //服务类型 u_short tot_len; //总长度 u_short id; //标识号
#if L1TTLE_END1AN
u_shor t frag_o ff: 13; // 分片偏移
u_short flag:3; //标志
#else
u short flag:3; //标志
u_short frag_off: 13;//分片偏移
Send if
u_char ttl; //生存时间
u_char protocol; //协议
u .short chk sum; //检验和
struct ip address sreaddr; //源 IP 地址
struct ip address dstaddr; //目的IP地址
}ipheader;
//TCP头部,总长度字节TC11 头部与T(T数据包不是一个概念; typedef struet tcpheader
{
u_short src_port: //源端口号
u .short dst. port; // 目的端 I」号
u_int seq_no; //序列号 u_int ack_no; //确认号
#if LITTLE_ENDIAN
u_char reserved」:4; //保留位中的位首部长度
u char offset:4; //tep头部长度
u_char flag:6; //6位标志
u .char reserved 2:2; //保留位中的位
斗else
u_char offset:!; //tcp 头部长度
u_char reserved_l:4; //保留位中的位首部氏度
u_char reserved_2:2; //保留位屮的位
u_char flag: 6; /6位标志
#endif
u .short wnd_size; //16位窗口大小
u_
文档评论(0)