对计算机网络的探索 | 青训营笔记

131 阅读5分钟

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

1网络传输中的协议

1.1 ARP协议

  • 逻辑同网段才能发送ARP

  • ARP请求广播,ARP应答单播

  • 免费ARP --新增了一台服务器,发送免费ARP,让其它服务器进行刷新

    ​ --某个服务器新增了一个IP,提前发送免费ARP,提前发现同IP冲突

  • ARP代理

    中间设备先应答,劫持ARP请求,再回应将数据具体发送到哪个服务器

  • ARP本质就是查找下一跳MAC

1.2IP协议

MAC地址不能代替IP地址原因:IP地址对二层网络进行了统一,二层协议太多,没办法统一,因此IP地址对下层进行了封装,对网络传输进行了统一

1.3NAT

image.png 举个NAT的例子:

如果内部网络地址为10.0.1.1的主机希望访问互联网上地址为135.2.1.1的web服务器时,那么它会产生一个源地址S=10.0.1.1,端口号为3342;目的地址D=135.2.1.1,端口号为80的分组,当分组1到达执行网络地址转换的路由器时,该路由器就需要将分组1的源地址从内部专用IP地址转换为全局IP地址。转换后的结果为:源地址S=200.0.1.1,端口号为5001;目的地址D=135.2.1.1,端口号为80的分组

在不同局域网的内部网络的IP地址可以重复,大家都由NAT向外传输数据。

2.网络传输

2.1数据包的发送

image.png

2.2TCP协议

  • TCP的KeepAlive(保活)初衷

    1.客户端和服务器需要了解什么时候终止进程或者与对方断开连接

    2.应用进程之间没有任何数据交换,但仍然需要通过连接保持一个最小的数据流 KeepAlive是通过一个保活计时器实现的。当计时器被激发,连接一端将发送一个保活探测报文,另一端接收报文的同时会发送一个ACK作为响应。

  • 拔了网线,连接会断吗?

    如果有tcp的保活,则会断开;如果没有则不断开

    在握手过程和传输数据过程中seq和ack的变化

image.png seq是我方发送数据部分的第一位在整个data stream的位置,会根据传输了的信息长度进行改变

ack是期望对方的下一次seq是多少,它与当前接收的数据包的seq和数据长度有关

image.png

2.3HTTP协议的迭代

http是对TCP的再封装,它让用户更清晰,更简洁

  • http1.1协议的优化

    • 长链接
    • 部分传输
    • Host
    • 缓存
  • https:对传输中的消息进行加密

    https是http协议的安全版本,是通过数字证书对客户端的验证

  • http2是对http1.1的升级

    http2协议新特性

    • 连接方式
    • 多路复用
    • 二进制协议帧
    • 服务端推送 http2.0多路复用,网好的环境下传输快,可以一次传多个请求,但当网络环境不好,会有队头阻塞的问题,而根据TCP协议,是要全部重传的,这样效率也会下降的。

TCP对此也进行了优化,option中指定要重传的序列化,只传丢掉的包就可以,但本质上没有解决队头堵塞问题

  • http3.0

    http3.0目前处于制订和测试阶段,是未来的全新的http协议,http3.0协议运行在QUIC协议之上,是在UDP的基础上实现了可靠传输,权衡传输速度与传输可靠性并加以优化,使用UDP将避免TCP的队头阻塞问题,并加快网络传输速度,但同样需要实现可靠传输的机制,http3.0不是http2.0的拓展,http3.0将会是一个全新的协议。

3网络提速

  • 对协议进行优化

    1.多路复用,但在弱网环境下有队头阻塞问题

    2.使用http3.0,解决了队头阻塞问题

  • 网络路径优化

    1.数据中心分布

image.png 2.同运营商访问

image.png 3.静态资源(图片视频)路径优化(CDN)

对静态资源进行一个缓存,在边缘机房做一些缓存,先检查是否有缓存,如果没有,再去找汇聚机房,然后再核心机房

image.png 4.动态API(播放/评论接口)路径优化(DSA)

image.png

4.网络稳定

4.1容灾的概念

指在相同间隔较远的异地,建立两套或多套功能相同的IT系统,互相之间可以进行健康状态监视和功能切换,当一处系统因意外(如火灾/地震等)停止工作时,整个应用系统可以切换到另一处,使得该系统功能可以继续正常工作。

4.2容灾过程

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

4.3容灾具体案例

  • 具体案例1

image.png

  • 具体案例2

image.png

  • 具体案例3

image.png 场景局限性:①web页面访问,无法嵌入sdk ②权限限制

  • 具体案例4

image.png

4.4故障排查

image.png

  • 故障明确

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

    • 先止损再排查

    • 如何止损

    -   组件没有容灾,但是系统有没有?
    
    -   降级
    
  • 分段排查

    • 客户端排查

      • 客户端访问其他服务没问题吗?
      • 其他客户端访问目标服务没问题吗?
    • 服务端排查

      • 服务端监控/指标都正常吗
      • 手动访问一下正常吗
      • 分组件排查
    • 中间链路排查

      • 服务端跟客户端确保都没问题
      • 中间网络设备有没有问题?(交换机/路由器/网关LB)
      • 旁路的DNS有没有问题?
  • 网络故障排查常用命令

    • dig查询DNS问题
    • ping/telnet/nmap查询三层/四层连通性
    • Traceroute排查中间链路 ,丢包吗
    • iptables 查询客户端 防火墙的问题?
    • tcpdump

4.5 排查具体案例

  • 具体案例1

image.png 健康检查发生异常,导致正常结点被摘掉

  • 具体案例2

image.png

  • 具体案例3

image.png

  • 具体案例4

image.png

4.6故障预防很重要

image.png

4.7总结

image.png