http协议分析论文.doc_第1页
http协议分析论文.doc_第2页
http协议分析论文.doc_第3页
http协议分析论文.doc_第4页
http协议分析论文.doc_第5页
已阅读5页,还剩14页未读 继续免费阅读

下载本文档

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

文档简介

。TCP/IP协议分析院系:计算机科学与技术学院班级:09级科技2班姓名:张帆学号:2009121216TCP/IP协议分析HTTP协议分析论 摘要:HTTP协议通信过程URL自动解析 HTTP URL包含了用于查找某个资源的足够信息,其中HTTP表示桶盖HTTP协议来定位网络资源;host表示合法的主机域名或IP地址,port指定一个端口号,缺省80;abs path指定请求资源的URI;如果URL中没有给出abs path,那么当它作为请求URI时,必须以“/”的形式给出,例如:输入www.B;浏览器会自动转换成:HTTP:/www.B/1 。获取IP,建立TCP连接 浏览器地址栏中输入HTTP://并提交之后,首先它会在DNS本地缓存表中查找,如果有则直接告诉IP地址。当获取IP之后,就开始与所请求的TCP建立三次握手连接,连接建立后,就向服务器发出HTTP请求客户端浏览器向服务器发出HTTP请求一旦建立了TCP连接,Web浏览器就会向Web服务器发送请求命令,接着以头信息的形式向Web服务器发送一些别的信息,之后浏览器发送了一空白行来通知服务器,它已经结束了该头信 。Web服务器应答,并向浏览器发送数据客户机向服务器发出请求后,服务器会客户机回送应答, HTTP/1.1 200 OK应答的第一部分是协议的版本号和应答状态码,正如客户端会随同请求发送关于自身的信息一样,服务器也会随同应答向用户发送关于它自己的数据及被请求的文档。Web服务器向浏览器发送头信息后,它会发送一个空白行来表示头信息的发送到此为结束,接着,它就以Content-Type应答头信息所描述的格式发送用户所请求的实际数据。Web服务器关闭TCP连接1 前言 HTTP协议简述 HTTP是一个客户端和服务器端请求和应答的标准(TCP)。客户端是终端用户,服务器端是网站。通过使用Web浏览器、网络爬虫或者其它的工具,客户端发起一个到服务器上指定端口(默认端口为80)的HTTP请求。(我们称这个客户端)叫用户代理(user agent)。应答的服务器上存储着(一些)资源,比如HTML文件和图像。(我们称)这个应答服务器为源服务器(origin server)。在用户代理和源服务器中间可能存在多个中间层,比如代理,网关,或者隧道(tunnels)。尽管TCP/IP协议是互联网上最流行的应用,HTTP协议并没有规定必须使用它和(基于)它支持的层。 事实上,HTTP可以在任何其他互联网协议上,或者在其他网络上实现。HTTP只假定(其下层协议提供)可靠的传输,任何能够提供这种保证的协议都可以被其使用。2 HTTP的头域2.1 通用头域 通用头域包含请求和响应消息都支持的头域,通用头域包含Cache- Control、Connection、Date、Pragma、Transfer-Encoding、Upgrade、Via。对通用头域的扩展要求通 讯双方都支持此扩展,如果存在不支持的通用头域,一般将会作为实体头域处理。下面简单介绍几个在UPnP消息中使用的通用头域。 2.1.1 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消息的值,那么客户机可以接收超出超时期指定值之内的响应消息。 2.1.2 Date头域 Date头域表示消息发送的时间,时间的描述格式由rfc822定义。例 如,Date: Tue, 15 Jun 2010 11:04:56 GMT。Date描述的时间表示世界标准时,换算成本地时间,需要知道用户所在的时区。 2.1.3 Pragma头域 Pragma头域用来包含实现特定的指令,最常用的是Pragma:no- cache。在HTTP/1.1协议中,它的含义和Cache-Control:no-cache相同。 2.2请求消息 请求消息由三部分组成,分别是:请求行、消息报头、请求正文1、 请求行以一个方法符号开头,以空格分开,后面跟着请求的URI和协议的版本,格式如下:Method Request-URI HTTP-Version CRLF 其中 Method表示请求方法;Request-URI是一个统一资源标识符;HTTP-Version表示请求的HTTP协议版本;CRLF表示回车和换行(除了作为结尾的CRLF外,不允许出现单独的CR或LF字符)。请求方法(所有方法全为大写)有多种,各个方法的解释如下:GET 请求获取Request-URI所标识的资源POST 在Request-URI所标识的资源后附加新的数据HEAD 请求获取由Request-URI所标识的资源的响应消息报头PUT 请求服务器存储一个资源,并用Request-URI作为其标识DELETE 请求服务器删除Request-URI所标识的资源TRACE 请求服务器回送收到的请求信息,主要用于测试或诊断CONNECT 保留将来使用OPTIONS 请求查询服务器的性能,或者查询与资源相关的选项和需求应用举例: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所标识的资源的信息。该方法常用于测试超链接的有效性,是否可以访问,以及最近是否更新。2、请求报头请求报头允许客户端向服务器端传递请求的附加信息以及客户端自身的信息。常用的请求报头AcceptAccept请求报头域用于指定客户端接受哪些类型的信息。eg:Accept:image/gif,表明客户端希望接受GIF图象格式的资源;Accept:text/html,表明客户端希望接受html文本。Accept-CharestAccept-Charest请求报头域用于指定客户端接受的字符集。eg:Accept-Charset:iso-8859-1,gb2312.如果在请求消息中没有设置这个域,缺省是任何字符集都可以接受。Accept-EncodingAccept-Encoding请求报头域类似于Accept,但是它是用于指定可接受的内容编码。eg:Accept-Encoding:gzip.deflate.如果请求消息中没有设置这个域服务器假定客户端对各种内容编码都可以接受。Accept-LanguageAccept-Language请求报头域类似于Accept,但是它是用于指定一种自然语言。eg:Accept-Language:zh-cn.如果请求消息中没有设置这个报头域,服务器假定客户端对各种语言都可以接受。AuthorizationAuthorization请求报头域主要用于证明客户端有权查看某个资源。当浏览器访问一个页面时,如果收到服务器的响应代码为401(未授权),可以发送一个包含Authorization请求报头域的请求,要求服务器对其进行验证。Host(发送请求时,该报头域是必需的)Host请求报头域主要用于指定被请求资源的Internet主机和端口号,它通常从HTTP URL中提取出来的,我们上网登陆论坛的时候,往往会看到一些欢迎信息,其中列出了你的操作系统的名称和版本,你所使用的浏览器的名称和版本,这往往让很多人感到很神奇,实际上,服务器应用程序就是从User-Agent这个请求报头域中获取到这些信息。User-Agent请求报头域允许客户端将它的操作系统、浏览器和其它属性告诉服务器。不过,这个报头域不是必需的,如果我们自己编写一个浏览器,不使用User-Agent请求报头域,那么服务器端就无法得知我们的信息了。2.3响应消息 HTTP响应也是由三个部分组成,分别是:状态行、响应报头、响应正文1、状态行格式如下:HTTP-Version Status-Code Reason-Phrase CRLF其中,HTTP-Version表示服务器HTTP协议的版本;Status-Code表示服务器发回的响应状态代码;Reason-Phrase表示状态代码的文本描述。状态代码有三位数字组成,第一个数字定义了响应的类别,且有五种可能取值: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、响应报头响应报头允许服务器传递不能放在状态行中的附加响应信息,以及关于服务器的信息和对Request-URI所标识的资源进行下一步访问的信息。常用的响应报头LocationLocation响应报头域用于重定向接受者到一个新的位置。Location响应报头域常用在更换域名的时候。ServerServer响应报头域包含了服务器用来处理请求的软件信息。与User-Agent请求报头域是相对应的。下面是Server响应报头域的一个例子:Server:Apache-Coyote/1.1WWW-AuthenticateWWW-Authenticate响应报头域必须被包含在401(未授权的)响应消息中,客户端收到401响应消息时候,并发送Authorization报头域请求服务器对其进行验证时,服务端响应报头就包含该报头域。eg:WWW-Authenticate: Basic realm=Basic Auth Test! /可以看出服务器对请求资源采用的是基本验证机制。3、响应正文就是服务器返回的资源的内容2.4 实体信息 请求消息和响应消息都可以包含实体信息,实体信息一般由实体头域和实体组成。实体头域包含关于实体的原信息,实体头包括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-unitSP first-byte-pos - last-byte-pos/entity-legth 例如,传送头500个字节次字段的形式:Content- Range:bytes0-499/1234如果一个http消息包含此节(例如,对范围请求的响应或对一系列范围的重叠请求),Content- Range表示传送的范围,Content-Length表示实际传送的字节数。 Last-modified实体头 Last-modified实体头指定服务器上保存内容的最后修订时间。3 实例分析HTTP通信 3.1下面我们访问http:/www.B/ ,用科来网络分析系统6.0将抓来的包进行分析访问浏览器和服务器通信的过程。 1 用行科来软件,点击立即开始采集;在工程设置里选择过滤器,然后从过滤器表添加,选择http单击确定,添加成功后在选择编辑,进入http具体设置,勾住地址过滤,再添加Ipv4地址24确定,即可开始抓包。抓的是本地址上传输的数据。 2 浏览器中输入 /,网页打开后,在科来软件中选择停止抓包;工具已经详细列出了访问的数据包信息。通过截图见到了解下抓包信息 建立连接第一次请求 如图:11 一次请求的正文内容 图:12 3.2 请求消息 请求消息的第一行为下面的格式: MethodSPRequest-URISPHTTP-VersionCRLF Method表示对于Request-URI完成的方法,这个字段是大小写敏感的,包括OPTIONS、GET、HEAD、POST、PUT、DELETE、TRACE。GET方法取回由Request-URI标识的信息。HEAD方法也是取回由Request-URI标识的信息,只是可以在响应时,不返回消息体。POST方法可以请求服务器接收包含在请求中的实体信息,可以用于提交表单,向新闻组、BBS、邮件群组和数据库发送消息。 SP表示空格。 Request-URI遵循URI格式,在此字段为星号(*)时,说明请求并不用于某个特定的资源地址,而是用于服务器本身。 HTTP-Version表示支持的HTTP版本,例如为HTTP/1.1。 CRLF表示换行回车符。 请求消息报文: 图:13GEThttp:/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.04en(Win95;I;Nav) Range:bytes=554554- 上例第一行表示HTTP客户端(可能是浏览器、下载程序)通过GET方法获得指定URL下的文件。 Host头域 Host头域指定请求资源的Internet主机和端口号,必须表示请求url的原始服务器或网关的位置。 Referrer头域 Referrer头域允许客户端指定请求Uri的源资源地址,这可以允许服务器生成回退链表,可用来登陆、优化cache等。他也允许废除的或错误的连接由于维护的目的被追踪。如果请求的Uri没有自己的Uri地址,Referrer不能被发送。如果指定的是部分Uri地址,则此地址应该是一个相对地址。 Range头域 Range头域可以请求实体的一个或者多个子范围。同时指定几个范围:bytes=500-600,601-999 ,但是服务器可以忽略此请求头,如果无条件GET包含Range请求头,响应会以状态码206(Partial Content)返回而不是以200(OK)。 User-Agent头域 User-Agent头域的内容包含发出请求的用户信息。 响应消息 图:14你会发现浏览器中只点击了一个超级链接,却发送了多个数据包。3.3下面详细分析HTTP的请求和响应信息: 1)HTTP请求消息,当客户端和服务端建立TCP连接后,客户端就会向服务器发送一个请求信息, 如:图151 GET / HTTP/1.1 请求报文 图:15 图:16如图:1-6 请求头字段的具体含义 )Accept:浏览器可接受的MIME类型。 )Accept-Charest:浏览器可接受的字符集。 )Accept-Encoding:浏览器能够进行解码的数据编码方式,比如gzip。 )Accept-Language:浏览器所希望的语言种类,当服务器能够提供一种以上的语言版本时要用到。 )Authorization:授权信息,通常出现在对服务器发送的WWW-Authenticate头的应答中。 )Connection:表示是否需要持久连接。如果Servlet看到这里的值为“Keep-Alive”,或者看到请求使用的是HTTP 1.1(HTTP 1.1默认进行持久连接),它就可以利用持久连接的优点,当页面包含多个元素时(例如Applet,图片),显著地减少下载所需要的时间。要实现这一点, Servlet需要在应答中发送一个Content-Length头,最简单的实现方法是:先把内容写入ByteArrayOutputStream,然后在正式写出内容之前计算它的大小。 )Content-Length:表示请求消息正文的长度。 )Cookie:设置cookie,这是最重要的请求头信息之一 )From:请求发送者的email地址,由一些特殊的Web客户程序使用,浏览器不会用到它。 )Host:初始URL中的主机和端口。 )If-Modified-Since:只有当所请求的内容在指定的日期之后又经过修改才返回它,否则返回304“Not Modified”应答。 )Pragma:指定“no-cache”值表示服务器必须返回一个刷新后的文档,即使它是代理服务器而且已经有了页面的本地拷贝。 )Referer:包含一个URL,用户从该URL代表的页面出发访问当前请求的页面。 )User-Agent:浏览器类型,如果Servlet返回的内容与浏览器类型有关则该值非常有用。 UA-Pixels,UA-Color,UA-OS,UA-CPU:由某些版本的IE浏览器所发送的非标准的请求头,表示屏幕大小、颜色深度、操作系统和CPU类型。 ) Connection: Keep-Alive TCP连接保持打开 该请求信息主要由4部分组成: 请求方法URI协议/版本:以上代码第1行“GET”表示请求方法,“HTTP/1.1代表协议和协议的版本,HTTP请求可以使用多种请求方法,最常用的为GET和POST方法 请求头:2-8行,包含许多有关客户端环境和请求正文的有用信息。 空行 :9 请求头和请求正文之间是一个空行,这个行非常重要,表示请求头已经结束,接下来是正文,这个行非常重要,它表示请求头已经结束,接下来是请求正文。 请求正文。请求正文中可以包含客户提交的查询字符串信息,如用户名和密码等。这里没有。 这里有一点值得说明的是:请求方法中的GET和POST方法; GET方法是默认的HTTP请求方法,我们日常用GET方法来提交表单数据,然而用GET方法提交的表单数据只经过了简单的编码,同时它将作为URL的一部分向Web服务器发送,因此,如果使用GET方法来提交表单数据就存在着安全隐患上,同时这个URL长度还有限制,不允许超过1k。 http响应消息报文 图:1-7 2)HTTP响应消息,响应跟请求类似,如:图1-7 1HTTP/1.1 200 OK 2Cache-Control: private, 3Date: sun, 13 Jun 2010 02:18:38 GMT 4Expires: -1 5Content-Type: baiduApp/json;v4 6Set-Cookie: PREF=ID=cc4a31ab6792ef2c:NW=1:TM=1235721216:LM=1235721216:S=q1hQBu-1KdamAWK-; expires=Sun, 27-Feb-2011 07:53:36 GMT; path=/; domain=. 7Content-Encoding: gzip 8Server: suggestion.baidu.zbb.df 9Transfer-Encoding: chunked 该响应信息也以对应的4部分组成: 协议状态描述,HTTP/1.1表示协议版本,200 OK表示服务器已经成功处理了客户端发出的请求。200表示HTTP的应答码成功。HTTP应答码由3位数字构成,其中首位数字定义了应答码的类型: 1XX信息类(Information),表示收到Web浏览器请求,正在进一步的处理中 2XX成功类(Successful),表示用户请求被正确接收,理解和处理例如:200 OK 3XX-重定向类(Redirection),表示请求没有成功,客户必须采取进一步的动作。 4XX-客户端错误(Client Error),表示客户端提交的请求有错误 例如:404 NOT Found,意味着请求中所引用的文档不存在。 5XX-服务器错误(Server Error)表示服务器不能完成对请求的处理:如 500 响应头:跟请求头一样,它指出服务器的功能,标识出响应数据的细节。 空行:也是属于响应头和响应正文之间必须存在的一个空行,表示响应头结束,接下来是响应正文响应正文:也就是服务器返回的网页内容。点击链接请求 图1-8 请求消息的第一行为下面的格式: 请求消息: HTTP 请求:GET /videourlsnifferconfig.xml HTTP/1.1 54/41 Accept: */*95/13Accept-Encoding: gzip, deflate 108/32User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.507140/89Host: 229/27Connection: Keep-Alive 256/24Cookie: KANKANWEBUID=d1ea7efcfc5b77e19b591e755976d132 280/57 Connection: Keep-Alive 256/24Cookie: KANKANWEBUID=d1ea7efcfc5b77e19b591e755976d132上例第一行表示HTTP客户端(可能是浏览器、下载程序)通过GET方法获得指定URL下的文件。 Host头域 Host头域指定请求资源的Internet主机和端口号,必须表示请求url的原始服务器或网关的位置。HTTP/1.1请求必须包含主机头域,否则系统会以400状态码返回。Referer头域 Referer 头域允许客户端指定请求Uri的源资源地址,这可以允许服务器生成回退链表,可用来登陆、优化cache等。他也允许废除的或错误的连接由于维护的目的被追踪。如果请求的Uri没有自己的Uri地址,Referer不能被发送。如果指定的是部分Uri地址,则此地址应该是一个相对地址。Range头域 Range头域可以请求实体的一个或者多个子范围。 但是服务器可以忽略此请求头,如果无条件GET包含Range请求头,响应会以状态码206(Partial Content)返回而不是以200 (OK)。 User-Agent头域的内容包含发出请求的用户信息。 点击链接时的响应 图:1-9 3.4响应消息响应头域允许服务器传递不能放在状态行的附加信息,这些域主要描述服务器的信息和 Request-URI进一步的信息

温馨提示

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

评论

0/150

提交评论