http总结

229 阅读8分钟

http 和 https

基本概念

http: 超文本传输协议,是互联网上应用最为广泛的一种网络协议,是一个客户端和服务端请求和应答的标准(TCP),用于从www服务器传输超文本到本地浏览器,可以使浏览器更加高效,使网络传输减少。 https的ssl加密是在传输层实现的
https: 是以安全为目标的http通道,https的安全基础是ssl。https协议的主要作用是;建立一个信息安全通道,确保数据的传输,确保网站的真实性

http和https的区别

http传输的数据都是未加密的明文数据,网景公司设置了ssl协议来对http协议传输的数据进行加密处理,简单来说HTTPS协议是由http和ssl协议构建的可进行加密传输和身份认证的网络协议,比http协议的安全性高。

主要区别

  • https协议需要CA证书,费用较高。
  • http是超文本传输协议,信息是明文传输,HTTPS是具有安全性的SSL加密传输协议。
  • 连接方式和端口不同。一般http协议的端口为80,https的端口为443
  • https协议是由ssl+http协议构建的可进行加密传输、身份认证的网络协议,比http协议安全。

安全套接层协议SSL协议

SSL协议是Netscape公司1994年提出来的,是因特网的基础上提供的一种保证机密性的安全协议。SSL协议是一个保证任何安装了安全套接层的客户机和服务器间事务安全的协议,该协议向基于TCP/IP的客户-服务器应用程序提供客户端和服务器端的鉴别、数据完整性及数据机密性等安全措施。SSL协议位于TCP/IP与各种应用层协议之间,可以独立于应用层协议,为数据通信提供安全支持。SSL 协议常被用于HTTP,也可以用于其他协议,如NNTP、TELNET等。

SSL协议主要提供以下3种基本的安全服务。

  • 加密 SSL协议对客户机和服务器上的所有通信都进行加密,从而保证了被传输信息的机密性。SSL协议既采用对称密钥加密技术(如DES算法),也采用公开密钥加密技术(如RSA算法),同时也支持数字摘要MD-5算法。

  • 保证信息的完整性. SSL协议采用哈希函数和共享机密的方法提供数据完整性服务,建立客户机与服务器之间的安全通道,使得所有经过SSL协议处理的业务都能准确无误地到达目的地。

  • 提供完善的认证服务 利用证书技术和可信任的第三方(认证机构)服务,方便客户机和服务器互相识别身份。在双方进行握手时,SSL协议要求证书的持有者互相交换数字证书,通过鉴别来验证对方身份的合法性。

SSL协议是两层协议:SSL记录协议及其上的3个子协议。有3个高层协议分别作为SSL协议的一部分:SSL握手协议、SSL更改密码规格协议和SSL警告协议。SSL 记录协议为各种高层协议提供了基本的安全服务。

SSL协议采用公钥密码体制和X.509数字证书标准,主要应用于B2C模式中以保障支付信息的安全性。

1999年,因特网工程任务部对SSL协议进行了标准化,并将标准化的SSL协议称为传输层安全(Transport Layer Security, TLS)协议。TLS协议的主要目标是使SSL连接更安全,并使协议所制定的规范更加精确和完善。

https协议的工作原理

  • 客户端使用htts url访问服务器,要求web服务器建立ssl连接
  • web服务器接收到客户端的请求之后,会将网站的证书(含公钥)传输给客户端
  • 客户端和web服务器端开始协商SSL连接的安全等级,也就是加密等级
  • 客户端浏览器通过双方协商一致的安全等级,建立会话秘钥,然后通过网站的公钥来加密会话秘钥,并传送给网站
  • web服务器通过自己的私钥解密出会话秘钥。
  • web服务器通过会话秘钥加密与客户端的通信

https的优点:

  • 使用https协议可以认证用户和服务器,确保数据发送到正确的客户机和服务器
  • http的数据是明文传输。https的数据进行加密,可以防止数据被更改,数据丢失,保证数据的完整性。
  • 身份认证,增加中间人攻击的成本。不是绝对安全,但是是现阶段最安全的方案 https的缺点:
  • 握手的阶段费时,
  • ssl证书需要钱,越安全的证书越贵
  • 缓存没有http高效,增加数据开销
  • SSL需要绑定IP,不能在同一ip上绑定多个域名,Ipv4资源支持不了这种消耗。

常见的http头部

可以将http首部分为通用首部,请求首部,响应首部,实体首部

  • 通用首部表示一些通用信息,如date表示报文创建时间
  • 请求首部是请求报文中独有,如cookie和缓存相关的如if-Modified-Since
  • 响应首部就是响应报文中独有的,如set-cookie和重定向相关的location
  • 实体首部用来描述实体部分,如allow用来描述可执行的请求方法,content-type描述主题类型,content-Encoding描述主体的编码方式。

http1.0

每次TCP连接只能发送一个请求,当服务器响应后就会关闭本次连接。下一个请求需要再次建立TCP连接。

http1.1

  • 默认采用持续连接(tcp连接默认不关闭,可以被多个请求复用,不用声明Connection:keep-alive)
  • 增加了管道机制,在同一个TCP连接里,允许多个请求同时发送,增加了并发性,进一步改善了HTTP的效率。但在同一个TCP连接里,所有的数据通信是按次序进行的。回应慢,会有许多请求排队,造成“队头阻塞”

http2.0的特性

  • 内容安全,http2.0是基于https的,天然具有安全特性,通过http2.0的特性可以避免单纯使用https的性能下降
  • 二进制格式,http1.x的解析是基于文本的,http2.0将所有的传输信息分割为更小的消息和帧,并对他们采用二进制格式编码,基于二进制可以让协议有更多的扩展性,比如引入了帧来传输数据和指令。
  • 双工模式。客户端可以同时发送多个请求,服务端也能同时处理多个请求
  • 多路复用。每个request请求可以随机的混杂在一起,接收方可以根据request的id将request再归属到各自不同的服务端请求里面。多路复用也支持了流的优先级,允许客户端告诉服务器哪些内容是更优先的资源,可以优先传输。
    优点:并行交错发送请求,请求之间互不影响; tcp连接一旦建立可以并行发送请求; 消除不必要延迟,减少页面加载时间;
  • 首部压缩。http1.x首部不压缩,Gzip只会对请求体进行压缩,SPDY和HTTP2.0提供了首部压缩方案。首部压缩可以使头部帧最大程度复用,减少头部的大小。
  • 流程控制。在不改变协议的情况下允许采用多种流量控制算法。
  • 服务端推送。http 2.0可以使服务器主动返回资源给客户端用户。通过RST_STREAM帧拒绝推送。

http3

前身:基于QUIC(Quick UDP Internet Connections)协议的HTTP

QUIC怎么彻底解决队头阻塞问题

  • QUIC的传输单元是Packet,加密单元也是Packet,避免TLS的队头阻塞问题
  • QUIC基于UDP,UDP的数据包在接收端没有处理顺序,丢包不会阻塞整条连接。

补充

  • CA是Certificate Authority的缩写,也叫“证书授权中心”。它是负责管理和签发证书的第三方机构,作用是检查证书持有者身份的合法性,并签发证书,以防证书被伪造或篡改。
  • 数据在网络上是以很小的称为帧(Frame)的单位传输的
  • 队头阻塞:TCP是面向连接的协议,发送请求后需要收到ACK消息。

参考资料

  • 《电子商务安全与认证》胡伟雄