• HTTP协议类


    本文从以下几方面介绍HTTP协议

    1. HTTP协议的主要特点
    2. HTTP报文的组成部分
    3. HTTP方法
    4. HTTP状态码
    5. POST和GET的区别
    6. 什么是持久连接
    7. 什么是管线化

    主要特点:

    http协议的特点:

    1.支持客户/服务器模式。

    2.简单快速:客户向服务器请求服务时,只需传送请求方法和路径。请求方法常用的有GET、HEAD、POST。每种方法规定了客户与服务器联系的类型不同。由于HTTP协议简单,使得HTTP服务器的程序规模小,因而通信速度很快。

    3.灵活:HTTP允许传输任意类型的数据对象。正在传输的类型由Content-Type加以标记。

    4.无连接:无连接的含义是限制每次连接只处理一个请求。服务器处理完客户的请求,并收到客户的应答后,即断开连接。采用这种方式可以节省传输时间。

    5.无状态:HTTP协议是无状态协议。无状态是指协议对于事务处理没有记忆能力。缺少状态意味着如果后续处理需要前面的信息,则它必须重传,这样可能导致每次连接传送的数据量增大。另一方面,在服务器不需要先前信息时它的应答就较快。

    HTTP报文的组成部分

    HTTP有两种类型的报文:请求报文响应报文

    请求报文的格式如下:

    • 请求报文的第一行是请求行。请求行共有3个字段:方法、URL和版本,以空格分隔。在该行最后,以回车和换行两个字符作为结束。
    •  方法:定义了请求类型。
    • URL:定义了相关Web页的地址,它和Host首部行一起组成完整的请求URL。
    • 版本:给出HTTP协议的版本。HTTP的最新版本是1.1
    • 在请求行之后,可以有0到多个首部行。每个首部行从客户端向服务器发送附加信息。
    • 首部名称字段定义了附加信息的类型;首部值字段定义了与首部名相关联的值。

    一些常用的首部名:

     

    • 请求报文主体只在某些类型的报文中出现,为可变行数。该部分通常是一些需要发送的备注信息。

    响应报文的格式如下:

     

    • 响应报文中的第一行称为状态行。状态行共有3个字段:版本、状态码和短语,以空格分隔。在该行最后,以回车和换行两个字符作为结束。
    • 版本:定义了HTTP协议的版本。
    • 状态码、状态短语:定义了请求的状态。
    • 在状态行之后,可以有0到多个首部行。每个首部行从服务器向客户端发送附加信息。
    • 响应报文主体包含从服务器向客户端发送的文档。如果响应不是错误报文,则主体将出现在响应报文中。

    响应报文中的一些常用的首部名:

    http方法

    • GET   请求服务器的文档
    • HEAD 请求关于文档的信息,但不是这个文档本身
    • POST 从客户端向服务器发送一些信息
    • PUT    从服务器向客户端发送文档
    • TRACE 把到达的请求回送
    • CONNECT 保留
    • DELETE 删除Web页
    • OPTIONs 询问关于可用的选项

    HTTP状态码

    状态码的几个类别

    • 1xx:指示信息 - 表示强求已接受,继续处理
    • 2xx:成功 - 表示请求已被成功接收
    • 3xx:重定向 - 要完成请求必须进行更进一步的操作
    • 4xx:客户端错误 - 请求有语法错误或请求无法实现
    • 5xx:服务端错误 - 服务端未能实现合法的请求

    常见的状态码

    • 提供信息的

    100 Continue 请求的开始部分已经收到,客户可以继续它的请求
    101 Switching 服务器同意切换协议

    • 成功

    200 OK 请求成功
    201 Created 新的URL被创建
    202 Accepted 请求被接受,但还没有马上起作用
    204 No content 主体中没有内容

    • 重定向

    301 Moved Permanently 服务器已不再使用所请求的URL
    302 Moved temporarily 所请求的URL已暂时地删除了
    304 Not modified 文档还没有被修改

    • 客户端差错

    400 Bad request 在请求中有语法差错
    401 Unauthorized 请求缺少适当的授权
    403 Forbidden 服务被拒绝
    404 Not found 文档未找到
    405 Method not allowed 这个方法不被这个URL所支持
    406 Not acceptable 所请求的格式不可接受

    • 服务器差错

    500 Internal server error 在服务器端有差错,如崩溃
    501 Not implemented 所请求的动作不能完成
    503 Service unavailable 服务暂时不可用

    POST和GET的区别

     

     持久连接

     持久连接只有http1.1才支持。

    先简单介绍一下什么是持久连接:

    HTTP协议采用“请求-应答”模式,当时用普通模式,即非持久连接的模式时,每个请求/应答客户端和服务器都要新建一个连接,完成之后立即断开连接(无连接的协议)

    当使用Keep-Alive模式(持久连接)时,Keep-Alive功能使客户端到服务端的连接持久有效,当出现对服务器的后继请求时,Keep-Alive功能避免了建立或者重新建立连接。

    这里给大家推荐一篇博客,这篇博客详细讲解了持久连接,在本文中就不在详细介绍了。传送门

    http管线化

    在使用持久连接的情况下,某个连接上的消息的传递类似于

    请求1  -> 响应1  -> 请求2  -> 响应2  -> 请求3  -> 响应3

    管线化后,连接上的消息变成了这样

    请求1 -> 请求2 -> 请求3 -> 响应1 -> 响应2 -> 响应3 

    通俗的讲,不用管线化的持久连接就是来一个请求就响应一个;

    而管线化则是,把请求打包发过去,一起响应。

     管线化特点:

     

  • 相关阅读:
    iphone开发之绘制地图线路
    (ios开发)在MapKit地图上添加注释
    IOS开发地图 (mapkit)实验
    iOS开发之在地图上绘制出你运行的轨迹
    iOS开发之在地图上绘制出你运动的轨迹
    iOS地图位置开发
    IOS开发中的数据库的学习
    Iphone开发 有关 Sqllist的用法
    MapKit
    iphone开发 有关 Navigation Bar 和 UITableView 的用法(代码加说明 呵呵)
  • 原文地址:https://www.cnblogs.com/chengzp/p/http.html
Copyright © 2020-2023  润新知