jiWangShiYanByJava

计网实验,抓包,java,jigloo界面开发,柱状图,文件自定义保存

基于Winpcap的网络流量统计分析系统的设计与实现

一、实验内容描述

本实验是用java实现的网络抓包程序,在windows环境下安装winpcap4.0和jpcap6.0后,下载eclipse和jigloo插件(一种在eclipse底下作图形化开发的工具),将其安装好,然后就可以进行java的网络抓包图形化开发了。

基础功能:

(1) 完成局域网数据包的捕获和统计,能够识别并统计各类数据包,包括TCP、UPD、ICMP、ARP、广播数据包等;

(2)能够捕获一段时间的数据包,分析统计各类数据包的数量;

(3)能够图形化显示数据包统计结果;

(4)进行简单的流量分析

扩展功能:

(1)可自定义过滤器过滤条件,自定义捕获数据包最大字长,而有选择地捕获数据包;

(2)对捕获的数据包可查看数据报时间、源IP地址、目的IP地址、首部长度、数据长度、是否分段、分段偏移量、首部内容、数据内容等属性。

(3)对捕获结果进行简单流量分析并柱状图显示,并可保存结果至本地。

二、原理与关键技术

2.1 网络抓包技术原理

网络层上有各种各样的数据包,它们以不同的帧格式在网络层上进行传输,但是在传输时它们都遵循相同的格式,即有相同的长度,如果一种协议的帧格式达不到这种长度,就让其补齐,以达到我们的要求。

2.2 网络抓包关键技术

无论是在windows操作系统下还是在linux操作系统下,要想捕获网络上的数据包,必须要对网卡进行控制,因为本机的数据报从网络上来到本机是通过网卡然后再保存到本地缓冲区上的,所以要抓获网包就必须调用网卡驱动中的对外函数,在linux系统中有net.h文件,可以调用net.h文件中的函数来操作网卡,可以直接编程实现,但为了更方便的使用,可以安装一个叫libpcap的软件,这样调用函数更好用,而在windows系统中,因为源代码不对外公开,所以要安装一个叫winpcap的软件,这样用C或VC++就可以实现了,但因为我用的是java语言来实现的,所以无论是在哪个系统都要安装一个叫jpcap的软件,它本身就把底层的函数又封装了一下,这样就可以让java来使用了。

三、设计与实现

3.1 基于java的设计方案

我的这个网络抓包程序是图形化操作界面,在菜单栏点击抓包按钮后选择网卡和过滤字还有最长字长,点击开始,然后就可以开始抓包了,在主界面中就会显示出一行又一行的数据,这些数据就是抓获到的数据包。

3.2 具体实现

1、安装winpcap4.0和jpcap6.0

2、下载eclipse3.3和jigloo,jigloo是eclipse底下的插件,是用来支持eclipse底下的java 图形化开发的。

3、编写java抓包程序:

核心文件有四个:主程序;抓包程序;抓包选项程序对话框程序;流量统计

非核心文件有两个:柱状图显示分析;文件自定义保存

主程序文件:提供主界面及其控件的显示,并可通过菜单功能点击间接调用其它程序文件,

文件名:JFrameMain.java

在这里定义了一个向量r,当有数据包产生时,便将数据包赋值给r,rows.AddElement(r)语句便将r添加到向量rows中,然后tabledisplay.addNotify();语句就会刷新界面将新的数据包显示出来。

抓包程序:抓包核心程序,由Jcapturedialog调用,包括“开始”、“停止”等功能

文件名:Netcaptor.java

定义一个抓包对象JpcapCaptor jpcap = null;但点击开始时调用private void startCaptureThread()方法开始抓包,jpcap.processPacket(1, handler);语句能够反复调用handler所指向的方法,这个方法中定义的packet就是网络上抓到的数据包,经过frame.dealPacket(packet);就可以显示在主界面上。

抓包选项程序对话框:提供用户自定义过滤条件,选择是否为混杂模式,自定义捕获字长,选择网卡等数据包捕获属性自定义接口。由主程序调用

文件名:Jcapturedialog.java

这一部分主要是界面操作,根据jigloo插件对不同的按钮和文本框还有其他的组件设置监听操作,以激发不同的函数操作,主要是devices = JpcapCaptor.getDeviceList();语句和

jpcap=JpcapCaptor.openDevice(devices[netJComboBox.getSelectedIndex()],caplen,

CheckBox.isSelected(),50);语句要选择一下监听的网卡,比如说笔记本就有两个网卡,一个无线一个有线,选择一下就会监听相应的网卡。函数

publicstatic JpcapCaptor getJpcap(JFrame parent){

new Jcapturedialog(parent).setVisible(true);

returnjpcap;

}

返回jpcap,这个jpcap就是对应的选择上的网卡对象,接下来就从对应的网卡对象jpcap上不断得到数据包。

文件自定义保存:提供文件自定义保存功能

文件名:SaveFile.java

对newCount中数据进行保存

柱状图显示:提供柱状图可视化分析接口

文件名:newChart1.java

