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

相关推荐
minji...1 小时前
Linux 基础IO(一) (C语言文件接口、系统调用文件调用接口open,write,close、文件fd)
linux·运维·服务器·网络·数据结构·c++
真正的醒悟1 小时前
202503-经验之道
服务器·网络·php
qq_251616192 小时前
ubuntu nginx文件服务器
linux·服务器·网络
云计算练习生2 小时前
渗透测试行业术语—— 网络攻击方式与漏洞利用
服务器·网络·安全·渗透测试术语·网络安全术语
乾元3 小时前
SDN 与 AI 协同:控制面策略自动化与策略一致性校验
运维·网络·人工智能·网络协议·华为·系统架构·ansible
锡兰_CC3 小时前
无缝触达,卓越体验:开启openEuler世界的任意门
服务器·网络·数据库·c++·图像处理·qt·nginx
橘子真甜~3 小时前
C/C++ Linux网络编程10 - http协议
linux·服务器·网络·c++·网络协议·http
十五年专注C++开发4 小时前
async_simple:一个轻量级C++异步协程框架
开发语言·网络·c++·boost·asio
车载测试工程师4 小时前
CAPL学习-ETH功能函数-方法类4
网络协议·tcp/ip·以太网·capl·canoe
hnlq4 小时前
基于dpdk的用户态协议栈的实现(三)—— TCP的三次握手实现
网络·网络协议·tcp/ip