打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
http数据包; 截获; 还原
摘要:在因特网日益发展壮大的今天,万维网在其上的通信量已经超过90%,万维网信息的安全问题已经越来越被人们所重视,而作为万维网应用层核心协议的http协议是基础。当网络发生异常时,对网络上传输的数据进行监视和分析,是网管人员解决网络故障的一种常用方法。
本文介绍应用层HTTP数据包的截获与还原技术的实现,并简要介绍其中所涉及的数据包截获、数据包分析、应用数据重组以及数据包解码等关键技术。该系统可以监听网管人员感兴趣的数据包,通过对其进行分析和研究,分析出其遵守的协议以及其应用层数据,恢复到被监视用户所看到数据的格式。该系统的实现,为网管人员有效地管理网络提供了一种直观的工具。
关键词:http数据包; 截获; 还原
Abstract: With the increasing development and expansion of Internet, the traffic of World-Wide-Web has occupied more than 90 percent on Internet at present. Therefore, people have attached more and more importance to the security of the WWW information. While HTTP (Hypertext Transfer Protocol) as the central protocol of WWW’s application layer forms the foundation of it. Monitoring and analysing the data transferred on network is the daily works for network manager
The writer of this paper introduced the design and implementation for capturing a part of http data packets, recovering the captured http data packets,and analyzed some key technologies about capturing data packet brief,packet analyzing, reconstructing application data and packet decoding and so on.This system can monitor the packages which network manager is interested in,analyze the protocols which the packet uses,recover the format which the end user see.The implementation of the system provides a visual tool for network managers.
Key Words: http packets;capture;recover
目 录
前言 1
第一章 HTTP网络数据包截获与还原的理论基础 2
1.1 网络体系结构 2
1.1.1 网络参考模型概述 2
1.1.2 TCP/IP协议族 3
1.2 HTTP协议概述 4
1.2.1 http协议的几个重要概念 5
1.2.2 http协议结构 6
1.2.3 http协议的运作方式 12
1.3 基于HTTP协议的网络行为监视 16
1.3.1 http协议的安全因素 16
1.3.2 基于http协议监视的实现 17
第二章 开发工具与环境配置 19
2.1 JAVA语言介绍 19
2.1.1 平台无关性 19
2.1.2 面向对象 20
2.1.3 安全稳定 21
2.1.4 支持多线程 22
2.2 JDK概述 22
2.2.1 Java开发工具JDK 介绍 22
2.2.2 开发环境配置 23
第三章 HTTP数据包截获 24
3.1 HTTP数据包截获模块设计 24
3.1.1 体系结构设计 24
3.1.2 WinPcap工具 25
3.1.3 Packet.dll 26
3.1.4 Jpcap类库 28
3.2 数据包的存储 29
3.3 数据包捕获和存储流程图 32
3.4 数据包捕获和存储程序片断 32
第四章 HTTP数据包信息的分析与还原 35
4.1 字符编码的信息概述 35
4.1.1 ASCALL字符编码 35
4.1.2 GB2312字符编码 36
4.1.3 BIG5字符编码 36
4.1.4 UNICODE(UTF-8)字符编码 36
4.2 捕获数据包信息的分析 38
4.2.1 捕获数据数据包的重组分析 38
4.2.2 捕获数据包编码格式的分析 40
4.2.3 捕获数据的分析的程序片段 40
4.3 对捕获数据包信息的部分还原 41
4.3.1 捕获数据包信息还原的流程图 41
4.3.2 捕获数据包的信息还原算法 42
第五章 总结 52
参 考 文 献 54
谢 辞 55
前言
在短短的二十几年时间里,万维网(Word Wide Web)从一种发布高能物理数据的方式演变为如今人们头脑中的因特网,它之所以如此流行是由于它有一个丰富多彩的界面,初学者很容易使用,并且提供了大量的信息资源,几乎涉及人们所能想象的所有主题。
HTTP是一个属于应用层的面向对象的协议,而http协议作为www的主要协议,由于其简捷、快速的方式,适用于分布式超媒体信息系统。它于1990年提出,经过几年的使用与发展,得到不断地完善和扩展。目前在WWW中使用的是HTTP/1.0的第六版,HTTP/1.1的规范化工作正在进行之中,而且HTTP-NG(NextGenerationofHTTP)的建议已经提出。
但HTTP协议存在许多安全漏洞,比如说允许远程用户向远程服务器请求连接,并且执行远程命令.这个安全漏洞可以以许多方式损坏Web服务器和客户机,这些危害信息还包括对远程请求的武断认证;破坏请求和应答的保密性;滥用服务器功能和资源等。而在网络上传送的不良信息,也影响人们的身心健康,包括色情、迷信和暴力等信息。对危害信息和不良信息在应用层的还原可以很明确的知道该信息传送的具体信息,具有很直观的效果,可以帮助网络管理人员较好的监视网络。对于网络数据包的截获和还原是网络行为监视的一部分,本文主要介绍HTTP数据包的截获与还原技术,该技术涉及到数据包截获、数据包分析、应用数据重组和字符编码解码等关键技术。该技术的实现可以帮助网管人员监听感兴趣的HTTP数据包,分析出其遵守的协议以及其应用层数据,同时将应用层数据进行重组,恢复到原始的数据格式,达到与被监视用户相同的显示效果。该系统的实现,为网管人员有效地管理网络提供了一种直观的工具。
本文所介绍的基于HTTP协议的截获和还原信息主要是万维网信息,而这些信息包括文本、图象和声音等,本文主要是针对文本信息的还原,而大多数的嗅探器并不支持的数据在应用层的还原。本文所提出的应用层数据的还原技术是针对大多数嗅探器的局限性提出来的。
第一章 http网络数据包截获与还原的理论基础
1.1 网络体系结构
1.1.1 网络参考模型概述
OSI的七层协议体系结构既复杂又不实用,但其概念清楚,体系结构理论较完整。TCP/IP的协议现在得到了广泛的应用,但它原先并没有一个明确的体系结构。TCP/IP是一个四层的体系结构,它包含应用层、运输层、网际层和网络结构层。不过从实质上讲,TCP/IP只有三层,即应用层、运输层和网际层,因为最下面的网络接口层并没有什么具体内容。
下面的图片反应了两台计算机进行通信时的各层数据流结构。
图1.1
应用层 应用层是体系结构中的最高层。应用层确定进程之间通信的性质以满足用户的需要。应用层不仅要提供应用进程所需要的信息交换和远地操作,而且还要作为相互作用的应用进程的用户代理,来完成一些为进行语义上有意义的信息交换所必须的功能。应用层直接为用户的应用进程提供服务。在因特网中的应用层协议很多,如支持万维网应用的HTTP协议,支持电子邮件的SMTP协议,支持文件传输的FTP协议等等。
运输层 运输层的任务就是负责主机中两个进程之间的通信。
因特网的运输层可使用两种不同协议。即面向连接的传输控制协议TCP,和无连接的用户数据报协议UDP。面向连接的服务能够提供可靠的交付,但无连接服务则不保证提供可靠的交付,它只是“尽最大努力交付”。这两种服务方式都很有用,各有其优缺点。
在分组交换网内的各个交换接点机都没有运输层。运输层只能存在于分组交换网外面的主机之中。运输层以上的各层就不再关心信息传输的问题了。正因为如此,运输层就成为计算机网络体系结构中非常重要的一层。
网络层 网络层负责为分组交换网上的不同主机提供通信。在发送数据时,网络层将运输层产生的报文段或用户数据报封装成分组或包进行传送。在TCP/IP体系中,分组也叫作IP数据报,或简称为数据报。
因特网是一个很大的互联网,它由大量的异构网络通过路由器相互连接起来。因特网主要的网络协议是无连接的网际协议IP和许多路由选择协议,因此因特网的网络层也叫网际层或IP层。
数据链路层 在发送数据时,数据链路层的任务是将在网络层交下来的IP数据报组装成帧,在两个相邻接点间的链路上传送以帧为单位的数据。每一帧包括数据和必要的控制信息。控制信息使接受端能够知道一个帧从哪个比特开始和到哪个比特结束。控制信息还使接受端能够检测到所收到的帧中有无差错。如发现有差错,数据链路层就丢弃这个出了差错的帧。
物理层 物理层的任务是透明地传送比特流。在物理层上所传数据的单位是比特。传递信息所利用的一些物理媒体,如双绞线、同轴电缆、光缆,并不在物理层之内而是在物理层的下面。
1.1.2 TCP/IP协议族
TCP/IP协议族(如下图所示),它的特点是上下两头大而中间小:应用层和网络接口层都有多种协议,而中间的IP层很小,上层的各种协议都向下汇聚到一个IP协议中。这种很象沙漏计时器形状的TCP/IP协议族表明:TCP/IP可以为各式各样的应用提供服务,同时也可以连接到各式各样的网络上。正因为如此,因特网才会发展到今天的这种全球规模。

