HTTP及HTTPS协议

HTTP协议

什么是HTTP

  • 定义
    • HTTP中文叫做超文本传输协议,它完成客户端到服务端等一系列运作流程。
    • HTTP 协议规定,请求从客户端发出,最后服务端响应该请求并返回。

HTTP协议的特点

  • 无状态

    • HTTP是一种无状态协议。即HTTP协议不对请求和响应之间的通信状态进行保存。所以使用HTTP协议,每当有新的请求发送,就会有对应的新响应产生。这样做的好处是更快地处理大量事务,确保协议的可伸缩性。
    • 但是随着业务的发展,有时需要对用户之前的HTTP通信状态进行保存,比如执行一次登陆操作,在一定时间内所有的请求都不需要再次登陆。于是引入了会话跟踪技术,后面会有介绍。
  • 持久连接

    • HTTP协议初试版本中,每进行一次HTTP通信就要断开一次TCP连接。但是当浏览器请求比较大的静态资源的时候(比如一个包含很多张图片的HTML页面),会增加通信量的开销。为了解决这个问题,HTTP后续版本引入了持久连接(keep-alive)方法,使客户端到服务器端的连接持续有效,当出现对服务器的后继请求时,Keep-Alive 功能避免了重新建立连接
    • HTTP 1.0 版本中,没有官方的标准来规定 Keep-Alive 如何工作,如果客户端浏览器支持 Keep-Alive ,可以在HTTP请求头中添加字段 Connection: Keep-Alive,当服务器收到附带有 Connection: Keep-Alive 的请求时,它也会在响应头中添加一个同样的字段来使用 Keep-Alive 。这样,客户端和服务器之间的HTTP连接就会被保持,当客户端发送另外一个请求时,就使用这条已经建立的连接。
    • HTTP 1.1 版本中,默认情况下所有连接都被保持,如果加入 “Connection: close” 才会关闭。目前大部分浏览器都使用 HTTP 1.1 协议,即默认会发起 Keep-Alive 的连接请求,所以是否能完成一个完整的 Keep-Alive 连接就看服务器设置情况。
    • HTTP是一个无状态协议,这意味着每个请求都是独立的,Keep-Alive**没能改变**这个结果。Keep-Alive也不能保证客户端和服务器之间的连接一定是活跃的。唯一能保证的就是当连接被关闭时你能得到一个通知,所以不应该让程序依赖于Keep-Alive的保持连接特性。
  • 管线化(Pipelining)

    • 管线化是基于持久连接的。在没有持久连接之前,发送请求后需等待并收到响应,才能发送下一个请求。类似于这样:
      请求1 -> 响应1 -> 请求2 -> 响应2 -> 请求3 -> 响应3
    • 管线化是将多个 HTTP 请求整批提交,在传送过程中不需等待服务端的回应。使用 管线化技术之后,某个连接上的消息变成这样:
      请求1 -> 请求2 -> 请求3 -> 响应1 -> 响应2 -> 响应3
  • 会话跟踪

    • URL重写:在URL结尾添加一个附加数据以标识该会话,把会话ID通过URL的信息传递过去,以便在服务器端识别不同的用户。
    • 隐藏表单域:将会话ID添加到HTML表单元素中提交到服务器,此表单元素并不在客户端显示。
    • Cookie:Cookie是Web服务器发送给客户端的一小段信息(Set-Cookie的首部字段信息),客户端请求时可以读取该信息发送到服务器端,进而进行用户的识别。对于客户端的每次请求,服务器都会将Cookie发送到客户端,在客户端可以进行保存,以便下次使用。
    • Session:每一个用户都有一个不同的session,各个用户之间是不能共享的,是每个用户所独享的,在session中可以存放信息。在服务器端会创建一个session对象,产生一个sessionID来标识这个session对象,然后将这个sessionID放入到Cookie中发送到客户端,下一次访问时,sessionID会发送到服务器,在服务器端进行识别不同的用户。Session的实现依赖于Cookie,如果Cookie被禁用,那么session也将失效。
    • Cookie和Session的区别:读到上面,大家已经知道区别了,这里再总结一下:(1)存放位置不一样;(2)存放在服务端的Session更为安全和持久。

HTTPS的引入

为什么要引入HTTPS

总结来说,在一些对安全性要求比较高的场景,HTTP不能满足需求,或者说HTTP有一些固有的缺陷:

  • 通信使用明文(不加密), 内容可能会被窃听
  • 不验证通信方的身份, 因此有可能遭遇伪装
  • 无法证明报文的完整性, 所有有可能已遭篡改

即,HTTP为了性能(轻便)而牺牲了安全性。

什么是HTTPS

HTTPS = HTTP+加密+认证+完整性保护

HTTPS并非是应用层的一种新协议. 只是HTTP通信接口部分用SLL(Secure Socket Layer)和TLS (Transport Layer Security) 协议替代而已。
这里写图片描述

通常, HTTP直接和TCP通信,当使用SSL时,变成HTTP先和SSL通信,再由SSL和TCP通信了。而在采用SSL后, HTTP就拥有了HTTPS的加密, 证书和完整性的保护这些功能.

SSL是独立于HTTP的协议, 所有不光是HTTP协议, 其他运行在应用层的SMTP(邮件协议)和Telnet等协议均可配合SSL协议使用. 可以说SSL是当今世界上应用最广泛的网络安全技术。

SSL如何加密

SSL采用一种叫做公开密钥加密(Public-key cryptography)的加密方式。加密方法中, 加密算法是公开的, 而秘钥是保密的, 通过这种方式得以保证加密的安全性。

HTTPS的缺陷

  • HTTPS需要对服务器、客户端双方进行加密和解密处理,因此会消耗CPU和内存等硬件资源,而且与HTTP通信相比,SSL通信部分消耗网络资源。而SSL通信部分, 又因为要对通信进行处理, 所有时间上又延长了。
  • 因此, 如果是非敏感信息尽量使用HTTP通信, 以节省资源。 只有在包括个人信息等敏感数据时, 才HTTPS加密通信.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值