计算机网络原理 实验3 《IP数据包捕获及数据分析》

一、实验目的

JPCAP是一个能够捕获、发送网络数据包的Java类库包。这个包用到了Winpcap/Libpcap和原始套接字API,目前,JPCAP在FreeBSD 3.x、Linux RedHat 6.1、Solaris 和Microsoft Windows 2000/XP系统上已经做过测试,并且支持Ethernet, IPv4, IPv6, ARP/RARP, TCP, UDP, ICMPv4协议。Java语言虽然在TCP/UDP传输方面给予了良好的定义,但对于网络层以下的控制,却是无能为力的。JPCAP扩展包弥补了这一点。JPCAP实际上并非一个真正去实现对数据链路层的控制,而是一个中间件,JPCAP调用Winpcap/Libpcap,给Java语言提供一个公共的接口,从而实现了平台无关性,并能够捕获、发送网络数据包。

通过本次实验熟悉使用JPCAP捕获数据包,并从捕获的数据了解IP数据包包含的信息。

二、实验内容

1、使用Keita Fujiiy编写的基于JPCAP 的JPCAPDumper软件捕获网络数据,了解JPCAP能实现的功能。JPCAPDumper为英文程序,可参考反编译和汉化后的程序数据包捕获器,功能一致;
2、熟悉JPCAP API的常用类(ARPPacket、DatalinkPacket、IPAddress、IPPacket等);
3、熟悉JPCAP环境的安装步骤;
4、使用JPCAP编写简单的ip数据包捕获程序;
5、参考反编译和汉化的数据包捕获器代码,实现可视化IP数据包捕获程序(选做)。

三、实验方法

1、利用jpcap.jar、substance.jar等相关Java工具包提供的方法、类,实现对本机网络端口的获取、侦听及对各类协议的数据包的抓取、解析;
2、使用Java Swing构造图形化抓包程序JPcapDumper实现对抓包的图形化控制。主要使用的开发环境为NetBeans。

四、实验步骤

