网络编程-ip包捕获实验报告

网络编程-ip包捕获实验报告

ID:2229622

大小:4.12 MB

页数:11页

时间:2017-11-15

网络编程-ip包捕获实验报告_第1页
网络编程-ip包捕获实验报告_第2页
网络编程-ip包捕获实验报告_第3页
网络编程-ip包捕获实验报告_第4页
网络编程-ip包捕获实验报告_第5页
资源描述:

《网络编程-ip包捕获实验报告》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、IP数据包捕获程序设计一、实验目的本实验让同学们将所学知识加以运用,并加强掌握IP数据报格式、理解IP协议的工作原理及工作过程、掌握捕获IP等数据报以及对捕获到的IP数据报进行分析的能力。并希望通过探索,在实践应用中提高自身的编程能力。二、实验软件VisualStudio2008三、实验步骤1、定义IP头部的数据结构 IP数据包由IP头部与IP数据构成,需要自行构造的是IP数据包的头部。在解析IP头部的各个字段之前,首先需要构造IP头部的数据结构,包括1字节的版本与头部长度、1字节的服务类型、2字节的总长

2、度、2字节的标识符、2字节的标志位与片偏移、1字节的生存周期、1字节的协议、2字节的头部校验、4字节的源地址与4字节的目的地址。这里,不需要构造选项与填充字段。2、创建原始套接字 为了不活经过本地网卡的IP数据包,需要使用原始套接字来进行通信。首先,调用socket()函数创建原始套接字,SOCK_RAW表示原始套接字,IPPROTO_IP表示IP协议;然后,获取主机名和主机ip,并且与sock绑定;3、接受与解析IP数据包 默认情况下,网卡不会接收目的地址不是自己的IP数据包,也就是说应用程序无法接收无

3、关的数据包。将网卡设置为混杂模式,然后,调用recv()函数接收通过网卡的IP包,由于IP包的最大长度为65535字节,因此接收缓冲区的大小不能小于65535字节;最后,将IP包头部复制到定义的IP头部结构中,并且依次将那些需要解析的字段值取出。 下面给出的是接收与解析IP数据包的代码主程序流程图如下所示:开始输入Ip包数目建立Socket库绑定创建原始Socket设置ip头操作选项网卡绑定Socket设置网卡混杂模式接下图输入Ip包数目接上图:解析ip包头部字段关闭原始Socket解除Socket库绑定

4、结束四、实验结果和分析源代码:#include"stdafx.h"#include"stdio.h"#include"winsock2.h"#include"ws2tcpip.h"#includeusingnamespacestd;#pragmacomment(lib,"ws2_32.lib")//加载ws2_32.lib#defineIO_RCVALL_WSAIOW(IOC_VENDOR,1)typedefstructIP_HEAD{union{unsignedcharVersion

5、;//版本(字节前位)unsignedcharHeadLen;//头部长度(后位)};unsignedcharServiceType;//服务类型unsignedshortTotalLen;//总长度unsignedshortIdentifier;//标识符union{unsignedshortFlags;//标志位(字前位)unsignedshortFragOffset;//片偏移(后位)};unsignedcharTimeToLive;//生存时间unsignedcharProtocol;//协议un

6、signedshortHeadChecksum;//头部校验和unsignedintSourceAddr;//源IP地址unsignedintDestinAddr;//目的IP地址unsignedcharOptions;//选项}ip_head;voidmain(){//启动winsockWSADATAWSAData;if(WSAStartup(MAKEWORD(2,2),&WSAData)!=0){cout<

7、t,这里是原始socketSOCKETsock=socket(AF_INET,SOCK_RAW,IPPROTO_IP);if(sock==INVALID_SOCKET){cout<

8、endl;return;}*///获得本地主机名charhostName[128];if(gethostname(hostName,100)==SOCKET_ERROR){cout<

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。