网络编程工程实训_实验二 使用Libpcap库实时抓包并解析

实验任务:

使用前期搭建好的开发环境(Centos7.0+gcc+libpcap),使用C/C++语言开发一个应用程序,打开虚拟机网卡(与物理主机在同一个子网的)设备,抓取数据包,并对数据包内容进行解析。

实验内容:

1.使用libpcap库的pcap_open_live()函数,打开虚拟机网卡,并根据打开成功与否,打印“Hello+你的姓名!”(成功)或“Sorry+你的姓名!”(失败)
2.使用libpcap库的pcap_open_live()函数,第四个参数使用0,打开虚拟机网卡,然后使用pcap_next()函数,抓取一个数据包,并根据抓包成功与否,打印“Hello+你的姓名!”(成功)或“Sorry+你的姓名!”(失败)
3.针对你抓取到的数据包进行如下解析:
数据链路层头部:查找并阅读RFC894,针对数据链路层头部进行解析,并输出各个字段名称+对应字段取值,并解释含义。如:TYPE=0x8864表示以太网负载为PPPoE数据,YPE=0x8864表示以太网负载为IP数据。
网络层头部:查找并阅读RFC791,针对IP层头部进行解析,并输出各个字段名称+对应字段取值,并解释含义。
传输层头部:查找并阅读RFC768(UDP),或RFC793,针对传输层UDP头部,或者TCP头部进行解析,并输出各个字段名称+对应字段取值,并解释含义。
常用的协议与RFC对应信息:https://blog.csdn.net/u011474028/article/details/50902951
实验过程填写要求:对以上3项内容,写出详细步骤,并将每一层数据PDU的解析结果抓图放入报告中
实验过程:
实验步骤:

实验内容1和2,见“网络编程工程实训__实验一 使用Libpcap库抓包"

3.实验内容3:
3.1 按照如图分析数据包各字段表示什么内容
网络编程工程实训_实验二 使用Libpcap库实时抓包并解析_第1张图片
在这里插入图片描述
3.2新建loop.c,写代码如图:
网络编程工程实训_实验二 使用Libpcap库实时抓包并解析_第2张图片
在类型字段进一步分析获取的数据包是ARP,RARP还是IP数据包,如果是IP数据包,就继续进一步分析

网络编程工程实训_实验二 使用Libpcap库实时抓包并解析_第3张图片
网络编程工程实训_实验二 使用Libpcap库实时抓包并解析_第4张图片
在高层协议处进一步分析时TCP还是UDP,然后继续分析完ip数据包的部分,若是TCP,继续分析
网络编程工程实训_实验二 使用Libpcap库实时抓包并解析_第5张图片
网络编程工程实训_实验二 使用Libpcap库实时抓包并解析_第6张图片
网络编程工程实训_实验二 使用Libpcap库实时抓包并解析_第7张图片
若是UDP,则这么分析
网络编程工程实训_实验二 使用Libpcap库实时抓包并解析_第8张图片
网络编程工程实训_实验二 使用Libpcap库实时抓包并解析_第9张图片
若是发现设备,
网络编程工程实训_实验二 使用Libpcap库实时抓包并解析_第10张图片
3.3实验结果:
3.3.1 抓到TCP帧:
网络编程工程实训_实验二 使用Libpcap库实时抓包并解析_第11张图片
网络编程工程实训_实验二 使用Libpcap库实时抓包并解析_第12张图片
3.3.2 抓到UDP帧:
网络编程工程实训_实验二 使用Libpcap库实时抓包并解析_第13张图片
在这里插入图片描述
4. 实验总结:
本次实验,完成对抓到的数据包一层层分析,按照抓到的包的类型字段分析是否为IP数据包,若是,则继续分析,若不是,打印是ARP还是RARP。若是IP数据包,继续分析,对高级协议字段,若果是0x06,则说明是TCP报文,以TCP的方式继续分析数据,如果是UDP报文,则高级协议字段为0x11(0x11的十进制就是17),则进入UDP的分析模式。
本实验使用packet[i]来遍历数据包的所有内容,按照各个部分占几个字节,使用packet[j]打印出各部分,本实验中的pcap_loop()函数的第二个参数设置为1,表示只抓一个包便返回,如果要一直无限抓包,可以将参数设置为-1.。

你可能感兴趣的:(操作部分,笔记类,网络编程工程实训,C语言)