使用Jcommon.jar及jfreechart.jar函数调用柱状图对newCount中数据图形化显示

流量统计:提供已捕获数据包数量共有访问接口,及流量分析

文件名:newCount.java

使用Jcommon.jar及jfreechart.jar函数调用柱状图对newCount中数据图形化显示

java 柱状图jar_GitHub - mafulong/NetworkExper: 计网实验,抓包,java,jigloo界面开发,柱状图,文件自定义保存...相关推荐

  1. 计网 | Wireshark抓包和分析腾讯视频点播详细过程

    介绍 这次抓包实践的目的是搞清楚腾讯视频Windows客户端在点播视频的时候,视频数据是如何传输来到客户端的. 最终分析得出结论,腾讯视频Windows客户端(具体版本见正文)点播视频时,使用了资源重 ...

  2. 云南大学软件学院java实验九_云南大学 软件学院 计网实验

    <云南大学 软件学院 计网实验>由会员分享,可在线阅读,更多相关<云南大学 软件学院 计网实验(6页珍藏版)>请在人人文库网上搜索. 1.云南大学软件学院实 验 报 告课程: ...

  3. 2020计网实验报告

    title: 计网实验报告 date: 2020-12-13 16:31:07 tags: *实验名称* 实验1 WireShark的使用 *实验时间* 2020年10月7日 10:00-11:40时 ...

  4. BUAA 计网实验笔记 3

    BUAA 计网实验笔记 3 -第三周网络层实验 这周实验还是挺繁琐的,尤其是VLAN间通信,重点理解一下.要不然你可能也像我一样,实验4小时 实验(1) ARP分析 ARP协议是用来建立mac地址和i ...

  5. BUAA 计网实验笔记 1

    BUAA 计网实验笔记 1 ​ - 第一周网络实验入门 尽管笔者事先预习了相关实验内容,但是,还是做了2小时的实验. (流下憨憨的眼泪,特此记录一下,后来者可留心注意下) 问题1:设备认知 在线实验平 ...

  6. 【计网实验——prj4】广播网络实验

    [计网实验--prj4]广播网络实验 实验要求 1. 实现节点广播的broadcast_packet函数 2. 验证广播网络能够正常运行 • 从一个端节点ping另一个端节点 3. 验证广播网络的效率 ...

  7. 【计网实验——prj9】路由器转发实验

    [计网实验--prj9]路由器转发实验 实验要求 实验内容一 运行给定网络拓扑(router_topo.py) 在r1上执行路由器程序./router,进行数据包的处理 在h1上进行ping实验 Pi ...

  8. 3服务器是否明确返回了文件内容,云南大学软件学院计网实验2.doc

    云南大学软件学院计网实验2 云南大学软件学院 实 验 报 告 课程: 计算机网络原理实验 任课教师: 姓名: 学号: 专业: 成绩: 实验二.应用层协议分析实验报告 启动Ethereal分组俘获器.开 ...

  9. 【计网实验——prj6】生成树机制实验

    [计网实验--prj6]生成树机制实验 实验要求 1. 基于已有代码,实现生成树运行机制,对于给定拓扑(four_node_ring.py),计算输出相应状态下的最小生成树拓扑; 2. 自己构造一个不 ...

最新文章

  1. Nagios Web 页面声音报警
  2. Python第四章-字典
  3. 博士申请 | 北京理工大学宋承天老师组招收目标感知与识别方向博士生
  4. VC++动态链接库编程之MFC DLL
  5. 4修改初始值_Java基础篇4——循环
  6. Linux环境下压缩与解压命令大全
  7. 动态代理和静态代理的区别_代理,是动态和静态的吗?
  8. python基础:集合操作
  9. 谷歌翻译突然用不了了
  10. pdf转word转换器绿色版
  11. 什么是变量?变量的命名规则?变量的分类?(问号三连)
  12. (31)2021-01-20(JSON字符串和本地存储)
  13. 案例23-服务出现频繁掉线情况
  14. vue+element 获取中文首字母,转换成大写
  15. 计算机硬件和软件英语,计算机组成与设计:硬件/软件接口(英文版 原书第5版 ARM版)...
  16. 数据库发展史 特性,安装区别
  17. OpenCV图形处理
  18. 2- ARM Cortex-M体系结构
  19. 《论语》原文及其全文翻译 学而篇13
  20. 关于交叉验证的一些说明

热门文章

  1. python 无头模式 绕过检测_网络爬虫之使用pyppeteer替代selenium完美绕过webdriver检测...
  2. 全志a33android编译,编译lichee - 全志A33的环境搭建
  3. oracle运维平台开发,Oracle数据库运维
  4. Python基础闯关失败总结
  5. python __builtins__ frozenset类 (27)
  6. 基于HOG特征的Adaboost行人检测
  7. 方法的重写、重载及隐藏
  8. 用AutoML找到更小、更快、更好的模型,谷歌开源Model Search
  9. 30万总奖金·垃圾分类挑战赛进入最后冲刺(附baseline完整分享)
  10. 仅用10个月!中国高中生拿下Kaggle Master,怎么做到的?