zoukankan      html  css  js  c++  java
  • 一文搞懂HTTP和HTTPS协议

    1.什么是协议?

    网络协议是计算机之间为了实现网络通信而达成的一种“约定”或者“规则”,有了这种“约定”,不同厂商的生产设备,以及不同操作系统组成的计算机之间,就可以实现通信。

    2.HTTP协议是什么?

    HTTP协议是超文本传输协议的缩写,他是从WEB服务器传输超文本标记语言(HTML)到本地浏览器的传送协议。

    HTTP协议是一个双向协议。我们在上网冲浪时,浏览器是请求方A,百度网站是应答方B,双方约定通过HTTP协议来通信,于是浏览器把请求数据发送给网站,网站再把一些数据返回给浏览器,最后由浏览器渲染在屏幕。虽然是在A和B之间传输,但允许中间有中转或接力,在HTTP里,需要中间人遵从HTTP协议,只要不打扰基本的数据传输,就可以添加任意额外的东西,就好像第一排的同学想传递给最后一排的同学,那么传递的过程就需要经过好多个同学(中间人),这样的传输方式就从「A < --- > B」变成了「A <-> N <-> M <-> B」。

    超文本传输协议:

    「协议」:刚毕业时会签一个协议,例如三方协议。「协」字,代表的意思是必须有两个以上的参与者,例如三方协议参与者:你、公司、学校;「议」:代表的意思是对参与者的一种行为和规范,三方协议有试用期期限等。

    「传输」:所谓的传输很好理解,就是把一堆东西从A点搬到B点,或者从B点搬到A点。

    「超文本」:它是超越了普通文本的文字,是图片、视频等的混合体最关键的有超链接,能从一个超文本跳到另一个超文本,HTML就是最常见的超文本了,他本身只是纯文字文件,但内部定义了很多标签定义了图片、视频等的链                    接,在经过浏览器的解释,呈现给我们的就是一个文字有画面的网页了。

     设计HTTP最初的目的是为了提供一种发布和接收HTML页面的方法。

     HTTP有多个版本,目前广泛使用的是HTTP/1.1版本。

     3.HTTP原理

     HTTP是一个基于TCP/IP通信协议来传递数据的协议,传输的数据类型为HTML文件、图片文件,查询结果等。浏览器作为HTTP客户端通过URL向HTTP服务器发送所有请求。

     我们以百度为例:

      

     4.HTTP特点 

    1.   http协议支持客户端/服务端模式,也是一种请求/响应模式协议
    2.   简单快速: 客户向服务器请求服务时,只需传送请求方法和路径。请求方法常用的有GET、POST
    3.   灵活:HTTP允许传输任意类型的数据对象。传输的类型由Content-Typr加以标记;各类请求方法都没有被固定死允许开发人员自定义和补充
    4.   无连接:限制每次连接只处理一个请求。服务器处理完请求,并收到客户的应答后,即断开连接,但是不利于客户端与服务器保持会话连接,为了弥补这种不足,产生了两项记录HTTP状态的技术(Cookie和Session)
    5.   无状态:无状态的好处,因为服务器不会记忆HTTP状态,所以不需要额外的资源来记录状态信息,这能减轻服务器的负担,能够更多地把CPU和内存用来对外提供服务;无状态的坏处,既然服务器没有记忆能力,他在完成所有关联行的操作会非常麻烦, 例如:登录->添加购物车->下单->结算->支付,这系列操作都要知道用户的身份才行。但服务器不知道这些请求是关联的,每次都要问一遍身份信息。
    6. 明文传输双刃剑:明文意味着在传输过程中的信息,是方便可阅读的,为我们调试工作带来了极大的便利,但是正是这样HTTP的所有信息相当于裸奔,传输的信息毫无隐私可言,很容易就被窃取。
    7. 不安全:明文传输,内容可能被窃听;不验证通信方的身份,有可能遭遇伪装; 无法正在报文的完整性,有可能已遭篡改,比如网上植入垃圾广告,视觉污染,眼没了;

    对于无状态的问题解决方案有多种,其中比较简单的方式用Cookie技术和Session技术; Cookie在通过请求和响应报文中写入Cookie信息来控制客户端的状态。 

    5.URI和URL的区别

      URI(统一资源标识符):是用来表示一个具体的资源的,我们可以通过URI知道一个资源时什么。     
      URL(统一资源定位符):是用来定位一个具体的资源的,标示了一个具体的资源位置,互联网的每一个文件都有一个唯一的URL.

     6.HTTP报文组成

     请求报文组成

     1.请求行:包括请求方法、URL、协议版本

     2.请求头(Request Header)

     3.请求正文

     响应报文组成

     1.状态行

     2.响应头

     3.响应正文

     7.常见请求方法

    •  GET:请求指定的页面信息
    •  POST:向指定资源提交数据进行处理请求(例如提交表单或上传文件),数据被包含在请求体中。POST请求可能会导致新的资源的建立/或已有资源的修改
    •  PUT:从客户端向服务器传送的数据取代指定的文档内容
    •  DELETE:请求服务器删除指定内容

     POST和GET的区别:

     GET方法的含义是请求从服务器获取资源,这个资源可以使静态的文本、页面、图片视频等。

     比如你打开我的文章,浏览器就会发送GET请求给服务器,服务器就会返回文章的所有文字和资源

     POST,它向URI指定的资源提交数据,数据就放在报文的body里,然后拼接好POST请求头,通过TCP协议发送给服务器

     比如你在我的文章底部,评论或者留言(暗示你们留言^_^),浏览器会执行一次POST请求,把你的留言文字放在报文body里,然后拼接好POST请求头,通过TCP协议发送给服务器

    8.安全和冥等,以及get和post有安全和冥等吗?

     概念:所谓的「安全」是指请求方法不会「破坏」服务器上的资源。所谓的「冥等」,意思是执行多次相同的操作,结果都是「相同」的。

     那么很明显GET的方法是安全冥等的,因为它是「只读操作」,无论操作多少次,服务器上的数据是安全的,切每次结果是相同的。

     POST因为是「新增或者提交数据」的操作,会修改服务器上的资源,所以是不安全的,且多次提交就会创建多个资源,所以是不「冥等」的。

     9.响应状态码

     访问一个网页时,浏览器会向web服务器发出请求,此网页所在的服务器会返回一个包含HTTP状态码的信息头用来响应浏览器的请求。

     状态码分类

    •  1XX- 信息型,服务器收到请求,需要请求者继续操作
    •  2XX- 成功型,请求成功收到,理解并处理
    •  3XX -重定向,需要进一步的操作已完成请求
    •  4XX - 客户端错误,请求包含语法错误或无法完成请求
    •  5XX - 服务器错误,服务器在处理请求的过程中发生了错误。

     常见状态码:

    •  200:OK客户端请求成功
    •  301:资源(网页等)被永久转移到其他URL
    •  302:临时跳转
    •  400:客户端请求有语法错误,不能被服务器理解
    •  401:请求未经授权
    •  404:请求资源不存在,可能是输入了错误的URL
    •  500:服务器内部发生了不可预期的错误
    •  503:Server Unavailable服务器当前不能处理客户端的请求,一段时间后可能恢复正常

      10.为什么要用https?

      HTTP是超文本传输协议,信息是明文传输,存在安全风险问题。HTTPS则解决HTTP不安全的缺陷,在TCP和HTTP网络层加入了SSL安全协议,使得报文能加密传输,通过SSL证书来验证服务器的身份,并为浏览器和服    务    器之间的通信进行加密

      SSL协议位于TCP/IP协议与各种应用层协议 之间,为数据通讯提供安全支持

      

     11.浏览器在使用HTTPS传输数据的流程是什么? 

    1.  首先客户端通过URL访问服务器建立SSL链接。
    2.  服务器收到客户端请求后,会将网站支持的证书信息(证书中包含公钥)传送一份给客户端
    3.  客户端的服务器开始协商SSL连接的安全等级,也就是信息加密的等级
    4.  客户端的浏览器根据双方同意的安全等级,建立会话秘钥,然后利用网站的公钥将会话密钥加密,并传送给网站
    5.  服务器利用自己的私钥解密出会话密钥
    6.  服务器利用会话密钥加密与客户端之间的通信

     12.HTTPS的缺点

    •  HTTPS协议多次握手,导致页面的加载时间延长近50%
    •  HTTPS连接缓存不如HTTP高效,会增加数据开销和功耗
    •  申请SSL证书需要钱,功能越强大的证书费用越高
    •  SSL涉及到的安全算法会消耗CPU资源,对服务器消耗较大

     13.总结HTTPS和HTTP的区别

    •  HTTPS是HTTP协议的安全版本,HTTP协议的数据传输是明文的,是不安全的,HTTPS使用了SSL/TLS协议进行了加密处理
    •  HTTP链接建立相对简单,TCP三次握手后便可进行HTTP的报文传输。而HTTPS在TCP三次握手之后,还需进行SSL/TLS的握手过程,才可加密明文传输
    •  HTTP和HTTP使用连接方式不同,默认端口号也不一样,HTTP是80,HTTPS是443
    •  HTTPS协议需要向CA(证书权威机构)申请数字证书,来保证服务器的身份是可信的

     14. HTTPS解决了HTTP的哪些问题

     窃听风险(获取通信内容,用户账号容易没);篡改风险(强制植入垃圾广告,视觉污染);冒充风险(冒充淘宝网站,用户钱容易没)。 

     HTTPS是如何解决上面三个问题的?

    •  混合加密的方式实现信息的机密性,解决了窃听的风险
    •  摘要算法的方式来实现完整性,他能够为数据生成独一无二的「指纹」,指纹用于校验数据的完整性,解决了篡改风险
    •  将服务器的公钥放入到数字证书中,解决了冒充风险

      

    在 PDFlux 中打开
    无数据
  • 相关阅读:
    SVD singular value decomposition
    Eigen参考资料
    设置C++ cout输出精度
    eigenMatrix
    电池容量单位 Wh和 Ah的关系
    windows10 如何关闭快速关机功能电源选项
    TIA Portal 和 scout 之间的驱动器地址分配
    SIMATIC 1500 PLC 同步轴,状态字StatusWord信号描述
    Simotion 凸轮同步,偏移凸轮起点
    ROS Create a Catkin Workspace
  • 原文地址:https://www.cnblogs.com/cuixiaohua/p/12701938.html
Copyright © 2011-2022 走看看