一、设计原理

1.PCAP文件构成

参考http://blog.csdn.net/gulu_gulu_jp/article/details/50494909

PCAP文件由一个PCAP文件头和多个PCAP数据包组成,PCAP数据又由数据包头和数据包内容组成。数据包内容才是我们将要进行分析还原的TCP/IP协议数据。PCAP总体结构如图 11所示:

图 11 PCAP文件总体结构

以TCP协议为例,详细解析PCAP文件格式。PCAP前24个字节为文件头,包含了文件信息,其结构如图 11所示。接着16个字节为TCP协议数据包包头,记录这个包头的一些信息。再接着为协议数据包内容,长度不定,本例为TCP,其结构为:以太网帧、IP头、TCP头、数据域。如图 12所示:

图 12 PCAP文件举例

2.TCP/IP协议栈

计算机网络的各层及其协议的集合就构成了网络的体系结构,即计算机网络及其构成所完成的精确定义。OSI参考模型如图 13所示,其中每个实体通常定义两种不同的接口:一个是为同一计算机上使用它的通信服务的其他上层实体定义的服务接口,简称服务;另一个是为另一台计算机上对等实体定义的对等接口,即协议。

图 13 OSI参考模型

在实际应用中,OSI并没有被采用,TCP/IP协议族才是实际的标准,如图 14所示。链路层,TCP/IP协议族的最低层,也称为网络接口层,通常包含操作系统中的设备驱动程序和对应的网络接口卡,对应于OSI参考模型中的数据链路层和物理层。网络层,也称为互联网层,由于该层的主要协议为IP,通常也简称为IP层。传输层,通常所说的两台计算机之间的通信其实是指两台计算机上对应的应用程序之间的数据通信,传输层提供的就是应用程序间的通信,一般也称为端到端的通信。应用层向用户提供一组常用的应用程序。

图 14 TCP/IP协议族

3.各个协议格式

本设计将实现对ARP、IPv4、ICMP、UDP、DHCP等协议进行实际解包分析。

ARP数据包格式如图 15所示:

图 15 ARP数据包格式

IPv4数据包格式如图 16所示:

图 16 IPv4数据包格式

ICMP数据包格式如图 17所示:

图 17 ICMP数据包格式

UDP数据包格式如图 18所示:

图 18 UDP数据包格式

DHCP数据包格式如图 19、图 20所示:

图 19 DHCP数据包结构

图 20  DHCP数据包格式

二、设计方案及实现

1.整体框架

PCAP文件分析器由3个包实现,分别是com.qiusongde.packet、com.qiusongde.pacpparser、com.qiusongde.UI,如图 21所示:

图 21 PCAP文件分析器代码架构

在com.qiusongde.UI这个包中:MyUI类主要实现用户交互界面,实现选择文件,根据文件路径创建输入流InputStream,并展示分析结果;ExtensionFileFilter类实现文件过滤器,只能打开PCAP文件。

在com.qiusongde.pcapparser这个包中:Pcappparser类主要根据图 11、图 12实现读取PCAP文件并转换成相应的数据结构Pcap、PcapHeader、PcapData,方便后边进行分析,ProtocolJudge类根据图 14判断其协议类型。

com.qiusongde.packet这个包主要根据图 15、图 16、图 17、图 18、图 19、图 20、图 21,实现对转换后的PCAP等数据结构进行分析。

整体交互示意图 22如所示:

图 22 整体交互示意图

2.界面

主界面,如图 23所示,左边表格将用来显示PCAP文件中包含的网络数据简介,右边的两个文本框将分别用来展示原网络数据和分析后的详细信息。

图 23 主界面

文件选择器,如图 24所示,让用户自由浏览并选择要打开的PCAP文件。

图 24 文件选择器

打开相应的PCAP文件后,左边表格添加相应的项,用来显示PCAP文件中携带的网络数据,如图 25。

图 25  表格界面

选中相应的表格行之后,将在右边的文本框显示分析结果,并以16进制格式显示原网络数据,如图 26所示。

图 26 文本框界面

三、源代码数据及说明文档

http://download.csdn.net/detail/sdzuiaidanpianji/9602633

