[保留]使用DLPI来编写协议分析工具http://www
chinaunix
net作者:stevens_wu发表于:2007-12-1317:10:35【发表评论】【查看原文】【C/C++讨论区】【关闭】系统环境:solaris10forx86,gcc3
3,100M快速以太网(偶是个初学者,本文难免存在错误,希望大家多多指教)前一阵子要写一个简单的arp协议的分析程序,在翻阅了一些资料以后,决定使用libpcap库来实现,但是后来涉及到写链路层数据的缘故(另外一个程序,这个程序就是发送一个假冒的arprequest,在本文没有实现,今后有空再整理吧),所以放弃了libpcap
由于本人使用的是solaris环境,所以无法使用bpf,但是sun公司仍然为开发者提供了一个与设备底层无关的接口DLPI,DLPI的全称是DataLinkProviderInterface,通过DLPI开发者可以访问数据链路层的数据包,在早期的sunos系统中基本上采用的是NIT设备,但是现在solaris系统都使用了DLPI
关于DLPI的具体介绍大家可以访问网站www
opengroup
org/pubs/catalog/c811
htm,我这里就不多说了
在搜索了许多资料之后发现目前关于DLPI的编程资料不多,没有具体的过程,后来翻阅了NealNuckolls写的一篇文章HowtoUsetheSTREAMSDataLinkProviderInterface(DLPI),根据例子做了修改(主要是提供了协议分析的部分),现在把编写一个DLPI过程共享一下,希望能对大家有所帮助
建议大家可以先看看NealNuckolls的文章,其中有部分涉及到流编程的,可以参考http://docs
com/app/docs/doc/816-4855的streamsprogrammingguide(