网络交互学习笔记|青训营

112 阅读4分钟
title: 网络交互
categories: 青训营

1.网络是怎么交互的

1.2 路由

通过路由来接入服务器,通过配置默认路由或匹配详细路由确定路径\

  • 路由不一定是对称的,来回的路由路径不一定是相同的
  • 路由工作在传输层协议
  • 路由不更改IP地址,而是更改MAC地址来确定下一跳,找到发包口
  • 发包需要指定网卡

1.3ARP协议

通过ARP协议来找到下一跳的MAC

  • 通过广播并接受响应来确定下一跳的MAC地址,注意只有逻辑同网段才能发送ARP
  • ARP请求广播,ARP应答单播
  • 添加设备时发送一个免费ARP,防止IP冲突

1.4 IP协议

  • IP地址是唯一表示,互联网通用,客户端一个,服务端也只有一个
  • IPv4不够用则通过IPv6解决

1.5 NAT

  • 内部使用NAT服务器,在内网中再分配地址,客户端通过NAT接入外部网络
  • NAT改变 IP地址和端口地址,避免多个内网客户端访问同一个目标地址和端口,而源端口一致导致冲突

2. 网络传输

2.1数据包

  • 填充完数据包后需要进行封装,按层次封装,解包顺序和封装顺序相反

2.2 请求DNS

  • 客户端发送网址的解析请求
  • DNS服务器通过递归迭代来解析网址,有根域服务器,顶级域服务器和权威服务器

2.3 UDP

  • UDP本身相对简单

  • 通过UDP自己实现一个协议较为困难,从根本上来讲要解决怎么保证协议可靠的问题

    • 发包每次发多少?怎么避免分片
    • 怎么知道是否丢包
    • 怎么权衡传输效率和质量

2.4 TCP

  • TCP通过三次握手建立连接,三次握手的目标是确定会话双方都可以正确发送和接受信息
  • TCP传输:包括sequence number表示发送方发送的序列号,acknowledge number:是发送方期望接受方下一次发送的sequence number
  • SYN/FIN传输不携带数据,但会使packet seq会加1,但ACK传输不会增加packet seq
  • 通过seq num和ack num来确定消息被成功接收
  • 滑动窗口,流量控制

2.5 HTTP1.1

相对于HTTP/1.0使用长连接和管道传输和缓存

2.6 HTTPS

HTTPS在HTTP基础上发展而来,通过在HTTP和TCP网络层之间加入SSL/TLS安全协议,解决了HTTP的三大风险

  • 信息加密:将信息加密,解决窃听风险;
  • 校验机制:验证报文是否被篡改,解决篡改风险
  • 身份证书:验证通信双方身份,解决伪装风险

3.网络架构如何为抖音提速

3.1HTTP2.0

通过HTTP2.0来为服务提速,HTTP2.0使用多路复用来提高效率

  • 在同一个TCP连接通道中存在多个stream,以串行的形式复用,从外表来看是并发请求资源
  • 存在TCP队头阻塞问题

3.2 QUIC/HTTP3.0

HTTP/3.0将HTTP下层协议从TCP协议改为UDP协议,通过基于UDP的QUIC协议也可以实现类似TCP的可靠性传输

  • 解决了TCP队头阻塞的问题
  • 具有弱网优势,因为弱网环境丢包率高

3.3数据中心分布

数据分布在核心机房和边缘机房中

3.4 动态API

通过动态API进行路径优化(DSA)

4.网络架构如何为抖音提质

4.1 容灾

容灾包括故障发生,故障感知,自动切换和服务恢复

  • 专线容灾,在两个机房之间通过专线连接进行容灾
  • 外网容灾,通过互联网连接两个机房
  • 全局容灾,在解析时若发现某个机房不可用,就自动排除该机房,感知故障后,在确定另一个机房可以承担负载后,将请求自动解析到另一个机房中
  • 主动降级容灾,预装SDK,若发生故障实现降级容灾,避免客户端访问故障机房.若场景无法嵌入SDK,就无法使用这种容灾

4.2故障排查

出现了容灾系统无法解决的故障,就要排查故障并处理,步骤分为:故障明确,故障止损和分段排查

4.2.1 故障明确

  • 出现什么故障,什么业务故障,什么接口故障等
  • 故障体现在哪里
  • 是否是修改导致的故障

4.2.2 故障止损

  • 先止损再排查
  • 有容灾就通过容灾止损,没有容灾就进行降级

4.2.3 分段排除

  • 客户端排查
  • 服务端排查
  • 中间链路排查