当前位置: 首页 > article >正文

【八股】HTTP

浏览器输入URL之后发生的过程

  1. 浏览器解析URL中的协议,主机,端口,路径参数等
  2. DNS域名解析得到对应的IP地址
  3. 通过IP和PORT对服务器发送TCP三次握手建立连接
  4. 浏览器发送请求
  5. 服务器接受请求,处理并响应
  6. 浏览器得到HTTP响应,对响应报文指定的格式进行渲染
  7. 浏览器和服务器四次挥手断开连接

DNS解析过程(全称为域名系统(Domain Name System))

  1. 浏览器缓存
  2. host文件(/etc/hosts目录下)

    如下
    127.0.0.1       localhost
    ::1             localhost

    # 将 example.com 指向本地回环地址
    127.0.0.1       example.com

  3. 本地DNS服务器(如:中国移动)

  4. 根域名服务器===》顶级域名服务器(如.com  .net   .cn)

  5. 顶级域名服务器==》权威域名服务器(如:baidu.com)

  6. 权威域名服务器==》IP地址

HTTP版本

1、0.9:

  • 无报头,只支持GET方法,响应只能是HTML

2、1.0

  • 有报头,支持GET,POST等多种方法,支持多种状态码
  • 不支持长连接

3、1.1

  • 长连接
  • 管道网络通信(服务器必须按照发送顺序处理,造成队头阻塞

缺点:

  • 队头阻塞
  • 头部冗余(http2解决)
  • 无请求级别
  • 请求响应一对一,服务器被动(http2解决)

4、2.0

  • 二进制数据传输
  • stream并发传输(乱序发送,在客户端通过ID组装)
  • 头部压缩
  • 一个请求可对应多个响应(服务器推送)

基于TCP连接的缺点:

  • 队头阻塞(TCP连接)
  • TCP和TLS的握手延迟
  • 网络迁移重连

5、3.0

使用QUIC协议解决TCP的缺点

HTTPS的执行流程

  1. 客户端发送加密请求
  2. 服务器产生一对公钥和私钥,将自己的公钥发给CA证书机构,CA机关使用自己的私钥加密,产生CA证书
  3. 服务端响应客户端请求,发送CA机关的数字证书给客户端
  4. 客户端解析数字证书(浏览器保存有CA机关公钥),验证是否合法
  5. 客户端随机生成一个数给服务端Key
  6. 客户端对Key使用服务端的公钥加密,发送给服务端作为对称加密的密钥
  7. 服务端对收到的请求使用自己的私钥解析,得到对称加密的密钥
  8. 之后服务端和客户端之间通过Key加密通信

中间人攻击

  1. 客户端发送加密请求

  2. 中间人捕获请求,将请求转发给服务器

  3. 中间人得到服务器的公钥,自己生成一对公钥和私钥,将自己的公钥发送给客户端


http://www.kler.cn/a/429420.html

相关文章:

  • 数据挖掘之聚类分析
  • 网络安全中大数据和人工智能应用实践
  • Google BERT入门(3)Transformer的自注意力机制的理解(上)
  • 3D 生成重建023-DMV3D用扩散模型做3D生成大模型
  • Spring-AOP(面向切面)
  • 深入理解C#的TCPIP通信机制
  • 深度学习:CPU和GPU算力
  • Python基于OpenCV实现的人脸识别和笑容检测
  • 【Apache Paimon】-- 4 -- Flink 消费 kafka 数据,然后写入 paimon
  • Linux如何安装discuz
  • docker安装Emqx并使用自签名证书开启 SSL/TLS 连接
  • 数据库之连接池Druid
  • ZZCMS2023存在跨站脚本漏洞(CNVD-2024-44822、CVE-2024-44818)
  • sock_poll内核函数
  • No module named ‘_ssl‘ No module named ‘_ctypes‘
  • 如何防范顶级应用程序安全威胁
  • 【大语言模型】LangChain ModelsIO与Models I/O Promopts详解
  • 【CKS最新模拟真题】Dockerfile修改
  • CTF-RE/WEB: python-Hook(钩子)
  • 电子信息工程自动化 基于单片机的居室安全报警系统