IP数据包的捕获与解析.ppt

IP数据包的捕获与解析.ppt

ID:48029613

大小:428.00 KB

页数:27页

时间:2020-01-11

IP数据包的捕获与解析.ppt_第1页
IP数据包的捕获与解析.ppt_第2页
IP数据包的捕获与解析.ppt_第3页
IP数据包的捕获与解析.ppt_第4页
IP数据包的捕获与解析.ppt_第5页
资源描述:

《IP数据包的捕获与解析.ppt》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、IP数据包的捕获与解析编写程序捕获IP数据包,并将解析的结果显示出来本例中,我们要对IP包头除选项字段外的内容进行解析具体要求如下:生成可执行文件PackParse.exe运行该文件的命令行格式为:PackParsepack_sum(pack_sum是要抓取的IP包的数量)要将解析的IP头的内容显示在控制台上,格式:头部长度:xx服务类型:xx总长度:xx标识符:xx标志位:xx,DF,MF片偏移:xx生存周期:xx协议:xx头部校验和:xx源IP地址:xx目的IP地址:xx运行结果演示如下页关键问题-启动winsock使用函数WSAStartup()完成winsock的启动int

2、WSAStartup(WORDwVersionRequested,LPWSADATAlpWSAData);具体代码:WSADATAWSAData;if(WSAStartup(MAKEWORD(2,2),&WSAData)!=0){……}本程序请求使用的Socket版本返回请求的Socket版本的信息关键问题-初始化socket(创建)使用socket()函数来给应用程序创建一个套接字SOCKETsocket(intaf,inttype,intprotocol);Socket使用的协议族TCP/IP为AF_INETSocket类型,有三种,本程序采用rawSocket使用的协议,本程

3、序为IPPROTO_IP关键问题-初始化socket(创建)具体代码SOCKETsock=socket(AF_INET,SOCK_RAW,IPPROTO_IP);if(sock==INVALID_SOCKET){……….}关键问题-初始化socket(绑定)socket()创建了一个套接口后,需要将该套接口与该主机上提供服务的某端口联系在一起,bind()函数用于完成这样的绑定intbind(SOCKETs,conststructsockaddrFAR*name,intnamelen);刚才创建的Socket的名称sockaddr_in结构的socket地址(点这里)地址参数(na

4、me)的长度Sockaddr_in结构:structsockaddr_in{shortintsin_family;/*通信类型*/unsignedshortintsin_port;/*端口,2bytes*/structin_addrsin_addr;/*IP,4bytes*/unsignedcharsin_zero[8];/*填充空白信息*/};in_addr结构定义如下: structin_addr{ unsignedlong s_addr ;}返回AF_INETsin_portsin_addrsin_zero关键问题-初始化socket(创建/绑定)charhostName[1

5、28];gethostname(hostName,100);……hostent*pHostIP;gethostbyname(hostName);……sockaddr_inhost_addr;host_addr.sin_family=AF_INET;host_addr.sin_port=htons(6000);host_addr.sin_addr=*(in_addr*)pHostIP->h_addr_list[0];if(bind(sock,(PSOCKADDR)&host_addr,sizeof(host_addr))==SOCKET_ERROR)………….关键问题-设置网卡混杂模

6、式通常,网卡不能接收mac地址不是自己的IP数据包,要想能捕获所有IP数据包,应该先将网卡的工作模式设置为“混杂”代码:DWORDdwBufferLen[10];DWORDdwBufferInLen=1;DWORDdwBytesReturned=0;WSAIoctl(sock,IO_RCVALL,&dwBufferInLen,sizeof(dwBufferInLen),&dwBufferLen,sizeof(dwBufferLen),&dwBytesReturned,NULL,NULL…………关键问题-接收IP数据包要从套接口上接收数据,就要使用recv()函数。intrecv(S

7、OCKETs,charFAR*buf,intlen,intflags);刚才创建的Socket的名称用于接收数据的缓冲区缓冲区的长度接收方式,0表示正常接收关键问题-接收IP数据包charbuffer[65535];while(捕获数据包没有结束){recv(sock,buffer,65535,0);{关键问题-定义IP数据包数据结构在对IP解析前,先要构在一个IP头部的数据结构,这个结构和IP包头的结构要一一对应typedefstruct{union{unsigne

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

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

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