关于
我的公众号
QQ群:934149291
请喝杯饮料微信:
支付宝:
MPTCP(Multipath TCP)简介
MPTCP(Multipath TCP)简介概述MPTCP(Multipath TCP,多路径 TCP) 是一种对传统 TCP 协议的扩展,旨在允许单个 TCP 连接同时通过多个网络路径(如 Wi-Fi、蜂窝网络、以太网等)传输数据,从而提升吞吐量、提高网络资源利用率,并增强连接的鲁棒性(容错能力)。
为什么需要 MPTCP?
传统 TCP 问题
MPTCP 解决方案
单路径传输,带宽利用率低
聚合多路径带宽(Wi-Fi + 4G/5G)
网络切换时连接中断
无缝切换(如从 Wi-Fi 切换到 5G)
无法利用冗余路径提升可靠性
多路径容错(单路径故障不影响服务)
中间设备(NAT)导致路径固化
动态添加/删除路径
✅ 关键价值:在不改变应用层接口的前提下,透明提升吞吐量 40%~100%**(实测聚合 Wi-Fi + 5G 场景),切换延迟 < 100ms**。
MPTCP 的设计目标
提升吞吐量:利用多条路径并行传输数据,充分利用可用带宽。
增强鲁棒性:当某条路径中断时,其他路径仍可维持连接,避免断连。
向后兼容:与传统 TCP 兼容,中间网络设 ...
Shell之echo遇到的困惑
Shell之echo遇到的困惑背景最近用AI写了个脚本,在进行验证时,报了个错:
./scripts/xxx.sh:行67: 32m[2025-09-25:未找到命令
报错的位置是这样的,大致就是调用另外一个脚本,获取脚本的返回值来处理:
... ...
log "提取内核: $kernel_version"
local extract_result
if ! extract_result=$(bash "$SCRIPT_DIR/kernel-extractor.sh" prepare "$kernel_version"); then
error "内核提取失败"
return 1
fi
... ...
这里另外一个脚本使用echo来返回字符串或数组。
尝试用AI修复了几次,没有成功,只能自己去研究研究。后面发现就是这个echo使用的问题。
根本原因及解决办法根本原因在使用echo返回数据的函数中,又使用了echo来打印日志。这样在获取函数返回值时打印的日志会被命令替换$(...)捕获,从而被错误当成返回值被处理。这时 ...
M.2接口浅析
M.2接口浅析M.2 物理接口基础概念什么是 M.2?M.2(原名 NGFF - Next Generation Form Factor)是一种用于内部扩展卡的物理接口规范和外形尺寸标准,主要用于替代 mSATA 和 mini PCIe接口。它支持多种通信协议,包括 PCIe、SATA、USB 等,广泛应用于 SSD、Wi-Fi 卡、蓝牙模块、5G 模块等设备。
核心价值:M.2 提供了小型化、高性能、多协议支持的解决方案,成为现代计算机系统(笔记本、台式机、服务器)的标准扩展接口。
M.2 与相关技术对比
特性
M.2
mSATA
PCIe 插槽
U.2
物理尺寸
小型化 (22x30mm 到 22x110mm)
中等 (50.8x29.85mm)
大型
2.5 英寸硬盘尺寸
协议支持
PCIe、SATA、USB、I2C
SATA
PCIe
PCIe、SATA
最大带宽
PCIe 4.0 x4: 7.88GB/s
SATA 3.0: 600MB/s
PCIe 5.0 x16: 63GB/s
PCIe 4.0 x4: 7.88GB/s
应用场景
SSD、网卡 ...
Linux之apt源同步工具apt-mirror
Linux之apt源同步工具apt-mirror概述最近有个需求,需要将源中所有的包同步到本地进行分析,于是接触到了本文的主角 – apt-mirror.
apt-mirror简介
A small and efficient tool that lets you mirror a part of or the wholeDebian GNU/Linux distribution or any other apt sources.
Main features:
It uses a config similar to APT’s sources.list
It’s fully pool compliant
It supports multithreaded downloading
It supports multiple architectures at the same time
It can automatically remove unneeded files
It works well on an overloaded Internet connection
It never p ...
Linux之Netlink
Linux之NetlinkNetlink 是什么?Netlink 是 Linux 系统中一种 用户态与内核态之间进行双向通信的机制。它被设计为一个基于套接字(Socket)的接口,使用一个基于消息的协议。它弥补了传统 ioctl、procfs 等方法的不足,成为现代 Linux 网络子系统(如 iproute2、iptables、NetworkManager)和内核模块开发的核心通信技术。
可以把它想象成一条专门用于系统控制的“数据总线”:用户态程序通过这条总线向内核发送请求或配置指令,内核也可以通过这条总线主动向用户态程序发送事件通知(如网线被拔掉、有新设备插入)。
为什么需要 Netlink?在 Netlink 出现之前,内核与用户空间的通信主要依赖以下方式,但它们都有明显缺点:
机制
缺点
Netlink 优势
ioctl()
单向通信(用户→内核),简单设备控制,难以传递复杂数据
双向通信,支持复杂结构数据
procfs/sysfs
同步阻塞,效率低,静态参数读写,不适合事件通知
异步通信,支持事件通知(多播)
syscall
扩展困难,破坏 ABI 稳定性 ...
Linux网络之Netfilter简述
Linux网络之Netfilter简述简介
The netfilter project is a community-driven collaborative FOSS project that provides packet filtering software for the Linux 2.4.x and later kernel series. The netfilter project is commonly associated with iptables and its successor nftables.
The netfilter project enables packet filtering, network address [and port] translation (NA[P]T), packet logging, userspace packet queueing and other packet mangling.
The netfilter hooks are a framework inside the Linux kernel that allo ...
Linux内核模块之v4l2loopback虚拟视频设备
Linux内核模块之v4l2loopback虚拟视频设备简介
v4l2loopback - a kernel module to create V4L2 loopback devicesThis module allows you to create “virtual video devices”. Normal (v4l2) applications will read these devices as if they were ordinary video devices, but the video will not be read from e.g. a capture card but instead it is generated by another application. This allows you for instance to apply some nifty video effects on your Zoom video call… It also allows some more serious things (e.g. I’ve been using ...
Linux核外内核模块之EVDI
Linux核外内核模块之EVDI概述EVDI(Extensible Virtual Display Interface) :扩展虚拟显示接口是一个开源项目,它本质上是一个虚拟显示器,允许任何用户空间的Linux程序管理额外的显示器,并接收这些显示器的更新,为用户空间程序提供多屏管理和虚拟显示器控制功能。EVDI兼容标准Linux DRM子系统,可通过xrandr等工具操作。该项目支持 DisplayLink USB 3.0 设备,最低要求Linux内核4.15版本,主要在Ubuntu系统上进行了测试。
这个开源项目包括evdi内核模块和libevdi库的源代码:
evdi内核模块能够管理多个屏幕,允许用户空间程序控制图像的处理。
libevdi库可以被像 DisplayLink 这样的应用程序使用,以便与内核模块进行信息的发送和接收,支持添加、移除虚拟显示器及接收屏幕更新。
pyevdi库是libevdi的一个Python封装。
相关官方资料:
源码:https://github.com/DisplayLink/evdi
文档:https://displaylink.github ...
网络测试之iperf3
网络测试之iperf3概述简介
iperf3The iperf series of tools perform active measurements to determine the maximum achievable bandwidth on IP networks. It supports tuning of various parameters related to timing, protocols, and buffers. For each test it reports the measured throughput, loss, and other parameters.
This version, sometimes referred to as iperf3, is a redesign of an original version developed at NLANR / DAST. iperf3 is a new implementation from scratch, with the goal of a smaller, simpler code bas ...
蓝牙之CTKD跨传输密钥派生
蓝牙之CTKD跨传输密钥派生概述蓝牙中的 CTKD(Cross-Transport Key Derivation,跨传输密钥派生)是蓝牙核心规范(从4.2版本开始引入并逐步完善)中定义的一种安全机制。它的主要目的是简化双模蓝牙设备(同时支持经典蓝牙 BR/EDR 和低功耗蓝牙 BLE/LE)的配对流程,提升用户体验,同时保证安全一致性。
核心问题:为什么需要 CTKD?在双模设备(如智能手机、支持蓝牙的电脑、现代耳机/音箱)出现之前:
设备需要分别配对: 用户需要为同一个物理设备(比如一个耳机)在经典蓝牙模式和低功耗蓝牙模式下分别执行一次完整的配对过程。
用户体验差: 用户可能需要输入两次 PIN 码(或执行两次确认操作),感觉繁琐且不自然。
管理复杂: 设备端需要维护两套独立的链路密钥和安全连接。
CTKD 就是为了解决这个问题而设计的:通过一次配对过程,安全地派生出用于另一个传输层(BR/EDR 或 LE)的连接密钥。
CTKD 的核心思想与机制
“主”配对与“从”派生:
用户只需要在一个传输层上执行一次完整的、安全的配对过程(称为 CTKD 配对传输层)。这次配对 ...
WIFI无线网络之四次握手
WIFI无线网络之四次握手概述Wi-Fi 中的 “四次握手”(4-way handshake) 是指 WPA(Wi-Fi Protected Access) 和 WPA2 安全协议中使用的一个核心过程。它的主要目的是在无线接入点(AP)和客户端设备(STA,如手机、笔记本电脑)之间安全地协商并建立用于加密后续通信数据的密钥(PTK 和 GTK),同时进行相互认证。
这个过程发生在客户端成功关联(Association)到AP之后,但在实际数据传输开始之前。它是确保无线连接安全性的关键一步。
WPA主要过程如下图:
了解整个过程之前,先要了解下这个过程中所涉及到的几种KEY。
KEY介绍
MSK (Master Session Key)由 802.1X/EAP 或 PSK 身份认证后生成的第一个密钥。
PMK (Pairwise Master Key)PMK 是由 MSK 生成,WPA2/PSK 的情况下,当 supplicant 和 authenticator 身份验证后,PSK 变成 PMK。PMK 会驻留在 AP 和所有 Station,不需要进行 key 交换,用它来生成用于加 ...