zoukankan      html  css  js  c++  java
  • 通过四个问题了解HTTP协议基础

      很多人都知道学习和理解HTTP协议的重要性及必要性,但HTTP相关知识对计算机基础较差,尤其是我这种没有计算机基础的人来说更是晦涩难懂

      乘着最近有空闲时间,开始恶补HTTP相关基础知识,下面请跟着我通过4个问题来学习HTTP协议基础

      

      问题1:HTTP0.9,HTTP1.0,HTTP1.1,HTTP2.0有什么区别?

      HTTP0.9

            ①:服务器只能回应HTML格式的字符串,不能回应别的格式

          ②:服务器发送完毕,就关闭TCP连接

          ③:只有一个命令GET

          ④:没有header等描述数据的信息

     

        HTTP1.0

            ①:增加了 POST,DELETE,PUT等请求

          ②:增加了 status code(状态码,如 100,200,300,400,500)和 header(请求头)

          ③:任何格式的内容都可以发送(比如文字,图像、视频、二进制文件)

          ④:权限,缓存等

          注:HTTP1.0的缺点是一个TCP连接只能发送一个请求和官方标准还未支持keep-alive(持久链接),只能用非官方标准声明Connection:keep-alive

          

       HTTP1.1

        ①:keep-alive(持久链接)

         ②:增加了host命令

          ③:pipeline(管道机制,即一个TCP链接可以同时发送多个请求【前提在同一个域名

         注:充说明持久链接和管道机制

        

           

      HTTP2.0

         ①:浏览器发送多个请求,服务器可以不按照顺序进行回应

        ②:头部信息压缩

        ③:服务器推送

        注:按上面①②③顺序补充说明

        

        

          

        详情见阮一峰大神写的HTTP基础这篇博客:http://www.ruanyifeng.com/blog/2016/08/http.html

      问题2:在浏览器地址栏输入一个网址后按回车到底发生了什么?

      该问题可简单概括为:浏览器地址栏输入一个网址(域名),敲回车后

      DNS服务器会对域名进行解析,解析成IP地址后,通过这个IP地址去查找对应服务器并请求相应资源

      

      这是很多小伙伴都知道的,但不知道的是在敲下回车后,在DNS解析域名为IP地址之前,浏览器还做了2件事

      ①:第一件事是redirectStart(开始跳转),因为浏览器可能记录了访问的地址已经永久跳转成一个新的地址,

        此时浏览器需要判断是否需要开始跳转,跳转到哪里;所以有时访问某个网站会看到状态码301( 永久性转移到其它地方)

        补:http状态码301和302详解及区别——辛酸的探索之路:http://blog.csdn.net/grandPang/article/details/47448395

     
      ②:看缓存cache,因为可能请求的资源已经在浏览器上缓存过了,此时服务器上的资源如果没有新增,修改,删除,就会直接用缓存过的资源,
        而不需要重新向服务器请求并下载资源,这样服务器减少了请求,用户也节省了带宽
        所以我们时常会看到状态码304( 表示此请求的资源,本地缓存有最新的,可以直接使用)
     
        补:网络---关于HTTP 304状态码的理解:http://blog.csdn.net/netdxy/article/details/50670734
     

       

      

      问题3:http如何建立三次握手?

       这篇博客讲的很详细,不再赘述:https://www.imooc.com/article/71293

       问题4:为什么HTTPS比HTTP更安全?(下面截图前者为HTTP的缺点,后者为HTTPS与之对应的优点)

      

        

        补:阮一峰大神HTTPS博客合集:http://www.ruanyifeng.com/blog/2016/08/migrate-from-http-to-https.html

  • 相关阅读:
    ref out param 区别
    SQL语句执行顺序以及oracle基本查询优化
    Ext.LoadMask遮罩的效果几种实现方式
    用ajax技术实现无闪烁定时刷新页面
    ExtJs 实现动态列,动态多表头 在这里添加日志标题
    Ajax中文乱码问题解决方法(服务器端用servlet)
    订购国际机票的常用指令
    ETERM航班销售控制指令
    线程wait()和sleep()的区别
    JSt中对象的prototype属性
  • 原文地址:https://www.cnblogs.com/tu-0718/p/10899566.html
Copyright © 2011-2022 走看看