图1.2
整个通信网络的任务,可以划分成不同的功能块,即抽象成所谓的 ” 层” 。用于互联网的协议可以比照TCP/IP参考模型进行分类。TCP/IP协议栈起始于第三层协议IP(互联网协议) 。所有这些协议都在相应的RFC文档中讨论及标准化。重要的协议在相应的RFC文档中均标记了状态: “必须“ (required) ,“推荐“ (recommended) ,“可选“ (elective) 。其它的协议还可能有“ 试验“(experimental) 或“ 历史“(historic) 的状态。

1.2 http协议概述
我们在浏览器的地址栏里输入的网站地址叫做URL(UniformResourceLocator,统一资源定位符)。就像每家每户都有一个门牌地址一样,每个网页也都有一个Internet地址。当你在浏览器的地址框中输入一个URL或是单击一个超级链接时,URL就确定了要浏览的地址。浏览器通过超文本传输协议(HTTP),将Web服务器上站点的网页代码提取出来,并翻译成漂亮的网页。
Internet的基本协议是TCP/IP协议,然而在TCP/IP模型最上层的是应用层(Applicationlayer),它包含所有高层的协议。高层协议有:文件传输协议FTP、电子邮件传输协议SMTP、域名系统服务DNS、网络新闻传输协议NNTP和HTTP协议等。
  HTTP协议(Hypertext Transfer Protocol,超文本传输协议)是用于从WWW服务器传输超文本到本地浏览器的传送协议。它可以使浏览器更加高效,使网络传输减少。它不仅保证计算机正确快速地传输超文本文档,还确定传输文档中的哪一部分,以及哪部分内容首先显示(如文本先于图形)等。这就是你为什么在浏览器中看到的网页地址都是以“http://”开头的原因。
  自WWW诞生以来,一个多姿多彩的资讯和虚拟的世界便出现在我们眼前,可是我们怎么能够更加容易地找到我们需要的资讯呢?当决定使用超文本作为WWW文档的标准格式后,于是在1990年,科学家们立即制定了能够快速查找这些超文本文档的协议,即HTTP协议。经过几年的使用与发展,得到不断的完善和扩展,目前在WWW中使用的是HTTP/1.0的第六版。
