哈喽我们好呀~ HTTP说起来难也不难,涉及到的知识点还挺多,感觉回忆比年龄先到中年
学而不思则“忘”,学了又思仍是“忘”,仍是得写写水文,保持记录“依据”的习气呀。
好嘞,废话不多说,搜刮一下HTTP常见面试题
出发点是便利回忆,简洁、直观展现,后续还会不断补充细节~
1.什么是HTTP? HTTP 和 HTTPS 的差异?
︎《图解HTTP》中解释道:
Web运用一种名为HTTP(HyperText Transfer Protocol,超文本传输协议)的协议作为标准,完成从客户端到服务器等一系列运作流程。而协议是指规则的约定。能够说,Web是树立在HTTP协议上通讯的。
看着有点懵。。简单来说

HTML页面的方法,它有以下特色:
- 依据
TCP/IP通讯协议明文传递数据,内容或许会被窃听。 - 灵敏:
报文可按照其规则自定义字段,且传输的数据并不是计算机底层中的二进制包,而是文本、HTML文件、图片、视频、压缩包等等。 - 无衔接:
无衔接并不是指 不衔接,而是限制每次衔接只处理一个恳求,当服务器回来本次恳求的应对后便当即封闭衔接,下次恳求再从头树立衔接。 - 无状况:无法依据之前的状况进行本次的恳求处理。
1.1 小结:HTTP 和 HTTPS 的差异
- 默认端口不同,HTTP是80,HTTPS是443
- HTTPS相对来说更安全,HTTPS运用了SSL/TLS协议做了加密处理
- HTTP相对来说功能更高,HTTPS需求做服务器、客户端加密解密处理,消耗更多的CPU及内存资源
- 运用HTTPS本钱更高,HTTPS需求SSL,SSL证书需求钱
1.2 扩展:为什么说HTTPS更安全?
上述提到HTTP经过明文传输,不行安全,然后加了SSL/TLS搞了个升级版(HTTPS),中心有3点:
(1)混合加密(对称加密+非对称加密):完成通讯加密
- 对称加密(也叫私钥加密):通讯两边运用
相同的密钥去加密/解密数据。 - 非对称加密(也叫公钥加密):运用一对密钥,
公钥加密的密文只有对应的私钥才能解密。
- 客户端建议恳求(默认443端口)
- 服务器回来
公钥证书(服务器中有一对公钥和私钥,只发公钥给客户端) - 客户端
验证证书 - 客户端生成
对称密钥,运用公钥加密后发给服务器 - 服务器运用
私钥解密,得到对称密钥 - C/S两边运用对称密钥:
- 加密
明文并发送 - 解密
密文得到明文
- 加密
(2)摘要算法(哈希算法):保证传递实在的信息,防止数据被篡改
完成完整性的手法主要是摘要算法,摘要算法又称哈希算法、散列算法。它经过一个函数,把
任意长度的数据转换为一个长度固定的数据串。


(3)数字签名:身份验证
奉天承运,皇帝诏曰! 等等。。这圣旨不会是假造的吧?
漏漏漏…大漏特漏,♀️ 大人请看章印和画押!
数字签名的作用等同于签名和指纹,是绝无仅有的,为了证明我是“我”⛄︎。
《图解HTTP》中 HTTPS 作业流程如下所示:

