首页

Http访问网络

搜索

HTTP概述
1、HTTP(超文本文件传输协议)
HTTP是一种通信协议,它允许将超文本标记语言(HTML)文档从Web服务器传送到Web浏
览器。HTML是一种用于创建文档的标记语言,这些文档包含到相关信息的链接。可以单击一个链
接来访问其它文档、图像或多媒体对象,并获得关于链接项的附加信息。
HTTP是一个属于应用层的面向对象的协议,由于其简捷、快速的方式,适用于分布式超媒体信息
系统。它于1990年提出,经过几年的使用与发展,得到不断地完善和扩展。目前在WWW中使用
的是HTTP/l.l
2、 http是一个基于请求与响应模式的、无状态的、应用层的协议,常基于TCP的连接方式,HTTP1.1
版本中给出一种持续连接的机制绝大多数的Web开发,都是构建在HTTP协议之上的Web应用。
HTTP协议的主要特点如下:
1)支持客户/服务器模式。
2)简单快速:客户向服务器请求服务时,只需传送请求方法和路径。请求方法常用的有GET、HEAD,
POST。每种方法规定了客户与服务器联系的类型不同。由于HTTP协议简单,使得HTTP服务器
的程序规模小,因而通信速度很快。
3)灵活:HTTP允许传输任意类型的数据对象。正在传输的类型由Content-Type加以标记。
4)无连接:无连接的含义是限制每次连接只处理一个请求。服务器处理完客户的请求,并收到客户的应

答后,即断开连接。采用这种方式可以节省传输时间。
5)无状态:HTTP协议是无状态协议。无状态是指协议对于事务处理没有记忆能力。缺少状态意味着如
果后续处理需要前面的信息,则它必须重传,这样可能导致每次连接传送的数据量增大。另一方面
在服务器不需要先前信息时它的应答就较快。
URL
概述
HTTP URL(统一资源定位)是一种特殊类型的URI,包含了用于查找某个资源的足够信息。
URL的构成

http:// host:port/abs_path,即
http://表示要通过HTTP协议来定位网络资源;
host表示合法的Internet主机域名或者IP地址;
port指定一个端口号,为空则使用缺省端口80;
abs_path指定请求资源的URI;如果URL中没有给出abs_path,那么当它作为请求URI时,必须以"/
的形式给出,通常这个工作浏览器自动帮我们完成。
例子:
1,输入:www.guet.edu.cn
浏览器自动转换成:http://www.guet.edu.cn/
2, http://192.168.0.116:8080/index.jsp
请求
http请求由三部分组成,分别是:请求行、消息头、请求正文
请求行
以一个方法符号开头,以空格分开,后面跟着请求的U RI和协议的版本,格式如下:
Method Request-URI HTTP-Version CRLF
1)Method表示请求方法;如GET或POST;
2)Request-URI是一个统一资源标识符;
3)HTTP-Version表示请求的HTTP协议版本;
4)CRLF表示回车和换行(除了作为结尾的CRLF外,不允许出现单独的CR或LF字符)
说明:
请求方法(所有方法全为大写)有多种,常用的请求方法如下:
1)GET:请求获取Request-URI所标识的资源。GET方式发送请求的参数会在浏览器的地址栏中
显示,并且请求的长度有限制。
2)POST:在Request-URI所标识的资源后附加新的数据。POST方法要求被请求的服务器接受附
在请求后面的数据,常用于提交表单。POST方式发送的请求不显示在浏览器地址栏,并且请求的
数据没有长度限制。

消息头
消息头允许客户端向服务器端传递请求的附加信息以及客户端自身的信息。常用的消息头二
1、Accept
作用:指定客户端接受哪些类型的信息。
例子:Accept:image/gif
说明:表明客户端希望接受GIF图象格式的资源;
例子:Accept:text/html
作用:表明客户端希望接收html文本。
2, Accept-Charset
Accept-Charset消息头域用于指定客户端接受的字符集。
例子:Accept-Charset:iso-8859-1,gb2312.
提示:如果在请求消息中没有该设置,缺省是任何字符集都可以接受。

