计算机网络基础 | 青训营笔记

194 阅读4分钟

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

1. 网络接入协议

  • 互联网的接入:网络拓扑的整体认知

  • 路由发包原理:

    • 同网段:配置网段即可默认添加静态路由。获取对端MAC直接发包

    • 跨网段:配置网关路由。获取网关MAC地址发包

    • 动态路由:BGP/OSPF等,路由表在动态变化
    • 路由是网状的,不一定是对称的 image.png

课中问题:

  • 路由是工作在哪一层?
     IP层
    
  • 路由是改的IP地址吗?
     路由改的是MAC地址,从而找到发包口
    

image.png

  • 怎么找到下一跳的路由Mac呢?
      通过ARP协议寻找
    
  • ARP协议:查找下一跳的MAC

    • ARP广播/应答:协议原理

    • 免费ARP:主动广播告知MAC地址

      • 能够提前判断IP是否有冲突
        
    • ARP代理:虚拟网络/伪造MAC地址

  • 逻辑同网段才能发送ARP
    
  • ARP请求广播,ARP应答单薄
    

课中问题:

  • MAC地址为什么不能代替IP地址呢?
    
    • 为了使不同的协议统一起来
      
  • IPV4不够用,一般如何解决呢?
    
    • 除了IPV6还有NAT
      
  • NAT:将多个内部地址映射到一个IP地址进行外部联网

    • NAT上网:家用路由器
    • NAT出网:机房内网主机上外网
    • NAT原理:注意不仅仅是源地址变换,源端口/校验和/SEQ等都会变化(源地址+端口)

2. 网络传输协议

  • 数据包:本质上是一段内存,里面存储的内存是有序的,一般是按照TCP/IP的多层协议去封装。拆包/封包都是按照协议去写内存/读内存。

  • DNS递归迭代(基于UDP协议)

image.png

  • UDP

    • 协议简单
    • 需要考虑可靠性的场景使用复杂

image.png 总结:想发什么包,就分配一个UDP头,把payload里面塞数据发出去就好!

课中问题:

-  怎么保证协议可靠呢?
    TCP协议
  • TCP

    • 三次握手:确认传输的序列号/MSS/Option字段,建立连接
    • TCP连接:是一个虚拟的概念,本质上两倍维持一段内存,记录连接状态,就是session
    • TCP传输:理解sequence number/acknowledge number

image.png

  • 丢包重传:理解丢包怎么感知并重传,理解快速重传发生在什么时候
  • 滑动窗口:课后自学
  • 流量控制:课后自学
  • 拔了网线,连接会断吗?
         拔了网线和TCP之间没有强耦合的关系,拔了网线在某些场景未必会断开,
      但TCP中途会发包确认连接是否还存在,所以一般情况下,拔了网线就收不到包,
      因此就会断开连接
      
    
  • 为什么要TimeWait?
      Timewait可以确保连接正常关闭,防止上一次的packet丢失
    
  • HTTP
    • HTTP比TCP好在哪里:方便
    • HTTP1.1的优化:长连接是重点
    • 为什么不直接用tcp呢?
        其实http只是多加了一层规矩,http依然是tcp,只是这个规矩让用户更加清晰,
        兼容协议。
      
  • HTTPS

    • HTTPS的产生背景:加密/可靠/防劫持
    • SSL/TLS握手:非对称加密/对称加密

3. 网络优化

  • HTTP2.0

    • 多路复用:依然有队头阻塞

image.png

  • 单个TCP连接通道
    
    • 如果TCP丢包了怎么办?
      会有队头阻塞,后面的包都需要等待
      

  • QUIC

    • QUIC的产生背景和背后思考:

      • 为什么在用户态实现?内核的更新迭代频率较低,不好推广
      • 为什么用UDP?TCP的队头阻塞问题不好解决,推倒重来&复用所有操作系统基本都支持的底层协议

  • 数据中心建设

    • 多运营商接入:同运营商内部访问,避免跨运营商的流量
    • 有边缘机房/汇聚机房/中心机房
  • CDN静态缓存系统:边缘机房的建设,优先访问边缘机房,缓存命中视频/图片等静态内容

  • DSA动态加速系统:分四层/七层动态加速。核心在于利用可控节点做路径探测和规划。

4. 网络稳定

  • 对容灾的理解

  • 网络容灾的具体案例

    • 机房专线故障:环路容灾,避免某条专线故障导致机房孤岛问题(专线是连接各个机房的网络物理路径)

    • 单机房接入节点故障:DNS容灾,摘除故障的节点-字节GTM系统

    • 云控容灾:云端交互,服务器/云上下发命令到终端-字节TNC系统

    • cache容灾:源站不可用,降级到之前的缓存内容-字节TLB/ByteCDN等系统的容灾建设

  • 故障排查

    • 加强故障沟通-明确故障
    • 故障止损要在第一时间做(灾备预案的建设)
    • 熟悉常用的故障排查命令
  • 常见故障排查命令

image.png

  • 故障排查的具体案例

    • 服务端配置异常(健康检查异常)

    • 客户端某个例异常(客户端自己配置错误)

    • 外部运营商故障

    • 复杂故障的排查:需要抓包,具体问题具体分析