HTTP协议详解.pdf

3星(超过75%的资源)
所需积分/C币:33 2017-11-18 00:59:24 194KB PDF
269
收藏 收藏
举报

HTTP协议详解 HTTP协议详解HTTP协议详解HTTP协议详解HTTP协议详解HTTP协议详解.pdf小巧,清晰,全面的PDF,值得收藏
HTTP协议详解 引言 HTTP是一个属于应用层的面向对象的协议,由于其简捷、快速的方式,适用于分布式超媒体信息系 统它于1990年提出,经过几年的使用与发展,得到不断地完善和扩展。目前在WwW中使用的是HTTP/1.0 的第六版,HTP/1.1的规范化工作正在进行之中,而且HIP-NG(Nextgenerationofhttp)的 建议凵经提出。 HTTP协议的主要特点可概括如下 1.支持客户/服务器模式。 2.简单快速:客户向服务器请求服务时,只需传送凊求方法和路径。请求方法常用的有GET、HEAD PoST。每种方法规定了客户与服务器联系的类型不同。由于HITP协议简单,使得HITP服务器的程序规 模小,因而通信速度很快 3.灵活:HTTP允许传输任意类犁的数据对象。正在传输的类型由Content-Type加以标记。 4.无连接:无连接的含义是限制每次连接只处理一个请求。服务器处理完客户的请求,并收到客户的 应答后,即断开连接。采用这种方式可以节省传输时间。 5.无状态:HTTP协议是无状态协议。无状态是指协议对于事务处理没有记忆能力。缺少状态意味着 如果后续处理需要前面的信息,则它必须重传,这样可能导致每次连接传送的数据量增大。另方面,在 服务器不需要先前信息时它的应答就较快。 HTTP协议详解之URL篇 http(超文本传输协议)是一个基于请求与响应模式的、无状态的、应用层的协议,常基于TCP的 连接方式,HTTP1.1版本中给出种持续连接的机制,绝大多数的Web丌发,都是构建在HTTP协议之 上的web应用。 Http Url(URL是一种特殊类型的UR工,包含了用于查找某个资源的足够的信息)的格式如下: http://host[:port]labs_path http表示要通过HTTP协议米定位网络资源host表示合法的Internet主机域名或者工P地址 port指定一个端口号,为空则使用缺省端口80; abs_ - path指定请求资源的UR工:如果URL中没有给 出abs_path,那么当它作为请求URI时,必须以“/”的形式给出,通常这个工作浏览器自动帮我们完成 eg 1、输入:WWW.guet.edu.Cn 浏览器自动转换成:http://www.guet.educn/ 2http:192.168.0.116:8080/index.jsp 二、HTTP协议详解之请求篇 http请求由三部分组成,分别是:请求行、消息报头、请求正文 1、请求行以一个方法符号开头,以空格分开,后面跟着请求的URI和协议的版本,格式如下: Method Request-uri Http-Vers1on Crlf 其中 Method表示请求方法; Request-URI是一个统一资源标识符;HTP- Version表示请求的 HTTP协议版本;CRLF表示回车和换行(除了作为结尾的CRLF外,不允许出现单独的CR或LF字符) 请求方法(所有方法仝为大写)有多种,各个方法的解释如下 GET请求获取 Request-URI所标识的资源 POST在 Request-UR工所标识的资源后附加新的数据 HEAD请求获取由 Request-UR工所标识的资源的响应消息报头 PUT请求服务器存储个資源,并用 Request-URI作为其标识 DELETE请求服务器删除 Request-URI所标识的资源 RACE请求服务器回送收到的请求信息,主要用于测试或诊断 CONNECT保留将来使用 OPTIONS请求查询服务器的性能,或者査询与资源相关的选项和需求 应用举例: GET方法:在浏览器的地址栏中输入网址的方式访问网贝时,浏览器采用GET方法向服务器获取资源, g: Get /form. htm1 Http/1.1 (cRlf) PoST方法要求被请求服务器接受附在请求后面的数据,常用于提交表单, eg: Post /reg.jsp Http/(crLf) Accept: image/ gif, image/ x-bit,.. (CRLF) Host: Www.guet. edu cn (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、请求报头后述 3、请求正文〔略) 、HTTP协议详解之响应篇 在接收和鮮释请求消息后,服务器返回一个HTTP响应消息 HITP响应也是由三个部分组成,分别是:状态行、消息报头、响应正文 1、状态行格式如下: Http-vErsioN Status-code Reason-phrase crlf 其中,HTTP-Vers1on表示服务器HTTP协议的版本;Status-code表示服务器发回的响应状态代 码: Reason- Phrase表示状态代码的文本描述。 状态代码有三位数字组成,第一个数字定义了响应的类别,且有五种可能取值: 1xx:指示信息--表示请求凵接收,继续处理 2xx:成功--表示请求已被成功接收、理解、接受 3xx:重定向-要完成请求必须进行更进步的操作 4xX:客户端错误-请求有语法错误或请求无法实现 5xX:服务器端错误--服务器未能实现合法的请求 常见状态代码、状态描述、说明: 200OK //客户端请求成功 400 Bad Request//客户端诮求有语法错误,不能被服务器所理解 401 Unauthorized//请求未经授权,这个状态代码必须和ww- Authenticate报 //头域一起使用 403 Forbidden//服务器收到请求,但是拒绝提供服务 404 Not found//请求资源不存在,eg:输入了错误的URL 500 Internal server Error//服务器发生不可预期的错误 503 Seryer Unavailable//服务器当前不能处理客户端的请求,一段时间后, //可能恢复正常 eg: Http/1.1 200 Ok (crlF) 2、响应报头后述 3、响应正文就是服务器返回的资源的内容 四、HTTP协议详解之消息报头篇 HTTP消息由客户端到服务器的请求和服务器到客户端的响应组成。请求消息和响应消息都是由开始 行(对于请求消息,开始行就是请求行,对于响应消息,开始行就是状态行),消息报头(可选),空行(只 有CRLF的行),消息正文(可选)组成。 HTTP消息报头包括普通报头、请求报头、响应报头、实体报头, 每一个报头域都是由名字+“:”+空格+值组成,消息报头域的名字是大小写无关的。 1、普通报头 在普通报头中,有少数报头域用于所有的请求和响应消息,但并不用于被传输的实体,只用于传输的 消息。 eg: Cache- contro1用于指定缓存指令,缓存指令是单向的(响应中出现的缓存指令在请求中未必会 出现),且是独立的(个消息的缓存指令不会影响另·个消息处理的缓存机制),HTTP1.0使用的类似 的报头域为 Pragma o 请求时的缓存指令包括: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、s- maxage eg:为了指示工E浏览器(客户端)不要缓存页面,服务器端的JsP程序刂以编写如卜: response. sehHeader( cache-Control","no-cache"); / response. setheader(" Pragma","no- cache");作用相当于上述代码,通常两者//合用 这句代码将在发送的响应消息中设冒普通报头域: Cache- Control:no- cache Date普通报头域表示消息产生的日期和时间 Connection普通报头域允许发送指定连接的选项。例如指定连接是连续,或者指定“ close'选项, 通知服务器,在响应完成后,关闭连接 2、请求报头 请求报头允许客户端向服务器端传递请求的附加信息以及客户端自身的信息。 常用的请求报头 Accept Accept请求报头域用」指定客户端接受哪些类型的信息。eg: Accept: Image/gif,表明客户 希望接受GIF图象格式的资源; Accept;text/htm,表明客户端希槊接受htm1文本。 Accept-Charset Accept- Charset请求报头域用于指定客户端接受的字符集。eg Accept- Charset:iso-8859-1,gb2312.如果在请求消息中没有设置这个域,缺省是任何字符集都可 以接受。 Accept-Encoding Accept- Encoding请求报头域类似于 Accept,但是它是用于指定可接受的内容编码。eg Accept- Encoding:gzip. deflate,如果请求消息中没有设置这个域服务器假定客户端对各种内容编 码都可以接受。 Accept-Language Accept- Language请求报头域类似于 Accept,但是它是用于指定一种自然语言。eg Accept- Language:zh-cnη.如果请求消息中没有设置这个报头域,服务器假定客户端对各种语言都可以 接受。 Authorization Authorization请求报头域主要用」证明客户端有权查看某个资源。当浏览器访问一个页面时,如 果收到服务器的响应代码为401(未授权),可以发送一个包含 Authorization请求报头域的请求,要 求服务器对其进行验证。 Host(发送请求时,该报头域是必需的) Host请求报头域辶要用于指定被请求资源的 Internet主机和端口号,它通常从 Http Url中提取 出来的,eg: 我们在浏览器中输入:http://www.guet.educn/index.htmi 浏览器发送的请求消息中,就会包含Host请求报头域,如 Host:www.guet.edu.cn 此处使用缺省端口号80,若指定了端口号,则变成:Host:WMw.guet.edu.cn:指定端口号 User-Agent 我们上网登陆论坛的时候,往往会看到一些欢迎信息,其中列出了你的操作系统的名称和版本,你所 使用的浏览器的名称和版本,这往往让很多人感到很袢奇,实际上,服务器应用程序就是从User- Agent 这个请求报头域中获取到这些信息、。User- Agent请求报头域允许客户端将它的操作系统、浏览器和其它 属性告诉服务器。不过,这个报头域不是必需的,如果我们自己编写一个浏览器,不使用User- Agent 请求报头域,那么服务器端就无法得知我们的信息了 请求报头举例: Get/Form. html Http/1.1 (crLf) Accept: image/gif, image/x-xbi tmap, image /ipeg, application/x-shockwave-flas h, application/vnd. ms-excel, application/vnd. ms-powerpoint, application/msword */* (CRlF) Accept-Language: zh-cn (CRLF) Accept-Encoding: gzip, deflate (CRlF) If-Modi fied-Since: Wed, 05 Jan 2007 11: 21: 25 GMT (CRLF) If-None-Match: W/80b1a4c018f3c41: 8317(CRLF) User-Agent: Mozilla/4.0(compatible; MSIE60; windows NT 5.0)(CRLF) Host:www.guet.edu.cn(crLf) Connection: keep-Alive (CRLF) (CRLF) 3、响应报头 响应报头允诈服务器传递不能放在状态行中的附加响应信息,以及关于服务器的信息和对 Request-URI所标识的资源进行卜一步访问的信息。 常用的响应报头 Location ocation响应报头域用于重定向接受者到一个新的位置。 Location响应报头域常用在更换域名的 时候。 Server Server响应报头域包含了服务器用来处理请求的软件信息。与User- Agent请求报头域是相对应 的。下面是 Server响应报头域的一个例子: Server: Apache -coyote/1.1 WWW-Authenti cate Ww- Authenticate响应报头域必须被包含在401(未授权的)响应消息中,客户端收到401响应 消息时候,并发送 Authorization报头域请求服务器对其进行验证时,服务端响应报头就包含该报头域。 eg:ww- Authenticate: Basic realm=" Basic auth test!"//可以看出服务器对请求资 源采用的是基验证机制。 4、实体报头 请求和响应消息都可以传送一个实体。一个实体由实体报头域和实体正文组成,但并不是说实体报头 域和实体正文要在一起发送,可以只发送实体报头域。实体报头定义了关于实体正文(eg:有无实体正文) 和请求所标识的资源的元信息。 常用的实体报头 Content-Encoding Content- Encoding实体报头域被用作媒体类型的修饰符,它的值指示了已经被应用到实体正文的 附加内容的编码,因而要获得 Content-τype报头域中所引用的媒体类型,必须采用相应的解码机制。 Content- Encoding这样用于记录文档的压缩方法,eg: Content- Encoding:gzip Content-Language Content- Language实体报头域描述了资源所用的自然语言。没有设置该域则认为实体内容将提供 给所有的语言阅读 者。eg: Content.- Language:da Content-Length Content- Length实体报头域用于指明实体正文的长度,以字节方式存储的十进制数字来表示。 Content-Type Content-Type实体报头域用语指明发送给接收者的实体正文的媒体类型。eg: Content-Type: text/html; charset=ISo-8859-1 Content-Type: text/html; charset=GB2312 Last-Modi fied Last- Modified实体报头域用」指示资源的最后修改日期和时间。 Expires Expires实体报头域给山响应过期的口期和吋间。为了让代理服务器或浏览器在段吋间以后更新 缓存中(再次访门曾访问过的臾面时,直接从缓存中加载,缩短响应时间和降低服务器负载)的贝面,我们 可以使用 Expi res实体报头域指定页面过期的时间。eg: Expires:Thu,15Sep200616:23:12 GMT HTTP1.1的客户端和缓存必须将其他非法的日期格式(包括0)看作已经过期。eg:为了计浏览器 不要缓存页面,我们也可以利用 Expires实体报头域,设置为0,jsp中程序如下: response. setDateHeader( expires,0") 五、利用telnet观察http协议的通讯过程 实验目的及原理 利用MS的telnet工具,通过手动输λhttp请求信息的方式,向服务器发出请求,服务器接收、 解释和接受请求后,会返回一个响应,该响应会在telnet窗口上显小出来,从而从感性上加深对http 协议的通讯过程的认识。 实验步骤: 1、打开 telnet 1.1打开 telnet 达行-->Cmd--> telnet 1.2打开 telnet回显功能 set localecho 2、连接服务器并发送请求 2.1 open wwv.guet.edu.cn80//注意端∏号不能省略 Head /inDex. asp Http/1.0 Hostwww.guet.edu.cn 我们可以变换请求方法,请求桂林电子主页内容,输入消息如下* openwww.guet.educn80 GET/ index, asp Http/1.0//请求资源的内容 Host:www.guet.edu.cn 2.2 open Ww\.sina,Com.Cn80//在命令提示符号下育接输入 telnet www,sina.Com,Cn 80 Head /indEx. asp Http/1.0 Host: www sina com cn 3、实验结果 3.1请求信息2.1得到的响应是: Http/1.1 200 Ok //请求成功 Server: Microsoft -IIS/5.0 //web服务器 Date: Thu. 08 Mar 200707: 17: 51GMT Connection keep-Alive Content-Length: 23330 Content-Type: text/html Expries: Thu, 08 Mar 2007 07: 16: 51GMT Set-Cookie: ASPSESSIONIDQAQBQQQB=BEJCDGKADED]KLKKAJ EOIMMH; path=/ Cache-control: private //资源内容省略 3.2请求信息2.2得到的响应是: TP/1.0 404 Not Found //请求失败 Date: Thu. 08 Mar 2007 07:50: 50 GMT Server: Apache/2.0.54 <unix> Last-Modi fied: Thu. 30 Nov 2006 11: 35: 41GMT ETag:"6277a-415-e7c76980″ Accept-Ranges: bytes X-Powered-By: mod_x layout_jh/0.0.ivhs markII remix vary: Accept-Encoding Content-Type: text/ html X-Cache: MIss from zjm152-78.sina. com. cn via: 1.0 zjm152-78. sina. com. cn: 80<squid/2.6.STABLES-20061207> X-Cache: miss from th-143. sina. com. cn Connection close 失去了跟主机的连接 按任意键继续 4、注意事项 ◆出现输入错误,则请求不会成功. ◇报头域不分大小写。 令更深一步了解HTTP协议,可以查看RFC2616在http://www.letf.org/rfc上找到该文 件 令开发后台程序必须掌握http协议 六、HTTP协议相关技术补充 1、基础 高层协议有:文件传输协议FTP、电子邮件传输协议SMTP、域名系统服务DNS、网终新闻传输协议 NNTP和HTTP协议等 中介由三种:代理〔 Proxy)、网关( Gateway)和通道( Tunne1),一个代理根据URI的绝对格式来 接受请求,重写全部或部分消息,通过URI的标识把已格式化过的请求发送到服务器。网关是一个接收 代理,作为—些其它服务器的上层,并且如果必须的话,可以把请求翻译给卜层的服务器协议。一个通 道作为不改变消息的两个连接之间的中点。当通讯需要通过一个中介(例如:防火墙等)或者是中介不能 识别消息的内谷时,通道经常被使用 代理( Proxy):一个中间程序,它可以充当一个服务器,也可以充当一个客户机,为其它客户机建立

...展开详情
试读 12P HTTP协议详解.pdf
立即下载
限时抽奖 低至0.43元/次
身份认证后 购VIP低至7折
一个资源只可评论一次,评论内容不能少于5个字
逍遥子_ 基本能看,但是章节少了一些
2018-11-05
回复
您会向同学/朋友/同事推荐我们的CSDN下载吗?
谢谢参与!您的真实评价是我们改进的动力~
  • 分享宗师

关注 私信
上传资源赚钱or赚积分
最新推荐
HTTP协议详解.pdf 33积分/C币 立即下载
1/12
HTTP协议详解.pdf第1页
HTTP协议详解.pdf第2页
HTTP协议详解.pdf第3页

试读结束, 可继续读1页

33积分/C币 立即下载