1.2.1 http协议的几个重要概念
1.连接(Connection):一个传输层的实际环流,它是建立在两个相互通讯的应用程序之间。
  2.消息(Message):HTTP通讯的基本单位,包括一个结构化的八元组序列并通过连接传输。
  3.请求(Request):一个从客户端到服务器的请求信息包括应用于资源的方法、资源的标识符和协议的版本号
  4.响应(Response):一个从服务器返回的信息包括HTTP协议的版本号、请求的状态(例如“成功”或“没找到”)和文档的MIME类型。
  5.资源(Resource):由URI标识的网络数据对象或服务。
  6.实体(Entity):数据资源或来自服务资源的回映的一种特殊表示方法,它可能被包围在一个请求或响应信息中。一个实体包括实体头信息和实体的本身内容。
  7.客户机(Client):一个为发送请求目的而建立连接的应用程序。
  8.用户代理(Useragent):初始化一个请求的客户机。它们是浏览器、编辑器或其它用户工具。
  9.服务器(Server):一个接受连接并对请求返回信息的应用程序。
  10.源服务器(Originserver):是一个给定资源可以在其上驻留或被创建的服务器。
  11.代理(Proxy):一个中间程序,它可以充当一个服务器,也可以充当一个客户机,为其它客户机建立请求。请求是通过可能的翻译在内部或经过传递到其它的服务器中。一个代理在发送请求信息之前,必须解释并且如果可能重写它。
  代理经常作为通过防火墙的客户机端的门户,代理还可以作为一个帮助应用来通过协议处理没有被用户代理完成的请求。
  12.网关(Gateway):一个作为其它服务器中间媒介的服务器。与代理不同的是,网关接受请求就好象对被请求的资源来说它就是源服务器;发出请求的客户机并没有意识到它在同网关打交道。
  网关经常作为通过防火墙的服务器端的门户,网关还可以作为一个协议翻译器以便存取那些存储在非HTTP系统中的资源。
  13.通道(Tunnel):是作为两个连接中继的中介程序。一旦激活,通道便被认为不属于HTTP通讯,尽管通道可能是被一个HTTP请求初始化的。当被中继的连接两端关闭时,通道便消失。当一个门户(Portal)必须存在或中介(Intermediary)不能解释中继的通讯时通道被经常使用。
  14.缓存(Cache):反应信息的局域存储。
