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

相关推荐
网络安全King2 分钟前
网络安全常见面试题
网络·安全·web安全
大明湖的狗凯.22 分钟前
HTTP 常见状态码解析
网络·网络协议·http
勤奋的懒洋洋35030 分钟前
webSocket
网络·websocket·网络协议
Mr.W.T1 小时前
常见的网络攻击手段
网络·网络安全
m0_687914631 小时前
xshell连接虚拟机,更换网络模式:NAT->桥接模式
服务器·网络·桥接模式
一杯咖啡的时间1 小时前
Python 命令搭建 Https的服务器
服务器·网络协议·https
m0_748229992 小时前
前端WebSocket应用——聊天实时通信的基本配置
前端·websocket·网络协议
C++忠实粉丝2 小时前
计算机网络之网络层超详细讲解
网络·c++·网络协议·tcp/ip·计算机网络·智能路由器
程序员小道人2 小时前
网络基础12 虚拟局域网
网络·智能路由器·php
_不会dp不改名_2 小时前
HCIA笔记7--OSPF协议入门
网络·笔记·智能路由器