• HTTP


    http://www.cnblogs.com/CareySon/archive/2012/04/27/HTTP-Protocol.html

    HTTP的网络层次

        在Internet中所有的传输都是通过TCP/IP进行的。HTTP协议作为TCP/IP模型中应用层的协议也不例外。HTTP在网络中的层次如图1所示。

        1

         图1.HTTP在TCP/IP中的层次

        可以看出,HTTP是基于传输层的TCP协议,而TCP是一个端到端的面向连接的协议。所谓的端到端可以理解为进程到进程之间的通信。所以HTTP在开始传输之前,首先需要建立TCP连接,而TCP连接的过程需要所谓的“三次握手”。概念如图2所示。

        22

        图2.TCP连接的三次握手

       在TCP三次握手之后,建立了TCP连接,此时HTTP就可以进行传输了。一个重要的概念是面向连接,既HTTP在传输完成之间并不断开TCP连接。在HTTP1.1中(通过Connection头设置)这是默认行为。

    HTTP请求(HTTP Request)

        所谓的HTTP请求,也就是Web客户端向Web服务器发送信息,这个信息由如下三部分组成:

        1.请求行

        2.HTTP头

        3.内容

        一个典型的请求行比如:

    GET www.cnblogs.com HTTP/1.1

        请求行写法是固定的,由三部分组成,第一部分是请求方法,第二部分是请求网址,第三部分是HTTP版本。

        第二部分HTTP头在HTTP请求可以是3种HTTP头:1.请求头(request header)  2.普通头(general header)  3.实体头(entity header)

        通常来说,由于Get请求往往不包含内容实体,因此也不会有实体头。

        第三部分内容只在POST请求中存在,因为GET请求并不包含任何实体。

        我们截取一个具体的Post请求来看这三部分,我在一个普通的aspx页面放一个BUTTON,当提交后会产生一个Post请求,如图4所示。

        4

        图4.HTTP请求由三部分组成

    HTTP响应(HTTP Response)

           当Web服务器收到HTTP请求后,会根据请求的信息做某些处理(这些处理可能仅仅是静态的返回页,或是包含Asp.net,PHP,Jsp等语言进行处理后返回),相应的返回一个HTTP响应。HTTP响应在结构上很类似于HTTP请求,也是由三部分组成,分别为:

        1.状态行

        2.HTTP头

        3.返回内容

        首先来看状态行,一个典型的HTTP状态如下:

    HTTP/1.1 200 OK

        第一部分是HTTP版本,第二部分是响应状态码,第三部分是状态码的描述,因此也可以把第二和第三部分看成一个部分。

        对于HTTP版本没有什么好说的,而状态码值得说一下,网上对于每个具体的HTTP状态码所代表的含义都有解释,这里我说一下分类。

    • 信息类 (100-199)

    • 响应成功 (200-299)

    • 重定向类 (300-399)

    • 客户端错误类 (400-499)

    • 服务端错误类 (500-599)

        HTTP响应中包含的头包括1.响应头(response header) 2.普通头(general header) 3.实体头(entity header)。

        第三部分HTTP响应内容就是HTTP请求所请求的信息。这个信息可以是一个HTML,也可以是一个图片。

    状态码
    状态码英文名称
    中文描述
    100
    Continue
    继续。客户端应继续其请求
    101
    Switching Protocols
    切换协议。服务器根据客户端的请求切换协议。只能切换到更高级的协议,例如,切换到HTTP的新版本协议
     
    200
    OK
    请求成功。一般用于GET与POST请求
    201
    Created
    已创建。成功请求并创建了新的资源
    202
    Accepted
    已接受。已经接受请求,但未处理完成
    203
    Non-Authoritative Information
    非授权信息。请求成功。但返回的meta信息不在原始的服务器,而是一个副本
    204
    No Content
    无内容。服务器成功处理,但未返回内容。在未更新网页的情况下,可确保浏览器继续显示当前文档
    205
    Reset Content
    重置内容。服务器处理成功,用户终端(例如:浏览器)应重置文档视图。可通过此返回码清除浏览器的表单域
    206
    Partial Content
    部分内容。服务器成功处理了部分GET请求
     
    300
    Multiple Choices
    多种选择。请求的资源可包括多个位置,相应可返回一个资源特征与地址的列表用于用户终端(例如:浏览器)选择
    301
    Moved Permanently
    永久移动。请求的资源已被永久的移动到新URI,返回信息会包括新的URI,浏览器会自动定向到新URI。今后任何新的请求都应使用新的URI代替
    302
    Found
    临时移动。与301类似。但资源只是临时被移动。客户端应继续使用原有URI
    303
    See Other
    查看其它地址。与301类似。使用GET和POST请求查看
    304
    Not Modified
    未修改。所请求的资源未修改,服务器返回此状态码时,不会返回任何资源。客户端通常会缓存访问过的资源,通过提供一个头信息指出客户端希望只返回在指定日期之后修改的资源
    305
    Use Proxy
    使用代理。所请求的资源必须通过代理访问
    306
    Unused
    已经被废弃的HTTP状态码
    307
    Temporary Redirect
    临时重定向。与302类似。使用GET请求重定向
     
    400
    Bad Request
    客户端请求的语法错误,服务器无法理解
    401
    Unauthorized
    请求要求用户的身份认证
    402
    Payment Required
    保留,将来使用
    403
    Forbidden
    服务器理解请求客户端的请求,但是拒绝执行此请求
    404
    Not Found
    服务器无法根据客户端的请求找到资源(网页)。通过此代码,网站设计人员可设置"您所请求的资源无法找到"的个性页面
    405
    Method Not Allowed
    客户端请求中的方法被禁止
    406
    Not Acceptable
    服务器无法根据客户端请求的内容特性完成请求
    407
    Proxy Authentication Required
    请求要求代理的身份认证,与401类似,但请求者应当使用代理进行授权
    408
    Request Time-out
    服务器等待客户端发送的请求时间过长,超时
    409
    Conflict
    服务器完成客户端的PUT请求时可能返回此代码,服务器处理请求时发生了冲突
    410
    Gone
    客户端请求的资源已经不存在。410不同于404,如果资源以前有现在被永久删除了可使用410代码,网站设计人员可通过301代码指定资源的新位置
    411
    Length Required
    服务器无法处理客户端发送的不带Content-Length的请求信息
    412
    Precondition Failed
    客户端请求信息的先决条件错误
    413
    Request Entity Too Large
    由于请求的实体过大,服务器无法处理,因此拒绝请求。为防止客户端的连续请求,服务器可能会关闭连接。如果只是服务器暂时无法处理,则会包含一个Retry-After的响应信息
    414
    Request-URI Too Large
    请求的URI过长(URI通常为网址),服务器无法处理
    415
    Unsupported Media Type
    服务器无法处理请求附带的媒体格式
    416
    Requested range not satisfiable
    客户端请求的范围无效
    417
    Expectation Failed
    服务器无法满足Expect的请求头信息
     
    500
    Internal Server Error
    服务器内部错误,无法完成请求
    501
    Not Implemented
    服务器不支持请求的功能,无法完成请求
    502
    Bad Gateway
    充当网关或代理的服务器,从远端服务器接收到了一个无效的请求
    503
    Service Unavailable
    由于超载或系统维护,服务器暂时的无法处理客户端的请求。延时的长度可包含在服务器的Retry-After头信息中
    504
    Gateway Time-out
    充当网关或代理的服务器,未及时从远端服务器获取请求
    505
    HTTP Version not supported
    服务器不支持请求的HTTP协议的版本,无法完成处理
  • 相关阅读:
    跟KingDZ学HTML5之三 画布Canvas
    跟KingDZ学HTML5之七 探究Canvas之各种特效
    跟KingDZ学HTML5之八 HTML5之Web Save
    Aptana Studio 3 如何汉化,实现简体中文版
    跟KingDZ学HTML5之十一 HTML5 Form 表单新元素
    跟KingDZ学HTML5之九 HTML5新的 Input 种类
    跟KingDZ学HTML5之十二 HTML5 Form 表单元素新增属性
    跟KingDZ学HTML5之十三 HTML5颜色选择器
    SSL协议运行机制
    门面模式 到 socket
  • 原文地址:https://www.cnblogs.com/seven7seven/p/3726602.html
Copyright © 2020-2023  润新知