




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、HTTP协议分析及客户端的实现摘 要:HTTP协议是一个属于应用层的面向对象的协议,它具有简捷、快速的特点,广泛适用于分布式超媒体信息系统。如今web程序的开发技术百家争鸣,例如ASP.NET、PHP、 JSP、Perl、 AJAX 等等。但是无论Web技术在未来如何发展,理解Web程序之间通信的基本协议依然十分重要,因为它可以让我们了解Web应用程序的内部工作过程。此外HTTP协议还可以使浏览器访问网页时更加高效,并且极大地减少网络传输。本次课题基于对HTTP协议的分析,首先对HTTP协议的基本概念、基本格式、主要内容及特点等做出了详细的说明。然后捕获了客户端与服务器通信时产生的数据包,并详
2、细的分析了TCP、HTTP协议的报文格式,此外还对web客户端和服务器之间的通信过程做出了深入的分析,明确了交互的内容和方法,最后利用现有的硬件及软件环境完成了一款简单的web客户端程序,通过本程序可以完成客户端与服务器连接与通信过程,此外本客户端程序还实现了新建页面、刷新页面、前进和后退页面、添加收藏夹和搜索等功能。后期经过我的测试,系统可以正常运行并且各项功能都工作正常。关键词:HTTP协议 协议分析 web客户端 HTTP protocol analysis and realization of clientAbstract: Object-oriented HTTP protocol
3、is a part of the application layer protocols, it is simple, fast and suitable for distributed hypermedia information systems. Now web program development technology is hotbed, like ASP.NET, PHP, JSP, Perl, AJAX etc. But no matter how Web technology is development in the future, understanding of basi
4、c communication protocols between Web programs remain important, because it allows us to understand the inner workings of Web applications. In addition HTTP protocol allows the browser to work more efficient network transmission reduction. Analysis of this subject based on the HTTP protocol, first o
5、n the basic concept of HTTP protocol, basic formatting, major made a detailed description of the content and features. And then capture packets that happen when the client communicates with the server, and detailed of analysis has TCP, and HTTP agreement of messages format, In addition to communicat
6、ion between a Web client and server made an in-depth analysis of the process, Clear interaction between the content and methods, Ended up using existing hardware and software environment to complete a simple Web client programs, through this program can completed client and server connection and com
7、munications process, In addition the client program implements a new page, and refresh page, and Forward and back a page, add favorites and search functions. Later I tested, the functionality of the system can be up and working properlyKeywords: HTTP protocol protocol analysis web client目 录前 言1第一章 绪
8、 论21.1 研究背景及意义21.2 国内外研究现状21.3 主要研究内容及章节安排2第二章 HTTP协议的基本概念42.1 HTTP协议概述42.2 HTTP协议报文格式42.3 HTTP协议的连接52.4 HTTP协议的方法定义52.5 HTTP协议的状态定义62.6 HTTP协议的常见头域定义9第三章 HTTP协议详细分析113.1 HTTP报文的捕获113.2 TCP的连接管理133.2.1 TCP连接的建立133.2.2 TCP连接的释放153.3 HTTP 请求报文的分析173.4 HTTP响应报文的分析18第四章 客户端的实现与测试194.1 客户端的功能分析194.2 客户端的
9、功能实现194.2.1 web页面的显示194.2.2 前进与后退页面204.2.3 页面的刷新214.2.4 收藏夹功能实现224.2.5 系统其他功能实现254.3 系统测试28结 论32致 谢33参 考 文 献34前 言HTTP是一个客户端和服务器端请求和应答的标准(tcp)。尽管tcp/ip协议时互联网上最流行的应用,但是HTTP协议并没有规定必须使用它和它支持的层。事实上,HTTP协议可以在任何其他的互联网协议上使用,或者在其他网络上实现,HTTP只假定可靠的传输,任何能提供这种保证的字而已都可以被其使用。HTTP客户端是web客户端,网站是服务器端。在研究时通过使用web客户端访问
10、服务器,客户端发起一个到服务器上的指定端口的请求,接受请求的服务器上存储着资源,比如HTML文件和图像,这个产生应答的服务器称为源服务器,接着服务器就发送给客户端请求的内容。现如今已经出现了HTTP2.0,但是仅限于https:/网址的访问,应用不广泛,所以本次课题主要研究的是HTTP1.1协议。通过利用本次课题完成的web客户端的设计,我们可以详细的研究HTTP协议,通过抓取并分析数据包,我们可以知道客户端与服务器之间请求与响应的方式和内容。对我们研究HTTP协议会有很大的帮助。本次课题先要深入详细的分析HTTP协议,了解其基本概念和特点,然后在visual studio 2010 的平台上
11、设计一款小型的web客户端,通过测试web客户端与服务器之间的通信来实现HTTP的交互过程。第一章 绪 论1.1 研究背景及意义伴随着网络的广泛应用与不断地发展,网络技术也悄然兴起。WWW也应用而生,WWW通过超文本方式向用户提供全方位的媒体信息,从而为世界上所有的网络用户提供了获取信息、共享资源的方法。随着计算机网络技术的发展,客户与服务器结构逐渐向浏览器/服务器结构迁移,即从c/s方式逐渐向B/S方式转移,现如今B/S方式已经引导潮流,用B/S方式与网络用户交换信息已经被大部分网络系统应用。B/S的基础是客户端要有一个浏览器程序,所以,Web客户端在B/S方式下起着主导的作用,且其应用地位
12、日益重要。1.2 国内外研究现状超文本传输协议(HTTP协议)是一种为分布式的,协作的,超媒体信息系统。在 1990年 WWW全球信息刚刚起步的时候 HTTP 就得到了应用。HTTP 的第一个版本叫做HTTP/0.9,是一种为互联网原始数据传输服务的简单协议。由 RFC 19456定义的 HTTP/1.0 进一步完善了这个协议。它允许消息以类 MIME 消息的格式传送,它包括传输数据的元信息和对请求/响应语义的修饰。但是,HTTP/1.0 没有充分考虑到分层代理,缓存的,以及持久连接和虚拟主机的需求的影响。并且随着不完善的HTTP/1.0 应用程序的激增,这就迫切需要一个新的版本,以便能使两个
13、通信程序能够确定彼此的真实能力。3因此在1997年形成了HTTP/1.1,也就是在现在普遍使用的协议。这个协议与 HTTP/1.0 相比,此规范更为严格,以确保各个协议的特征得到可靠实现。在2013年8月HTTP2.0进行首次合作共事性测试,HTTP 2.0即超文本协议2.0,是继HTTP/1.1后的下一代协议。但是目前在互联网上HTTP/2.0仅支持https:/网址,HTTP/1.1继续支持HTTP:网址的访问。HTTP2.0(草案)在减少网络延迟而不中断HTTP语义方面相比于HTTP1.1有了一系列的改进,其中一个重要的改进便是HTTP 2.0引入二进制框架,另一个改进是支持多个并发的H
14、TTP请求取代此前仅支持单一请求模式。111.3 主要研究内容及章节安排本论文主要研究的内容是在现有的硬件和软件环境下,先认真的分析HTTP协议,然后再利用开发环境实现一个客户端系统,主要完成包括显示页面、刷新页面、前进及后退页面、收藏夹等功能。本文的主要章节安排为:第1章 ,绪论。主要介绍了本课题的研究背景及意义、国内外研究趋势现状、主要研究内容及章节安排。第2章 ,HTTP协议的基本概念。主要包括HTTP协议概述、HTTP协议报文格式、HTTP协议的连接、HTTP协议的方法定义、HTTP协议的状态定义、HTTP协议的常见头域定义。第3章 ,HTTP协议详细分析。包括HTTP报文的捕获、TC
15、P的连接管理、HTTP请求报文的分析、HTTP响应报文的分析。第4章 ,客户端的实现与测试。包括客户端的功能分析、客户端的功能实现、系统测试。第二章 HTTP协议的基本概念2.1 HTTP协议概述HTTP是Hyper Text Transfer Protocol(超文本传输协议)的缩写。它的发展是万维网协会(World Wide Web Consortium)和Internet工作小组IETF(Internet Engineering Task Force)合作的结果,(他们)最终发布了一系列的RFC,RFC 19457定义了HTTP/1.0版本。其中最著名的就是RFC 2616。RFC 26
16、16定义了今天普遍使用的一个版本HTTP 1.1。为纪念Tim Berners-Lee提出HTTP后对互联网发展的贡献,万维网协会保留有他最原始提交的版本。1HTTP协议(HyperText Transfer Protocol,超文本转移协议)是用于从WWW服务器传输超文本到本地浏览器的传送协议。它可以使客户端访问网络时更加高效,并且极大地减少网络传输。它可以使计算机正确快速地传输超文本文档、确定哪部分是客户端需要传输的以及哪部分内容首先显示等。7HTTP 协议也是用于用户代理(user agents)和其它互联网系统的代理/网关之间通信的通信协议,这些互联网系统可能由 SMTP,NNTP,F
17、TP,Gopher和 WAIS协议支持。通过这种方式,HTTP允许不同的应用程序对资源进行基本的超媒体访问。10举个简单的例子,当我们在客户端想浏览一个网站的时候,需要在浏览器的搜索栏里输入想要访问的内容,例如(运城学院网),但是在浏览器的地址栏里面出现的却是:http:/ ,通过观察我们可以发现会多出一个“http”, 这是因为我们在浏览器的地址栏里输入的网站地址叫做URL (统一资源定位符)。就像每家每户都有一个门牌地址一样,每个网页也都有一个Internet地址。当我们在具有http功用的浏览器地址框中输入一个URL或是单击一个超级链接时,URL就确定了要浏览的地址。浏览器通过超文本转移
18、协议(HTTP),将Web服务器上站点的网页代码提取出来,并且返回给我们一个HTML网页,这样我们就可以看到我们请求的内容了。这就是为什么我们在浏览器中看到的网页地址都是以http:/开头的原因。这也很形象的解释了HTTP协议的作用。52.2 HTTP协议报文格式HTTP 消息由从客户到服务器的请求消息和从服务器到客户的响应消息两部分组成. 请求和响应消息利用 RFC 8229定义的常用消息的格式,这种消息格式是用于传输实体(消息的负载)。两种类型的消息都由一个开始行(start-line),零个或更多个头域(经常被称作“头”),一个指示头域结束的空行(也就是以一个 CRLF 为前缀的什么也没
19、有的行),最后一个可有可无的消息主体(message-body)组成。21.Web客户端向服务器发出请求,请求格式如下: Request-Line =Method SP Request-URL SP HTTP-Version CRLF 请求消息=请求行(实体头消息)CRLF(实体内容) 请求行=方法 URL HTTP版本号 CRLF 方法 = GET|HEAD|POST|扩展方法 URL = 协议名称+宿主名+目录与文件名 其中“CRLF”为回车换行“实体头信息”记载的是报文属性,利用这些信息可以实现web客户端与w服务器之间的通信过程。82.服务器接收到请求后作出应答,响应格式如下:Stat
20、us-Line = HTTP-Version SP Status-Code SP Reason-Phrase CRLF响应消息的第一行是状态行(stauts-Line),由协议版本以及数字状态码和相关的文本短语组成,各部分间用空格符隔开,除了最后的 CRLF 序列,中间不允许有 CR或 LF。11应答报文=状态行(实体头信息)CRLF(实体内容)状态行=HTTP版本号 状态码 原因叙述2.3 HTTP协议的连接HTTP建立的连接为持久连接,在没有持久连接之前,为获取每一个 URL资源,每一次都得建立一个独占式的TCP连接,这就加重了服务器的负担,容易引起网络通道的阻塞与浪费,特别是某些请求的U
21、RL在短时间内会不断地对服务器发出多次请求,这样会加重传输负担,HTTP/1.1协议很好的解决了这个问题。6HTTP 协议建立持久连接的优点:1、通过建立与关闭较少的 TCP 连接,不仅节省了路由器与主机(客户端,服务器,代理,网关,隧道或缓存)的 CPU 时间,还节省了主机用于 TCP 协议控制块(TCP protocol controlblocks)的内存。2、HTTP 请求和响应能在连接上进行管线请求方式。管线请求方式能允许客户端执行多次请求而不用等待每一个请求的响应,并且此时只有一个 TCP 连接被使用,从而提高了效率,减少了时间。3、网络阻塞会被减少,这是由于减少了因 TCP 连接产
22、生的包的数量并且也由于允许 TCP 有充分的时间去决定网络阻塞的状态。4、因为无须在创建 TCP 连接时的握手上耗费时间,而使后续请求的等待时间减少。5、HTTP 改进的越来越优雅,因为报告错误不需要关闭 tcp 连接的代价。将来的 HTTP 版本客户端可以乐观的尝试利用一个新特性,但是如果和老服务器通信时错误被报告,那么就要用旧的语义进行重新尝试。42.4 HTTP协议的方法定义常用的请求方法如下:OPTIONS -返回服务器针对特定资源所支持的HTTP请求方法。方法表明请求想得到请求/响应链上关于此请求里的 URI(Request-URI)指定资源的通信选项信息。此方法允许客户端去判定请求
23、资源的选项和/或需求,或者服务器的能力,而不需要利用一个资源动作,此方法的响应是不能缓存的。如果 OPTIONS 请求消息里包括一个实体主体,那么媒体类型必须通过 Content-Type 头域指明。如果请求 URI是一个星号("*"),OPTIONS请求将会应用于服务器的所有资源而不是特定资源。如果请求 URI 不是一个星号("*"),,OPTIONS请求只能应用于请求 URI 指定资源的选项。HEAD-方法和GET方法一致,除了服务器不能在响应里返回消息主体。 HEAD 请求响应里HTTP 头域里的元信息(元信息就是头域信息)应该和 GET 请求响应
24、里的元信息一致。此方法被用来获取请求实体的元信息而不需要传输实体主体(entity-body)。此方法经常被用来测试超文本链接的有效性,可访问性,和最近的改变。HEAD 请求的响应是可缓存的,因为响应里的信息可能被缓存用于更新以前那个资源对应缓存的实体.14GET-向特定的资源发出请求。GET 方法意思是获取被请求 URI(Request-URI)指定的信息(以实体的格式)。如果请求URI 涉及到一个数据生成过程,那么这个过程生成的数据应该被作为实体在响应中返回而不是过程的源文本,除非源文本恰好是过程的输出。GET 请求的响应是可缓存的(cacheable)14POST-向指定资源提交数据进行
25、处理请求(例如提交表单或者上传文件)。数据被包含在请求体中。POST请求可能会导致新的资源的建立和/或已有资源的修改。POST方法被用于请求源服务器接受请求中的实体作为请求资源的一个新的从属物。PUT-向指定资源位置上传其最新内容。PUT 方法请求服务器去把请求里的实体存储在请求 URI(Request-URI)标识下。如果请求URI(Request-URI)指定的的资源已经在源服务器上存在,那么此请求里的实体应该被当作是源服务器关于此 URI 所指定资源实体的最新修改版本。如果请求 URI(Request-URI)指定的资源不存在,并且此 URI 被用户代理定义为一个新资源,那么源服务器就应
26、该根据请求里的实体创建一个此 URI 所标识下的资源。如果一个新的资源被创建了,源服务器必须能向用户代理(user agent) 发送 201(已创建)响应。如果已存在的资源被改变了,那么源服务器应该发送 200(Ok)或者 204(无内容)响应。如果资源不能根据请求 URI 创建或者改变,一个合适的错误响应应该给出以反应问题的性质。实体的接收者不能忽略任何它不理解和不能实现的。PUT方法的响应是不可缓存的。DELETE-请求服务器删除Request-URI所标识的资源。DELETE 方法请求源服务器删除请求 URI 指定的资源。此方法可能会在源服务器上被人为的干涉(或通过其他方法)。客户端不
27、能保证此操作能被执行,即使源服务器返回成功状态码。然而,服务那么应该以204(无内容)响应。DELETE 方法的响应是不能被缓存的。TRACE-回显服务器收到的请求,主要用于测试或诊断。TRACE方法被用于激发一个远程的,应用层的请求消息回路(TRACE方法让客户端测试到服务器的网络通路,回路的意思如发送一个请返回一个响应,这就是一个请求响应回路,)。最后的接收者也许是源服务器,也许是接收到包含Max-Forwards头域值为0请求的代理或网关。TRACE请求不能包含一个实体。TRACE方法允许客户端去了解数据被请求链的另一端接收的情况,并且利用那些数据信息去测试或诊断。TRACE的响应不能被
28、缓存。CONNECT-HTTP/1.1协议中预留给能够将连接改为管道方式的代理服务器。PATCH-用来将局部修改应用于某一资源,添加于规范RFC5789。13HTTP服务器至少应该实现GET和HEAD方法,其他方法都是可选的。此外,除了上述方法,特定的HTTP服务器还能够扩展自定义的方法。2.5 HTTP协议的状态定义状态码含义如下:通知的 1xx:这类状态代码指明了一个临时性的响应,包含一个Status-Line 和可选的头域,并且被一个空行结束(空行就是 CRLF)。这类状态码响应没有必须的头域。 成功的2xx:这类状态码指明客户端的请球已经被服务器成功的接收,理解,并且接受了 重新定向3
29、xx:这类状态码指明用户代理需要更进一步的动作去完成请求。进一步的动作可能被用户代理自动执行而不需要用户的交互,并且进一步动作请求的方法必须为GET 或HEAD。一个客户端应该发现无限的重定向循环,因为此循环能产生网络拥挤。客户端错误4xx:状态码 4xx类的目的是为了指明客户端出现错误的情况。除了当响应一个 HEAD 请求,服务器应该包含一个实体,此实体包含一个此错误请求的解释。此状态码对所有请求方法都是适合的。用户代理应该展示任何响应里包含的实体给用户。服务器错误 5xx(Server Error)这类状态码指明服务器处理请求时产生错误或不能处理请求。除了 HEAD 请求,服务器应该包含一
30、个实体,此实体用来解释错误,和是否是暂时或长期条件。用户代理应该展示实体给用户。此响应状态码能应用于任何请求方法。14常见状态代码、状态描述、说明:100 继续 (Continue)100 状态响应告诉客户端应该继续请求。100 响应是个中间响应,它被用于通知客户端请求的初始部分已经被接收了并且此请求还没有被服务器丢弃。客户端应该继续发送请求的剩余部分,或者,如果此请求已经完成了客户端会忽略此 100 响应。服务器在接收请求后必须发送一个终结响应。14101 切换协议 (Switching Protocols)服务器理解和愿意遵循客户端这样的请求,此请求通过 Upgrade 消息头域指明在连接
31、上应用层协议的改变。 服务器将会切换到响应里 Upgrade 头域里指明的协议,它会以一个空行结束此 101 响应。14200 OK此状态码指明客户端请求已经成功了,响应返回的信息依赖于请求里的方法。201 已创建(Created)请求已经被服务器满足了并且已经产生了一个新的资源。202 接受(Accepted)请求已经被接受去处理,但是还没有处理完成。请求可能会或者不会处理完成,因为存在当处理的过程中拒绝处理的情况。202 响应是有意非担保性的。它是为了允许服务器可以为其它处理接收请求而不需要用户代理在处理没有完成之前长期连接到服务器。203 非权威信息(Non-Authoritative
32、information)此状态码响应指明响应里实体头域元信息不能从源服务器获而是从本地的或第三方响应副本里收集的。这些元信息可能是源服务器版本的子集或超集。204 无内容 (No Content)服务器已经满足了请求但并没有返回一个实体而是返回更新的元信息。205 重置内容(Reset Content)205 状态响应是服务器告诉用户代理应该重置引起请求被发送的文档视图。此响应主要的目的是清空文档视图表单里的输入框以便用户能输入其它信息。此响应不能包含一个实体。206 部分内容(Partial Content)服务器已经完成了客户端对资源的部分 GET 请求。300 多个选择.(Multipl
33、e Choices)请求资源对应于众多表现形式中的一个,每个表现形式都有一个特定的位置(location),并且代理驱动协商(agent-driven negotiation)信息被提供以便用户(或用户代理)能选择一个更适的表现形式并重定向它的请求到那个表现形式的位置。301 永久移动 (Moved Permanently)请求资源被赋于一个新的永久的 URI,并且任何将来对此资源的引用都会利用此 301 状态响应返回的 URI。302 发现(Found)请求的资源暂时地存放在一个不同的 URI 下。303 见其他(See Other)请求的响应被放在一个不同的 URI 下,并且应该用 GET
34、 方法获得那个资源。304 没有改变(Not Modified)如果客户端已经执行了条件 GET 请求,并且访问服务器的资源是允许的,但是服务器上的文档并没有被改变,那么服务器应该以此状态码响应。305 使用代理 (Use Proxy)请求资源必须能通过代理访问,代理的地址在响应的 Location 头域里指定。306 没有使用的(unused)306 状态码被用于此规范以前的版本,是不再使用的意思,并且此状态码被保留。307 临时重发(Temporary Redirect)请求的资源临时存在于一个不同的 URI下。400 坏请求(Bad Request)请求不能被服务器理解,由于错误的语法。
35、客户端不应该在没有改变请求的情况下重试请求。401 未授权的 (Unauthorized)服务器需要对请求进行用户认证。402 必需的支付 (Payment Required)此状态码为将来的应用保留。403 禁用 (Forbidden)服务器理解此请求,但拒绝满足此请求。认证是没有作用的,并且请求不应该被重试。404 没有找到(Not Found)服务器并没有找到任何可以匹配请求 URI 的资源。没有迹象表明条件是暂时或永久的 。405 方法不被允许(Method Not Allowed)此状态码表示请求行(Request-Line)里的方法对此资源来说不被允许。406 不可接受的 (Not
36、 Acceptable)根据客户端请求的接受头域,服务器不能产生让客户端可以接受的响应。408 请求超时(Request Timeout)客户端在服务器等待的时间里不能产生请求。客户端可能在以后会重试此请求。409 冲突 (Confilict)请求不能完成由于和当前资源的状态冲突。410 不存在(gone)请求资源在源服务器上不再可得并且也没有转发地址可用。500 服务器内部错误 (Internal Server Error)服务器遇到了一个意外条件,此条件防止服务器满足此请求。501 不能实现 (Not Implemented)服务器没有能力去满足请求。502 坏网关 (Bad Gatewa
37、y)此响应说明:作为网关或代理的服务器从上游(upstream)服务器接收了一个无效的响应。503 服务不能获得(Service Unavailable)由于服务器暂时地过载或维护,服务器不能处理请求。这就是说这是暂时条件,此条件将会在一些延时后被减轻。504 网关超时(Gateway Timeout)作为网关或代理的服务器在不能及时地接收一个从 URI 指定的上游(upstream)服务器或者其他的辅助性服务器的响应。505 HTTP 版本不支持 (HTTP version Not Supported)服务器不能支持,或拒绝支持此 HTTP 协议版本消息。505 响应指明服务器不能或不愿意完
38、成这样的请求。142.6 HTTP协议的常见头域定义HTTP的头域包括三部分别,分别是常用头域,请求头域和响应头域。常用头域:有一些头域即适用于请求消息也适用于响应消息,但是这些头域并不适合传输实体。这些头域只能应用于传输消息。Cache-Control 常用头域被用于指定必须在请求/响应链上的被所有缓存机制遵守指令。这些指令指定了防止缓存去干涉请求或响应的行为。这些指令经常覆盖缺省的缓存算法。缓存指令是单方向的,因为请求中指令的存在并不意味着同样的指令必须在响应中出现。Connection 常用头域允许发送者指定某些专属于某特定连接的选项,并且 Connection 头域不能被代理(prox
39、y)在以后的连接中传送。Date 常用头域表明产生消息的日期和时间,源服务器在所有的响应中必须包括一个日期头域,一个收到的消息如果没有 Date 头域的话就会被接收者加上一个。Pragma 常用头域被用于包含特定执行指令,这些指令可能被应用于请求/响应链中任何接收者。Trailer 常用头域值指明了以块(chunked)传输编码的消息里尾部(trailer)用到的头域。Transfer-Encoding 传输译码常用头域指示了消息主体(message body)的编码转换,这是为了实现在接收端和发送端之间的安全数据传输。Upgrade 常用头域允许客户端指定它所支持的附加通信协议,并且可能会使
40、用如果服务器觉得可以进行协议切换。Via 常用头域必须被网关(gateways)和代理(proxies)使用,用来指明在用户代理和服务器之间关于请求的中间协议和接收者,和在源服务器和客户端之间关于响应的中间协议和接收者。Warning 常用头域被用于携带额外关于消息状态或消息转换的信息,而这些信息是不能在消息里反应出来的。请求头域:请求头域允许客户端传递请求的附加信息和客户端自己的附加信息给服务器。这些头域作为请求的修饰,这和程序语言方法调用的参数语义是等价的。Accept 请求头域被用于指定哪些媒体类型的响应对请求端是可接受的。Accept-Charset 请求头域可以用来指名哪些字符集的响
41、应对请求端是可接受的。Accept-Encoding 请求头域和 Accept 头域相似,但 Accept-Encoding 是限定服务器返回给客户端可以接受的内容编码。Accept-Language 请求头域和 Accept 请求头域类似,但是它是限定服务器返回给客户端喜爱的自然语言。Authorization 头域由包含用户代理对请求资源域的授权信息的证书(credentials)组成Expect 请求头域用于指明客户端需要的特定服务器行为。From 请求头域,如果有的话,应该包含用户代理当前操作用户的 email 地址。这个地址应该是机器可用的地址。Host 请求头域指明了请求资源的网络
42、主机和端口号,这可以从用户或相关资源给定的源 URI获得。If-Match 请求头域是用来让方法成为条件方法。如果一个客户端已经从一个资源获得一个或多个实体(entity),那么它可以通过在 If-Match 头域里包含相应的实体标签(entity tag)来验证实体是否就是服务器当前实体。If-None-Match 头域被用于一个方法使之成为条件的。一个客户端如果拥有一个或多个从某资源获得的实体,那么它能验证在这些实体中有不存在于服务器当前实体中的实体,这通过在 If-None-Match 头域里包含这些实体相关的实体标签(entity tag)来达到此目的。Max-Forwards Max
43、-Forwards 请求头域为 TRACE和 OPTIONS提供一种机制去限制转发请求的代理或网关的数量。Proxy-Authorization 请求头域允许客户端让一代理能给客户端自己(或客户端的用户)授权 。User-AgentUser-Agent 请求头域包含关于发起请求的用户代理的信息。这是为了统计,跟踪协议违反的情况,和为了识别用户代理从而为特定用户代理自动定制响应。响应头域:响应头域允许服务器传送响应的附加信息,这些信息不能放在状态行(Status-Line)里。这些头域给出有关服务器的信息以及请求 URI(Request-URI)指定资源的更进一步访问信息。Accept-Rang
44、es 响应头域允许服务器向客户指明服务器对范围请求的接受度。Age 响应头域表示发送者对响应产生(或重验证)时刻后经过的时间的估计。Etag 响应头域提供了请求对应变量(variant)的当前实体标签。Location 响应头域被用于为了完成请求或识别一个新资源,使接收者能重定向于 Location 指明的 URI 而不是请求 URI。Proxy-Authenticate 响应头 域 必 须 被包 含 在 407 响应(代理 授权 )里。此头 域 值 由一个challenge 和 parameters 组成,challenge 指明了授权模式,而 parameters 应用于请求 URI 的代
45、理。Retry-After 响应头域能被用于一个 503(服务不可得)响应,服务器用它来向请求端指明服务不可得的时长。Server 响应头域包含了源服务器用于处理请求的软件信息。Vary 响应头域值指定了一些请求头域,全部去决定某缓存是否被允许去利用此响应(并且此响应仍然保鲜)去回复后续请求而不需要重验证(revalidation)。WWW-Authenticate 响应头域必须包含在 401(没有被授权)响应消息中。此域值至少应该包含一个 callenge,此 callenge 指明授权模式(schemes)和适用于请求 URI 的参数。13第三章 HTTP协议详细分析HTTP协议定义Web
46、客户端如何从Web服务器请求Web页面,以及服务器如何把Web页面传送给客户端。HTTP协议采用了请求/响应模型。客户端向服务器发送一个请求报文,请求报文包含请求的方法、URL、协议版本、请求头部和数据。服务器以一个状态行作为响应,响应的内容包括协议的版本、成功或者错误代码、服务器信息、响应头部和响应数据。8以下是分析HTTP请求/响应的实验过程3.1 HTTP报文的捕获打开Wireshark,选择工具栏上的“Capture”->“Options” 图3.1 设置wireshark一般只需要选择最上边的下拉框,选择合适的Device,而后点击“Capture Filter”,此处选择的是
47、“HTTP TCP port(80)”。 然后点击OK按钮。图 3.2 设置端口客户端连接到Web服务器:一个HTTP客户端,通常是浏览器,与Web服务器的HTTP端口(默认为80)建立一个TCP套接字连接,现在打开一个浏览器,在浏览器中打开学院网,抓包如图所示:图3.3 学院网抓包在上图中,可清晰的看到客户端浏览器(ip为53)与服务器的交互过程:1浏览器(53)向服务器(67)发出连接请求。此为TCP三次握手第一步,此时从图中可以看出,为SYN,seq:X (x=0);2服务器(67)回应了浏览器(10
48、.10.77.253)的请求,并要求确认,此时为:SYN,ACK,此时seq:y(y为0),ACK:x+1(为1)。此为三次握手的第二步;3浏览器(53)回应了服务器(67)的确认,连接成功。为:ACK,此时seq:x+1(为1),ACK:y+1(为1)。此为三次握手的第三步;4.浏览器(53)发出一个页面HTTP请求;5.服务器(67)确认;6.客户端浏览器(53)确认。3.2 TCP的连接管理3.2.1 TCP连接的建立1.第一次握手:主机A发送位码syn取值为1来建立连接(即syn
49、1),并且随机产生seq number取值任意的数据包到服务器。图3.4 第一次握手Source Port:rapidbase (1953) 源端口号:rapidbase (1953)Destination Port:http(80) 目的端口号:HTTP(80)Sequence number:0 序列号:0Header length: 32bytes 头部长度:32bytesAcknowledgment:1 set 确认位:确认位为0Flags:0x02(syn) 标志位,可以看到syn为1Window size: 8192 窗口大小:8192Checksum: 0xe9e4 较验和Opti
50、ons 选项2.第二次握手:主机B收到请求后,检查数据包发现SYN=1得知,A要求建立联机。然后向A发送syn+ack包取值都为1( 即syn=1,ack=1 )并且ack number=主机A的seq+1。图3.5 第二次握手Source Port:rapidbase (1953) 源端口号:rapidbase (1953)Destination Port:http(80) 目的端口号:HTTP(80)Sequence number:0 序列号:0Header length: 32bytes 头部长度:32bytesAcknowledgment:1 set 确认位:确认位为1Flags:0x
51、02(syn) 标志位,可以看到syn为1Window size: 8192 窗口大小:8192Checksum: 0xe9e4 较验和Options 选项3.第三次握手:主机A收到后检查ack number是否为自己上次发送的seq numer+1,并且确认数据包里面ack是否为1,若正确,主机A会再发送ack number=(主机B的seq+1),ack=1,主机B收到后确认seq值与ack=1则连接建立成功。图3.6第三次握手Source Port:rapidbase (1953) 源端口号:rapidbase (1953)Destination Port:http(80) 目的端口号:
52、HTTP(80)Sequence number:0 序列号:0Header length: 32bytes 头部长度:32bytesAcknowledgment:1 set 确认位:确认位为1Flags:0x02(syn) 标志位,可以看到syn为0Window size: 8192 窗口大小:8192Checksum: 0xe9e4 较验和Options 选项完成三次握手,主机A与主机B开始传送数据3.2.2 TCP连接的释放1.第一次挥手:客户端给服务器发送TCP包,用来关闭客户端到服务器的数据传送。将标志位FIN和ACK置为1,seq=X=45。图3.7 第一次挥手2.第二次挥手:服务器
53、收到FIN后,发回一个ACK(标志位ACK=1),确认序号为收到的序号加1,即X=X+1=46。此时的TCP已经处于半关闭的状态,即客户端已经没有要发送的数据了,但是服务器还有要发送的内容,客户端仍然要接受。图3.8 第二次挥手3.第三次挥手:服务器关闭与客户端的连接,发送一个FIN。标志位FIN和ACK置为1,ack=X+1=46,若此时服务器没有在向客户端发送的数据了,其进程就通知TCP释放连接,这时服务器就等待客户端的确认。图3.9 第三次挥手4.第四次挥手:客户端收到服务器发送的FIN之后,FIN=0,ACK=1,seq=46 ,客户端收到服务器的断开请求后,再次发出确认,在确认报文中
54、把ack置为1图3.10 第四次挥手此时TCP的四次挥手完成,TCP连接断开。3.3 HTTP 请求报文的分析Web客户端访问服务器时,首先通过TCP协议建立三次握手连接,接着客户端开始请求服务器上的数据,然后服务器确认请求,浏览器确认请求,现在客户端和服务器开始传送数据,最后传送数据完成后,服务器返回一个完成码,至此,服务器将客户端请求的数据全部发送完成。wireshark所抓的一个含有http请求报文的帧:图3.11 HTTP请求GET/style/logo.jpg HTTP/1.1rn方法字段/ URL字段/ 协议版本号接下来的三行是对请求字段的解释,可以发现该报文请求的是一个对象,该对
55、象是图像Request Method:GET 请求方式是getRequest Uri:/style/logo.jpg 请求消息起始行主要内容Request version: http/1.1 请求的版本Host:rn 这是网站网址Connection: keep-alivern 激活连接Cache-control:max-age=0rn 缓存User-agent: 用户代理,里面包含浏览器的类型和解释Accept-encoding:gzip,deflate,sdcnrn 可接受编码 格式Accept-language:zh-cn,zh;q=0.8rn 语言是中文3.4 HTTP响应报文的分析wireshark所抓的客户端请求的响应数据包:图3.12 HTTP响应报文分析: HTTP/1.1 200 OK 响应成功Content-length:22914 内容长度Accept-ranges:bytes 接受范围ETag:(Entity Tag,ET
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 《一、奔跑的鸵鸟》(教学设计)-2024-2025学年二年级上册综合实践活动山东科学技术版
- 2023七年级数学上册 第一章 有理数1.3 有理数的加减法1.3.2 有理数的减法第1课时 有理数的减法教学设计(新版)新人教版
- 胸引管护理操作流程
- 2024新教材高中历史 第五单元 工业革命与马克思主义的诞生 第10课 影响世界的工业革命教学设计 部编版必修中外历史纲要下
- 4山行教学设计-2024-2025学年三年级上册语文统编版
- 《学画写意花卉-梅花》教学设计-鲁教版五四制七年级美术上册
- 1 春夏秋冬(教学设计)-2024-2025学年统编版(2024)语文一年级下册
- 7 角的初步认识第二课时(教学设计)-2023-2024学年二年级下册数学苏教版
- 一年级道德与法治上册 第四单元 银色的冬天 14《庆元旦迎春节》教学设计设计2 鄂教版
- Module4 Unit2 What's the matter with Daming(教学设计)-2024-2025学年外研版(三起)英语五年级上册
- 江苏省仪征市第三中学苏少版八年级下册音乐教案(图片版):第三单元 第二课时 共和国之恋教案1000字
- 2022-2023学年新疆维吾尔自治区喀什地区喀什市人教版六年级下册期中测试数学试卷
- 江苏省苏州市张家港市2023-2024学年高一年级下册4月期中生物试题(解析版)
- 中医医疗技术手册2013普及版
- 第18课《在长江源头各拉丹东》课件+2023-2024学年统编版语文八年级下册
- 公厕保洁服务保洁实施方案
- MOOC 空中机器人-浙江大学 中国大学慕课答案
- 《纸质文物修复与保护》课件-29古籍的装帧形制
- 2024-2029年中国ICT行业市场发展分析及发展趋势与投资前景研究报告
- TPM培训资料-课件
- 职业健康知识培训考试题及答案
评论
0/150
提交评论