HTTP相关知识整理

HTTP相关知识整理

TCP/IP 协议(应用层、传输层、网络层、链路层)

  1. 应用层:规定了向用户提供应用服务时通信的协议,如DNS域名系统、FTP文件传输协议、HTTP协议、HTTPS协议
  2. 传输层:对接上层应用层,提供处于网络连接中两台计算机之间的数据传输,如TCP传输控制协议、UDP用户数据报协议、QUIC协议
  3. 网络层:规定了数据通过怎样的传输路线到达对方计算机传送给对方,如IP协议
  4. 链路层:处理连接网络的硬件部分,包括控制操作系统、硬件的设备驱动、NIC,及光纤等物理可见部分

请求的方法

注意点:浏览器发送 CORS(跨域) 请求时, 分为简单请求与复杂请求,如果是复杂请求,浏览器会预先发送一个 option 请求

  1. GET:一般用于获取服务器资源,能缓存、参数保存在浏览器历史中、因为是明文传输且参数被保存所以比POST安全性差一点
  2. POST:一般用于传输实体主体,后退按钮/刷新数据会被重新提交、不能缓存、参数不会保存在浏览器历史中
  3. PUT:一般用于传输文件
  4. DELETE:用于删除文件
  5. HEAD:用于获取报文首部,不返回报文主体
  6. OPTIONS:用于询问请求URI资源支持的方法

HTTPS 握手过程

  1. 客户端使用 https 的 url 访问服务器,要求与服务器建立 ssl 连接
  2. 服务器收到客户端请求后, 将网站的证书(包含公钥)传送一份给客户端,服务器自己保留私钥
  3. 客户端收到网站证书后检查证书的颁发机构是否受客户端信任校验证书是否被吊销(通过 CRL 或 OCSP 的方式)、校验证书是否在有效期内(对比系统时间)、证书的网站域名是否与证书颁发的域名一致(通过校验对方是否存在证书的私钥), 如果没有问题就随机产生一个秘钥
  4. 客户端利用公钥将会话秘钥加密, 并传送给服务器, 服务器利用自己的私钥解密出会话秘钥
  5. 后续服务器与客户端使用秘钥进行加密传输

HTTPS 中间人攻击及防御

攻击过程如下:

  1. 服务器向客户端发送公钥
  2. 攻击者截获公钥,保留在自己手上
  3. 然后攻击者自己生成一个【伪造的】公钥,发给客户端
  4. 客户端收到【伪造的】公钥后,生成加密的秘钥发给服务器
  5. 攻击者获得加密的秘钥,用自己的私钥解密获得真秘钥
  6. 同时生成【假】的加密的秘钥,发给服务器
  7. 服务器用私钥解密获得【假】秘钥
  8. 服务器用【假】秘钥加密传输信息

防范方法:

  1. 通过权威的证书颁发机构 CA :服务器在发送浏览器的公钥中加入 CA 证书,浏览器可以验证 CA 证书的有效性
  2. 问题:中间人也可申请 CA 认证

HTTPS 和 HTTP 的区别

  1. 费用:HTTPS 协议需要到 CA 申请证书,免费证书很少,一般都需要一定的费用
  2. 安全:HTTP 是超文本传输协议,信息是明文传输;HTTPS 通过 SSL 加密传输协议、身份认证的网络协议,可防止数据在传输过程中不被窃取、改变,确保数据的完整性。简单说;HTTPS = HTTP + TLS/SSL(安全传输层)
  3. 端口:HTTP 使用 80 端口; HTTPS 使用 443 端口

可配合以下博客一同食用:
QUIC协议-和-TCP-UDP-协议
HTTP状态码及其含义
HTTP的请求及响应
从点击url到浏览器显示页面,这个过程中发生了什么?