pwru 详解:基于 eBPF 的 Linux 网络丢包追踪神器
pwru 详解:基于 eBPF 的 Linux 网络丢包追踪神器 在复杂的 Linux 网络环境中(尤其是 Kubernetes, Docker, Cilium 场景),丢包排查往往是运维人员的噩梦。当常规的 tcpdump、ping、iptables-save 无法解释数据包为何消失时,你需要一把“手术刀”来剖析内核的网络协议栈。 这就是 pwru (Packet Where aRe ...
pwru 详解:基于 eBPF 的 Linux 网络丢包追踪神器 在复杂的 Linux 网络环境中(尤其是 Kubernetes, Docker, Cilium 场景),丢包排查往往是运维人员的噩梦。当常规的 tcpdump、ping、iptables-save 无法解释数据包为何消失时,你需要一把“手术刀”来剖析内核的网络协议栈。 这就是 pwru (Packet Where aRe ...
项目挑战:用 C 语言从零实现 eBPF 网络追踪器 (C-pwru) pwru 是一个神奇的工具,它能告诉你在 Linux 内核里“包去哪了”。虽然原版是用 Go 编写的,但作为追求极致性能和底层掌控力的开发者,我决定发起一个挑战:用纯 C 语言和 libbpf 实现一个功能对标的 C-pwru。 本文是该项目的里程碑计划书(TODO List)。 1. 项目目标 实现一个命令行工...
lsof 网络排查实战:不仅是查看端口,更是系统透视眼 在 Linux 的世界里,“Everything is a file”(一切皆文件)。这是理解 lsof (List Open Files) 强大之处的关键。 对于 socket、管道、设备、目录,内核都把它们当作文件来处理。因此,lsof 不仅仅是一个查看“谁占用了端口”的工具,它是一个能将网络连接、进程信息和文件系统关联起来的透...
IPSec 协议深度解析:原理、架构与实现细节 IPSec(Internet Protocol Security)并不是单一的协议,而是 IETF 制定的一整套为 IP 网络提供安全性的协议族。它工作在 OSI 模型的网络层(Layer 3),这意味着它可以透明地保护上层的所有协议(如 TCP、UDP、ICMP),而无需应用程序进行任何修改。 本文将深入拆解 IPSec 的核心组件、工作...
使用 IPSec 应对网络嗅探与侦测危害 在开放的局域网或不可信的公网链路上,网络嗅探(Sniffing)是攻击者收集敏感信息、探测网络拓扑的第一步。IPSec(Internet Protocol Security)作为一种工作在网络层(Layer 3)的安全协议栈,通过加密和认证机制,从底层瓦解了嗅探侦测的有效性。 本文详细分析 IPSec 抵御嗅探攻击的核心机制及其在实战中的防护价值...
gRPC Resolver 机制详解 gRPC 的 Resolver(解析器)机制是其客户端侧负载均衡(Client-side Load Balancing)的核心组件。它的主要职责是将一个服务名称(Target URI)解析为一组后端服务器地址(Addresses)。 本文档详细拆解该机制的工作流程、核心组件以及它在本项目(基于 Consul)中的运作方式。 1. 核心流程:从名字到...
穿透 VPN 的迷雾:为什么 eBPF 是监控真实进程流量的唯一选择 在现代开发环境中,我们经常会使用 VPN、WireGuard 或系统级代理进行工作。但这给系统监控带来了一个巨大的麻烦:流量归属错误。 如果你使用传统的监控工具,你会发现带宽占用最高的永远是你的 VPN 软件,而真正产生流量的“元凶”却躲在幕后。 1. 传统工具的局限:被“遮蔽”的真相 传统的网络监控工具(如 ss...
Snowflake (雪花算法) 详解 在分布式系统中,生成全局唯一且有序的 ID 是一个常见需求。Twitter 开源的 Snowflake(雪花算法) 是目前最流行的解决方案之一。 它可以在分布式系统中生成唯一的 ID,并且 ID 大致保持有序(按时间递增)。 核心思想 Snowflake 生成的 ID 是一个 64 位的整数(int64)。这 64 位被划分成不同的部分,每一部...
MySQL SSL 开发环境配置与排查深度复盘 本文档详细记录了在 Docker 环境下配置 MySQL 8.0 SSL 开发环境的全过程。按排查逻辑顺序组织,还原从报错到解决的完整上下文。 第一阶段:起因与初次报错 1. 目标 我们需要在开发环境(Docker)中运行 MySQL,并将端口 3306 映射到宿主机的 33306,以便本地工具(如 Gobang, DBeaver)连...
Context 超时自动取消场景详解 context.WithTimeout 是 Go 语言中最常用的 Context 变体之一,用于设置操作的最大执行时间。当超时发生时,会自动取消所有基于该 Context 的操作。 目录 基本概念 HTTP 请求超时 数据库查询超时 多服务聚合超时 文件处理超时 带重试的超时控制 Websocket 连接超时 GRP...