1、JPCAP环境的安装(Windows 10)
(1) 安装WinPcap (http://winpcap.polito.it/),选定版本为4.1.3

(2) 下载并解压缩Jpcap的最新版本

(3) 复制Jpcap.dll到C:\WINDOWS\system32目录下
(4) 在NetBeans环境中导入jpcap.jar包、substance.jar包,并启动WinCap程序。

2、构建简单的抓包程序进行抓包测试
构建简单的Java程序进行抓包,检测WinCap与JPCAP工具是否都正确起作用。以抓取IP数据包为例,JPCAP抓包基本步骤为:绑定网络设备、抓包、分析。代码如下。

package csu;import jpcap.JpcapCaptor;
import jpcap.NetworkInterface;
import jpcap.packet.IPPacket;
import jpcap.packet.Packet;
import java.io.IOException;public class Test {public static void main(String[] args) {/*--            第一步绑定网络设备           --*/NetworkInterface[] devices = JpcapCaptor.getDeviceList();for (NetworkInterface n : devices) {System.out.println(n.name + "   |   " + n.description);}System.out.println("---------------------------------------------------");JpcapCaptor jpcap = null;// 限定抓取数据包的多少个字节int caplen = 1512;// 设置是否混杂模式。// 处于混杂模式则接收所有的数据包,若之后又调用了包过滤函数getFilter()则不起作用boolean promiseCheck = true;// openDevice方法获得某个网卡接口的连接// 50主要用于processPacket()方法,设定超时时间try {jpcap = JpcapCaptor.openDevice(devices[3], caplen, promiseCheck, 50);} catch (IOException e) {e.printStackTrace();}/*--               第二步抓包               --*/int i = 0;while (i < 10) {Packet packet = jpcap.getPacket();if (packet instanceof IPPacket && ((IPPacket) packet).version==4) {i++;IPPacket ip = (IPPacket) packet;System.out.println("版本:IPv4");System.out.println("优先权:"+ip.priority);System.out.println("服务设置-是否为最大吞吐量:"+ip.t_flag);System.out.println("服务设置-是否有更低时延:"+ip.d_flag);System.out.println("服务设置-是否有最高的可靠性:"+ip.r_flag);System.out.println("长度:"+ip.length);System.out.println("标识:"+ip.ident);System.out.println("数据偏移设置-有无碎片标识:"+ip.rsv_frag);System.out.println("数据偏移设置-末尾碎片标识:"+ip.dont_frag);System.out.println("数据偏移设置-有碎片标识:"+ip.more_frag);System.out.println("分段偏移:"+ip.offset);System.out.println("生存时间(周期):"+ip.hop_limit);String protocol = "";switch (new Integer(ip.protocol)) {case 1: protocol="ICMP"; break;case 2: protocol="IGMP"; break;case 6: protocol="TCP"; break;case 8: protocol="EGP"; break;case 9: protocol="IGP"; break;case 17: protocol="UDP"; break;case 41: protocol="IPv6"; break;case 89: protocol="OSPF"; break;default: protocol="Other"; break;}System.out.println("协议:"+protocol);System.out.println("源IP:"+ip.src_ip.getHostAddress());System.out.println("目的IP:"+ip.dst_ip.getHostAddress());System.out.println("源主机名:"+ip.src_ip);System.out.println("目的主机名:"+ip.dst_ip);System.out.println("----------------------------------");}}}
}

3、可视化监控数据包并分析
参考反编译和汉化的数据包捕获器代码,以上述测试代码的核心部分为基础,使用NetBeans实现可视化IP数据包捕获程序。即实现数据包捕获器菜单栏里统计选项内的功能。

五、实验结果

1、简单抓包测试程序测试结果:

2、可视化监控抓包程序IP Packets Catcher。
(1) 初始化,上面是控制按钮,有两个页面:detail & list页面显示抓包结果,Configure页面对抓包过程进行配置。点击Config按钮进入Configure页面,分为两个个模块:左侧是配置,右侧是使用说明。

(2) 回到detail & list页面点击Start按钮开始抓包,点击Stop按钮暂停抓包。左侧显示抓到的所有的包的简略信息列表,右侧显示的是最近一次抓到的包的信息。

对左侧任一表项双击,即可获取该数据包的详细信息(覆盖在右侧展示区域)。

六、实验结论

对于IPv4数据包,主要包含的信息包括IP版本、优先权、长度、服务设置、标识、数据偏移设置、分段偏移、生存周期、协议、源IP、目的IP、源主机名、目的主机名等等。对于其他的数据包,主要的信息也包括长度、生存周期、协议、源/目的IP等等信息。

七、实验小结

本次实验主要是体验了网络数据包的抓取与解析等实际的工作,对各类协议的数据包头部组成有了更为深入和直观的了解,对JPCAP等抓包相关工具的使用更加熟悉。实验中发现的一点是双绞线接入的网络与WIFI接入的网络端口应该是不同的,因为两种网络能抓到包的端口不同。实验遇到的问题是一开始忘记打开WinCap程序导致jpcap获取不到端口也抓不到数据包,仔细检查实验流程解决了这个问题。

IPv4即网际协议版本4(英语:Internet Protocol version 4,IPv4),又称互联网通信协议第四版,是网际协议开发过程中的第四个修订版本,也是此协议第一个被广泛部署的版本。IPv4是互联网的核心,也是使用最广泛的网际协议版本,其后继版本为IPv6,直到2011年,IANA IPv4位址完全用尽时,IPv6仍处在部署的初期。IPv4是一种无连接的协议,操作在使用分组交换的链路层(如以太网)上。此协议会尽最大努力交付数据包,意即它不保证任何数据包均能送达目的地,也不保证所有数据包均按照正确的顺序无重复地到达。这些方面是由上层的传输协议(如传输控制协议)处理的。

IPv4使用32位(4字节)地址,因此地址空间中只有4,294,967,296(2)个地址。不过,一些地址是为特殊用途所保留的,如专用网络(约1800万个地址)和多播地址(约2.7亿个地址),这减少了可在互联网上路由的地址数量。随着地址不断被分配给最终用户,IPv4地址枯竭问题也在随之产生。基于分类网络、无类别域间路由和网络地址转换的地址结构重构显著地减少了地址枯竭的速度。

八、附录

可视化监控抓包程序IP Packets Catcher源码(NetBeans 项目)地址:IP-Packets-Catcher

计算机网络原理 实验3 《IP数据包捕获及数据分析》相关推荐

  1. 【计算机网络 24】TCP/IP数据包结构详解

    一.前言 一般来说,网络编程我们只需要调用一些封装好的函数或者组件就能完成大部分的工作,但是一些特殊的情况下,就需要深入的理解 网络数据包的结构,以及协议分析.如:网络监控,故障排查等. IP包是不安 ...

  2. 南京邮电大学网络信息安全——网络数据包捕获WireShark(实验一)

    南京邮电大学网络信息安全课程实验:网络数据包捕获WireShark(实验一) 系列前言 实验目标 实验环境 实验一过程记录 目标一:使用正确的姿势打开WireShark 目标二:只捕获TCP的流量包 ...

  3. IP数据包分片重叠部分的重组问题

    原作者:Haboob Team 翻译:李华峰(邪灵) 介绍 本文将介绍 IDS 的工作原理和讨论 IP 数据包分片的重组过程,并研究不同操作系统在实现重组时的差异性. IDS(入侵检测系统)简介 ID ...

  4. 计算机网络ip数据包分析题,计算机网络课程设计-IP数据包解析实验报告

    计算机网络课程设计-IP数据包解析实验报告 解析 IP数据报实验报告目录目录 21.课程设计目的 .22.课程设计要求 .23.相关知识 .24.课程设计分析 .64.1 网卡设置64.2 使用套接字 ...

  5. 计算机网络ip数据包分析题,计算机网络课程设计_IP数据包的捕获及分析.doc

    CENTRAL SOUTH UNIVERSITY 计算机网络课程设计报告 目录 第一章 课程设计的目的与要求1 1.1 课程设计的目的1 1.2 课程设计的要求1 第二章 课程设计的内容3 2.1 课 ...

  6. 计算机网络系统结构分析 pdf,计算机网络(实验三:数据包结构分析).pdf

    <计算机网络>课程实验报告 实验三:数据包结构分析 姓名 院系 学号 任课教师 指导教师 实验地点 计 704 实验时间 五 7-8 出勤.表现得分 实验报告 实验课表现 (10) 实验总 ...

  7. ARP原理与IP数据包

    学习目标 IP数据包格式 ICMP协议介绍 ARP攻击原理 1.网络层功能 定义了基于IP协议的逻辑地址 连接不同的媒介类型 选择数据通过网络的最佳路径 2.ICMP协议(Internet 控制消息协 ...

  8. 网络编程,捕获IP数据包

    任务三 网络编程 1. IP数据报的格式说明: IP数据包格式包含了标头固定部分,标头可变部分和数据区三部分.IP数据报标头部分固定为20个字节,其中包含了12个参数域,各参数域隐含着网间协议的传输机 ...

  9. C++ 捕获与解析IP数据包 (winpcap)

    源代码链接:https://download.csdn.net/download/chd_lcj/10891420 (不知道为什么积分涨到4积分了...原先只是单纯的想分享下的,结果最低只能设置1积分 ...

最新文章

  1. python编程怎么做游戏主播_如何成为一名成功的编程主播?
  2. word取消空格显示为点
  3. Downloader Middlewares
  4. OceanBase入选Forrester报告,为什么原生分布式数据库正成为核心系统升级首选?
  5. std::sort使用
  6. 同时调用函数和此函数的返回函数:func()()
  7. 计算机机房里面难闻的气味,新装中央空调气味刺鼻为什么?怎么办?-中央空调 异味 刚开...
  8. 创建JSON集合使用JSONArray.fromObject 转化后得到的jsonArray集为空?
  9. 【论文笔记】基于聚类特征深度LSTM的语音情感识别
  10. 计算机科学的研究方法,计算机科学与技术课题研究的方法论
  11. 网页监控系统设计之使用mjpg-streamer
  12. 整理NLPIR基本功能函数
  13. 塞规公差带图_工作量规公差带.ppt
  14. win7打印机找不到USB001接口的解决方法
  15. 常用系统修复软件绿色工具包
  16. 【SpringCloud】Could not find artifact org.springframework.cloud:spring-cloud-starter-xxx
  17. asp.net实现无刷新ajax技术登录界面
  18. Android TV开发 焦点返回ListView时, 返回到离开时的位置
  19. edge播放视频HTML5黑屏,Win10 edge浏览器播放视频黑屏解决方法
  20. 【spark基础】之client模式下--conf读取外部文件

热门文章

  1. 华硕主板win11 AirPods pro 蓝牙耳机 蓝牙音响断连 播放断断续续
  2. VL01N、VL02N保存到数据库后触发的增强
  3. 普源1GHz频谱分析仪DSA710
  4. 不必追核心,前进途中路自明
  5. Speech Synthesis(文字转语音)
  6. c语言延时程序_科技文化艺术节 | 电子信息学院“剑指疫情,策‘码扬‘编”程序设计大赛...
  7. fence机制 linux_Cluster集群和fence设备
  8. win32 ShowCursor遇到的问题
  9. 利用几何画板Sketchpad画球体的方法
  10. 城市交通导航最短路径查询