一、前言
计算机网络的课程设计要求简直惜字如金
深深地感受到了被课程设计支配的恐惧…
于是就在winpcap jpcap等不像人话的名次中摸不到头脑
下面先让我们认识一下这几个名词
再屡屡他们之间的关系
1.1 JDK中的java.net包
对于Java开发者来说,java.net包里面提供的类和接口提供是TCP UDP两种网络协议的支持
也就是说基于JDK的网络编程都是在运输层之上的
实验要求我们要自己构造ARP ICMP的帧
这时候我们就需要找更加底层的网络编程
1.2 winpcap
winpcap就是一个更加底层的系统
通过这个软件可以在window平台下实现直接的网络编程
但是要注意的是winpcap的实现是使用C/C++实现的
所以我们就需要一个中间件来实现从C到Java的转化
1.3 jpcap
jpcap简单来说就是对于winpcap一层封装
作为一个中间件,调用winpcap,提供一个接口,使Java实现对数据链路层的控制
这样现实了平台的无关性
1.4 网卡
无论在什么操作系统下,我们要发送数据报到网络上,就离不开这样一个东西:网卡
网卡是工作在数据链路层
涉及帧的发送与接收、帧的封装与拆封、介质访问控制、数据的编码与解码以及数据缓存的功能等
无论什么数据报从网络发送到本机,都是通过网卡再保存到本地的缓冲区上
所以我们在网络编程抓包的时候,首先要确定就是从哪块网卡上抓包
二、搭建Java开发环境
网上很多的教程都是基于Eclipse的,并且对于Jar包的说法也是各种版本
下面介绍在IDEA下给大家搭建一下开发环境
2.1 安装winpcap
下载安装包
地址:https://www.winpcap.org/
完成之后,安装到Windows的电脑中即可
2.2 设置Jpcap.dll
特别注意:64位的系统要下载64位的对应的DLL
但是官网上提供的下载是32位系统的!!
我在百度网盘上传了一份64位的
链接:https://pan.baidu.com/s/12X1wm-y_l_LTgQOj-pz1Uw 密码:mu86
下载到本地之后,将Jpcap.dll放到JDK安装路径下的 /jre/bin 目录下
2.3 导入jar包
- 使用IDEA新建一个普通的Java项目
- 导入Jar包
打开项目的Project Structure
将刚才下载Jar包添加到Libraries中
三、抓包demo
到此,我们就搭建好了开发需要的环境
下面跑一个简单的抓包的demo测试一下是否成功
- 在src下新建一个类:JpcapPacket
测试代码:
import java