美文网首页
AHM-20191016

AHM-20191016

作者: Robin92 | 来源:发表于2019-11-02 18:01 被阅读0次

base64 放在了 url 上引发了问题。

  1. base64 是一种编码方式,不是加密方式
  2. 不是 urlsafe 的
  3. 会增长约1/3

base64 编码方式

  • 用官方的话解释说:“基于64个可打印字符来表示二进制数据”。
  • 可打印 即是用来将一些不可打印的数据转换成可打印(可输出显示)的数据。
  • 一般来说,这64个字符是A-Za-z0-9 再加上 +/
  • = 是用于标记补位。由于最后可能不足 6bit,所以会补 \x00,后面再用等号标记。
  • 由于 +/ 的存在,即不是 urlsafe 的。因为 url 在传输过程中会将 +/ 分别编码成 %2B%2F
  • base64 衍生出了许多变种,如将 +/ 改成了 -_等,就变成了 urlsafe 的了。
  • Base64 将原来的 8bit 字符,按每 6bit 分割再高位补 0 成 8bit,因此编码后要比原来长1/3。
  • 总结一下,base64 主要是用于做展示二进制数据用的,不是用来做数据传输的,也不是用来加密的。

常见网络错误

  • OSI 七层模型:物理层、数据链路层、网络层、传输层、会话层、表示层、应用层。
  • 网络层:IP、ICMP,负责数据报路由
  • 传输层:TCP、UDP。TCP面向连接的,提供可靠传输,所以会有连接错误的error
  • 会话层:SSL/TLS(1.0, 1.1 不够安全,现在主流 1.2)
  • 应用层:DNS,HTTP(S),FTP,SSH,Telnet...

DNS 讲解

  • HTTP访问一个域名,要先访问一下 DNS 服务器,解析为IP地址。
  • 在 k8s 中访问 k8s 服务的链路:k8s Pod -> iptables -> kube-coredns Pod
  • k8s 中访问外网服务的链路:k8s Pod -> iptables -> kube-coredns Pod -> 云 nameserver -> DNS 的递归或迭代查询(一定要看)

HTTP 请求路径

静态文件

  • CDN 节点(分布式)-> OSS (不持久化会回源)
  • CDN -> OSS -> SLB -> k8s Ingress Controller -> k8s Pod(portal-frontend, h5v1 源代码是没有上传到容器的)
  • OSS 是存放 CDN 文件的服务器,回源也会到这

:::
k8s Ingress Controller 是一个具有反向代理功能的控制器,它作为代理和其他服务 Pod 部署在同一网络中,把请求分发到对应的服务器上。
:::

动态资源

  • [WAF ->] SLB -> k8s Ingress Controller -> k8s Pod(公网)
  • k8s Pod -> iptables -> k8s Pod (内网)
  • 尽量走内网
    • 延迟少
    • 出错的概率小
    • 不会产生流量费用

TCP 常见错误

  • connection refused ()
    • 目标服务未启动或未监听端口
    • 防火墙拦截(网络层、传输层的防火墙,如一些IP限制的会有此问题,拦截后会明确回应不接受)
  • connect timed out (连接超时,没有明确拒绝)
    • 目标服务压力过大,处理不来
    • 防火墙拦截(有些防火墙拦截下来但不给你任何回应)
    • ISP 网络异常(网速慢)
  • read/write timedout/error
    • 一端过早超时
    • ISP 网络异常(网速慢)

DNS 常见错误

DNS 的作用就是用 domain 换取 IP 地址

  • Could not resolve host: xxx
    • 域名确实不存在(检查域名)
    • nameserver 不响应、超时(过载)、过期(新改的域名没同步)
      • (nameserver 在 linux 上就是 /etc/resolv.conf)
      • 可能 nameserver 配错了,检查一下配置
      • 可能 k8s kube-coredns 异常
      • 阿里云异常(在阿里云中有问题,阿里云外没问题)
      • ISP 异常
      • DNS 服务商异常

HTTP 常见错误

  • 302 (临时重定向)
    • WAF 在做 CC 防护的时候拦截掉了
    • 代码正常行为
  • 405 (Method Not Allowed)
    • WAF WEB 应用防护拦截
    • 代码行为(常见到的是 method 写错)
  • 499 (Client Closed Request,客户端先关闭了此连接)
    • 客户端超时时,nginx 会记录此状态
  • 502 (Bad gateway,网关挂了)
    • SLB 后端(k8s Ingress Controller)异常
  • 503(Service unavailable)
    • SLB 无可用后端(k8s Ingress Controller)
    • k8s Ingress Controller 无可用 Pod
    • 代码行为
  • 504(Gateway timeout,网关超时)
    • 上游超时,不能从上游获得响应

(看一下网关是什么作用,为什么会出现上面两种 gateway 的错误)

:::
网关是用于两种不同协议间的互连,它一般是一个计算机系统或设备。所以出了错误时要找这个设备的问题。 k8s 中应该就是 k8s Ingress Controller
:::

HTTPS 常见错误

  • 客户端不支持 SNI 而无法匹配证书
  • 不支持 TLS 1.2 而无法建立连接

相关文章

  • AHM-20191016

    base64 放在了 url 上引发了问题。 base64 是一种编码方式,不是加密方式 不是 urlsafe 的...

网友评论

      本文标题:AHM-20191016

      本文链接:https://www.haomeiwen.com/subject/rcocbctx.html