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