libnet库的介绍
概述
libnet 库是一个小型的接口函数库,主要用 C 语言写成,提供了低层网络数据包的构造、处理和发送功能。
libnet 库的目的
建立一个简单统一的网络编程接口以屏蔽不同操作系统底层网络编程的差别,使得程序员将精力集中在解决关键问题上。
libnet 库的接口函数分类
包含 15 种数据包生成器和两种数据包发送器(IP 层和数据链路层)。
- 内存管理(分配和释放)函数
- 地址解析函数
- 各种协议类型的数据包构造函数
- 数据包发送函数(IP层和链路层)
- 一些辅助函数,如产生随机数、错误报告、端口列表管理等
libnet 库的安装
sudo apt-get install libnet-dev
libnet 库的使用流程
利用libnet函数库开发应用程序的基本步骤:
- 数据包内存初始化
- 构造数据包
- 发送数据
- 释放资源
以发送 UDP 数据包为例,流程图如下,这里需要注意的是组包的顺序,由上层再到底层,这里为 udp -> ip -> mac,不能反过来。