Linux使用libnet的详解

 更新时间:2013年11月28日 15:38:26   投稿:zxhpj  
最近搬砖需要对libnet进行介绍在这里对知识进行汇总

1libnet简介

在libnet出现以前,如果要构造数据包并发送到网络中,程序员要通过一些复杂的接口来处理。libnet的出现,为程序员提供了一个简单而易于使用的编程接口,可以帮助程序员方便地构造网络数据包,编写网络应用程序。

libnet是一个与libpcap类似的数据包注入器,可以用来编写有关网络测试、网络故障诊断和网络安全等方面的应用程序和工具。

许多网络工具 (如snort,Nmap)都是利用它来实现其部分功能。

libnet提供一系列的接口函数,实现和封装了数据包的构造和发送过程。利用它可以亲自构造从应用层到链路层的各层协议的数据包头,并将这些包头与有效数据有序地组合在一起发送出去。当然,它也是基于TCP/IP协议网络模型的。

全部源代码包括18,000行代码,109个导出函数,其中包括67个建包函数。这使得它支持现有的TCP/IP族的所有协议。

2libnet的特点

libnet是一个小型的接口函数库,主要用C语言写成,提供了低层网络数据报的构造、处理和发送功能。libnet的开发目的是建立一个简单统一的网络编程接口以屏蔽不同操作系统低层网络编程的差别,使得程序员将精力集中在解决关键问题上。

它具有以下特点:

(1)高层接口:libnet被用于提取低 层数据报转移的专用体系结构细节。

(2)低层数据报构建:libnet的一个主要特点就是它完全控制每个数据报的头 域。

(3)可移植性的接口:与具体的操作系统平台无关。libnet目前可以在Windows、Linux、OS、FreeBSD、Solaris等操作系统上运行,并且提供了统一的接口。

(4)数据包构造:libnet提供了一系列的TCP/IP数据报文的构造函数以方便用户使用。

(5)数据包的处理:libnet提供了一系列处理底层网络编程的辅助函数,利用这些辅助函数,帮助用户简化那些烦琐的事务性的编程工作。

(6)数据包发送:libnet允许用户在两种不同的数据包发送方法中选择。

(7)libnet支持TCP/IP协议族中的所有协议。

libnet函数库提供的接口函数包含 15 种数据包生成器和两种数据包发送器(IP 层和数据链路层)。

提供的接口函数包括:

1)内存管理(分配和释放)函数

2)地址解析函数

3)各种协议类型的数据包构造函数

4)数据包发送函数(IP层和链路层)

5)一些辅助函数,如产生随机数、错误报告、端口列表管理等。

利用libnet函数库开发应用程序的基本步骤:

1)数据包内存初始化

2)构造数据包

3)发送数据

4)释放资源

相关文章

  • LINUX中IPTABLES防火墙的基本使用教程

    LINUX中IPTABLES防火墙的基本使用教程

    这篇文章主要给大家介绍了关于LINUX中IPTABLES防火墙的基本使用的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2019-01-01
  • Linux 3.X/4.x/5.x 忘记宝塔面板密码的解决方法

    Linux 3.X/4.x/5.x 忘记宝塔面板密码的解决方法

    在本篇文章里我们给大家整理的是关于忘记Linux 3.X/4.x/5.x 宝塔面板密码的解决方案,有需要的朋友们可以学习下。
    2019-10-10
  • Linux KVM的QCOW2 和 ROW的详解及区别介绍

    Linux KVM的QCOW2 和 ROW的详解及区别介绍

    这篇文章主要介绍了Linux QCOW2 和 ROW的详解及区别介绍的相关资料,需要的朋友可以参考下
    2016-11-11
  • 详解如何在Linux系统上安装cpolar内网穿透

    详解如何在Linux系统上安装cpolar内网穿透

    cpolar作为一款体积小巧却功能强大的内网穿透软件,不仅能够在多种环境和应用场景中发挥巨大作用,还能适应多种操作系统,本文主要介绍了cpolar在Linux系统下的各种应用类型,感兴趣的可以了解下
    2023-08-08
  • Linux下如何启动Oracle命令

    Linux下如何启动Oracle命令

    这篇文章主要介绍了Linux下如何启动Oracle命令问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-05-05
  • 解决linux系统中运行node进程却无法杀死进程的问题

    解决linux系统中运行node进程却无法杀死进程的问题

    这篇文章主要介绍了linux系统中运行node进程无法杀死进程的问题,本文给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-02-02
  • 在Linux中查找命令的执行时间的几种方法小结

    在Linux中查找命令的执行时间的几种方法小结

    在Linux系统中,了解命令的执行时间对于优化系统性能和提高效率至关重要,本文将介绍几种方法来查找命令的执行时间,包括内置的time命令、GNU time工具、strace以及perf工具,需要的朋友可以参考下
    2024-05-05
  • Linux如何创建用户组和用户

    Linux如何创建用户组和用户

    这篇文章主要介绍了Linux如何创建用户组和用户问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-08-08
  • 详解Linux获取线程的PID(TID、LWP)的几种方式

    详解Linux获取线程的PID(TID、LWP)的几种方式

    这篇文章主要介绍了详解Linux获取线程的PID(TID、LWP)的几种方式,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-05-05
  • Linux中在防火墙中开启80端口方法示例

    Linux中在防火墙中开启80端口方法示例

    这篇文章主要介绍了Linux中在防火墙中开启80端口方法示例,具有一定参考价值,需要的朋友可以了解下。
    2017-10-10

最新评论