http协议相关

http协议 

http://www.cnblogs.com/li0803/archive/2008/11/03/1324746.html

http协议是一个基于请求与响应模式,无连接,无状态的应用层协议。

http1.0:

无连接:无连接的意思是http协议每次连接只处理一个请求,服务器处理完客户的请求,客户收到请求结果后,就断开连接  。节省传输时间

http1.1:

支持持久连接:在一个TCP连接上可以传送多个HTTP请求和响应,减少了建立和关闭连接的消耗和延迟。HTTP 1.1还允许客户端不用等待上一次请求结果返回,就可以发出下一次请求,但服务器端必须按照接收到客户端请求的先后顺序依次回送响应结果,以保证客户端能够区分出每次请求的响应内容,这样也显著地减少了整个下载过程所需要的时间。


无状态:http是无状态协议。无状态意味着服务器不存储事务处理状态,当后续事务需要前面的信息时,则需重传(所以通过cookie来记录事 务状态)

1.URL

http URL:(URL是一种特殊类型的URI)

格式:http://host[":"port][abs_path]

http表示要通过HTTP协议来定位网络资源;host表示合法的Internet主机域名或者IP地址;port指的是一个端口号(默认80);abs_path指请求资源的URI(若abs_path没有给出,当作为请求URI时,必须以'/'的形式给出)。

这个过程浏览器一般自动完成。

输入:www.guet.edu.cn

=>http://www.guet.edu.cn/

2.请求

http请求由3部分组成:请求行,消息报头,请求正文

请求行:Method Request-URI HTTP-Version  CRLF

    “POST /some/path.html?a=b HTTP/1.1”

请求方法:(所有方法全为大写)

GET    请求获取Request-URI所标识的资源

POST    在Request-URI所表示的资源后附加新的数据

HEAD    请求获取由Request-URI所表示的资源的响应消息报头

PUT    请求服务器存储一个资源,并用Request-URI作为其标识

DELETE    请求服务器删除Request-URI所标示的资源

TRACE    请求服务器回送收到的请求信息,主要用于测试或诊断

CONNECT    保留将来使用

OPTIONS    请求查询服务器的性能,或者查询与资源相关的选项和性能

3.响应

 在接受和解释请求消息后,服务器返回一个HTTP响应消息。

http响应消息由3部分组成:状态行,消息报头,响应正文

状态行:HTTP-Version Status-Code Reason-Phrase CRLF

HTTP1.1 200 OK (CRLF)

状态码:

1xx:指示信息-表示请求已经接收,继续处理

2xx:成功

3xx:重定向-要完成请求必须进行更进一步的操作

4xx:客户端错误-请求有语法错误或请求无法实现

5xx:服务器端错误-服务器未能实现合法的请求


200 OK、、客户端请求成功

400 BadRequest、、客户端请求由语法错误,不能被服务器所理解

401Unauthorized、、请求未经授权,这个状态码必须和WWW-Authenticate报头域一起使用

403 Forbidden、、服务器收到请求,但是拒绝提供服务

404 NotFound、、请求资源不存在,eg:输入了错误的URL

500 Internal Server Error 、、服务器发生了不可预期的错误

503 Server Unavailable、、服务器当前不能处理客户端的请求,一段时间后可能恢复正常


响应正文:服务器返回的资源的内容


4.消息报头: 名字+:+空格+值(名字大小写无关)

普通报头:  Cache-Control 缓存指令 Connection 指令连接选项 Date 消息产生的日期。

请求报头:Accept 请求报头域用于指定客户端接受哪些类型的信息。

eg:Accetp:image/gif,表明客户端希望接受GIF图像格式的资源

eg:Accept:text/html,表明希望接受html文本

Authorization:请求报头域主要用于证明客户端有权查看某个资源。当浏览器访问一个页面时,如果收到服务器的响应代码 为401(未授权),可以发一个包含有Authorization请求报头域的请求,要求服务器对其进行验证。

Host:指定被请求资源的Internal主机和端口号

响应报头:响应报头允许服务器传递不能放在状态行的附加响应信息,以及关于服务器的信息和对Request-URI所标识的资源进行下一步访问的信息。

Location:用于重定向接受者到一个新的位置。一般用于更换域名的时候

WWW-Authenticate:该响应头域必须被包含在401(未授权)的响应消息中 ,客户端收到401后发送Authorization报头域请求服务器对其进行验证。(明码传输 过于简单  不安全)

实体报头:

HTTP1.1的客户端和缓存必须将其他非法的日期格式(包括0)看作已经过期。eg:为了让浏览器不要缓存页面,我们也可以利用Expires实体报头域,设置为0,jsp中程序如下:response.setDateHeader("Expires","0");


5.Http协议相关

高层协议:FTM SMTP DNS NNTP HTTP

中介:代理(proxy)、网关(GateWay)、通道(Tunnel)


http1.0和1.1的区别

http://blog.csdn.net/elifefly/article/details/3964766


If-Modified-Since(IMS)

IME是http标准的Request-Header标签

在发送http请求是,把浏览器缓存的最后修改时间一同发送到服务器,,服务器会把这个时间与服务器文件的最后修改时间作对比 如果一致,则返回304(不返回文件内容)

若不一致,返回200和新的文件内容

若是第一次访问该页面,浏览器内没有缓存,所以请求头Request-Header中没有IMS标签。

http://blog.csdn.net/kaowen/article/details/5587683


Last-Modified 与IMS

Last-Modified是服务器端发送给客户端的HTTP头,传送的是服务端文件修改的最新时间戳

IMS是客户端发送给服务端的记录浏览器缓存修改时间戳的HTTP头,用于浏览器验证是否更新客户端缓存。


Etags与If-None-Match

这俩东西与IMS,Last-Modified类似。

但后者只判定文件最后修改时时间,前者的工作原理是在HTTP-Response中加入Etags信息,当客户端再次请求该资源时,将HTTP-Request中加入If-None-Match信息(Etags值)。

若服务器Etags值没有改变,则返回304(不返回文件),否则返回200+新文件+新的Etags,更新浏览器缓存。

http://wuhua.iteye.com/blog/385451


WWW-Authenticate

www-authenticate是早期的一种简单的,有效的用户身份认证技术。

很多网站验证都采用这种简单的验证方式来完成对客户端请求的数据的合法性进行验证。尤其在嵌入式领域中,此方法使用较多。

缺点:这种认证方式在传输过程中是明码传输的,采用的用户名密码加密方式为BASE-64,其解码过程非常简单,网络上很容易搜索到编解码的源码。采用这种认证方式对于普通用户是较安全的,但稍懂TCP/IP协议和HTTP传输协议和验证过程的,破解这种验证用户名和密码是非常简单的。所以其认证技术并不是很安全。

验证过程如下:

http://www.blogbus.com/gaomed-logs/106179012.html



你可能感兴趣的:(http协议)