HTTP框架修炼之道 | 青训营笔记

119 阅读5分钟

这是我参与「第三届青训营 -后端场」笔记创作活动的第6篇笔记

1.刷抖音网络是怎么交互的?

网络接入

先让我的手机能访问抖音服务器!

519wang.png

往同网段如何发包/交互?
  • 交换机/逻辑交换机(拥有IP)
  • SDN:虚拟同网段
  • 同网段发包/交互: 更改目标IP的MAC
  • 跨网段发包/交互: 中间通过交换设备连接,配置一个路由
路由一定是对称的吗

519luy.png

路由是工作在哪一层协议?

ip层

那路由是改的IP地址吗?

路由是改Mac,找到发包口。 源IP地址和目标IP地址应该一直是不变的。源mac和目标mac会变

怎么找到下一跳的MAC?:

ARP协议

  • 同逻辑网段才能发送ARP。跨网段不能直接发送ARP,需要不断找下一跳,一种到同逻辑网段

  • 广播是不能跨网段的。

  • 免费ARP? ARP代理?

    免费ARP

    • 新增服务器:不用请求,发送自己的MAC地址
    • 新增IP:防止IP冲突(IPv6)

    ARP代理

    • 中介作用:用于虚拟网络

IP协议

  • 唯一标识,互联网通用

  • MAC地址不能代替IP地址吗

    • 二层协议有很多,历史遗留问题,向下兼容,封装成IP协议(地址的统一问题)

IPv4不够用,怎么解决?:

NAT

家里路由器是怎样上网的?

519nat

多个内网客户端访问同一个目标地址+端口,源端口恰好一样,冲突了?

NET是IP+端口一起改变的,解决多个内网客户端访问同一个目标地址+端口,而源端口一样的问题

视频下载?:

网络传输

数据包

抓包

数据包传送

519sjbao.png 先请求DNS

客户端发送网址的解析请求,递归解析器解析

UDP

发包每次发多少?

怎么避免分片?

怎么知道没丢包?

怎么权衡传输效率和质量?

怎么保证协议可靠?

TCP

三次握手:

什么是TCP连接?

心跳 探活

拔了网线,连接会断吗?

一定条件会断 一定条件不会断

三次握手,保持一个状态

  • 确认MSS:防止分片(什么时候确认)

    • TCP Option字段添加MSS,取最小值 (时间戳)
  • 确认序列号

    • 表示发送方此packet的数据部分的第一位应该在整个data stream中所在的位置
  • ACK:表示的是期望接收方下一次序列号是多少

  • SYN/FIN的传输虽然没有数据,但是会让下一次传输的packet seq+1,但ACK的传输,不会让下一次的传输packet seq+1

  • sequence number:表示的是我方(发送方)这边,这个packet的数据部分的第一位应该在整个data stream中所在的位置。

  • acknowledge number:表示的是期望的对方(接收方)的下一次sequence number是多少。注意,SYN/FIN的传输虽然没有data,但是会让下一次传输的packet seq增加一,但 是,ACK的传输,不会让下一次的传输packet加——。

TCP传输

519ztj.png

为什么老问你Timewait? 丢包怎么办? 滑动窗口再结合基础概念去理解 流量控制/拥塞控制结合基础概念去理解

HTTP/HTTP1.1

为什么不直接用TCP通信呢?

其实HTTP只是多加了一层规矩。HTTP依然是TCP,只是这个规矩让用户更清晰/更简洁。tcp服务的内容已经够多了

为什么互联网上那么多HTTP通信?

HTTP1.1哪些优化?

HTTPS

传输中被插入小网站怎么办? HTTPS解密出来依然是HTTP

SSL/TLS 握手

对称加密和非对称加密

第三方CA

网络架构怎么给抖音提质

网络提速-HTTP2.0

519duolufc.png

怎么理解多路复用/stream?

519duolu.png 单个TCP链接传输 如果TCP 丢包怎么办?

网络提速-QUIC/HTTP3.0

TCP or UDP? Kernel or Userspace 0RTT 弱网优势

519http3.png

除了协议优化,网络路径能不能优化?

网络提速-数据中心分布

网络提速-同运营商访问

网络提速-静态资源(图片视频)路径优化(CDN)

网络提速-动态API(播放/评论接口)路径优化 (DSA)

刷的快,但是三天两天挂掉,谁刷抖音?

网络稳定-容灾概念

  • 故障发生->故障感知->自动切换->服务恢复

案例1

519anli1.png 案例2

519anli2.png 案例3

519anli3.png 案例4

519anli4.png

没有容灾的故障怎么查?

故障排查

  • 故障明确

    • 什么业务? 什么接口故障? 故障体现在哪里? 访问其他目标是否正常? 是否是修改导致的异常?
  • 故障止损

    • 先止损再排查

    • 如何止损

      • 组件容灾
      • 降级

519paic.png

网络故障排查常用命令

dig查询DNS问题 ping/telnet/nmap查询三层/四层连通性 Traceroute排查中间链路 iptabels tcpdump

排查案例1

519paicanli1.png 客户端异常->服务端自测正常->网关转发异常->健康检查异常

案例2

519paicanl2.png 个别用户报故障,生产环境大多是客户端的问题

案例3

519paicanl3.png 安徽电信报障某APP无法使用->检测后端服务正常,安徽电信流量突降->安徽电信客户端ping不通目标服务->电缆被挖断

案例4

519pacanl4.png 某APP故障->后端服务器反馈服务正常->网络转发设备异常->抓包->路由不对称