网络

79 阅读4分钟

axios封装

  • 请求头(请求超时、token、cookie、指定请求的数据类型、缓存的类型)
  • 请求的url,且区分不同环境的域名、传参
  • 请求方法(get、post、put、delete、patch)
  • 请求拦截器(根据状态码处理不同业务逻辑)
  • 响应拦截器(根据不同的错误码处理对应的报错)

UDP、TCP

UDP

  • 面向数据
  • 面向无连接的通信服务,即发送数据前不需要先建立连接
  • 不能进行流量控制,可能存在网络拥塞行为
  • 丢包不能重发,乱序时不能校正
  • 效率高,准确率低
  • 支持一对一、一对多、多对一、多对多交互通信

TCP

  • 面向字节流
  • 面向有连接的通信服务(3次握手),确认通信对端存在时才会发送数据,避免了流量浪费
  • 丢包可重发,乱序可校正
  • 效率低,准确率高
  • 只能点对点全双工通信,一对一

从 URL 输入到页面展现到底发生什么?

  1. URL解析 协议、服务器、端口、路径、参数等是否正确
  2. DNS查询 获取域名对应的服务器IP地址
  3. TCP连接 经历三次握手建立TCP连接,确认客户端和服务端的发送和接受能力是否正常,以此来确认是否能正常通信
  4. 发送http请求 请求内容包括:请求行、请求头、请求体
  5. 响应请求 响应消息包括:状态行、响应头、响应正文
  6. 页面渲染
    • 浏览器接受到服务器响应资源后,会资源进行解析,查看响应头信息,根据不同的指示做对应处理
    • 解析html,构建DOM树
    • 解析CSS,生成CSS树
    • 合并DOM树和CSS树,生成render树
    • render树布局
    • 绘制render树以及页面信息
    • 浏览器将所有信息发送给GPU,GPU将各层合成,最终显示在屏幕上

websockt

只需握一次手即可完成持久性连接,就能进行数据双向传输。

应用场景

  • 弹幕
  • 媒体聊天
  • 协同编辑
  • 基于位置的应用
  • 体育实况更新
  • 股票基金报价实时更新

TCP的三次和四次握手

TCP:确认客户端和服务端的发送和接收能力是否正常,以此来确认是否能正常通信。

三次握手

  1. 客户端:我来请求你啦
  2. 服务端:返回响应
  3. 客户端:ok,收到

四次握手

  1. 客户端:我想结束请求
  2. 服务端:收到结束命令
  3. 服务端:我正好也想断开连接,那这是最后一次请求啦
  4. 客户端:ok,收到

HTTP 常见的状态码

  • 1 表示消息,请求已被接受,需继续处理
  • 2 表示成功,已被服务器接受、理解、并接受
  • 3 表示重定向,还需要进一步操作
  • 4 表示客户端发生错误
  • 5 表示服务器错误

HTTP1.0/1.1/2.0 的区别

  1. Http 1.0 浏览器和服务器建立短暂连接,每次请求都要创建TCP连接
  2. Http 1.1 支持长连接,一个TPC请求上可以传送多个http请求和响应,减少了建立和关闭连接的消耗和延迟 允许客户不用等待上次请求结果返回,就可以发出下一次请求,请求和响应按次序进行 引入了缓存控制策略 引入range,允许值请求资源的某部分 新增了请求方法,如put、delete、options... 文本格式传输数据
  3. Http 2.0 多路复用(可同时发送请求或响应,无需按照顺序一一对应) 二进制分帧(二进制格式传输数据,解析更高效) 首部压缩(相同数据不再通过每次请求和响应发送,降低开销) 服务器推送(推送静态资源给客户端)

CDN(Content Delivery Network)内容分发网络

  • 根据用户位置分配最近的资源,就近访问,降低了传输延迟
  • 改善互联网服务质量,提高访问速度
  • 通过负载均衡系统,只能调度边缘节点以提供服务

OSI(Open System Interconnect)七层模型

  1. 应用层(DNS、HTTP、SMTP):定义应用进程之间的交互规则
  2. 表示层:进行数据压缩、数据加密等
  3. 会话层:建立、管理和终止表示层实体之前的通信会话
  4. 传输层(TPC、UDP):为两台主机之间的通信提供服务,处理数据包问题以及其他的传输问题
  5. 网络层(IP层):选择合适的网间路由,确保数据成功传送
  6. 数据链路层:两台主机之间的数据传输,将网络层的IP数据封装成帧,再进行传送
  7. 物理层:帧封装成比特流,该层实现计算机节点之间比特流的透传

Https的安全如何保证

  • 对称加密(加密解密的秘钥必须是同一个)
  • 非对称加密(公钥、私钥都可以用来加密解密)
  • 混合加密-机密性
  • 数字签名(私钥加密,公钥解密)-身份认证
  • 摘要算法(利用算法将数据压缩成固定长度的字符串)-完整性
  • CA验证机构