Skip to content

HTTP 相关题

题目

  • 常用的 HTTP 方法有哪些
  • GET 和 POST 的区别
  • HTTP 请求报文与响应报文格式
  • 常见 HTTP 首部字段
  • 一次完整的 HTTP 请求事务包含以下四个环节
  • 一次完整的 HTTP 请求所经历的 7 个步骤
  • 输入一个 URL,到页面展示中间经历了哪些东西
  • HTTP 优化
  • HTTP 的缺点
  • HTTP1.1 版本特性
  • http 和 https 的区别
  • HTTP 缓存
  • SSL/TLS 握手阶段分为五步

常用的 HTTP 方法有哪些

GET 获取
POST 获取通过服务器处理的实体主体
PUT 更新传输文件(发两次请求,PUT两次请求结果一样,post 是增资源)
DELETE 删除服务器资源
CONNECTION 开启隧道连接代理
OPTION 询问支持方法
HEAD 获取报文首部
TRACE 追踪路径

GET 和 POST 的区别

GET
  - 参数 会显示在 URL 后面
  - 缓存 浏览器返回按钮将不会在请求
  - 可收藏
  - 相对 POST 更不安全
  - 长度有所限制
POST
  - 参数 会不显示 URL
  - 缓存 浏览器返回按钮会在请求
  - 不可收藏

HTTP 请求报文与响应报文格式

报文
  报文首部(头部)
    报文行
      请求行
      相应行
    首部内容
  空行
  报文主体

常见 HTTP 首部字段

报文行
  请求行 GET / HTTP/1.1
  相应行 HTTP1.1 200 ok
首部内容
  通用内容
    Catch-Control
    Connection
    Date
  请求内容
    Accept
    Accept-Encoding
    Accept-Language
    User-Agent
    ETag
    Host
  响应内容
    Server
  实体
    Content-type
    Last-Modify
    Allow
  Cookie
    Set-Cookie
    Cookie
  其他
    X-Frame-Option

一次完整的 HTTP 请求事务包含以下四个环节

- URL 通过 缓存 或者 DNS服务器找到对应IP
- 通过以HTTP协议生成的报文
- 通过TCP/IP协议进行传输
- 通过ARP找到IP对应的MAC地址

一次完整的 HTTP 请求所经历的 7 个步骤

- 应用层
- 传输层
- 网络层
- 数据链路层
- 物理层
建立TCP连接->发送请求行->发送请求头->(到达服务器)发送状态行->发送响应头->发送响应数据->断TCP连接

输入一个 URL,到页面展示中间经历了哪些东西

- 浏览器:
  - 浏览器是多进程的,每个页面是一个进程,输入一个 URL 按下会车开启一个新的进程,包含有多个线程其中 网络线程/GUI渲染线程/JS引擎解析线程

- 网络线程
  - 应用层:域名找到对应 IP
    - URL 找到先找浏览器缓存,没有找本机缓存,没有找 HOST,在没有找 DNS 域名服务找到,中间可能经过路由缓存
    - HTTP 生成请求报文 请求行 空行 请求主体
  - 传输层:建立 TCP 通信连接,进行三次握手
  - 网络层:路由转发找到对应服务器 物理MAC 地址
  - 物理链路层:通过物理设备
  - 服务器收到数据
    - 负载均衡 HTTP复用
  - HTTP 响应报文
  - 缓存设置

- GUI渲染线程
  - HTML 解析成DOM Tree, CSS解析成CSSOM,合成RenderTree,然后渲染

- JS 引擎解析线程
  - EventLoop 作用域链 变量提升 回收机制 垃圾回收 作用域链 原型链

HTTP 优化

缓存:利用HTTP Cache来优化网站
压缩:内容压缩
TCP复用:
  负载均衡:多个客户端一个HTTP复用到一个TCP连接上
  HTTP复用:一个客户端多个HTTP复用到一个TCP连接进行处理
SSL加速:使用SSL协议对HTTP协议进行加密,在通道内加密并加速

HTTP 的缺点

不保存、无状态
管线化

HTTP1.1 版本特性

持久链接
管线化
断点续传

http 和 https 的区别

HTTP 明文可被代理修改首部信息,不安全
安全:HTTP无法加密不安全 HTTPS加密安全
端口: HTTP80 HTTPS 443

HTTP 缓存

强缓存 expires: 绝对时间 1.0 cache-control: 1.1、相对时间

  • no-cache
  • no-store
  • public\private
  • max-age
  • s-maxage

协商缓存 304 etag if-none-match last-modify if-modify-since 秒

Cache-Control

SSL/TLS 握手阶段分为五步

分享

SSLHTTP1.0、HTTP1.1 和 HTTP2.0 的区别缓存

在 MIT 许可下发布