HTTP协议简介

来源:互联网 发布:如何不留痕迹动物知乎 编辑:程序博客网 时间:2024/04/30 23:11

前言:

HTTP是一个属于应用层的面向对象的协议,由于其简捷、快速的方式,适用于分布式超媒体信息系统。它于1990年提出,经过几年的
使用与发展,得到不断地完善和扩展。目前在WWW中使用的是HTTP/1.0的第六版,HTTP/1.1的规范化工作正在进行之中,而且HTTP-
NG(Next Generation of HTTP)的建议已经提出。
HTTP协议的主要特点可概括如下:
1.支持客户/服务器模式。
2.简单快速:客户向服务器请求服务时,只需传送请求方法和路径。请求方法常用的有GET、HEAD、POST。每种方法规定了客户与服
务器联系的类型不同。由于HTTP协议简单,使得HTTP服务器的程序规模小,因而通信速度很快。
3.灵活:HTTP允许传输任意类型的数据对象。正在传输的类型由Content-Type加以标记。
4.无连接:无连接的含义是限制每次连接只处理一个请求。服务器处理完客户的请求,并收到客户的应答后,即断开连接。采用这种方
式可以节省传输时间。
5.无状态:HTTP协议是无状态协议。无状态是指协议对于事务处理没有记忆能力。缺少状态意味着如果后续处理需要前面的信息,则
它必须重传,这样可能导致每次连接传送的数据量增大。另一方面,在服务器不需要先前信息时它的应答就较快。

一、HTTP URL (URL是一种特殊类型的URI,包含了用于查找某个资源的足够的信息)的格式如下:
      
http://host[":"port][abs_path]

      关于URI类型的详细解释请参阅我翻译的《RFC2396:-统一资源标识符(URI):基本语法》或英文原著"

      http表示要通过HTTP协议来定位网络资源;host表示合法的Internet主机域名或者IP地址;port指定一个端口号,
为空则使用缺省端口80;abs_path指定请求资源的URI;如果URL中没有给出abs_path,那么当它作为请求URI
时,必须以“/”的形式给出,通常这个工作浏览器自动帮我们完成。
     关于URL的类型这里进行简单的介绍:
            第一部分是协议(或称为服务方式);
            第二部分是存有该资源的主j机IP地址(有时也可以包括端口号);
            第三部分是主机资源的具体地址。如目录和文件名。
            第一部分和第二部分之间用 “://” 符号隔开,第二部分和第三部分用 “/” 符号隔开。
            第一部分和第二部分是不可  缺少的,第三部分有时可以省略。
二、下面介绍一下HTTP的传输过程
      HTTP是通过TCP传输的,所以有请求和响应两部分组成。
      HTTP的请求部分由:
                   1. 请求行:
                       格式如下格式如下:Method Request-URI HTTP-Version CRLF  其中 Method表示请求方法;Request-                       URI是一个统一资源标识符;HTTP-Version表示请求的HTTP协议版本;CRLF表示回车和换行
                     (除了作为结尾的CRLF外,不允许出现单独的CR或LF字符)。
                   2. 消息报头(和响应的消息报头一起讲解)
                   3.请求正文
      三部分组成。
      HTTP响应也是由三个部分组成:
                    1.状态行:
                      格式如下: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)
                     2. 消息报头
                     3.响应正文
          HTTP消息报头由
                      普通报头
                      请求报头
                      响应报头
                      实体报头
          四部分组成。每一个报头域都是由名字+“:”+空格+值 组成,消息报头域的名字是大小写无关的。
         
    附录:

RequestResponse的格式

Request格式:

HTTP请求行
(请求)头

空行

可选的消息体


注:请求行和标题必须以<CR><LF> 作为结尾(也就是,回车然后换行)。空行内必须只有<CR><LF>而无其他空格。在HTTP/1.1 协议中,所有的请求头,除Host外,都是可选的。

 

实例:

GET / HTTP/1.1

Host: gpcuster.cnblogs.com

User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.9.0.10) Gecko/2009042316 Firefox/3.0.10

Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8

Accept-Language: en-us,en;q=0.5

Accept-Encoding: gzip,deflate

Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7

Keep-Alive: 300

Connection: keep-alive

If-Modified-Since: Mon, 25 May 2009 03:19:18 GMT

Response格式:

HTTP状态行
(应答)头

空行

可选的消息体

 

实例:

HTTP/1.1 200 OK

Cache-Control: private, max-age=30

Content-Type: text/html; charset=utf-8

Content-Encoding: gzip

Expires: Mon, 25 May 2009 03:20:33 GMT

Last-Modified: Mon, 25 May 2009 03:20:03 GMT

Vary: Accept-Encoding

Server: Microsoft-IIS/7.0

X-AspNet-Version: 2.0.50727

X-Powered-By: ASP.NET

Date: Mon, 25 May 2009 03:20:02 GMT

Content-Length: 12173

 

­消息体的内容(略)

 


 
    

原创粉丝点击