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

相关推荐
Themberfue7 分钟前
UDP/TCP ⑤-KCP || QUIC || 应用场景
网络·网络协议·tcp/ip·计算机网络·udp
路溪非溪1 小时前
计算机网络三张表(ARP表、MAC表、路由表)总结
网络·计算机网络·macos
啥也学不会a9 小时前
PLC通信
开发语言·网络·网络协议·c#
hunter20620611 小时前
ubuntu调用图形化网络测试工具
网络·测试工具·ubuntu
SmartBrain11 小时前
华为发展历程:战略转型与分析
网络
元气满满的热码式13 小时前
K8S中Service详解(二)
linux·网络·kubernetes
AI创世纪14 小时前
WIN11 UEFI漏洞被发现, 可以绕过安全启动机制
网络·安全
小马爱打代码16 小时前
TCP 详解
网络·网络协议·tcp/ip
聿琴惜荭顏丶17 小时前
.NET MAUI进行UDP通信(二)
网络协议·udp·.net
努力的小T17 小时前
基于 Bash 脚本的系统信息定时收集方案
linux·运维·服务器·网络·云计算·bash