2.HTTP1.0/1.1/2.0 的差异?
HTTP1.0:
- 浏览器与服务器只保持短暂的衔接,浏览器的每次恳求都需求与服务器树立一个TCP衔接
HTTP1.1:
- 引入了持久衔接,即TCP衔接默认不封闭,可被多个恳求复用
- 在同一个TCP衔接里面,客户端能够一起发送多个恳求
- 尽管答应复用TCP衔接,但是同一个TCP衔接里面,所有的数据通讯是按次序进行的,服务器只有处理完一个恳求,才会接着处理下一个恳求。假如前面的处理特别慢,后边就会有许多恳求排队等着
- 新增了一些恳求方法
- 新增了一些恳求头和呼应头
HTTP2.0:
- 选用二进制格局而非文本格局
- 彻底多路复用,而非有序并阻塞的、只需一个衔接即可完成并行
- 运用报头压缩,降低开支
- 服务器推送
3.HTTP 常见的状况码有哪些?2️⃣0️⃣0️⃣
呼应分为五类:信息呼应(100–199),成功呼应(200–299),重定向(300–399),客户端过错(400–499)和服务器过错 (500–599):
| 分类 | 分类描绘 |
|---|---|
| 1** | 信息,服务器收到恳求,需求恳求者继续执行操作 |
| 2** | 成功,操作被成功接纳并处理 |
| 3** | 重定向,需求进一步的操作以完成恳求 |
| 4** | 客户端过错,恳求包括语法过错或无法完成恳求 |
| 5** | 服务器过错,服务器在处理恳求的过程中发生了过错 |
常见的有十几种:
| 状况码 | 状况码英文名称 | 场景 |
|---|---|---|
| 200 | OK | 恳求成功 |
| 201 | Created | 新增或修正数据成功 |
| 202 | Accepted | 恳求已进入使命行列,被异步处理 |
| 203 | Non-Authoritative Information | 令牌或登录状况失效 |
| 204 | No Content | 删去数据成功 |
| 301 | Moved Permanently | 恳求的资源被永久重定向到新的位置,将从头的地址从头恳求 |
| 400 | Bad Request | 客户端恳求的语法过错,服务器无法了解 |
| 401 | Unauthorized | 恳求要求用户的身份认证 |
| 403 | Forbidden | 得到拜访授权,但拜访是被制止 |
| 404 | Not Found | 拜访资源不存在 |
| 405 | Method Not Allowed | 客户端恳求中的方法被制止 |
| 406 | Not Acceptable | 恳求的数据格局不是服务接纳的类型 |
| 500 | Internal Server Error | 服务器内部过错,无法完成恳求 |
| 502 | Bad Gateway | 服务器网关过错 |
| 503 | Service Unavailable | 超载或系统维护 |
4.GET 和 POST 的差异?
| GET | POST | |
|---|---|---|
| 撤退按钮/刷新 | 无害 | 数据会被从头提交 |
| 书签 | 可保藏为书签 | 不行保藏为书签 |
| 缓存 | 会被浏览器主动cache | 不会缓存,除非手动设置 |
| 编码类型 | application/x-www-form-urlencoded | application/x-www-form-urlencoded 或 multipart/form-data 为二进制数据运用多重编码 |
| 前史 | 参数保留在浏览器前史中 | 参数不会保存在浏览器前史中 |
| 对数据长度的限制 | 限制长度(最大长度是 2048 个字符) | 无限制 |
| 对数据类型的限制 | 只答应 ASCII 字符 | 没有限制,也答应二进制数据 |
| 安全性 | 安全性较差,参数直接暴露在URL上 | 更安全,参数不会被保存在浏览器前史或 web 服务器日志中 |
| 可见性 | 参数经过URL传递,对所有人都是可见的 | POST放在Request body中 |
5.在地址栏输入 URL 后发生了什么?(总结成了4步)
-
URL解析: 先判断输入的是
URL仍是要查找的关键字,若是URL则解析获取协议、主机、端⼝、path等信息。 -
IP寻址: 依据
URL进行DNS域名解析,找到实在IP
-
恳求/回来数据:
-
向服务器建议
衔接恳求,进行三次握手树立TCP链接,衔接后发送HTTP恳求,服务器回来相应数据 -
然后进行
四次挥手断开TCP链接
-
-
烘托展现:
- 浏览器接纳
HTTP呼应,对呼应进行解码 - 解析
HTML文件创立DOM树,解析CSS构建CSSOM树 - 结合
DOM、CSS构建烘托树,最后布局和制作烘托树
- 浏览器接纳







