HTTP协议简介

首先了解下TCP/IP四层模型:

  • 应用层
    a. HTTP
    b. FTP
    c. DNS
    d. …
  • 传输层:保证可靠传输
    a. TCP
    b. UDP
  • 网络层
  • 链路层

下面这张图显示了HTTP请求的大概流程:
HTTP请求处理流程
图中清楚的展示了请求的处理流程,请求到达每一层都会加上响应的头部信息;返回则层次去掉的过程;
传输层的TCP协议保证了数据的可靠传输,采用分段的方式传输报文;

TCP的可靠性保证:

  • 连接时三次握手

三次握手过程:

  • 客户端发送带有SYN的连接请求到服务器端
  • 服务器端接受到客户端的连接请求后,发送带有SYN/ACK的连接请求收到的确认信息
  • 客户端收到服务端发送过来的请求确认后,再次发送服务端发送的确认信息收到的确认。此时连接建立;

HTTP无状态特性: 保证可以快速处理更多事务,确保协议可伸缩性;但是有些场景需要保持用户的状态(如电商网站的登录状态,所以引入了cookie;

持久连接(keep-alive) 目前的HTTP1.1默认是持久连接的,即在多次请求中只有第一次是经过三次握手建立TCP连接的,直到有一端明确提出端口连接为止;
在此持久连接的基础,可以支持并行发送多个请求,让整个请求时间减少;

Cookie:

  1. 客户端向服务端发送请求;
  2. 服务端生成cookie,并返回cookie 和 请求数据信息 给客户端
  3. 客户端接收到服务端发送过来的数据后,接下来的请求中会携带cookie信息和请求信息,服务端就可以根据cookie信息来判断是哪个客户端;
    Range:范围请求,客户端只请求指定的一部分数据
    Range:bytes=3000-5000
    服务器返回206,partial content的响应报文

Http报文
包括:报文首部,报文主体

  • 报文首部:
    • 通用首部字段
      • cache-control
      • connection
    • 请求首部字段
      • Accept
      • Accept-Charset
      • Accept-Encoding
      • User-Agent
      • Range
      • Authorization
    • 响应首部字段
      • Accept-Ranges
      • ETag
      • Server
    • 实体首部字段
      • Content-Encoding
      • Content-Language
      • Content-Type
      • Content-Range

Http缺点

  1. 明文传输不安全,内容可能被窃听
  2. 不验证通讯方身份,有可能遭遇伪装
  3. 无法判断报文是否完整,有可能被篡改

Https是Http通过和SSL或TSL组合加密的协议
HTTP&HPPS协议流程

HTTPS(SSL) 加密方式对比:

  1. 公开密钥加密思路:使用两个密钥,一个公钥,一个私钥,用户使用服务端的公开密钥加密数据包,然后发送到服务器端,服务端接收到数据包后,使用自己的私钥解密。这样即使数据包被窃取,由于没有解密的私钥,内容也不会被看到;
  2. 共享密钥加密思路:解密和解密使用同一个密钥解密,这样密钥需要在客户端和服务端之间传递,才能到达解密的目的。传输密钥的过程可能被窃取,数据就可能被窃取到了;

Https是综合了公开密钥加密和共享密钥加密机制; 由于公开密钥加密速度慢,但安全;共享密钥加密速度快,但密码可能被窃取
所以HTTP结合两者优缺点,在共享密钥传输密码阶段使用公开密钥加密,保证共享密钥的安全;之后的数据传输采用共享密钥加密的机制;

相信技术的力量,原创技术文章,感谢您的支持!