对http协议的理解

http协议是应用层的一种协议,貌似发展到现在已经有24年了,在自己的日常工作和生活中一直离不开internet,也就和http协议密不可分,但是却么有深入了解过,今天google了一下,总结下自己的理解。

jessonlv-吕国栋原创文章,转载请注明出处:http://blog.csdn.net/jessonlv

http协议应该说有以下几个主要的特点:

1、支持客户端/服务器模式

2、简单快速:之所以简单,是因为,http协议每次向服务器端发送请求时,只传送请求方法和路径,请求方法一般有POST、GET、HEAD,每种方法体现了客户端与服务器端的联系方式不同。进而由于http协议很简单,所以其体积比较小,通信速度很快。

3、灵活:http运行传送任意类型的数据,数据由Content-Type来标记。

4、无连接:无连接的意思是,http每次链接只处理一个请求,当请求完毕时,就关闭这个链接。

5、无状态:无状态是指协议对事务处理没有记忆能力,这就意味着如果后续处理需要前面的信息,那个这个链接必须重新请求,这就造成了信息传输量的增加,不过另一方面如果后续处理不需要前面的信息的话,那么这个请求速度就会很快。


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

请求行的一般格式如下:Method Request-URI HTTP-Version CRLF,其中 Method表示请求方法;Request-URI是一个统一资源标识符;HTTP-Version表示请求的HTTP协议版本;CRLF表示回车和换行(除了作为结尾的CRLF外,不允许出现单独的CR或LF字符)。


请求方法(所有方法全为大写)有多种,各个方法的解释如下:
GET     请求获取Request-URI所标识的资源
POST    在Request-URI所标识的资源后附加新的数据
HEAD    请求获取由Request-URI所标识的资源的响应消息报头
PUT     请求服务器存储一个资源,并用Request-URI作为其标识
DELETE  请求服务器删除Request-URI所标识的资源
TRACE   请求服务器回送收到的请求信息,主要用于测试或诊断
CONNECT 保留将来使用
OPTIONS 请求查询服务器的性能,或者查询与资源相关的选项和需求

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

状态行格式如下:
HTTP-Version Status-Code Reason-Phrase CRLF
其中,HTTP-Version表示服务器HTTP协议的版本;Status-Code表示服务器发回的响应状态代码;Reason-Phrase表示状态代码的文本描述。
状态代码有三位数字组成,第一个数字定义了响应的类别,且有五种可能取值:
1xx:指示信息--表示请求已接收,继续处理
2xx:成功--表示请求已被成功接收、理解、接受
3xx:重定向--要完成请求必须进行更进一步的操作
4xx:客户端错误--请求有语法错误或请求无法实现
5xx:服务器端错误--服务器未能实现合法的请求


常见状态代码、状态描述、说明:
200 OK      //客户端请求成功
400 Bad Request  //客户端请求有语法错误,不能被服务器所理解
401 Unauthorized //请求未经授权,这个状态代码必须和WWW-Authenticate报头域一起使用 
403 Forbidden  //服务器收到请求,但是拒绝提供服务
404 Not Found  //请求资源不存在,eg:输入了错误的URL
500 Internal Server Error //服务器发生不可预期的错误
503 Server Unavailable  //服务器当前不能处理客户端的请求,一段时间后可能恢复正常
eg:HTTP/1.1 200 OK (CRLF)


posted @ 2014-02-20 10:17  jessonlv  阅读(762)  评论(0编辑  收藏  举报