1.2.2 http协议结构
HTTP报文由从客户机到服务器的请求和从服务器到客户机的响应构成。
请求报文格式如下:
请求行 通用信息头 请求头 实体头 报文主体
表3.1
请求行以方法字段开始,后面分别是 URL 字段和 HTTP 协议版本字段,并以 CRLF 结尾。SP 是分隔符。除了在最后的 CRLF 序列中 CF 和 LF 是必需的之外,其他都可以不要。有关通用信息头,请求头和实体头方面的具体内容可以参照相关文件。
响应报文格式如下:
状态行 通用信息头 请求头 实体头 报文主体
表3.2
状态码元由3位数字组成,表示请求是否被理解或被满足。原因分析是对原文的状态码作简短的描述,状态码用来支持自动操作,而原因分析用来供用户使用。客户机无需用来检查或显示语法。有关通用信息头,响应头和实体头方面的具体内容可以参照相关文件。
HTTP(HyperTextTransferProtocol)
HTTP(HyperTextTransferProtocol)是超文本传输协议的缩写,它用于传送WWW方式的数据,关于HTTP协议的详细内容请参考RFC2616。HTTP协议采用了请求/响应模型。客户端向服务器发送一个请求,请求头包含请求的方法、URI、协议版本、以及包含请求修饰符、客户信息和内容的类似于MIME的消息结构。服务器以一个状态行作为响应,相应的内容包括消息协议的版本,成功或者错误编码加上包含服务器信息、实体元信息以及可能的实体内容。
通常HTTP消息包括客户机向服务器的请求消息和服务器向客户机的响应消息。这两种类型的消息由一个起始行,一个或者多个头域,一个只是头域结束的空行和可选的消息体组成。HTTP的头域包括通用头,请求头,响应头和实体头四个部分。每个头域由一个域名,冒号(:)和域值三部分组成。域名是大小写无关的,域值前可以添加任何数量的空格符,头域可以被扩展为多行,在每行开始处,使用至少一个空格或制表符。
通用头域
通用头域包含请求和响应消息都支持的头域,通用头域包含Cache-Control、Connection、Date、Pragma、Transfer-Encoding、Upgrade、Via。对通用头域的扩展要求通讯双方都支持此扩展,如果存在不支持的通用头域,一般将会作为实体头域处理。下面简单介绍几个在UPnP消息中使用的通用头域。
Cache-Control头域
Cache-Control指定请求和响应遵循的缓存机制。在请求消息或响应消息中设置Cache-Control并不会修改另一个消息处理过程中的缓存处理过程。请求时的缓存指令包括no-cache、no-store、max-age、max-stale、min-fresh、only-if-cached,响应消息中的指令包括public、private、no-cache、no-store、no-transform、must-revalidate、proxy-revalidate、max-age。各个消息中的指令含义如下:
Public指示响应可被任何缓存区缓存。
Private指示对于单个用户的整个或部分响应消息,不能被共享缓存处理。这允许服务器仅仅描述当用户的部分响应消息,此响应消息对于其他用户的请求无效。
no-cache指示请求或响应消息不能缓存
no-store用于防止重要的信息被无意的发布。在请求消息中发送将使得请求和响应消息都不使用缓存。
max-age指示客户机可以接收生存期不大于指定时间(以秒为单位)的响应。
min-fresh指示客户机可以接收响应时间小于当前时间加上指定时间的响应。
max-stale指示客户机可以接收超出超时期间的响应消息。如果指定max-stale
息的值,那么客户机可以接收超出超时期指定值之内的响应消息。
Date头域
Date头域表示消息发送的时间,时间的描述格式由rfc822定义。例如,Date:Mon,31Dec200104:25:57GMT。Date描述的时间表示世界标准时,换算成本地时间,需要知道用户所在的时区。
Pragma头域
Pragma头域用来包含实现特定的指令,最常用的是Pragma:no-cache。在HTTP/1.1协议中,它的含义和Cache-Control:no-cache相同。
请求消息
请求消息的第一行为下面的格式:
MethodSPRequest-URISPHTTP-VersionCRLFMethod表示对于Request-URI完成的方法,这个字段是大小写敏感的,包括OPTIONS、GET、HEAD、POST、PUT、DELETE、TRACE。方法GET和HEAD应该被所有的通用WEB服务器支持,其他所有方法的实现是可选的。GET方法取回由Request-URI标识的信息。HEAD方法也是取回由Request-URI标识的信息,只是可以在响应时,不返回消息体。POST方法可以请求服务器接收包含在请求中的实体信息,可以用于提交表单,向新闻组、BBS、邮件群组和数据库发送消息。
SP表示空格。Request-URI遵循URI格式,在此字段为星号(*)时,说明请求并不用于某个特定的资源地址,而是用于服务器本身。HTTP-Version表示支持的HTTP版本,例如为HTTP/1.1。CRLF表示换行回车符。请求头域允许客户端向服务器传递关于请求或者关于客户机的附加信息。
请求头域可能包含下列字段Accept、Accept-Charset、Accept-Encoding、Accept-Language、Authorization、From、Host、If-Modified-Since、If-Match、If-None-Match、If-Range、If-Range、If-Unmodified-Since、Max-Forwards、Proxy-Authorization、Range、Referer、User-Agent。对请求头域的扩展要求通讯双方都支持,如果存在不支持的请求头域,一般将会作为实体头域处理。
典型的请求消息:
GEThttp://class/download.microtool.de:80/somedata.exe
Host:download.microtool.de
Accept:*/*
Pragma:no-cache
Cache-Control:no-cache
Referer:http://class/download.microtool.de/
User-Agent:Mozilla/4.04[en](Win95;I;Nav)
Range:bytes=554554-
Host头域
Host头域指定请求资源的Intenet主机和端口号,必须表示请求url的原始服务器或网关的位置。HTTP/1.1请求必须包含主机头域,否则系统会以400状态码返回。
Referer头域
Referer头域允许客户端指定请求uri的源资源地址,这可以允许服务器生成回退链表,可用来登陆、优化cache等。他也允许废除的或错误的连接由于维护的目的被追踪。如果请求的uri没有自己的uri地址,Referer不能被发送。如果指定的是部分uri地址,则此地址应该是一个相对地址。
Range头域
Range头域可以请求实体的一个或者多个子范围。例如,
表示头500个字节:bytes=0-499
表示第二个500字节:bytes=500-999
表示最后500个字节:bytes=-500
表示500字节以后的范围:bytes=500-
第一个和最后一个字节:bytes=0-0,-1
同时指定几个范围:bytes=500-600,601-999
但是服务器可以忽略此请求头,如果无条件GET包含Range请求头,响应会以状态码206(PartialContent)返回而不是以200(OK)。
User-Agent头域
User-Agent头域的内容包含发出请求的用户信息。
响应消息
响应消息的第一行为下面的格式:
HTTP-VersionSPStatus-CodeSPReason-PhraseCRLF
HTTP-Version表示支持的HTTP版本,例如为HTTP/1.1。Status-Code是一个三个数字的结果代码。Reason-Phrase给Status-Code提供一个简单的文本描述。Status-Code主要用于机器自动识别,Reason-Phrase主要用于帮助用户理解。Status-Code的第一个数字定义响应的类别,后两个数字没有分类的作用。第一个数字可能取5个不同的值:
1xx:信息响应类,表示接收到请求并且继续处理
2xx:处理成功响应类,表示动作被成功接收、理解和接受
3xx:重定向响应类,为了完成指定的动作,必须接受进一步处理
4xx:客户端错误,客户请求包含语法错误或者是不能正确执行
5xx:服务端错误,服务器不能正确执行一个正确的请求
响应头域允许服务器传递不能放在状态行的附加信息,这些域主要描述服务器的信息和Request-URI进一步的信息。响应头域包含Age、Location、Proxy-Authenticate、Public、Retry-After、Server、Vary、Warning、WWW-Authenticate。对响应头域的扩展要求通讯双方都支持,如果存在不支持的响应头域,一般将会作为实体头域处理。
典型的响应消息:
HTTP/1.0200OK
Date:Mon,31Dec200104:25:57GMT
Server:Apache/1.3.14(Unix)
Content-type:text/html
Last-modified:Tue,17Apr200106:46:28GMT
Etag:"a030f020ac7c01:1e9f"
Content-length:39725426
Content-range:bytes554554-40279979/40279980
Location响应头
Location响应头用于重定向接收者到一个新URI地址。
Server响应头
Server响应头包含处理请求的原始服务器的软件信息。此域能包含多个产品标识和注释,产品标识一般按照重要性排序。
实体
请求消息和响应消息都可以包含实体信息,实体信息一般由实体头域和实体组成。实体头域包含关于实体的原信息,实体头包括Allow、Content-Base、Content-Encoding、Content-Language、Content-Length、Content-Location、Content-MD5、Content-Range、Content-Type、Etag、Expires、Last-Modified、extension-header。extension-header允许客户端定义新的实体头,但是这些域可能无法未接受方识别。实体可以是一个经过编码的字节流,它的编码方式由Content-Encoding或Content-Type定义,它的长度由Content-Length或Content-Range定义。
Content-Type实体头
Content-Type实体头用于向接收方指示实体的介质类型,指定HEAD方法送到接收方的实体介质类型,或GET方法发送的请求介质类型Content-Range实体头Content-Range实体头用于指定整个实体中的一部分的插入位置,他也指示了整个实体的长度。在服务器向客户返回一个部分响应,它必须描述响应覆盖的范围和整个实体长度。一般格式:
Content-Range:bytes-unitSPfirst-byte-pos-last-byte-pos/entity-legth
例如,传送头500个字节次字段的形式:Content-Range:bytes0-499/1234如果一个http消息包含此节(例如,对范围请求的响应或对一系列范围的重叠请求),Content-Range表示传送的范围,Content-Length表示实际传送的字节数。
Last-modified实体头
Last-modified实体头指定服务器上保存内容的最后修订时间。
1.2.3 http协议的运作方式
HTTP协议是基于请求/响应范式的。一个客户机与服务器建立连接后,发送一个请求给服务器,请求方式的格式为,统一资源标识符、协议版本号,后边是MIME信息包括请求修饰符、客户机信息和可能的内容。服务器接到请求后,给予相应的响应信息,其格式为一个状态行包括信息的协议版本号、一个成功或错误的代码,后边是MIME信息包括服务器信息、实体信息和可能的内容。
  许多HTTP通讯是由一个用户代理初始化的并且包括一个申请在源服务器上资源的请求。最简单的情况可能是在用户代理(UA)和源服务器(O)之间通过一个单独的连接来完成(见图1.1)。

图1.1
  当一个或多个中介出现在请求/响应链中时,情况就变得复杂一些。中介由三种:代理(Proxy)、网关(Gateway)和通道(Tunnel)。一个代理根据URI的绝对格式来接受请求,重写全部或部分消息,通过URI的标识把已格式化过的请求发送到服务器。网关是一个接收代理,作为一些其它服务器的上层,并且如果必须的话,可以把请求翻译给下层的服务器协议。一个通道作为不改变消息的两个连接之间的中继点。当通讯需要通过一个中介(例如:防火墙等)或者是中介不能识
别消息的内容时,通道经常被使用。

图1.2
  上面的图1.2表明了在用户代理(UA)和源服务器(O)之间有三个中介(A,B和C)。一个通过整个链的请求或响应消息必须经过四个连接段。这个区别是重要的,因为一些HTTP通讯选择可能应用于最近的连接、没有通道的邻居,应用于链的终点或应用于沿链的所有连接。尽管图1.2是线性的,每个参与者都可能从事多重的、并发的通讯。例如,B可能从许多客户机接收请求而不通过A,并且/或者不通过C把请求送到A,在同时它还可能处理A的请求。
  任何针对不作为通道的汇聚可能为处理请求启用一个内部缓存。缓存的效果是请求/响应链被缩短,条件是沿链的参与者之一具有一个缓存的响应作用于那个请求。下图说明结果链,其条件是针对一个未被UA或A加缓存的请求,B有一个经过C来自O的一个前期响应的缓存拷贝。

图1.3
  在Internet上,HTTP通讯通常发生在TCP/IP连接之上。缺省端口是TCP80,但其它的端口也是可用的。但这并不预示着HTTP协议在Internet或其它网络的其它协议之上才能完成。HTTP只预示着一个可靠的传输。
  以上简要介绍了HTTP协议的宏观运作方式,下面介绍一下HTTP协议的内部操作过程。
  首先,简单介绍基于HTTP协议的客户/服务器模式的信息交换过程,如图1.4所示,它分四个过程,建立连接、发送请求信息、发送响应信息、关闭连接。
图1.4
图1.4
在WWW中,“客户”与“服务器”是一个相对的概念,只存在于一个特定的连接期间,即在某个连接中的客户在另一个连接中可能作为服务器。WWW服务器运行时,一直在TCP80端口(WWW的缺省端口)监听,等待连接的出现。
  下面,讨论HTTP协议下客户/服务器模式中信息交换的实现。  
1.建立连接  连接的建立是通过申请套接字(Socket)实现的。客户打开一个套接字并把它约束在一个端口上,如果成功,就相当于建立了一个虚拟文件。以后就可以在该虚拟文件上写数据并通过网络向外传送。
  2.发送请求
  打开一个连接后,客户机把请求消息送到服务器的停留端口上,完成提出请求动作。
  HTTP/1.0  请求消息的格式为:
  请求消息=请求行(通用信息|请求头|实体头)CRLF[实体内容]
  请求 行=方法 请求URL HTTP版本号 CRLF
  方  法=GET|HEAD|POST|扩展方法
  U R L=协议名称+宿主名+目录与文件名
  请求行中的方法描述指定资源中应该执行的动作,常用的方法有GET、HEAD和POST。不同的请求对象对应GET的结果是不同的,对应关系如下:
  对象      GET的结果
  文件      文件的内容
  程序      该程序的执行结果
  数据库查询   查询结果
  HEAD——要求服务器查找某对象的元信息,而不是对象本身。
  POST——从客户机向服务器传送数据,在要求服务器和CGI做进一步处理时会用到POST方法。POST主要用于发送HTML文本中FORM的内容,让CGI程序处理。
  一个请求的例子为:
  GEThttp://networking.zju.edu.cn/zju/index.htmHTTP/1.0
  头信息又称为元信息,即信息的信息,利用元信息可以实现有条件的请求或应答。
  请求头——告诉服务器怎样解释本次请求,主要包括用户可以接受的数据类型、压缩方法和语言等。
  实体头——实体信息类型、长度、压缩方法、最后一次修改时间、数据有效期等。
  实体——请求或应答对象本身。
  3.发送响应
  服务器在处理完客户的请求之后,要向客户机发送响应消息。
  HTTP/1.0的响应消息格式如下:
  响应消息=状态行(通用信息头|响应头|实体头) CRLF 〔实体内容〕
  状态行=HTTP版本号 状态码 原因叙述
  状态码表示响应类型
  1××  保留
  2××  表示请求成功地接收
  3××  为完成请求客户需进一步细化请求
  4××  客户错误
  5××  服务器错误
  响应头的信息包括:服务程序名,通知客户请求的URL需要认证,请求的资源何时能使用。
  4.关闭连接
  客户和服务器双方都可以通过关闭套接字来结束TCP/IP对话
1.3 基于http协议的网络行为监视
1.3.1 http协议的安全因素
HTTP协议存在许多的安全漏洞,这些安全漏洞之一就是允许远程用户向远程服务器请求连接,并且执行远程命令。这个安全漏洞可以以许多方式损坏web服务器和客户机,包括但不局限于如下这些:
对远程请求的武断认证。
对web服务器的武断认证。
破坏请求和应答的保密性。
滥用服务器功能和资源。
通过搜索它的程序错误和安全漏洞,滥用服务器。
滥用日志信息(提取IP地址、域名和文件名等等)。
许多这样的安全漏洞是众所周知的,一些应用程序,如Netscape的SSL和NCSA的SHTTP XE“S-HTTP”试图解决这些问题,但仅仅是其中的一部分问题。问题是,在internet上,web服务器对客户的行为显得很脆弱。因此需要对其监视。
1.3.2 基于http协议监视的实现
在CSMA/CD(Carrier Sense Multiple Access/Collision Detection,载波侦听多路访问冲突检测)网络下,监视网络上流动的数据包,捕捉我们感兴趣的数据包,对感兴趣的数据包进行分析和研究,分析出其所遵守的协议,进一步得到其应用层数据,并在需要的情况下将其数据进行重组,恢复到被监视用户所看到的格式,为进行更深一步的分析和研究打下基础。
网络监视器实现的一个前提条件是必须能够“听到”网路上所有的数据包,假如网卡仅能接收到属于自己的数据包,也就无法实现监视功能了。
因此,其实现的网络应当是基于共享式的,而在CSMA/CD网络上是可以使网卡接受到所有的数据包,所以我们将实现的网络环境暂时局限于以太网上。在系统结构设计上,网络监视器可以从下向上分为三层,分别实现不同的功能,位于最下层的为捕获层,该层完成的功能是在基于CSMA/CD的网络上截获网络上传输的数据包,这一部分是与平台相关的,这是因为针对不同的操作系统平台,其网络的软件体系结构也大不相同,无论是DOS下的PktDrv驱动程序模型,还Windows下NDIS(Network Driver Interface Specification)结构模型,其处理的过程以及驱动程序的结构都不一样,因此想为它们设计一个通用的捕获包组件是不太可能的,必须针对不同操作系统的不同特点设计不同的组件,以满足它们特有的需要。为了能够在添加新的操作系统支持时不影响原有系统的实现,在该层的实现时,采用了Bridge的设计模式 ,它将Capturer(捕获类)抽象和它的实现部分分别放在独立的类层次结构中,其中一个类层次结构针对Capturer接口,另外一个独立的类层次结构针对平台相关的捕获器实现部分,这个类层次结构的根类为Capturerlmp;位于捕获层之上的为分析层,该层主要是对数据包所包含的内容进行分析,获知其所用的协议和所包括的数据,这一部分只与特定的协议组有关,而和操作系统平台无关,事实上,对于TCP/IP协议,无论是在Unix或DOS,还是在Windows下,它们的分析和重组都是完全一样的,所以,这部分可以设计为一个通用组件;最上面一层为重组层,该层对一些常用的协议进行会话恢复,以得知会话的全过程,这一部分同第二部分一样也是与平台无关的。
关键技术将在下面的章节做详细介绍,包括数据包的捕获、重组、分析、解码还原等过程。
 
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
初识“HTTP”--,Protocol Analysis
http协议(二)
HTTP详解(1)-工作原理
WWW的核心——HTTP协议 - song2004
Http、socket和TCP/IP
HTTP协议报文格式
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服