【八股】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. 中间人得到服务器的公钥,自己生成一对公钥和私钥,将自己的公钥发送给客户端

相关推荐
是小满满满满吗1 小时前
传输层:udp与tcp协议
linux·服务器·网络
小刘同学++2 小时前
ECB(电子密码本,Electronic Codebook) 和 CBC(密码分组链接,Cipher Block Chaining)区分于用途
网络·ssl
CryptoPP2 小时前
使用WebSocket实时获取印度股票数据源(无调用次数限制)实战
后端·python·websocket·网络协议·区块链
gadiaola2 小时前
【计算机网络】第3章:传输层—TCP 拥塞控制
网络·网络协议·tcp/ip·计算机网络
猎板PCB厚铜专家大族3 小时前
多层PCB技术解析:从材料选型到制造工艺的深度实践
网络·制造
FakeOccupational4 小时前
【碎碎念】宝可梦 Mesh GO : 基于MESH网络的口袋妖怪 宝可梦GO游戏自组网系统
网络·游戏
fei_sun6 小时前
【计算机网络】三报文握手建立TCP连接
网络·tcp/ip·计算机网络
Johny_Zhao7 小时前
2025年6月Docker镜像加速失效终极解决方案
linux·网络·网络安全·docker·信息安全·kubernetes·云计算·containerd·yum源·系统运维
PypYCCcccCc7 小时前
支付系统架构图
java·网络·金融·系统架构
廖致君8 小时前
C/Python/Go示例 | Socket Programing与RPC
网络协议