axios封装
- 请求头(请求超时、token、cookie、指定请求的数据类型、缓存的类型)
- 请求的url,且区分不同环境的域名、传参
- 请求方法(get、post、put、delete、patch)
- 请求拦截器(根据状态码处理不同业务逻辑)
- 响应拦截器(根据不同的错误码处理对应的报错)
UDP、TCP
UDP
- 面向数据
- 面向无连接的通信服务,即发送数据前不需要先建立连接
- 不能进行流量控制,可能存在网络拥塞行为
- 丢包不能重发,乱序时不能校正
- 效率高,准确率低
- 支持一对一、一对多、多对一、多对多交互通信
TCP
- 面向字节流
- 面向有连接的通信服务(3次握手),确认通信对端存在时才会发送数据,避免了流量浪费
- 丢包可重发,乱序可校正
- 效率低,准确率高
- 只能点对点全双工通信,一对一
从 URL 输入到页面展现到底发生什么?
- URL解析 协议、服务器、端口、路径、参数等是否正确
- DNS查询 获取域名对应的服务器IP地址
- TCP连接 经历三次握手建立TCP连接,确认客户端和服务端的发送和接受能力是否正常,以此来确认是否能正常通信
- 发送http请求 请求内容包括:请求行、请求头、请求体
- 响应请求 响应消息包括:状态行、响应头、响应正文
- 页面渲染
- 浏览器接受到服务器响应资源后,会资源进行解析,查看响应头信息,根据不同的指示做对应处理
- 解析html,构建DOM树
- 解析CSS,生成CSS树
- 合并DOM树和CSS树,生成render树
- render树布局
- 绘制render树以及页面信息
- 浏览器将所有信息发送给GPU,GPU将各层合成,最终显示在屏幕上
websockt
只需握一次手即可完成持久性连接,就能进行数据双向传输。
应用场景
- 弹幕
- 媒体聊天
- 协同编辑
- 基于位置的应用
- 体育实况更新
- 股票基金报价实时更新
TCP的三次和四次握手
TCP:确认客户端和服务端的发送和接收能力是否正常,以此来确认是否能正常通信。
三次握手
- 客户端:我来请求你啦
- 服务端:返回响应
- 客户端:ok,收到
四次握手
- 客户端:我想结束请求
- 服务端:收到结束命令
- 服务端:我正好也想断开连接,那这是最后一次请求啦
- 客户端:ok,收到
HTTP 常见的状态码
- 1 表示消息,请求已被接受,需继续处理
- 2 表示成功,已被服务器接受、理解、并接受
- 3 表示重定向,还需要进一步操作
- 4 表示客户端发生错误
- 5 表示服务器错误
HTTP1.0/1.1/2.0 的区别
- Http 1.0 浏览器和服务器建立短暂连接,每次请求都要创建TCP连接
- Http 1.1 支持长连接,一个TPC请求上可以传送多个http请求和响应,减少了建立和关闭连接的消耗和延迟 允许客户不用等待上次请求结果返回,就可以发出下一次请求,请求和响应按次序进行 引入了缓存控制策略 引入range,允许值请求资源的某部分 新增了请求方法,如put、delete、options... 文本格式传输数据
- Http 2.0 多路复用(可同时发送请求或响应,无需按照顺序一一对应) 二进制分帧(二进制格式传输数据,解析更高效) 首部压缩(相同数据不再通过每次请求和响应发送,降低开销) 服务器推送(推送静态资源给客户端)
CDN(Content Delivery Network)内容分发网络
- 根据用户位置分配最近的资源,就近访问,降低了传输延迟
- 改善互联网服务质量,提高访问速度
- 通过负载均衡系统,只能调度边缘节点以提供服务
OSI(Open System Interconnect)七层模型
- 应用层(DNS、HTTP、SMTP):定义应用进程之间的交互规则
- 表示层:进行数据压缩、数据加密等
- 会话层:建立、管理和终止表示层实体之前的通信会话
- 传输层(TPC、UDP):为两台主机之间的通信提供服务,处理数据包问题以及其他的传输问题
- 网络层(IP层):选择合适的网间路由,确保数据成功传送
- 数据链路层:两台主机之间的数据传输,将网络层的IP数据封装成帧,再进行传送
- 物理层:帧封装成比特流,该层实现计算机节点之间比特流的透传
Https的安全如何保证
- 对称加密(加密解密的秘钥必须是同一个)
- 非对称加密(公钥、私钥都可以用来加密解密)
- 混合加密-机密性
- 数字签名(私钥加密,公钥解密)-身份认证
- 摘要算法(利用算法将数据压缩成固定长度的字符串)-完整性
- CA验证机构