HTTPS 加密
在传输密钥的时候使用非对称加密、在通信的时候使用对称加密。
具体实现步骤
-
客户端发起请求。
-
服务端准备数字证书(包含公钥和其它信息)、 以及保存与公钥配对的私钥。
-
服务端将数字证书返回给客户端。
-
客户端通过 TLS/LSS 验证证书。
- 不合法:发出警告 。
- 合法: 提取公钥进而生成随机的 key、 客户端用公钥对随机的 key 进行加密。
-
向服务端发生加密之后的 key。
-
服务端用保留的私钥进行解密、 提取出随机的 key。 最后对称加密 HTTP 数据。
-
向客户端发送加密后的 HTTP 数据。
-
客户端使用随机生成的 key 进行解密。
三次握手四次挥手
前置知识
套接字 socket (IP地址:端口号)是握手前的核心条件
TCP 报文里有主要的标识有(1表示开启0表示关闭)
- SYN:同步(请求建立连接)
- ACK:确认(确认连接)
- FIN: 结束 (请求断开连接)
- SEQ: 序列号
三次握手
为什么需要三次挥手而不是两次
设计成三次握手的情况,客户端在接收到服务端SEQ+1的返回消息之后,就会知道这个连接是历史连接,所以会发送报文给服务端,告诉服务端。所以TCP设计成三次握手的目的就是为了避免重复连接、同时也是确保客户端和服务端接收和发送功能是没有问题的。
四次挥手
为什么是四次挥手
是因为可能存在未发送完毕的数据、所以为了保证数据传递的完整
为什么客户端在第四次挥手后还会等待 2MSL
等待 2MSL 是因为保证服务端接收到了 ACK 报文,因为网络是复杂了,很有可能 ACK 报文丢失了,如果服务端没接收到 ACK 报文的话,会重新发送 FIN 报文,只有当客户端等待了 2MSL 都没有收到重发的 FIN 报文时就表示服务端是正常收到了 ACK 报文,那么这个时候客户端就可以关闭了。
常见的状态码
201: 服务已创建
204: 无内容
301: 重定向 —— 原地址永久删除
302: 重定向 —— 临时地址
304: 协商缓存、可直接使用缓存
400: 语法错误、 无法理解
401: 数据库中无此身份
403: 无权限
404: 地址写成或资源不在了
409: 版本冲突、 新老版本要一致
500: 内部错误
502: 网关错误
503: 超载或维护
DNS 域名解析
基本知识 (IP: 网络号 + 主机号)
过程
检测本地浏览器缓存中有没有对应的 IP 记录、同时查阅主机本地文件里面有没有对应的记录、若没有就继续执行一下操作
GET 和 POST
区别:
- GET 在浏览器回退时是无害的,而 POST 会再次提交请求。
- GET 请求只能进行url编码,而 POST 支持多种编码方式。
- GET 请求参数会被完整保留在浏览器历史记录里,而 POST 中的参数不会被保留。
- GET请求在URL中传送的参数是有长度限制的,而 POST 没有。
- 对参数的数据类型,GET只接受ASCII字符,而POST没有限制。
- GET 比 POST 更不安全,因为参数直接暴露在URL 上,所以不能用来传递敏感信息。
- GET 参数通过 URL 传递,POST 放在Request body 中。
- GET 产生一个 TCP 数据包;POST 产生两个TCP 数据包。
本质上是没有区别的:本质上都是 TCP 连接
使用场景:
- GET 一般用于数据的读取、 所以一般是对 get 请求进行缓存。
- POST 一般用于数据的增删改
有几种请求方式
form表单、ifream、刷新页面。Ajax- 异步网络请求的开山鼻祖。jQuery- 一个时代。fetch-Ajax的替代者axios、request等众多开源库
有几种请求方法
GETPOSTHEAD一般用于获取报文的。DELETE一般用于删除Request-URL所标识的资源
Cookie、localStorage和sessionStorage
cookie
主要用于用户识别和状态管理(如:记忆密码),cookie是由服务器生成,保存在客户端的一种信息载体。可设置失效时间。若在浏览器端生成cookie的话、不设置失效时间的前提下默认是关闭浏览器失效。每次都会携带在HTTP头中发送给服务端、数据大小为4kB左右。挂载在document下面
webStorage(本地存储)
HTML5 提供了两种在客户端存储数据的新方法:localStorage和sessionStorage,挂载在window对象下。数据大小一般为5MB。它仅在浏览器中保存,不和服务器通信。
localStorage: 有效期是永久的、即使关闭浏览器、数据也不会消失、除非主动去删除。 sessionStorage: 仅在当前页面下有效,使用window.open打开页面和改变localtion.href方式都可以获 取到sessionStorage内部的数据;使用关闭页面或浏览器后被清除。