- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
实验报告
实验名称: 计算机网络课程设计 学生姓名 : XXXXXXXXXXXXXXX 专 业: XXXXXXXXXXXXXXX 班 级: XXXXXXXXXXXXXXX 学 号: XXXXXXXXXXXXXXX 扌旨导教师 : XXXXXXXXXXXXXXX 实验成绩: 实验地点: 实验时间:2016 年_5— 月_6_日
、实验目的与实验要求
1、实验目的
将书本上抽象的概念与具体实现技术结合, 通过网络软件编程的实践, 深入理解理论课上学习到的 ARR IP、TCP等重要网络协议的原理, 通过自 己动手编程封装与发送这些数据包,加深对网络协议的理解,掌握协议帧 的结构和工作原理及其对协议栈的贡献。
2、实验要求
网络课程设计包含两个部分的内容:
题目一是数据包的封装发送和解析( ARP/IP/TCP),要求使用 Winpcap
技术和Socket技术,根据ARP/IP/TCP帧的结构,封装数据包发送到局 域网中。另外要捕获网络中的 TCP/IP/ARP数据包,解析数据包的内容, 并将结果显示,并同时写入日志文件。
题目二是从可选题目中选择一个, 可选题目均是网络应用小程序, 要求 小组使用网络编程技术设计并实现一个网络应用程序,加深对网络协议协 的理解,并锻炼网络编程能力。
二、实验设备(环境)及要求
1、实验硬件设备:
计算机型号:联想 ThinkPad T430u
处理器型号: Intel i5 主频: 1.8Hz
网卡型号: (1)Realtek PCIe GBE (2)Broadcom 802.11n
2、实验软件要求:
操作系统: Windows10
应用软件: Visual Studio 2015 Pro
3、小组成员及分工:
三、实验内容与步骤
1、实验 1:数据包的封装发送和解析( ARP/IP/TCP)
(1)实验内容
1) 程序目标:
根据 IP 帧的结构, 封装 IP 数据包发送到局域网中。 并捕获网络中的 IP 数 据包,解析数据包的内容,并将结果显示,并同时写入日志文件。
2) 程序功能:
以命令行形式运行
在标准输出中显示捕获的 IP 报文的首部字段的内容。
使用 winpcap 访问网卡,手动封装
定义 IP 首部的数据结构 填充数据包,发送数据包,捕获数据包
使用 winpcap ,捕获 IP 数据包
(2)主要步骤
1) 总体设计:
获取设备列表并打印,打开所选择的适配器;
准备工作:定义 ip 相关的结构体、打开要存放结果的文件,设置过滤
器,手写ip数据报(内容有无效的 MAC源和目的地址,和均为本机地
址的 ip 源地址和目的地址,即发给自己一个 ip 报文),设置抓到数据 报的解析和输出到文件的操作函数(解析 ip 报,打印并写入文件:报 文的版本、协议、源和目的地址等) 。
发包、抓包。
分析获取的数据。
获取设备列表
打开选择适配器
过滤数据包
解析数据包
2)具体实现:
#defi ne HAVE_REMOTE
#in elude pcap.h
#in elude remote-ext.h
#i nclude stdio.h
#include stdlib.h
/*4字节的IP地址*/
typedef struct ip_address{
u_char byte1;
u_char byte2;
u_char byte3;
u_char byte4;
}ip_address;
/*IPv4 首部 */ typedef struct ip_header{
u_char ver_ihl; //
版本(4bits ) +首部长度(4bits )
u_char tos; //
服务类型
u_short tle n; //
总长类型
u_short ide ntificatio n;
//
标识
u_short flags_fo;
//
标志位+段偏移量
u_char ttl;
//
存活时间
u_char proto;
//
协议
u_short crc;
//
首部校验和
ip_address daddr;
//
目的地址
ip_address saddr;
//
源地址
u_int op_pad;
//
选项与填充
}ip_header;
pcap_pkthdrpcap_pkthdrvoid packet_ha ndler(u_char *param, const struct
pcap_pkthdr
pcap_pkthdr
*header, const u_char *pkt_data);
/* packet handler 函数原型 */
void packet_ha ndler(u_char *param, const struct
*header, co
原创力文档


文档评论(0)