毕业设计(论文)-基于HTTP协议数据包的解析与还原系统的设计与实现.doc_第1页
毕业设计(论文)-基于HTTP协议数据包的解析与还原系统的设计与实现.doc_第2页
毕业设计(论文)-基于HTTP协议数据包的解析与还原系统的设计与实现.doc_第3页
毕业设计(论文)-基于HTTP协议数据包的解析与还原系统的设计与实现.doc_第4页
毕业设计(论文)-基于HTTP协议数据包的解析与还原系统的设计与实现.doc_第5页
已阅读5页,还剩41页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

基于HTTP协议的数据解析与还原系统的设计与实现北方民族大学学士学位论文论文题目 基于HTTP协议数据包解析与还原系统的设计与实现系(部)名 称: 计算机科学与工程学院 学 生 姓 名: 专 业: 网络工程 学 号: 20091613 指导教师姓名: 论文提交时间: 2013-4-23 论文答辩时间: 2013-4-28 学位授予时间: 北方民族大学教务41基于HTTP协议的数据解析与还原系统的设计与实现基于HTTP协议的数据解析与还原系统的设计与实现摘 要随着世界信息发展的速度越来越快,Internet网的快速发展,信息技术的应用越来越广泛,从传统的小型应用到现在的大型商务应用以及企业应用等都涉及到信息技术。网络技术的应用已经成为当今人们生活中不可缺少的一部分了。加强探索网络信息监听与还原技术有助于建立可靠、高效的信息安全保障体系,对社会政治稳定和国家信息安全具有重要的现实意义。 针对网络传输环境和实际的需求,基于TCP/IP协议族。本文主要分析针对网络数据包的相关方面。主要涉及以下几个方面的内容:JAVA语言的相关介绍,网络数据包的捕获技术,数据包的相关分析技术,HTTP数据包的还原重组技术。对于数据包的捕获中,对TCP/IP协议族的介绍,介绍基本的网络协议原理。对于数据包的重组技术,分析如何将无序的数据片流进行有序化。对于HTTP信息识别技术讨论超文本传输协议HTTP(HyperText Transfer Protocol),描述协议相关的参数,源地址,目标地址,协议的组成等。 本设计实现的网页信息还原系统立足于高效,准确,稳定。实现基于HTTP/1.0协议网络信息的解析与还原。关键字:http数据包, 解析,还原Design and Implementation of Data Analysis and Restore System Based on HTTP ProtocolAbstractWith the rapid development of the worlds information and the Internet, the application of information technology is more and more widely, from traditional small applications to large business applications and enterprise applications are related with IT. The application of network technology has become an indispensable part of peoples life. Strengthening exploration of the network information monitoring and reductive treatment will contribute to creating a reliable and efficient information security system, which has important practical significance for social and political stability and national information security. In view of the network transmission environment and the actual demand, this paper mainly analyzes the relevant aspects of network data packet, which mainly involves the following several aspects: introduction of the JAVA language, network packet capture technology, data packet analysis technology, the restoring recombinant technology of HTTP data packet. For packet capture, this paper introduces the TCP/IP protocol, and the basic principles of the network protocol. For the data packet recombination technology, this paper analyzes how the disorder piece of data stream ordering. For HTTP information recognition technology to discuss the hypertext transfer protocol HTTP (Hypertext Transfer Protocol), I describe the protocol related parameters, protocol composition. The design and implementation of webpage information and restoring system are based on the high efficiency, accuracy and stability, which the aim is to achieve the analysis and restoring based on network information of HTTP/1.0 protocolKey words: http packet,analysis,restore目 录1绪 论11.1研究背景与意义11.2 研究方法与环境配置11.3 研究内容和目标22网络协议基本概念32.1 网络体系结构32.2 网络协议分析42.2.1 TCP/IP协议族42.2.2 HTTP协议概述52.2.3 THHP协议的特点52.2.4 HTTP协议的结构62.3 HTTP协议的运作方式83. 开发工具与环境介绍113.1 Java语言介绍113.1.1 Java语言简介113.1.2 Java语言的特点113.2 JDK概述133.4 JDK安装与配置133.5 MyEclipse相关介绍134. 网络协议分析系统的设计144.1 WinPcap的相关介绍144.2 体系结构设计154.3 数据包的存储164.4 网络数据包的捕获和存储流程图184.5 网络数据包的还原原理205网络数据捕获与还原系统的实现215.1 字符编码介绍215.1.1 ASCALL字符编码215.1.2 GBK字符编码215.1.3 GB2312字符编码215.1.4 BIG5字符编码225.1.5 UNICODE字符编码225.1.6 UTF-8字符编码235.2 系统设计模块要求235.3 网卡设置模块245.3.1 网卡设置模块实现代码245.3.2 问题总结255.4 捕获数据包控制模块265.4.1捕获数据包模块实现代码及运行结果265.4.2 捕获数据包的信息分析285.4.3 问题总结315.5 数据包重组模块325.5.1数据包还原算法325.5.2数据包还原模块实现代码及运行结果335.5.3 问题总结356总结376.1 已完成的工作376.2 展望37致 谢39参考文献40附录I 相关代码411绪 论1.1研究背景与意义 随着现代信息技术迅猛发展,网络技术在日常生活中起到的作用越来越重要,信息安全问题更为重要。网络上的信息安全问题出现的问题越来越多,同时也受到越来越多的人关注。而作为万维网的网络协议中,作为最高层的应用层中的核心协议http协议是基础。当网络出现故障,异常时,对网络上传输的数据进行监控和分析,是网络管理人员对于网络故障解决的一种方法。网络信息还原的重要性和紧迫性已经刻不容缓。为了维护我国的信息安全,遏制不良信息的传播,必须加大对网络信息监控与管理的力度,对互联网上的信息内容进行自动审查、过滤,防止不良信息的传播,规范网络,推进网络健康文明发展。HTTP是一种详细规定了浏览器和万维网服务器之间互相通信的规则,通过因特网传送万维网文档的数据传送协议。通过分析其协议内容,更好的方便人们的学习与理解,更好的管理网络中的数据传输。通过解析与还原HTTP数据包可以方便的知道网络中的数据传输,对于网络中的不安全或者不良信息及时的管理,使万维网中的传输更加安全,网络环境更加优良和安全。对因特网中一些重要数据信息进行还原和提取,是保证网络应用的健康发展和打击网络犯罪的一个重要手段。实时监控所在网络的HTTP通讯,当网络上出现非法内容的HTTP通讯时,将捕获的非法内容保存到数据库,向网络安全管理部门报告,以便及时保护事业单位及国家的利益。1.2 研究方法与环境配置 基于对TCP/IP协议的理论分析,了解其网络数据包的传输过程和原理,进而设计出相关的对于数据包的解析和还原软件。本软件运行的平台主要是windows下运行,用到Java语言编写,需要配置jdk,关于相关的配置问题,在后文中有相关的介绍。1.3 研究内容和目标本论文主要是从网络数据传输的协议分析入手,介绍相关的TCP/IP协议。然后通过对于win cap环境的相关配置,JAVA开发平台的相关配置,最后设计并完成对于HTTP数据包的捕获解析与还原软件的设计与实现。本论文的主要研究内容主要有几下几点:(1),对网络数据传输协议做系统的介绍,对于网络数据包捕获技术,win cap开发包,JAVA开发平台,环境配置做简单的介绍。(2),网络协议原理的简单介绍、TCP/IP协议分层及其协议分布,网络数据包解析过程及各层数据包组成部分,数据包还原原理。(3),基于HTTP协议数据包解析与还原软件的实现。本文所介绍基于HTTP协议的解析与还原信息主要是Internet信息,这些信息主要包括图像,声音,文本等。最后实现数据包的解析,数数据包的还原。帮助网管人员监听感兴趣的HTTP数据包,分析其遵守的协议以及其应用层数据,同时将应用层数据进行重组,恢复到原始的数据格式。2网络协议基本概念2.1 网络体系结构网络体系结构是指网络通信系统的整体设计,它为网络硬件、软件、协议、存取控制和拓扑提供标准。它广泛采用的是国际标准化组织(ISO)在1979年提出的开放系统互连(OSI-Open System Interconnection)的参考模型。OSI参考模型主要有七层,分别是:物理层、数据链路层、网络层、运输层、会话层、表示层和应用层。TCP/IP是一个四层的体系结构,它包含应用层、传输层、网际层、和网络接口层。但是,从本质上来说,TCP/IP只有三层,即应用层、运输层和网际层,因为最下面的网络接口层实际上并没有什么详细的内容。下面的图1-1是两台计算机进行网络通信时的各层数据流结构示意图。图1-1 应用层 应用层是体系结构中的最高层。应用层直接为用户的应用进程提供服务。这是的进程是指的下在运行的程序。在因特网中应用层协议很多,如支持万维网应用的HTTP协议,支持电子邮件的SMTP协议,支持文件传送的FTP协等等。运输层 运输层的任务就是负责向两个主机中的进程之间的通信提供服务。由于一个主机可同时运行多个吉利,因此运输层有腥用和分用的功能。复用就是多个应用层进程可以使用下面运输层的,分用则是运输层把收的信息分别交付给上面应用层中的相应的进程。运输层主要使用传输控制协议TCP和用户数据协议UDP。网络层 网络层负责为分组网上的不同的主机提供通信服务。在发送数据时,网络层把层产生的报文段或用户数据报封装成组或包进行传送。在TCP/IP体系中,由于网络层使用IP协议,因此分组也叫做IP数据报,或简称为数据报。数据链路层 常简称为链路层。我们知道,两个主机之间的数据的传输,总是在一段一段的链路上传送的,也就是说,在两个相邻点之间(主机和路由器之间或现个路由器之间)传送数据是直接传送的。这时就需要使用专门的链路层的协议。在两个相邻结点之间传送数据时,数据链路层将网络层交下来的IP数据报组装成帧,在两个相邻结点间的链路上“透明”地传送帧中的数据。每一帧包括数据和必要的控制信息(如同步信息、地址信息、差错控制等)。典型的帧长中有几百字节到一千多字节。 物理层 在物理层上所传数据的单位是比特。物理层的任务就是透明地传送比特流。也就是说,发送方发送1(或0)时,接收方应当收到1(或0)而不是0(或1)。因此物理层要考虑用多大的电压代表“1”或“0”,以及接收方如何识别出发送方所发送的比特。物理层还要确定连接电缆的插头应当有多少根引线以及各条应如何连接。当然,哪几个比特代表什么意思 ,则不是物理层所要管的。传递信息所利用的一些物理媒体,如双绞线,同轴电缆,光缆,无线信道等,并不在物理层协议之内,而是在物理协议的下面。2.2 网络协议分析2.2.1 TCP/IP协议族TCP/IP协议族,它的特点是上下两头大而中间小:应用层和网络接口都有多种协议,而中间的IP层很小,上层的各种协议都向下汇聚到一个IP协议中。这种像沙漏计时器形状的TCP/IP协议族表明:TCP/IP可以为各式各样的应用提供服务,同时TCP/IP协议在各式各样的网络构成的互联网上运行。正因为如此,因特网才会发展到今天的这种全球规模。在下图3-2可以看出IP协议在因特网中的核心作用。图3-22.2.2 HTTP协议概述 超文本传输协议 (HTTP-Hypertext transfer protocol) 是分布式,协作式,超媒体系统应用之间的通信协议。是万维网(world wide web)交换信息的基础。HTTP是IETF(Internet Engineering Task Force)制定的国际化标准。在HTTP标准制定和实现的过程中,W3C积极参与了其中的工作,并发挥了重要作用。 它允许将超文本标记语言 (HTML) 文档从 Web 服务器传送到 Web 浏览器。HTML 是一种用于创建文档的标记语言,这些文档包含到相关信息的链接。您可以单击一个链接来访问其它文档、图像或多媒体对象,并获得关于链接项的附加信息。 HTTP工作在TCP/IP协议体系中的TCP协议上。客户机和服务器必须都支持 HTTP,才能在万维网上发送和接收 HTML 文档并进行交互。2.2.3 THHP协议的特点HTTP协议的主要特点主要有以下几点:(1)、支持客户/服务器模式.http 协议。(2)、 简单快速:客户向服务器请求服务时,只需传送请求方法和路径。请求方法常用的有GET、HEAD、POST。每种方法规定了客户与服务器联系的类型不同。由于HTTP协议简单,使得HTTP服务器的程序规模小,因而通信速度很快。 (3)、灵活:HTTP允许传输任意类型的数据对象。正在传输的类型由Content-Type加以标记。 (4)、无连接:无连接的含义是限制每次连接只处理一个请求。服务器处理完客户的请求,并收到客户的应答后,即断开连接。采用这种方式可以节省传输时间。 (5)、无状态:HTTP协议是无状态协议。无状态是指协议对于事务处理没有记忆能力。缺少状态意味着如果后续处理需要前面的信息,则它必须重传,这样可能导致每次连接传送的数据量增大。另一方面,在服务器不需要先前信息时它的应答就较快。2.2.4 HTTP协议的结构HTTP报文由从客户机到服务器的请求的从服务器到客户机的响应组成,因此HTTP报文有两类:(1)、请求报文从客户向服务器发送的请求报文,见图2-5-1。(2)、响应报文从服务器到客户的回答。见图2-5-2。由于HTTP是面向文本的(text-oriented),因此报文中的每个字段都是一些ASCII码串,因而各个字段的长度都是不确定的。 图2-5-1图2-5-2HTTP请求报文的响应报文都是由三个部分组成。由此可知,这两种报文的格式的区别就是开始行不同。开始行,用于区分是请求报文还是响应报文。在请求报文中的开始行叫做请求行(Request-Line),而在响应报文的开始行叫做状态行(Status-line)。在开始行的三个字段之间都以空格分隔开,最后的“CR”和“LF”分别表示回车和换行。首部行,用来说明浏览器或报文主体的一些信息。首部可以有好几行,但也可以不使用。在每一个首部中都有首部字段名和它的值,每一行在结束的地方都要有“回车”和“换行”。整个首部行结束时,还有一些空行将首部行的后面的实体主体分开。实体主体(entity body),在请求报文中一般都不用这个字段,而是在响应报文中也可能没有这个字段。请求报文的结构特点 http请求由三部分组成,分别是:请求行、消息报头、请求正文。请求行以一个方法符号开头,以空格分开,后面跟着请求的URI和协议的版本,格式如下:Method Request-URI HTTP-Version CRLF其中 Method表示请求方法;Request-URI是一个统一资源标识符;HTTP-Version表示请求的HTTP协议版本;CRLF表示回车和换行(除了作为结尾的CRLF外,不允许出现单独的CR或LF字符)。请求方法(所有方法全为大写)有多种,各个方法的解释如下表3.5.1:方法(操作)意义OPTION请求一些选项的信息GET请求读取由URL所标示的信息HEAD请求读取由RUL所标示的信息的首部POST给服务器添加消息(如:注释)PUT在指明的URL下存储一个文档DELETE删除指明的URL所标志的资源TRACE用来进行环回测试的请求报文CONNECT用来代理服务器表3.5.1关于一些方法的就用举例:GET方法:在浏览器的地址栏中输入网址的方式访问网页时,浏览器采用GET方法向服务器获取资源,eg:GET /form.html HTTP/1.1 (CRLF)。POST方法要求被请求服务器接受附在请求后面的数据,常用于提交表单。eg:POST /reg.jsp HTTP/ (CRLF)Accept:image/gif,image/x-xbit,. (CRLF).HOST: (CRLF)Content-Length:22 (CRLF)Connection:Keep-Alive (CRLF)Cache-Control:no-cache (CRLF)(CRLF) /CRLF表示消息报头已经结束,在此之前为消息报头user=jeffrey&pwd=1234 /此行以下为提交的数据HEAD方法与GET方法几乎是一样的,对于HEAD请求的回应部分来说,它的HTTP头部中包含的信息与通过GET请求所得到的信息是相同的。用这个方法,不必传输整个资源内容,就可以得到Request-URI所标识的资源的信息。这种方法常用于测试超链接的有效性,是否可以访问,以及最近是否更新。响应报文的结构特点 在接收和解释请求消息后,服务器返回一个HTTP响应消息。一个响应由四个部分组成;状态行、响应头标、空行、响应数据。(1)、状态行:状态行由三个标记组成:HTTP版本、状态码和解释状态码的简单短语。HTTP版本:向客户端指明其可理解的最高版本。状态码:3位的数字代码,指出请求的成功或失败,如果失败则指出原因。解释状态码的简单短语:为状态码的可读性解释。例如:HTTP/1.1200OKHTTP状态码:1xx:表示通知信息的,如请求收到了或必须采取进一步的行动。2xx:成功,行为被成功地接受、理解和采纳3xx:重定向,为了完成请求,必须进一步执行的动作4xx:客户端错误,如请求中有错误的语法或不能完成5xx:表示服务器的差错,如请求中有错误的语法或不能完成。常见状态代码、状态描述、举例:200 OK /客户端请求成功400 Bad Request /客户端请求有语法错误,不能被服务器所理解401 Unauthorized /请求未经授权,这个状态代码必须和WWW-Authenticate报头域一起使用403 Forbidden /服务器收到请求,但是拒绝提供服务404 Not Found /请求资源不存在,eg:输入了错误的URL500 Internal Server Error /服务器发生不可预期的错误503 Server Unavailable /服务器当前不能处理客户端的请求,一段时间后可能恢复正常(2)、响应头标:像请求头标一样,它们指出服务器的功能,标识出响应数据的细节。(3)、空行:最后一个响应头标之后是一个空行,发送回车符和退行,表明服务器以下不再有头标。(4)、响应数据:HTML文档和图像等,也就是HTML本身。2.3 HTTP协议的运作方式HTTP协议的运作方式是一个客户机与服务器建立连接后,客户机发送一个请求给服务器。其请求方式的格式为,统一资源标识符、协议版本号,后边是MIME信息包括请求修饰符、客户机信息和可能的内容。服务器在接到请求后,给予相应的响应信息,其格式为一个状态行包括信息的协议版本号、一个成功或错误的代码,后边是MIME信息包括服务器信息、实体信息和可能的内容。HTTP通讯是由一个用户代理初始化的并且包括一个申请在源服务器上资源的请求。最简单的情况可能是在用户代理和源服务器之间通过一个单独的连接来完成。其工作原理如下图2-6-1所示。图2-6-1如果当一个或多个中介出现在请求/响应链中的时候,情况就会变得复杂一点。中介分为三种:代理(Proxy)、网关(Gateway)和通道(Tunnel)。一个代理根据URI的绝对格式来接受请求,重写全部或部分消息,通过URI的标识把已格式化过的请求发送到服务器上。网关是一个接收代理,作为一些其它服务器的上层,可以把请求翻译给下层的服务器协议。一个通道作为不改变消息的两个连接之间的中继点。当通讯需要通过一个中介(如:防火墙)或者是中介不能识别消息的内容时,通道经常被使用。其工作原理如下图2-6-2所示。图2-6-2表明了在用户代理和源服务器之间有三个中介。一个通过整个链的请求或响应消息必须经过四个连接段。因为一些HTTP通讯选择可能应用于最近的连接、没有通道的邻居,应用于链的终点或应用于沿链的所有连接。在Internet上,HTTP通讯通常发生在TCP/IP连接之上。缺省端口是TCP80,但其它的端口也是可用的。但这并不预示着HTTP协议在Internet或其它网络的其它协议之上才能完成。HTTP只预示着一个可靠的传输。上面只是介绍了HTTP协议的宏观运作方式,下面介绍一下HTTP协议的内部操作过程。基于HTTP协议的客户/服务器模式的信息交换过程,如图2-6-3所示,它分四个过程,建立连接、发送请求信息、发送响应信息、关闭连接。在WWW中,“客户”与“服务器”是一个相对的概念,只存在于一个特定的连接期间,即在某个连接中的客户在另一个连接中可能作为服务器。WWW服务器运行时,一直在TCP80端口(WWW的缺省端口)监听,等待连接的出现。图2-6-33. 开发工具与环境介绍3.1 Java语言介绍3.1.1 Java语言简介Java是一种可以撰写跨平台应用软件的面向对象的程序设计语言,是由Sun Microsystems公司于1995年5月推出的Java程序设计语言和Java平台(即JavaSE, JavaEE, JavaME)的总称。Java 技术具有卓越的通用性、高效性、平台移植性和安全性,广泛应用于个人PC、数据中心、游戏控制台、科学超级计算机、移动电话和互联网,同时拥有全球最大的开发者专业社群。在全球云计算和移动互联网的产业环境下,Java更具备了显著优势和广阔前景。Java是定位于网络计算的计算机语言,它几乎所有的特点也是围绕着这一中心展开的并为之服务的,这些特点使得Java语言特别适合于用来开发网络上的应用程序;另外,作为一种面世较晚的语言,Java也集中体现和充分利用了若干当代软件技术新成果,如面向对象、多线程等,这些也都在它的特点中有所反映。3.1.2 Java语言的特点Java编程语言的风格十分接近C、C+语言。Java是一个纯粹的面向对象的程序设计语言,它继承了 C+语言面向对象技术的核心。Java舍弃了C语言中容易引起错误的指针(以引用取代)、运算符重载(operator overloading)、多重继承(以接口取代)等特性,增加了垃圾回收器功能用于回收不再被引用的对象所占据的内存空间,使得程序员不用再为内存管理而担忧。在 Java 1.5 版本中,Java 又引入了泛型编程(Generic Programming)、类型安全的枚举、不定长参数和自动装/拆箱等语言特性。Java不同于一般的编译执行计算机语言和解释执行计算机语言。它首先将源代码编译成二进制字节码(bytecode),然后依赖各种不同平台上的虚拟机来解释执行字节码。从而实现了“一次编译、到处执行”的跨平台特性。不过,每次的执行编译后的字节码需要消耗一定的时间,这同时也在一定程度上降低了 Java 程序的运行效率。Java语言的特点与其历史发展是相关的。它之所以能够受到如此众多的好评以及拥有如此迅猛的发展与其语言本身的特点是分不开的。其主要特点如下所述:(1)、简单性:从Java语言的发展史可以了解到Java语言是在C和C+计算机语言的基础上进行简化和改进的一种新型计算机语言,它去掉了C和C+中最难正确应用的指针的最难理解的多重继承技术等内容,通过垃圾自动回收机制简化了程序内存管理,统一了各种数据类型在不同操作系统平台上所占用的内存大小。Java程序的简单性是其得以迅速普及的最重要的原因之一。(2)、网络特性:Java语言正是因为其对互联网的良好支持而受到推崇并得以迅速推广的。Java语言是目前对网络支持最全面,与网络关系最密切的计算机语言之一。(3)、面向对象:由于Java语言是一种新型计算机语言,没有兼容过程式计算机语言的负担,所以Java语言在面向对象的特性比C+语言更为彻底。面向对象模型是一种模拟人类社会和人解决实际问题的模型,因此更为符合人们的思维习惯,而且容易扩充的维护。它的缺点是程序在开发的过程中常常变得越来越庞大。(4)、平台无关性/可移植性:Java语言的设计目标是让其程序不用修改就可以在任何一种计算机平台上运行。解决异构操作系统兼容性问题是一个很艰巨的任务。Sun公司提供的Java语言也没有完全做到这一点。在Java语言的说明书中,Sun公司用权重(weight)的轻重为表示其提供的类或成员方法与计算机平台的相关性大小。不过总的来说,Java语言在这一方面是做的最好的计算机语言。(5)、健壮性:健壮性指的程序执行的稳定性。Java语言设计者在设计Java语言的过程中一直考虑如何减少编写程序的过程中可能产生的错误。Java在编译和执行的过程中都会进行比较严格的检查,以减少错误的发生。Java语言的垃圾自动回收机制和异常处理机制在很大程度上提高了程序的健壮性。另外,Java语言的简单性同时也在一定的程序上保证程序的健壮性。(6)、安全性:在网络上运行的Java程序是符合网络安全协议的。在执行Java程序的过程中,Java虚拟机对程序的安全性进行检测。一般来说,Java程序是安全的,它不会访问不允许问的内在或文件。(7)、多线程性:这主要用来处理复杂或需要并行的事务。组成Java虚拟机的各个程序本身一般也采用多线程机制。采用多线程是提高程序运行效率的一种方法;不过,增加了程序的设计难度。(8)、解释性:Java语言是一种解释执行的语言。这是Java语言的一个缺点,因为解释执行的语言相比编译执行的语言需要额外的语句解释步骤及其运行时间。总之,Java语言是一种易学好用,健壮性好,但采用解释执行的计算机语言。用Java语言编写程序一般会比用其它计算机语言编写程序花费更少的时间,而且调试所需的时间一般也比较短。3.2 JDK概述JDK(Java Development Kit)是Sun Microsystems针对Java开发员的产品。自从Java推出以来,JDK已经成为使用最广泛的Java SDK。JDK 是整个Java的核心,包括了Java运行环境、Java工具和Java基础类库。JDK是学好Java的第一步。而专门运行在x86平台的Jrocket在服务端运行效率也要比Sun JDK好很多。从SUN的JDK5.0开始,提供了泛型等非常实用的功能,其版本也不断更新,运行效率得到了非常大的提高。JDK包含的基本组件包括:javac:编译器,将源程序转成字节码。jar 打包工具,将相关的类文件打包成一个文件。Javadoc: 文档生成器,从源码注释中提取文档。jdb debugger,查错工具。java运行编译后的java程序(.class后缀的)。appletviewer:小程序浏览器,一种执行HTML文件上的Java小程序的Java浏览器。Javah:产生可以调用Java过程的C过程,或建立能被Java程序调用的C过程的头文件。Javap:Java反汇编器,显示编译类文件中的可访问功能和数据,同时显示字节代码含义。Jconsole: Java进行系统调试和监控的工具。3.4 JDK安装与配置 1.下载jdk 1.6或更高版本 (http:/java.sun .com,同时还要下载其Java Documentation,这是Java帮助文档)。2.运行刚刚下载的安装程序进行正式安装(以下假设安装于c:jdk1.6.0_21,建议安装路径不要有空格,不宜安装在Program Files目录下!)。3.设置运行环境参数:在Windows2000、XP或Win7系统,使用鼠标右击“我的电脑”-属性-高级-环境变量系统变量-新建-变量名:JAVA_HOME 变量值:C:jdk1.6系统变量-新建-变量名:CLASSPATH 变量值:C;jdk1.6jrelibrt.jar;.;系统变量-编辑-变量名:Path 在变量值的最前面加上:C:jkd1.6bin(CLASSPATH中有一英文句号“.”后跟一个分号,表示当前路径的意思)。3.5 MyEclipse相关介绍 MyEclipse企业级工作平台(MyEclipse Enterprise Workbench ,简称MyEclipse)是对EclipseIDE的扩展,利用它我们可以在数据库和JavaEE的开发、发布以及应用程序服务器的整合方面极大的提高工作效率。它是功能丰富的JavaEE集成开发环境,包括了完备的编码、调试、测试和发布功能,完整支持HTML,Struts,JSP,CSS,Javascript,Spring,SQL,Hibernate。MyEclipse 是一个十分优秀的用于开发Java, J2EE的 Eclipse 插件集合,MyEclipse的功能非常强大,支持也十分广泛,尤其是对各种开源产品的支持十分不错。MyEclipse目前支持Java Servlet,AJAX, JSP, JSF, Struts,Spring, Hibernate,EJB3,JDBC数据库链接工具等多项功能。可以说MyEclipse几乎囊括了目前所有主流开源产品的专属eclipse开发工具。MyEclipse6.0以前版本需先安装Eclipse。MyEclipse6.0以后版本安装时不需安装Eclipse。4. 网络协议分析系统的设计4.1 WinPcap的相关介绍 WinPcap(windows packet capture)是windows平台下一个免费,公共的网络访问系统。开发WinPcap这个项目的目的在于为win32应用程序提供访问网络底层的能力。 WinPcap是用于网络封包抓取的一套工具,可适用于32位的操作平台上解析网络封包,包含了核心的封包过滤,一个底层动态链接库,和一个高层系统函数库,及可用来直接存取封包的应用程序界面。WinPcap是一个免费公开的软件系统。它用于windows系统下的直接的网络编程。大多数网络应用程序访问网络是通过广泛使用的套接字。这种方法很容易实现网络数据传输,因为操作系统负责底层的细节(比如协议栈,数据流组装等)以及提供了类似于文件读写的函数接口。但是有时,简单的方法是不够的。因为一些应用程序需要一个底层环境去直接操纵网络通信。因此需要一个不需要协议栈支持的原始的访问网络的方法。开发WinPcap这个项目的目的在于为win32应用程序提供访问网络底层的能力。它提供了以下的各项功能:(1)、捕获原始数据报,包括在共享网络上各主机发送/接收的以及相互之间交换的数据报;(2)、在数据报发往应用程序之前,按照自定义的规则将某些特殊的数据报过滤掉;(3)、在网络上发送原始的数据报;(4)、收集网络通信过程中的统计信息。WinPcap的主要功能在于独立于主机协议(如TCP-IP)而发送和接收原始数据报。也就是说,WinPcap不能阻塞,过滤或控制其他应用程序数据报的发收,它仅仅只是监听共享网络上传送的数据报。因此,它不能用于QoS调度程序或者是个人防火墙。4.2 体系结构设计 本方案采用的是利用Jpcap.dll在数据链路层下进行数据包的捕获。Jpcap提供了在Windows系统上进行这种访问的Java API,它可以访问底层的网络数据。但Jpcap不是一种纯粹的Java解决方案;它需要依赖本地库的使用。因此,在Windows 平台上要使用必要的第三方库,分别是WinPcap或libpcap。利用专门用于网络监听的一个函数库Jpcap.lib提供的函数完成抓包工作,由于该库提供的函数抓到的包是数据链路层下的帧,因此,它可以被用来基于数据链路层下的流量捕获。其体系结构如下图4-2所示。图4-2底层的网络接口卡(网卡),为了监听所有的包,它被设置为混杂模式(promiscuous mode)工作。这可调用库函数实现。Packet Capture driver是较低层的捕获堆栈的软件模块。它和网络接口卡相互作用抓包,它提供了应用程序一系列函数可以读写数据链路层上的数据。Packet.dll从捕获程序里分离出来,工作在用户层,它是一个动态链路库,使捕获程序从提供系统独立的捕获界面的驱动程序中独立出来,它提供了一系列具有捕获能力的函数供上层调用,从而避免了对驱动器的直接操作,并允许应用程序可以不经过重新编译就可以执行在不同操作系统的环境中。WinPcap 是一个第三方类库,为Jpcap提供基础类。Jpcap是一个静态库,可以被包捕获程序直接调用,它应用Packet.dll导出的服务向上层应用程序提供强有力的捕获界面。它是应用程序的一部分。4.3 数据包的存储 对于一个网络数据包的存储,主要包括TCP包头信息和TCP包的数据信息。TCP包头信息含有很多相关的控制信息,如源端口、目的端口、顺序号、确认号、校验和、窗口大小等。这些信息都能够体现数据包所含的内容。 TCP包的头部格式如下图4-3所示: 图4-3其首部的前20B是固定的。TCP报文段的首部最短为20B,后面有4N字节是根据需要而增加的选项。通常长度是4的整数倍字节。报文段即可以来运载数据,也可以用来建立连接、释放连接和应答。就上面的数据包格式,各字段的意义如下:(1)、源端口和目的端口字段:各占2B。端口是运输层与应用层的服务接口。运输层的复用和分用要通过端口才能实现。(2)、序号字段:占4B。TCP连接中传送的数据流中的每一个字节都编上一个序号。序号字段的值则指的是报文字段所发送的数据的第一个字节的序号。(3)、确认号字段:占4B,是期望收到对方的下一个报文段的数据的第一个字节的序号。若确认号=N,则表明到序号N-1为止的所有数据都已正确收到。(4)、数据偏移(首部长度):占4位,它指出TCP报文段的数据起始距离TCP报文段的起始位置有多远。(5)、保留字段:占6位,保留为今后使用,但目前应置为0。(6)、紧急位URG:当URG=1时,表明紧急指针字段有效。它告诉系统此报文段中有紧急数据,应尽快传送。(7)、确认位ACK:只有当ACK=1时确认号字段才有效,当ACK=0时,确认号无效。(8)、推送位PSH:接收TCP收到PSH=1的的报文段,就尽快地音乐会接收应用进程,而不再等到整个缓存都填满了后再向上交付。(9)、复位位RST:当RST=1时,表明TCP连接中出现了严重的差错,必须释放连接,然后再重新建立运输连接。(10)、同步位SYN:同步SYN=1表示这是一个连接请求或连接接收报文。(11)、终止位FIN:用来释放一个连接。FIN=1表示此报文的发送方的数据已发送完毕,并要求释放传输连接。(12)、窗口字段:占2B。接收方的数据缓存空间是有限的,故用窗口值作为接收方让发送方设置其发送窗口的依据,单位为字节。(13)、检验和:占2B。检验和字段检验的范围包括首部和数据这两个部分,在计算检验和时,要在TCP字段的前面加强上12B的伪首部。(14)、紧急指针安段:占16位,指出在本报文段中紧急数共有多少个字节。(15)、选项字段:长度可变。TCP最初只规定了一种选项,即最大报文段长度(MSS),MSS是TCP报文段中的数据字段的最大长度。(16)、填充字段:这是为了使整个首部长度是4B的整数倍。4.4 网络数据包的捕获和存储流程图 在以太网上通讯的每张网卡上都拥有一个全球唯一的物理地址即MAC地址。该地址是一个48比特的二进制数。在以太网卡中内建有一个数据包过滤器。该数据包过滤器的作用是保留以太网本身网卡的MAC地址为通讯目的的数据包和广播数据包,丢弃所有其它无关的数据包,以免CPU对无关的数据报作无谓的处理。这是以太网卡在一般情况下的工作方式。因此在正常情况下,一个合法的网络接口应该只响应这样的两种数据包(帧): (1)帧的目标地址具有和本地网络接口相匹配的硬件地址。 (2)帧的目标地址是“广播地址”。在接收到上面两种情况的数据帧时,网卡通过CPU产生中断,操作系统进行中断处理后将帧中包含的数据传送给上层系统进行进一步处理。在其他情况下数据帧将被丢弃而不作处理。 要想捕获到流经网卡的不属于本主机的数据,必须绕过系统正常工作的处理机制,直接访问网络底层。我们可以把网卡的状态设为“混杂”模式,当网卡工作在这种“混杂”模式时,该网卡就具备了“广播地址”,它对所接收到的每一个帧都产生一个硬件中断以提醒操作系统处理流经该网卡上的每一个报文包。操作系统通过直接访问链路层,截获相关数据,由应用程序而非上层协议(如IP层、TCP层)对数据过滤处理,这样就可以捕获到流经网卡的所有数据。不同的操作系统实现的底层包捕获机制可能是不一样的,但从形式上看大同小异。数据包常规的传输路径依次为网卡、设备驱动层、数据链路层、网络层、传输层、最后到达应用程序。而包捕获机制是在数据链路层增加一个旁路处理,对发送和接收到的数据包做过滤、缓冲等相关处理,最后直接传递到应用程序。对用户程序而言,包捕获机制提供了一个统一的接口,使用户程序只需要简单的调用若干函数就能获得所期望的数据包。这样一来,针对特定操作系统的捕获机制对用户透明,使用户程序有比较好的可移植性。数据包的捕获是通过Jpcap对网卡的监听实现的,这需要用到WinPcap第三方库,Jpcap所使用的是一个事件模型来处理包的。Jpcap.dll在数据链路层进行数据包的捕获,Jpcap提供了能够在Windows系统上数据链路层下进行数据包捕获的Java API,其流程图如下图4-4:图4-4 4.5 网络数据包的还原原理 对所捕获到的数据包进行还原,其主要原理是,首长要把捕获到的数据包进行初始化,通过采用ASCALL判码方式对十六进制数据信息进行还原,通过观察“Content-Type”,“charset”等特殊字符,可以判断该数据包是否传送的是文本信息,采用的是什么编码方式。如:“Content-Type:text/html; charset=gb2312”,这样可以确认为文本信息,采用的是gb2312编码方式,然后,就可以采用gb2312编码的解码方式进行信息的还原。但是,如果是其它信息的编码,则采用其它编码方式进行解码还原。还原的流程图如下图4-5所示:图4-55网络数据捕获与还原系统的实现5.1 字符编码介绍5

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论