3.Accept-Encoding
作用:指定可接受的数据压缩格式。
例子:Accept-Encoding:gzip.deflate.
说明:以上设置可接受、处理的文件压缩格式为gzip和deflate
提示:如果请求消息中没有该设置,服务器假定客户端对各种压缩编码都可以接受。
4, Accept-Language
作用:指定一种自然语言。
例子:Accept-Language:zh-cn
提示:如果请求消息中没有该设置,服务器假定客户端对各种语言都可以接受。
5, If-Modified-Since和Last-Modified
作用:If-Modified-Since和Last-Modified用于记录页面最后修改时间的HTTP头信息。
其中,Last-Modified是由服务器往客户端发送的HTTP头,而If-Modified-Since则是由客户
端往服务器发送的头。
当再次请求本地存在的cache页面时,客户端会通过If-Modified-Since头将先前服务器端发过
来的Last-Modified最后修改时间戳发送回去,这是为了让服务器端进行验证,通过这个时间戳判断客
户端的页面是否是最新的,如果不是最新的,则返回新的内容,如果是最新的,则返回304告诉客户
端其本地cache的页面是最新的,于是客户端就可以直接从本地加载页面了,这样在网络上传输的数据
就会大大减少,同时也减轻了服务器的负担。
例子:If-Modified-Since:Wed,05 Jan 2007 11:21:25 GMT
6. If-None-Match
作用:If-None一Match和ETags(HTTP协议规格说明定义ETag为"被请求变量的实体值",或者
是一个可以与Web资源关联的记影常用来判断当前请求资源是否改变。
Last-Modified和HTTP-IF-MODIFIED-SINCE只判断资源的最后修改时间,而ETags和
If-None-Match可以是资源的任何属性,比如资源的MD5等。
ETags和If-None-Match的工作原理是在HTTP Response中添加ETags信息。当客户端再次请
求该资源时,将在HTTP Request中加入If-None-Match信息(ETags的值)。如果服务器验证资源的
ETags没有改变(该资源没有改变),将返回一个304状态;否则,服务器将返回200状态,并返回该
资源和新的ETags
例子:If-None一Match:W/" 80b1a4c018f3c41:8317"
说明:以上的字符串是一个唯一值用于区分不同的资源。
7, User-Agent:
作用:允许客户端将它的操作系统、浏览器和其它属性告诉服务器。
例子:User-Agent: Mozilla/4.0(compatibIe;MSIE6.0;Windows NT 5.0) (CRLF)
提示:该报头不是必需的,如果我们自己编写一个浏览器,不使用User-Agent请求报头,那么服务器
端就无法得知我们的信息了。
8, Keep-Alive
HTTP协议采用“请求-应答”模式,当使用普通模式,即非KeepAlive模式时,每个请求/应答客
户和服务器都要新建一个连接完成之后立即断开连接(HTTP协议为无连接的协议);当使用Keep-Alive
模式(又称持久连接、连接重用)时,Keep-AIive功能使客户端到服务器端的连接持续有效,当出现对
服务器的后继请求时,Keep-Alive功能避免了建立或者重新建立连接。
提示:http 1.0中默认是关闭的,需要在http头加入”Connection: Keep-Alive",才能启用
Keep-Alive;http 1.1中默认启用Keep-AI ive,如果加入”Connection: close ",才关闭。目前大部分
浏览器都是用httpl.l协议,也就是说默认都会发起Keep-Alive的连接请求了,所以是否能完成一个完
整的Keep-Alive连接就看服务器设置情况。
请求报头综合示例:以下是客户端向服务器发送HTTP协议的请求:
GET/form.html HTTP/1.1 (CRLF)
Accept:image/gif,image/x-xbitmap,image/jpeg,application/x-shockwave-flash,application/
vnd.ms-excel,application/vnd.ms-powerpoint,application/msword,*/* (CRLF)
Accept-Language:zh-cn (CRLF)
Accept-Encoding:gzip,deflate (CRLF)
If-Modified-Since:Wed,05 Jan 2007 11:21:25 GMT (CRLF)
If-None一Match:W/"SOb1a4c018f3c41:8317" (CRLF)
User-Agent:Mozilla/4.0(compatibIe;MSIE6.0;Windows NT 5.0) (CRLF)
Host:www.guet.edu.cn (CRLF)
Connection:Keep-Alive (CRLF)
响应
响应头允许服务器传递不能放在状态行中的附加响应信息,以及关于服务器的信息和对
Request-URI所标识的资源进行下一步访问的信息。
常用的响应头
1, Location
作用:用于重定向接受者到一个新的位置。
提示:Location常用在更换域名的时候。
2, Server
作用:Server包含了服务器用来处理请求的软件信息。与User-Agent相对应。
例子:
Server:Apache-Coyote/1.1
WWW-Authenticate
WWW-Authenticate响应头必须被包含在401(未授权的)响应消息中,客户端收到401
响应消息时候,并发送Authorization请求服务器对其进行验证时,服务端响应报头就
包含该报头域。
3.实体头
请求和响应消息都可以传送一个实体。一个实体由实体头和实体正文组成,但并不是说实体头和实
体正文要在一起发送,可以只发送实体头。实体头定义了关于实体正文和请求所标识的资源的元信息。
常用的实体头
1)Content-Encoding
2)Content-Language
作用:描述了资源所用的自然语言。
3)Content-Length
作用:指明实体正文的长度,以字节方式存储的十进制数字来表示。
4)Content-Type
作用:指明发送给接收者的实体正文的媒体类型。
例子:Content-Typeaext/htm I;charset=ISO-8859-1
Content-Typeaext/html;charset=GB2312
5)Last-Modified
作用:指示资源的最后修改日期和时间。
6)Expires
作用:给出响应过期的日期和时间。为了让代理服务器或浏览器在一段时间以后更新缓存中(再次访
问曾访问过的页面时直接从缓存中加载缩短响应时间和降低服务器负载)的页面。劲门可以使用Expires
实体头指定页面过期的时间。
例子:Expires:Thu,15 Sep 2006 16:23:12 GMT
7)综合例子
1 HTTP/1.1 304 Not Modified
2 Server:Apache-Coyote/1.1
3 ETag:W/" 107一1340936271640"
4 Dae:Fri.29 Jun 2012 02:23:15 GMT
说明:
第1行:协议及该协议的版本。304表示上次返回的响应信息未改变,Not Modifed也表明上次
返回的响应信息未改变,直接从客户端获取上次缓存的信息。
第2行:服务器所用软件的版本信息。
第3行:上次资源的唯一标识符,由服务器返回给客户端。
第4行:服务器的响应时间。

 


上一页 下一页