TCP/IP协议数据包文件PCAP分析器的更多相关文章

  1. Linux 网络编程详解五(TCP/IP协议粘包解决方案二)

    ssize_t recv(int s, void *buf, size_t len, int flags); --与read相比,只能用于网络套接字文件描述符 --当flags参数的值设置为MSG_P ...

  2. TCP/IP各种数据包结构体

    下面这些TCP/IP数据包是我在进行Socket及Wipcap网络编程过程中曾经用到过的数据包结构体, 这些东西平时看起来不起眼,真正用到的时候就会觉得非常有用...... 以太帧头格式结构体,共14 ...

  3. TCP/IP协议简单介绍

    TCP/IP协议族总共分为四层,分别为:          应用层:应用层协议有Telnet(远程登入协议).FTP(文件传输协议).SMTP(简单邮件传送协议).SNMP(简单网络管理协议).HTT ...

  4. OSI七层模型详解 TCP/IP协议

      总结 OSI中的层 功能 TCP/IP协议族 应用层 文件传输,电子邮件,文件服务,虚拟终端 TFTP,HTTP,SNMP,FTP,SMTP,DNS,Telnet 等等 表示层 数据格式化,代码转 ...

  5. TCP/IP协议知识科普

    简介 本文主要介绍了工作中常用的TCP/IP对应协议栈相关基础知识,科普文. 本博客所有文章:http://www.cnblogs.com/xuanku/p/index.html TCP/IP网络协议 ...

  6. TCP/IP协议学习之实例ping命令学习笔记

    TCP/IP协议学习之实例ping命令学习笔记(一) 一. 目的为了让网络协议学习更有效果,在真实网络上进行ping命令前相关知识的学习,暂时不管DNS,在内网中,进行2台主机间的ping命令的整个详 ...

  7. TCP/IP协议总结

    TCP/IP网络协议栈分为四层, 从下至上依次是: 链路层 其实在链路层下面还有物理层, 指的是电信号的传输方式, 比如常见的双绞线网线, 光纤, 以及早期的同轴电缆等, 物理层的设计决定了电信号传输 ...

  8. TCP/IP协议学习

    计算机网路学得不好,首先先放个OSI七层网络模型吧 在协议的控制下,上层对下层进行调用,下层对上层进行服务, 上下层间用交换原语交换信息.这样可以提高传输速率,并且保证数据安全,所以说其实每一层都有存 ...

  9. Tcp/Ip协议族简单解读及网络数据包/报/帧数据格式及封装及解包;

    http://www.creseek.cn/products-install/install_on_bsd_linux/ 中文检索 离线cloudera ecosystem components: h ...

随机推荐

  1. 使用Shiro

    一.架构 要学习如何使用Shiro必须先从它的架构谈起,作为一款安全框架Shiro的设计相当精妙.Shiro的应用不依赖任何容器,它也可以在JavaSE下使用.但是最常用的环境还是JavaEE.下面以 ...

  2. 用PROXYCHAINS实现SSH全局代理

    NUX下可以实现SSH全局代理的软件有tsocks和proxychains两种,但是个人感觉proxychains要更加稳定简单. $ yum install proxychains # vim /e ...

  3. 【SharePoint】SharePoint2013中使用客户端对象模型给用户控件赋初值

    本文要实现的功能:新建一条列表记录,打开新建记录画面时,自动给[申请人]赋值为当前登录用户. 在SharePoint2010中,可以使用SPServices的SPFindPeoplePicker方法来 ...

  4. 全国车辆违章查询API文档及demo

    简介 聚合数据全国车辆违章API,目前已经支持300个左右的城市违章查询,已连接上万个APP.方便有车一族随时了解自己是否有过交通违章,避免因遗忘或逾期处理违章罚单而造成的不必要损失. API参考文档 ...

  5. csdn开源夏令营-ospaf中期报告

    1.背景         随着将中期的代码托管到CSDN的平台上,ospaf(开源项目成熟度分析工具)已经有了小小的雏形.当然还远远不够.       首先还是要感谢这次活动组织方CSDN,感觉挺有G ...

  6. 用递归法将一个整数n转换成字符串。

    用递归法将一个整数n转换成字符串. 比如,输入483,应输出字符串"483".n的位数不确定,能够是随意位数的整数. #include "stdafx.h" # ...

  7. github 迁移google code 项目

    本文的原文连接是: http://blog.csdn.net/freewebsys/article/details/46692181 转载请一定注明出处. 1,关于google code google ...

  8. Windows 命令集合

    查看端口占用 查看8080端口使用情况: C:\>netstat -aon|findstr "8080" 结果:TCP    0.0.0.0:8080           0 ...

  9. Python结合NC.exe 实现模拟登录&批量填表

    1.工作需求 有很多事项,每个事项分为:名称.种类.时间等,需要把每个事项逐个输入到网页中并提交. 如果用人肉操作的话,流程就是先登录到网站后台,点击“添加”——>输入各项内容——>点击“ ...

  10. NoSQL数据库介绍(4)

    4 键/值存储      讨论了经常使用的概念.技术和模式后.第一类NoSQL数据存储会在本章进行研究. 键/值存储通常有一个简单的数据模型:一个map/dictionary,同意客户按键来存放和请求 ...