从事linux C开发工作以来,工作内容主要是在应用层,对nginx和unbound等软件有些了解,也常对这2个软件进行二次开发. 对网络这块一直比较有兴趣.也很好奇网卡到底是怎么接受到报文的,以及报文如何被应用层所接受.自己在网上学习了一下,做个简单总结. 以飨后人.基本上我觉得分以下几个部分: 一.预备知识 1.PCI设备是有标准的,就是说PCI设备必须在固定位置包含公司.设备等信息,这样内核启动的时候读取出来,并保存在 struct pci_dev中.最终将所有PCI设备,组织成一个链表结