内核与系统
Linux 内核源码剖析、操作系统原理、虚拟化与底层系统编程。
-
Apple M2+QEMU/HVF平台上OpenHarmony OS无法正常启动的解决方案与调试心得
只需要解决方案的读者请直接跳转至第六节TLDR,本文正文部分将以调试者的视角,从只有一个地址开始,抽丝剥茧、条分理析,发掘出所有问题的根本原因。
-
raw套接字和隧道设备(tap/tun)的区别
今天遇到一个很有意思的问题:clash使用隧道设备(为了形式上一致起见,下文直接用tun代替),用以在用户态直接读取L3数据包;使用raw套接字的程序,例如libpcap,也可以直接读取L3数据包。那这两个东西有什么区别?
-
【虚拟化】QEMU/KVM(一)——QEMU基本组件
本篇介绍QEMU的事件循环机制、QOM和线程模型,从而为更深入地了解QEMU的具体部件做准备。
-
网络攻防(二):二进制索命——Fawkes靶机
Harry Potter系列靶机的作者脑洞大开,讲述了哈利波特和伏地魔对决的故事。Fawkes是这个系列的最后一个靶机,非常有趣,特别是其中二进制分析的内容很有挑战性,在这里写下经验。
-
【Linux】内核番外篇(一)——内核编译和链接
万丈高楼平地起,内核的映像再复杂,也是由一个一个的文件编译、组装而成的,只不过其中的门道要比作业和Lab里的技术复杂太多了。本篇将对内核编译作一个简单的探索。
-
【Linux】网络专题(六)——网络栈重传时机梳理
在上一节中我们从tcp_ack自顶向下分析,找到了网络栈的重传入口——__tcp_transmit_skb,本节我们会尽可能全面地梳理该函数是从哪条路径被调用到的。
-
【Linux】网络专题(四)——核心数据结构sock族类和net_device
本篇介绍网络栈中使用的核心数据结构sock和net_device,从而帮助我们更快更透彻地理解网络栈的实现细节。
-
【Linux】网络专题(五)——TCP拥塞控制
一般而言,拥塞的时候会出现很多问题,其中尤为频发的是报文段丢失和乱序。丢失的可能原因有不少,例如路由器转发队列满时丢弃,甚至可能是随机早期丢弃(RED);乱序就是到达先后顺序颠倒,乱序的报文可能走过了不同的转发路径,其转发排队时间、链路传播时间等都可能不一样,进而抹平乃至逆转了发送的先后时差。
-
【Linux】网络专题(二)——核心数据结构sk_buff
本篇介绍网络栈中使用的核心数据结构sk_buff,从而帮助我们更快更透彻地理解网络栈的实现细节。
-
【Linux】网络专题(三)——L4/L3数据通路
有了对sk_buff、sock和net_device的了解,我们接着介绍传输层数据通路,这里将以TCP为例。本节只介绍数据通路,要讲协议本身又需要很大篇幅,需要另开一篇文章。