http协议解析

来源:互联网 发布:js控制input 框不可写 编辑:程序博客网 时间:2024/06/05 02:43
http协议解析
一、http协议的特点:
    1、支持客户/服务器模式
    2、简单快速:客户向服务器请求时,只需传请求方法和路径
    3、灵活:http允许传输任意类型的数据对象。正在传输的数据的类型由Content-Type加以标记
    4、无连接:无连接的含义是限制每次连接只处理一个请求。服务器处理完客户的请求,并受到客户的应答后,即断开连接;从1.1版本开始支持持续连接机制。
    5、无状态:协议对于事务处理没有记忆能力。缺少状态意味着如果后续处理需要前面的消息,则它必须重传。这也会导致每次连接传输的数据量增大。
 
二、URL。URL的格式是:http://host[":"port][abs_path],下面解析各个部分
    1、http是协议名字
    2、host表示合法的主机命或者ip地址
    3、port指定一个端口,默认是80
    4、abs_path指定请求资源的URI;如果URL中没有给出abs_path,那么当他作为请求URI时,必须以/的形式给出,浏览器通常帮我们自动完成这个功能。
    
三、请求。
    Http请求由三部分构成:请求行、消息报头(可选)、请求正文(可选)
    1、请求行。格式:Method Request-URI HTTP-Vesion CRLF
        1.1、请求方法有多种:
            GET 获取Request-URI标识的资源
            POST 在Request-URI标识的资源后附加新的数据
            HEAD 获取Request-URI标识的资源的响应消息报头
            PUT 存储一个资源,并用Request-URI作为其标识
            DELETE 删除Request-URI标识的资源
            TRACE 要求服务器回送接收到的请求信息,主要用于调试
            CONNECT 保留
            OPTIONS 查询服务器的性能,或者查询与资源相关的选项和需求
            GET例子:GET /index.html HTTP/1.1 (CRLF)
            POST例子:POST /reg.jsp HTTP/1.1 (CRLF) // 请求行
                  Accpet:image/gif,imag/jpg (CRLF) // 消息报头
                  HOST:www.hao123.com.cn (CRLF)       // 消息报头
                  ...
                  (CRLF)    // 消息报头结束
                  user=Jack&pwd=123456    // 提交的数据,也就是消息正文
            
    2、消息包头。格式:名字+":"+空格+值,名字大小写无关,消息报头是可选的。例如:Accpet:image/gif,imag/jpg (CRLF)。
        普通的报头有(可用于请求或回应):
            Cache-Control 用于指定缓存指令,例如:Cache-Control:no-cache
            Date 用于表示消息产生的日期和时间
            Connection 允许发送指定连接的选项
        实体报头(可用于请求或回应):
            Content-Encoding 媒体类型的修饰符。例如:Content-Encoding:gzip
            Content-Language 描述了资源所用的自然语言。例如:Content-Language:da
            Content-Length 用于指明实体正文的长度,以字节方式存储的十进制数字来表示
            Content-Type 用于指明发送给接收者的实体正文的媒体类型。例如:Content-Type:text/html;charset=GB2312
            Last-Modified 用于指明资源最后的修改日期和时间
            Expires 给出响应过期的日期和时间

        常见的请求报头:
            Accept 用于指定客户端接受哪些类型的信息,例如:Accept:text/html
            Authorization 主要用于证明客户端有权限查看某个资源
            Host 对于发送请求来说,这是必需的。它用于指定被请求资源的主机和端口号,例如:Host:www.guet.edu.cn
            User-Agent 运行客户端将它的操作系统、浏览器和其他属性告诉服务器。例如:User-Agent:Mozilla/4.0(compatible;MSIE6.0;Windows NT 5.0) (CRLF)
        
    
四、回应。
    在接受和解析请求消息之后,服务器返回一个http响应消息。http响应由三部分组成:状态行、消息报头(可选)、响应正文(可选)。例如:HTTP/1.1 200 OK (CRLF)
    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  // 服 务 器 当 前 不 能 处 理 客 户 端 的 请 求 , 一 段 时 间 后 ,可能恢复正常
    2、响应报头。响 应 报 头 允 许 服 务 器 传 递 不 能 放 在 状 态 行 中 的 附 加 响 应 信 息,以 及 关 于 服 务 器 的 信 息 和对Request-URI 所标识的资源进行下一步访问的信息。
    常用的响应报头:
    Location 响应报头域用于重定向接受者到一个新的位置
    Server 响应报头域包含了服务器用来处理请求的软件信息。例如:Server:Apache-Coyote/1.1
    WWW-Authenticate 响应报头域必须被包含在 401(未授权的)响应消息中。例如:WWW-Authenticate:Basic realm="Basic Auth Test!"
0 0
原创粉丝点击