IP数据报捕获及数据分析

article/2025/9/16 2:47:58

1. JPCAP环境的安装

(1)下载并安装WinPcap(http://winpcap.polito.it/);

 

 

(2)下载Jpcap最新版本;

链接:https://pan.baidu.com/s/163HOWuq4bfNHLnLhQeV3_Q 
提取码:tzbm

 

(3)复制Jpcap.dll到C:\WINDOWS\system32目录下;

 

(4)在Intellij IDEA新建工程IPPackets,导入 jpcap.jar

 jpcap.jar 导入后,工程目录如下

 

 

2.构建简单的抓包程序,进行抓包测试;

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

import jpcap.JpcapCaptor;
import jpcap.NetworkInterface;
import jpcap.packet.IPPacket;
import jpcap.packet.Packet;
import java.io.IOException;public class IPPacketTest {public static void main(String[] args) throws IOException {//第一步绑定网卡设备//返回一个网络设备列表NetworkInterface[] devices = JpcapCaptor.getDeviceList();for(NetworkInterface n:devices) {System.out.println(n.name+"   |   "+n.description);}System.out.println("-------------------------");JpcapCaptor jpcap = null;int caplen = 1514;boolean promiseCheck = true;//caplen限制每一次收到一个数据,只提取该数据包中前多少字节//Promise:设置是否混杂模式。处于混杂模式将接受所有数据包,若之后又调用了包过滤函数setFilter()将不在起任何作用//50这个参数主要用于processPacket()方法,指定超时的时间jpcap = JpcapCaptor.openDevice(devices[0],caplen, promiseCheck,50);//第二步抓包int i=0;while(i<3) {//System.out.println("123");Packet packet = jpcap.getPacket();if(packet instanceof IPPacket && ((IPPacket)packet).version==4) {i++;//将包强制转为IP包IPPacket ip = (IPPacket)packet;System.out.println("版本:IPv4");System.out.println("优先权:" + ip.priority);System.out.println("区分服务:最大的吞吐量:" + ip.t_flag);System.out.println("区分服务:最高的可靠性:" + ip.r_flag);System.out.println("长度:" + ip.length);System.out.println("标识:" + ip.ident);System.out.println("DF:Don't Fragment:" + ip.dont_frag);System.out.println("MF:More Fragment:" + ip.more_frag);System.out.println("片偏移:" + ip.offset);System.out.println("生存时间:" + ip.hop_limit);String protocol = "";switch (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: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.运行JpcapDumper演示Jpcap功能;

4.问题记录 

解决方法:一开始以为是Jpcap环境配置或者版本的问题,但最终确定我所使用的确实是最新版Jpcap.jar,环境配置也没有问题。将依赖包删除再重新导入,它就好了,我不是很懂,为何要如此折磨我。

  • 访问devices[0]产生数组越界异常。

 
解决方法: 产生数组越界是因为JpcapCaptor.getDeviceList()抓取不到数据包,其根本原因是没有运行WinPcap程序,这导致jpcap获取不到端口也抓不到数据包。由于这个问题,查了一整个下午的资料,这也是一个辛酸的故事。在命令行输入net start npf启动WinPcap程序即可。

 

 

 


http://chatgpt.dhexx.cn/article/ev9i0s4E.shtml

相关文章

网络协议格式 | 以太网帧、ARP数据报、IP数据报、UDP数据报、TCP数据报

欢迎关注博主 Mindtechnist 或加入【Linux C/C/Python社区】一起学习和分享Linux、C、C、Python、Matlab&#xff0c;机器人运动控制、多机器人协作&#xff0c;智能优化算法&#xff0c;滤波估计、多传感器信息融合&#xff0c;机器学习&#xff0c;人工智能等相关领域的知识和…

5.2.3 IP数据报(一)IP数据报的格式

5.2.3 IP数据报&#xff08;一&#xff09;IP数据报的格式 我们知道要想实现全球范围的通信除了地址要统一之外&#xff0c;数据格式也要统一&#xff0c;所以就有了IP分组&#xff0c;或者被称之为IP数据报&#xff0c;下面我们来学习IP分组的格式。如图 总体来说一个IP分组…

计算机网络学习:网络层IP数据报、ICMP协议 看一篇就够了!(含具体实验演示)

目录 一、前言 二、IP数据报 1、版本 2、首部长度 3、区分服务 4、总长度 5、标识 6、标志 7、片偏移 8、生存时间 9、协议 10、首部检验和 三、Cisco模拟器实验 四、ICMP协议 1、终点不可达 2、源点抑制 3、超时 4、参数问题 5、改变路由&#xff08;重定向…

ip数据报格式;ip数据报分片

点击打开链接 IPv4数据报格式&#xff1a; 上图表示的数据&#xff0c;最高位在左边&#xff0c;记为0位&#xff1b;最低位在右边&#xff0c;记为31位。在网络中传输数据时&#xff0c;先传输0~7位&#xff0c;其次是8~15位&#xff0c;然后传输16~23位&#xff0c;最后传输…

3.7计算机网络(IP数据报格式,IP数据报分片,IPv4)

目录 &#x1f353;IP &#x1f347;1.IP数据报格式 &#x1f351;2.IP数据报分片 &#x1f966;3.IPv4 1.分类的IP地址 2.网络地址转换NAT &#x1f9ca;个人主页&#xff1a;个人主页 &#x1f31f;系列专栏&#xff1a;计算机网络专栏 &#x1f353;IP &#x1f347;1…

IP数据报的发送和转发过程

本文主要讲述了 IP 数据报的发送和转发过程&#xff0c;参考&#xff1a;计算机网络微课堂 IP 数据报的发送和转发过程包含以下两部分&#xff1a; 主机发送 IP 数据报路由器转发 IP 数据报 说明&#xff1a;后续举例忽略了 ARP 协议获取目的主机或路由器接口的 MAC 地址的过…

IP数据报头部

1.4位版本号&#xff1a;对于ipv4&#xff0c;其值是4 2.4位头部长度&#xff1a;表示ip的头部有多少4字节。4位最大表示15&#xff0c;因此ip数据报头部最长是60字节 3.16位总长度&#xff1a;以字节为单位。最大的位2^16-1,但是由于MUT的限制&#xff0c;超过MUT的都被分片…

IP数据报报头详解

在IP网络中传输的单位称为IP数据包&#xff0c;它包括IP报头与更高层协议的相关数据。IP数据包的报头至少为20个字节&#xff0c;其中包括版本号,报头长度&#xff0c;服务类型&#xff0c;数据报总长度&#xff0c;标识&#xff0c;标志&#xff0c;片偏移&#xff0c;生存时间…

[计算机网络] UDP数据字段 划分 IP数据报

题目 : 一个UDP用户数据报的数据字段为8192字节。在链路层要使用以太网来传送。 试问应当划分为几个IP数据报片?说明每一个IP数据报片的数据字段长度和 片偏移字段的值。 分析 : 首先我们知道 U D P 数 据 报 首 部 8 字 节 数 据 部 分 UDP数据报首部8字节数据部分 UDP数据…

IP 数据报首部分析

来来来, 爷们. 不是一直说纸上得来终觉浅么. 今咱就抓个数据报具体看一看真实网络中的 IP 报首部. 操作方法很简单, 使用wireshark进行抓包. 抓包后随便找个包看一下就行, 毕竟所有通信的包都需要经过网络层.(同时, wireshark会对协议的相关信息给出标识, 更方便我们查看) 其中…

​IP数据报的格式(计算机网络)

目录 一、IP 数据报由首部和数据两部分组成 二、IP 数据报的分片 三、IP数据报分片实例 四、IP 数据报首部的固定部分中的各字段 五、协议字段的作用 一、IP 数据报由首部和数据两部分组成 版本——占 4 位&#xff0c;指 IP 协议的版本 目前的 IP 协议版本号为 4 (即 IPv4…

Wireshark分析IP数据报

Wireshark分析IP数据报 1. IP数据报格式 总概 2. IP数据报首部的固定部分各字段 版本【4位】&#xff1a;IPv4或IPv6首部长度【4位】&#xff1a;单位是32bit&#xff08;4字节&#xff09;&#xff0c;比如&#xff1a;首部最小长度为20字节&#xff0c;此时为&#xff1a;…

IP数据报的格式

IP数据报的格式能够说明IP协议具有什么功能&#xff0c;在TCP/IP的标准中&#xff0c;各种数据格式常以32位&#xff08;4字节&#xff09;为单位来描述。 一个IP数据包有首部和数据两部分组成。首部的前一部分是固定长度&#xff0c;占20字节&#xff0c;是所有IP必须有的。在…

图解IP数据报格式

IP数据报格式详解 IP数据报的首部格式及其内容是实现IP协议的主要功能的基础&#xff0c;因此我们有必要搞清楚这部分的内容。 一个IP数据报由20字节的固定部分和最大40字节的可变部分组成。 ■ 固定部分&#xff1a;指每个IP数据报首部都必须包含的部分。 ■ 可变部分&#…

计算机网络---IP数据报

&#xff08;一&#xff09;IP数据报格式 TCP/IP协议栈 IP数据报格式&#xff1a; 版本&#xff1a;IP协议的版本号 IPv4/IPv6 首部长度&#xff1a;单位是4B&#xff0c;最小为5&#xff0c;以4字节为单位 固定部分20B 区分服务&#xff1a;指示期望获得哪种类型的…

【IP协议(一)】——IP数据报格式及其含义,IP数据报的切分

&#x1f482; 个人主页:努力学习的少年&#x1f91f; 版权: 本文由【努力学习的少年】原创、在CSDN首发、需要转载请联系博主&#x1f4ac; 如果文章对你有帮助、欢迎关注、点赞、收藏(一键三连)和订阅专栏哦 &#x1f680; IP数据报格式 版本&#xff1a;占4位&#xff0c;指…

IP数据报的首部

IP数据报的首部 注&#xff1a;IP数据报的格式&#xff0c;能够说明IP协议都具有什么功能。 1. IP数据报首部——固定部分 1.1 版本 占4位&#xff0c;指IP协议的版本。通信双方使用的IP协议的版本必须一致。IP协议版本号为4(即IPv4)&#xff0c;IP协议版本号为6(即IPv6)…

计算机网络——IP数据报分析

目录 &#x1f6f4;一、IP数据报简介 &#x1f6f9;二、Wireshark抓包分析 &#x1f6f4;一、IP数据报简介 版本&#xff1a;占4比特&#xff0c;表示IP协议的版本。通信双发使用的IP版本必须一致 首部长度&#xff1a;占4比特&#xff0c;表示IP数据报首部的长度。该字段的取…

IP数据报格式详解

IP协议提供不可靠无连接的数据报传输服务&#xff0c;IP层提供的服务是通过IP层对数据报的封装与拆封来实现的。IP数据报的格式分为报头区和数据区两大部分&#xff0c;其中报头区是为了正确传输高层数据而加的各种控制信息&#xff0c;数据区包括高层协议需要传输的数据。 IP…

网络层——IP数据报详解

IP数据报格式 各个字段的分析&#xff1a; 版本 4位    指IP协议的版本&#xff0c;通信双方使用的IP协议版本必须保持一致。主要用两个版本IPV4、IPV6首部长度 4位   4位表示的最大十进制数是15。注意&#xff0c;首部长度字段所表示数的单位是32位&#xff08;也就是4个…