• 5分钟带你快速理解Http协议


    HTTP协议


     

    什么是HTTP协议

      HTTP(Hyper Text Transfer Protocol)协议又叫超文本传输协议,是建立在TCP/IP协议之上的用来传递数据的协议。它不涉及数据包的传递,主要规定了客户端和服务端的通信格式,默认端口号为80。

     

    HTTP协议的特点

    • 简单快速

    • 灵活

      • 允许任意类型的数据对象

    • 无连接

      • 每次只处理一个请求,且服务端处理完一个请求返回给客户端后立即断开连接,采用这种方式节约时间

    • 无状态

      • HTTP协=协议是无状态的,它本身不对不同请求的状态进行保存,也就是说每两种请求之间的是相互隔离的。

     

      HTTP报文

      HTTP报文分为请求报文和响应报文

      请求报文

      请求报文包含 请求头(request line) 请求头(header) 空行 请求体四个部分组成。

     

      请求行:用来说明请求类型,要访问的url和HTTP协议版本

      

    请求方法的种类以及作用: 
        GET:请求指定页面信息,返回页面主体 
        HEAD:请求指定页面,只用来获取报头 
        POST:向指定资源提交数据处理请求(例如提交表单和上传文件),数据被包含在请求体中 
        PUT:更新指定数据 
        DELETE:删除指定数据 
    
    GET和POST请求的区别:     
        GET在浏览器回退时是无害的,而POST会再次提交请求。 
        GET请求会被浏览器主动缓存,而POST不会,除非手动设置。 
        GET请求参数会被完整保留在浏览器历史记录里,而POST中的参数不会被保留。 
        GET请求在URL中传送的参数是有长度限制的,而POST没有限制。         
        GET参数通过URL传递,POST放在Request body中

      请求头:由关键字 / 值对组成,每行一对,关键字和值用英文冒号“:”分隔。

      请求头部通知服务器有关于客户端请求的信息。它包含许多有关的客户端环境和请求正文的有用信息。其中比如:

      •   Host:表示主机名,虚拟主机。

      •   Connection:HTTP/1.1增加的,使用keepalive,即持久连接,一个连接可以发多个请求。

      •   User-Agent:请求发出者,兼容性以及定制化需求。

      空行:用来声明请求头和请求体的分隔

      请求体:包含我们请求的多个参数如登录时post发送的用户名和密码

     

     

      响应报文

      响应报文包含 响应头 响应行 空行 响应体。(与请求报文最明显的区别就在于响应头中用状态码代替了请求信息)

      状态行:包含请求的状态码,每个状态码包含三个数字,第一个数值代表相应的类别

      •   1xx:提示信息:表示请求正在处理

      •   2xx:成功信息:表示请求成功

      •   3xx:重定向信息: 常见的有301和302

      •   4xx:客户端错误信息:常见403禁止访问,404 not found等,一般是语法错误或请求无法实现

      •   5xx:服务器错误:通常因为后端服务器崩溃

     

    HTTP请求大致流程

    1. 客户端发送请求报文

    2. DNS解析请求头中的域名(url)返回服务器的域名

    3. TCP协议对请求报文进行分隔成报文段方便发送

    4. IP协议通过ip连接上服务器

    5. TCP协议拿到报文进行重组

    6. HTTP协议对报文进行解析返回响应报文

     

     【补充】 HTTP的长连接和短连接

        如上HTTP请求报文中有一个参数为【connection:keepalive】,那这个表示的就是长连接的意思。

        目前我们所用的HTTP协议版本都是HTTP1.1版,而在这之前所用的HTTP1.0和0.9版所采用的都是短连接。

        那什么是长连接?什么又是短连接呢?

    # 短连接指的是HTTP请求发给TCP 之后就断开了连接,在HTTP1.1版本出来之前大多数网页的内容几乎都由文字和css,
      js代码组成,所以一次请求就足够了,然后随着时的发展网页上的图片越来越多,我们发送一次请求过后发现内容中包含了大量的图片连接没办法又得重复去发送请求连接TCP,
      这样频繁的断开连接的反复操作浪费了大量资源,于是HTTP1.1版本问世后改变了这种连接方式,添加长连接状态。
    # 长连接就是我们在HTTP报文中见到的keepalive,他会一直保存和tcp之间的联系,直到HTTP请求回来的资源完全被加载完毕后才会断开。
  • 相关阅读:
    【转】Odoo开发之:工作流 workflow
    【转】Odoo:基本字段类型
    【转】odoo 10的企业微信发送程序介绍
    Installing python-ldap in Ubuntu
    Odoo8中安装新模块找不到的问题
    mybatis缓存
    ThreadPoolExecutor线程池进阶使用
    使用Dubbo实现RPC调用
    java静态代理模式
    java四种线程池
  • 原文地址:https://www.cnblogs.com/liusijun113/p/10940060.html
Copyright © 2020-2023  润新知