Http协议概述
HTTP 是一个属于应用层的面向对象的协议,是一个基于请求与响应模式的、无状态的、应用层的协议,常基于TCP 的连接方式。
一、HTTP 协议的主要特点可概括如下:
1.支持客户/服务器模式。
2.简单快速:客户向服务器请求服务时,只需传送请求方法和路径。请求方法常用的有GET、HEAD、POST。每种方法规定了客户与服务器联系的类型不同。由于HTTP 协议简单,使得HTTP 服务器的程序规模小,因而通信速度很快。
3.灵活:HTTP 允许传输任意类型的数据对象。正在传输的类型由Content-Type 加以标记。
4.
无连接:
无连接的含义是限制每次连接只处理一个请求。服务器处理完客户的请求,并收到客户的应答后,即断开连接。采用这种方式可以节省传输时间。
5
.无状态:HTTP 协议是无状态协议。无状态是指协议对于事务处理没有记忆能力。缺少状态意味着如果后续处理需要前面的信息,则它必须重传,这样可能导致每次连接传送的数据量增大。另一方面,在服务器不需要先前信息时它的应答就较快。(
故而,用cookies与session来确定其状态)
二、请求
HTTP 请求由三部分组成,分别是:请求行、消息报头、请求正文。
1)请求行
请求行以一个方法符号开头,以空格分开,后面跟着请求的URI 和协议的版本,格式如下:
Method Request-URI HTTP-Version CRLF。
其中Method 表示请求方法;Request-URI 是一个统一资源标识符;HTTP-Version 表示请求的HTTP 协议版本;CRLF 表示回车和换行(除了作为结尾的CRLF 外,不允许出现单独的CR 或LF 字符)。
请求方法
所有方法全为大写,有多种,各个方法的解释如下:
GET 请求获取Request-URI 所标识的资源
POST 在Request-URI 所标识的资源后附加新的数据(还有HEAD、PUT、DELETE等方法)。
2)(消息报头)请求报头
请求报头允许客户端向服务器端传递请求的附加信息以及客户端自身的信息。常见的请求报头域有Accept、Accept-Charset、Accept-Encoding、Accept-Language、Authorization、Host(发送请求时,该报头域是必需的)、User-Agent。
请求报头举例:
GET /form.html HTTP/1.1 (CRLF)
Accept:image/gif,image/x-xbitmap,image/jpeg,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-Modified-Since:Wed,05 Jan 2007 11:21:25 GMT (CRLF)
If-None-Match:W/"80b1a4c018f3c41:8317" (CRLF)
User-Agent:Mozilla/4.0(compatible;MSIE6.0;Windows NT 5.0) (CRLF)
Host:www.guet.edu.cn (CRLF)
Connection:Keep-Alive (CRLF)
(CRLF)