抛砖引玉 HTTP 和 HTTPS

<一个幼儿园小班的前端的成长随笔,错误与不足之处,望各位大牛批评指点,谢谢!>

HTTP/80

超文本传输协议: 是一个基于请求与响应,无状态的,应用层的协议,常基于TCP/IP协议传输数据前端

目的: 设计HTTP是为了提供一种发布和接收HTML页面的方法缓存

  1. HTTP特色: 安全

    • 无状态:协议对客户端没有状态存储, 访问一个网站须要反复进行登陆操做服务器

    • 无链接:HTTP/1.1以前, 因为无状态特色, 每次请求须要经过TCP三次握手四次挥手, 和服务器从新创建链接[短期屡次请求同一个资源,服务器并不能区别是否已经响应过用户的请求]cookie

    • 基于请求和响应: 客户端发送请求,服务端响应网络

    • 简单快捷session

    • 通讯使用明文, 请求和响应不会对通讯方进行确认, 没法保护数据的完整性网站

  2. 针对无状态 特性的解决策略: 加密

    • 经过cookie/session技术url

    • HTTP/1.1 持久链接 : 在请求首部字段中的Connection: keep-alive即为代表使用了持久链接

  3. TCP

    • 运输层经过 TCP三次握手和服务器创建链接,四次挥手释放链接

    • TCP三次握手:

      1. 客户端发送链接请求到服务端

      2. 服务端收到请求响应给客户端赞成创建链接

      3. 客户端收到服务端的响应,并确认创建链接

      若不采用"三次握手" 那么只要server发出响应赞成创建链接,那链接就创建了,若是此时先前发送过来的链接请求是由网络结点长时间滞留,以至延误到链接释放后才到达server的请求,那此时的客户端不会确认服务端的响应,也不会向服务端发送数据,但服务端却会认为链接已经创建,并一直等待客户端发送数据,就会浪费服务端资源

    • TCP四次挥手:

      1. 客户端发出FIN报文给服务端,关闭客户端到服务端的数据传送

      2. 服务端收到FIN,响应一个ACK

      3. 服务端发送一个FIN给客户端,关闭服务端到客户端的链接

      4. 客户端返回一个ACK确认

      简单理解:

      1)c告诉s: 我吃饱了

      2)s回应c: 我知道你吃饱了

      3)s告诉c: 我也吃饱了

      4)c和s说: 那结帐走吧

  4. HTTP原理:

    • 客户端输入url回车跳转

    • 检查应用缓存

      1. 本地缓存 [先判断是否存在]

      2. 代理缓存 [再判断是否存在]

    • DNS解析域名获得服务器的IP地址

    • 服务器在80端口监听客户端请求

    • 端口经过TCP/IP协议(能够经过Socket实现)创建链接

    • 客户端发送请求

    • 服务器响应

    • TCP四次挥手后释放链接

     

HTTPS/443

HTTPS(安全超文本传输协议)是一种经过计算机网络进行安全通讯的传输协议,经由HTTP进行通讯,利用SSL/TLS创建全信道,加密处理数据,验证对方身份及数据的完整性

HTTP + SSL/TLS 创建全信道,加密数据包

目的: 提供对网站服务器的身份认证,同时保护交换数据的隐私与完整性

  1. HTTPS特色:

    • 内容加密: 采用混合加密技术,中间者没法直接查看明文内容

      混合加密: 结合非对称加密和对称加密技术

      1)客户端使用对称加密生成密钥对传输数据进行加密

      2)使用非对称加密的公钥再对秘钥进行加密

      -> 网络上传输的数据是被秘钥加密的密文和用公钥加密后的秘密秘钥,所以即便被截取,因为没有私钥,没法获取到加密明文的秘钥,便没法获取到明文数据

    • 验证身份: 经过证书认证客户端访问的是本身的服务器

    • 保护数据完整性: 防止传输的内容被中间人冒充或者篡改

  2. HTTPS实现原理

    1. client向server发送请求,而后链接到server的443端口

    1. 服务端必需要有一套数字证书

      • 本身制做,须要客户端验证经过

      • 向组织申请,受信任的公司申请的证书则不会弹出提示页面

    2. 传送证书(公钥)

    1. 客户端解析证书

      • 由客户端的TLS完成,验证公钥是否有效

      • 生成一个随机值(秘钥),而后用证书(公钥)对该随机值加密

    2. 传送加密信息

      • 传送的是用证书加密后的秘钥,

    3. 服务端加密信息

      • 服务端用私钥解密秘密秘钥,把内容经过该值进行对称加密

    4. 传输加密后的信息

      • 是服务端用私钥加密后的信息,能够在客户端被还原

    5. 客户端解密信息

      • 客户端用以前生成的私钥解密服务端传过来的信息

  3. HTTPS弊端:

    • SSL证书购买成本

    • 使用HTTPS协议会是页面加载时间延长50%,增长10%~20%耗电

    • HTTPS链接缓存不如HTTP高效, 流量成本高

    • HTTPS链接服务器端资源占用高不少,支持访客多的网站须要投入更大的成本

SSL/TLS

SSL: 安全套接层,

TLS: 传输层安全, 是传输层加密协议, 安全传输层协议用于在两个通讯应用程序之间提供保密性和数据完整性

是为了网络通讯提供安全及数据完整性的一种安全协议,在传输层对网络链接进行加密

  1. SSL协议提供的安全通道特性:

    • 机密性: SSL协议使用密钥加密通讯数据

    • 可靠性: 服务器和客户都会被认证,客户的认证是可选的

    • 完整性: SSL协议会对传送的数据进行完整性检查

参考链接: [http://www.javashuo.com/article/p-wybdsvhv-kt.html]

相关文章
相关标签/搜索