http协议分析即实现毕业论文Word格式.docx
《http协议分析即实现毕业论文Word格式.docx》由会员分享,可在线阅读,更多相关《http协议分析即实现毕业论文Word格式.docx(50页珍藏版)》请在冰点文库上搜索。
1.1研究背景及意义2
1.2国内外研究现状ﻩ2
1。
3主要研究内容及章节安排2
第二章HTTP协议的基本概念ﻩ4
2.1 HTTP协议概述ﻩ4
2.2 HTTP协议报文格式4
2.3HTTP协议的连接ﻩ5
2.4HTTP协议的方法定义ﻩ5
2.5 HTTP协议的状态定义ﻩ6
2。
6 HTTP协议的常见头域定义9
第三章HTTP协议详细分析ﻩ11
3.1HTTP报文的捕获ﻩ11
3.2TCP的连接管理ﻩ13
3.2.1 TCP连接的建立13
3。
2.2TCP连接的释放15
3.3HTTP请求报文的分析ﻩ17
3.4HTTP响应报文的分析ﻩ18
第四章客户端的实现与测试19
4。
1客户端的功能分析19
4.2客户端的功能实现19
4.2.1web页面的显示ﻩ19
4。
2。
2 前进与后退页面20
3页面的刷新ﻩ21
4.2.4收藏夹功能实现22
2.5系统其他功能实现25
3系统测试28
结 论ﻩ32
致 谢ﻩ33
参考 文献34
前言
HTTP是一个客户端和服务器端请求和应答的标准(tcp)。
尽管tcp/ip协议时互联网上最流行的应用,但是HTTP协议并没有规定必须使用它和它支持的层.事实上,HTTP协议可以在任何其他的互联网协议上使用,或者在其他网络上实现,HTTP只假定可靠的传输,任何能提供这种保证的字而已都可以被其使用。
HTTP客户端是web客户端,网站是服务器端。
在研究时通过使用web客户端访问服务器,客户端发起一个到服务器上的指定端口的请求,接受请求的服务器上存储着资源,比如HTML文件和图像,这个产生应答的服务器称为源服务器,接着服务器就发送给客户端请求的内容。
现如今已经出现了HTTP2。
0,但是仅限于https:
//网址的访问,应用不广泛,所以本次课题主要研究的是HTTP1.1协议。
通过利用本次课题完成的web客户端的设计,我们可以详细的研究HTTP协议,通过抓取并分析数据包,我们可以知道客户端与服务器之间请求与响应的方式和内容。
对我们研究HTTP协议会有很大的帮助.
本次课题先要深入详细的分析HTTP协议,了解其基本概念和特点,然后在visual studio 2010的平台上设计一款小型的web客户端,通过测试web客户端与服务器之间的通信来实现HTTP的交互过程。
第一章绪论
1.1研究背景及意义
伴随着网络的广泛应用与不断地发展,网络技术也悄然兴起.WWW也应用而生,WWW通过超文本方式向用户提供全方位的媒体信息,从而为世界上所有的网络用户提供了获取信息、共享资源的方法。
随着计算机网络技术的发展,客户与服务器结构逐渐向浏览器/服务器结构迁移,即从c/s方式逐渐向B/S方式转移,现如今B/S方式已经引导潮流,用B/S方式与网络用户交换信息已经被大部分网络系统应用.B/S的基础是客户端要有一个浏览器程序,所以,Web客户端在B/S方式下起着主导的作用,且其应用地位日益重要。
1.2国内外研究现状
超文本传输协议(HTTP协议)是一种为分布式的,协作的,超媒体信息系统.在1990年 WWW全球信息刚刚起步的时候 HTTP就得到了应用。
HTTP的第一个版本叫做HTTP/0.9,是一种为互联网原始数据传输服务的简单协议。
由 RFC1945[6]定义的 HTTP/1。
0进一步完善了这个协议。
它允许消息以类MIME消息的格式传送,它包括传输数据的元信息和对请求/响应语义的修饰。
但是,HTTP/1.0没有充分考虑到分层代理,缓存的,以及持久连接和虚拟主机的需求的影响。
并且随着不完善的HTTP/1.0应用程序的激增,这就迫切需要一个新的版本,以便能使两个通信程序能够确定彼此的真实能力。
[3]
因此在1997年形成了HTTP/1.1,也就是在现在普遍使用的协议。
这个协议与 HTTP/1.0相比,此规范更为严格,以确保各个协议的特征得到可靠实现.
在2013年8月HTTP2。
0进行首次合作共事性测试,HTTP2。
0即超文本协议2.0,是继HTTP/1.1后的下一代协议。
但是目前在互联网上HTTP/2.0仅支持https:
//网址,HTTP/1。
1继续支持HTTP:
网址的访问。
HTTP2。
0(草案)在减少网络延迟而不中断HTTP语义方面相比于HTTP1.1有了一系列的改进,其中一个重要的改进便是HTTP 2。
0引入二进制框架,另一个改进是支持多个并发的HTTP请求取代此前仅支持单一请求模式。
[11]
1.3主要研究内容及章节安排
本论文主要研究的内容是在现有的硬件和软件环境下,先认真的分析HTTP协议,然后再利用开发环境实现一个客户端系统,主要完成包括显示页面、刷新页面、前进及后退页面、收藏夹等功能.
本文的主要章节安排为:
第1章,绪论.主要介绍了本课题的研究背景及意义、国内外研究趋势现状、主要研究内容及章节安排。
第2章,HTTP协议的基本概念。
主要包括HTTP协议概述、HTTP协议报文格式、HTTP协议的连接、HTTP协议的方法定义、HTTP协议的状态定义、HTTP协议
的常见头域定义。
第3章,HTTP协议详细分析。
包括HTTP报文的捕获、TCP的连接管理、HTTP请求报文的分析、HTTP响应报文的分析。
第4章,客户端的实现与测试。
包括客户端的功能分析、客户端的功能实现、系统测试。
第二章HTTP协议的基本概念
2.1HTTP协议概述
HTTP是Hyper TextTransferProtocol(超文本传输协议)的缩写。
它的发展是万维网协会(WorldWideWebConsortium)和Internet工作小组IETF(InternetEngineeringTaskForce)合作的结果,(他们)最终发布了一系列的RFC,RFC 1945[7]定义了HTTP/1.0版本。
其中最著名的就是RFC 2616。
RFC 2616定义了今天普遍使用的一个版本——HTTP1。
为纪念TimBerners-Lee提出HTTP后对互联网发展的贡献,万维网协会保留有他最原始提交的版本。
[1]
HTTP协议(HyperTextTransferProtocol,超文本转移协议)是用于从WWW服务器传输超文本到本地浏览器的传送协议。
它可以使客户端访问网络时更加高效,并且极大地减少网络传输.它可以使计算机正确快速地传输超文本文档、确定哪部分是客户端需要传输的以及哪部分内容首先显示等.[7]
HTTP 协议也是用于用户代理(useragents)和其它互联网系统的代理/网关之间通信的通信协议,这些互联网系统可能由 SMTP,NNTP,FTP,Gopher和WAIS协议支持。
通过这种方式,HTTP允许不同的应用程序对资源进行基本的超媒体访问.[10]
举个简单的例子,当我们在客户端想浏览一个网站的时候,需要在浏览器的搜索栏里输入想要访问的内容,例如www.ycu.edu。
cn(运城学院网),但是在浏览器的地址栏里面出现的却是:
http:
//www。
ycu。
edu。
cn,通过观察我们可以发现会多出一个“http”,这是因为我们在浏览器的地址栏里输入的网站地址叫做URL(统一资源定位符)。
就像每家每户都有一个门牌地址一样,每个网页也都有一个Internet地址.当我们在具有http功用的浏览器地址框中输入一个URL或是单击一个超级链接时,URL就确定了要浏览的地址。
浏览器通过超文本转移协议(HTTP),将Web服务器上站点的网页代码提取出来,并且返回给我们一个HTML网页,这样我们就可以看到我们请求的内容了.这就是为什么我们在浏览器中看到的网页地址都是以http:
//开头的原因.这也很形象的解释了HTTP协议的作用。
[5]
2.2HTTP协议报文格式
HTTP消息由从客户到服务器的请求消息和从服务器到客户的响应消息两部分组成. 请求和响应消息利用RFC822[9]定义的常用消息的格式,这种消息格式是用于传输实体(消息的负载)。
两种类型的消息都由一个开始行(start-line),零个或更多个头域(经常被称作“头”),一个指示头域结束的空行(也就是以一个CRLF为前缀的什么也没有的行),最后一个可有可无的消息主体(message—body)组成.[2]
1.Web客户端向服务器发出请求,请求格式如下:
Request-Line=MethodSPRequest-URLSP HTTP-Version CRLF
请求消息=请求行(实体头消息)CRLF(实体内容)
请求行=方法 URLHTTP版本号CRLF
方法=GET|HEAD|POST|扩展方法
URL= 协议名称+宿主名+目录与文件名
其中“CRLF”为回车换行
“实体头信息”记载的是报文属性,利用这些信息可以实现web客户端与w服务器之间的通信过程.[8]
服务器接收到请求后作出应答,响应格式如下:
Status-Line=HTTP—VersionSPStatus-Code SPReason-PhraseCRLF
响应消息的第一行是状态行(stauts-Line),由协议版本以及数字状态码和相关的文本短语组成,各部分间用空格符隔开,除了最后的CRLF序列,中间不允许有CR或LF.[11]
应答报文=状态行(实体头信息)CRLF(实体内容)
状态行=HTTP版本号状态码原因叙述
3HTTP协议的连接
HTTP建立的连接为持久连接,在没有持久连接之前,为获取每一个URL资源,每一次都得建立一个独占式的TCP连接,这就加重了服务器的负担,容易引起网络通道的阻塞与浪费,特别是某些请求的URL在短时间内会不断地对服务器发出多次请求,这样会加重传输负担,HTTP/1。
1协议很好的解决了这个问题.[6]
HTTP 协议建立持久连接的优点:
1、通过建立与关闭较少的 TCP 连接,不仅节省了路由器与主机(客户端,服务器,代理,网关,隧道或缓存)的CPU 时间,还节省了主机用于 TCP协议控制块(TCP protocolcontrolblocks)的内存。
2、HTTP请求和响应能在连接上进行管线请求方式.管线请求方式能允许客户端执行多次请求而不用等待每一个请求的响应,并且此时只有一个TCP连接被使用,从而提高了效率,减少了时间。
3、网络阻塞会被减少,这是由于减少了因 TCP连接产生的包的数量并且也由于允许TCP有充分的时间去决定网络阻塞的状态.
4、因为无须在创建TCP 连接时的握手上耗费时间,而使后续请求的等待时间减少。
5、HTTP 改进的越来越优雅,因为报告错误不需要关闭tcp连接的代价。
将来的HTTP版本客户端可以乐观的尝试利用一个新特性,但是如果和老服务器通信时错误被报告,那么就要用旧的语义进行重新尝试。
[4]
2.4HTTP协议的方法定义
常用的请求方法如下:
OPTIONS—返回服务器针对特定资源所支持的HTTP请求方法。
方法表明请求想得到请求/响应链上关于此请求里的URI(Request—URI)指定资源的通信选项信息。
此方法允许客户端去判定请求资源的选项和/或需求,或者服务器的能力,而不需要利用一个资源动作,此方法的响应是不能缓存的。
如果OPTIONS请求消息里包括一个实体主体,那么媒体类型必须通过Content—Type 头域指明。
如果请求URI是一个星号(”*"
),OPTIONS请求将会应用于服务器的所有资源而不是特定资源。
如果请求URI不是一个星号("
*”),,OPTIONS请求只能应用于请求 URI指定资源的选项。
HEAD—方法和GET方法一致,除了服务器不能在响应里返回消息主体。
HEAD 请求响应里HTTP头域里的元信息(元信息就是头域信息)应该和GET 请求响应里的元信息一致。
此方法被用来获取请求实体的元信息而不需要传输实体主体(entity-body)。
此方法经常被用来测试超文本链接的有效性,可访问性,和最近的改变。
HEAD请求的响应是可缓存的,因为响应里的信息可能被缓存用于更新以前那个资源对应缓存的实体.[14]
GET-向特定的资源发出请求。
GET方法意思是获取被请求URI(Request—URI)指定的信息(以实体的格式)。
如果请求URI涉及到一个数据生成过程,那么这个过程生成的数据应该被作为实体在响应中返回而不是过程的源文本,除非源文本恰好是过程的输出。
GET请求的响应是可缓存的(cacheable)[14]
POST—向指定资源提交数据进行处理请求(例如提交表单或者上传文件).数据被包含在请求体中。
POST请求可能会导致新的资源的建立和/或已有资源的修改。
POST方法被用于请求源服务器接受请求中的实体作为请求资源的一个新的从属物。
PUT-向指定资源位置上传其最新内容。
PUT方法请求服务器去把请求里的实体存储在请求 URI(Request-URI)标识下。
如果请求URI(Request—URI)指定的的资源已经在源服务器上存在,那么此请求里的实体应该被当作是源服务器关于此 URI所指定资源实体的最新修改版本。
如果请求URI(Request—URI)指定的资源不存在,并且此 URI被用户代理定义为一个新资源,那么源服务器就应该根据请求里的实体创建一个此 URI所标识下的资源。
如果一个新的资源被创建了,源服务器必须能向用户代理(useragent)发送201(已创建)响应。
如果已存在的资源被改变了,那么源服务器应该发送200(Ok)或者204(无内容)响应.如果资源不能根据请求URI创建或者改变,一个合适的错误响应应该给出以反应问题的性质.实体的接收者不能忽略任何它不理解和不能实现的.PUT方法的响应是不可缓存的。
DELETE-请求服务器删除Request-URI所标识的资源。
DELETE 方法请求源服务器删除请求URI指定的资源。
此方法可能会在源服务器上被人为的干涉(或通过其他方法)。
客户端不能保证此操作能被执行,即使源服务器返回成功状态码。
然而,服务ﻩﻩ那么应该以204(无内容)响应。
DELETE方法的响应是不能被缓存的。
TRACE-回显服务器收到的请求,主要用于测试或诊断。
TRACE方法被用于激发一个远程的,应用层的请求消息回路(TRACE方法让客户端测试到服务器的网络通路,回路的意思如发送一个请返回一个响应,这就是一个请求响应回路,)。
最后的接收者也许是源服务器,也许是接收到包含Max-Forwards头域值为0请求的代理或网关。
TRACE请求不能包含一个实体。
TRACE方法允许客户端去了解数据被请求链的另一端接收的情况,并且利用那些数据信息去测试或诊断.TRACE的响应不能被缓存.
CONNECT-HTTP/1.1协议中预留给能够将连接改为管道方式的代理服务器.
PATCH-用来将局部修改应用于某一资源,添加于规范RFC5789。
[13]
HTTP服务器至少应该实现GET和HEAD方法,其他方法都是可选的。
此外,除了上述方法,特定的HTTP服务器还能够扩展自定义的方法.
5HTTP协议的状态定义
状态码含义如下:
通知的1xx:
这类状态代码指明了一个临时性的响应,包含一个Status—Line和可选的头域,并且被一个空行结束(空行就是CRLF).这类状态码响应没有必须的头域.
成功的2xx:
这类状态码指明客户端的请球已经被服务器成功的接收,理解,并且接受了
重新定向3xx:
这类状态码指明用户代理需要更进一步的动作去完成请求.进一步的动作可能被用户代理自动执行而不需要用户的交互,并且进一步动作请求的方法必须为GET或HEAD。
一个客户端应该发现无限的重定向循环,因为此循环能产生网络拥挤。
客户端错误4xx:
状态码 4xx类的目的是为了指明客户端出现错误的情况。
除了当响应一个HEAD请求,服务器应该包含一个实体,此实体包含一个此错误请求的解释。
此状态码对所有请求方法都是适合的。
用户代理应该展示任何响应里包含的实体给用户。
服务器错误5xx(ServerError)这类状态码指明服务器处理请求时产生错误或不能处理请求。
除了 HEAD 请求,服务器应该包含一个实体,此实体用来解释错误,和是否是暂时或长期条件.用户代理应该展示实体给用户。
此响应状态码能应用于任何请求方法。
[14]
常见状态代码、状态描述、说明:
100 继续 (Continue)100状态响应告诉客户端应该继续请求。
100响应是个中间响应,它被用于通知客户端请求的初始部分已经被接收了并且此请求还没有被服务器丢弃.客户端应该继续发送请求的剩余部分,或者,如果此请求已经完成了客户端会忽略此100响应。
服务器在接收请求后必须发送一个终结响应.[14]
101切换协议 (SwitchingProtocols)服务器理解和愿意遵循客户端这样的请求,此请求通过Upgrade消息头域指明在连接上应用层协议的改变。
服务器将会切换到响应里Upgrade头域里指明的协议,它会以一个空行结束此101响应。
[14]
200OK此状态码指明客户端请求已经成功了,响应返回的信息依赖于请求里的方法。
201已创建(Created)请求已经被服务器满足了并且已经产生了一个新的资源。
202 接受(Accepted)请求已经被接受去处理,但是还没有处理完成。
请求可能会或者不会处理完成,因为存在当处理的过程中拒绝处理的情况.202响应是有意非担保性的。
它是为了允许服务器可以为其它处理接收请求而不需要用户代理在处理没有完成之前长期连接到服务器。
203非权威信息(Non-Authoritativeinformation)此状态码响应指明响应里实体头域元信息不能从源服务器获而是从本地的或第三方响应副本里收集的。
这些元信息可能是源服务器版本的子集或超集。
204 无内容(No Content)服务器已经满足了请求但并没有返回一个实体而是返回更新的元信息。
205重置内容(ResetContent)205状态响应是服务器告诉用户代理应该重置引起请求被发送的文档视图。
此响应主要的目的是清空文档视图表单里的输入框以便用户能输入其它信息。
此响应不能包含一个实体.
206部分内容(PartialContent)服务器已经完成了客户端对资源的部分 GET请求.
300多个选择。
(MultipleChoices)请求资源对应于众多表现形式中的一个,每个表现形式都有一个特定的