如何编写一个简单地内核模块

Linux给应用程序提供了丰富的api,但是有时候我们需要跟硬件交互,访问一些特权级信息,所以可以使用编写内核模块这种方式。
另外Linux是宏内核结构,效率非常高,没有微内核那样各个模块之间的通讯损耗,但是又不能方便的对内核进行改动,可扩展性和可维护性比较差,内核模块提供了一种动态加载代码的方式,弥补了宏内核的不足。

Read More

利用ICMPv4协议实现一个ping程序

Icmp(Internet Control Message Protocol)协议一般与IP协议结合使用,以便给IP协议提供诊断和控制信息。
Icmp通常被认为是Ip协议的一部分,传输的时候也是被封装在Ip报文内。
我们在判断网络状况时用的ping程序就利用了ICMP协议。接下来先运行系统上的ping程序,用tcpdump抓包查看一下传输的数据。
然后解释一下icmp数据报的各个字段。最后思考一下ping程序的结构,然后用c++实现一个自己的ping程序。

Read More