NS2仿真分析无线网络的攻击防御(1)

这个学期有个选题是NS2仿真分析无线网络的攻击防御,比较有意思的样子,现在来慢慢学一下这个是什么东西。

首先,还是一篇文章(老长老长了),还是全英文的,还是先来分析一下它到底在说什么,文章太长(78页。。)没有办法全部翻译,找一下有用的说一下。


文章名:SIMULATION OF BLACK HOLE ATTACKIN WIRELESS AD-HOC NETWORKS(据说是硕士课程)

摘要:无线自组织网络是由没有网络基础设施的地方任意移动的无线移动计算机(或节点)建立的临时网络。由于节点相互通信,所以它们通过将数据分组转发到网络中的其他节点来进行协作。节点使用路由协议找到目的地节点的路径。然而,由于路由协议的安全漏洞,无线自组织网络可能受到恶意节点的攻击。其中一个攻击是针对网络完整性的黑洞攻击——它会吸收网络中的数据包。由于数据包由于此次攻击而未到达目的地节点,因此会发生数据丢失。有很多的检测和防御机制可以消除进行黑洞攻击的入侵者。在本论文中,我们模拟了各种无线自组网络中的黑洞攻击,并尝试在仿真中找到响应系统。(牙注:从摘要里面看到了胜利的曙光)

第一章是简介,第二章简要介绍了无线网络,包括网络种类,无线自组网路由协议、无线自组网的安全问题(黑洞攻击、灰洞攻击等等)等等。时间紧张,以后再议。


第三章 AODV路由协议中的黑洞攻击

3.1. AODV协议(牙注:附原全名如下:Ad-hoc On-Demand Distance Vector (AODV) Routing Protocol 

AODV路由协议用于在自组网中找到到目的地的路径。为了找到目的地路径,所有节点都使用路由控制消息进行合作。利用很小的控制消息,AODV路由协议可以对动态网络条件、处理能力高低、内存开销大小等变化做出快速适应。与其它路由协议相比,AODV最显著的特征是它为每个路由条目(牙注:翻译不恰,原文如下:route entry)都是用了序列号, 使用目的地序列号是为了确保循环自由度。 AODV确保到目的地的路由不包含循环,是最短路径。

路由请求(RREQ),路由重发(RREP)消息,路由错误(RERR)消息是用于建立到目的地的路径的控制消息,使用UDP / IP协议发送。 这些控制消息的头信息在[13](牙注:[13附在最后])中进行了说明。 当源节点想要与目的节点进行连接时,广播RREQ消息。该RREQ消息从源传播,由源节点的邻居(中间节点)接收 。中间节点向其邻居广播RREQ消息。 该过程继续进行,直到目的地节点或一个具有足够新鲜的路由条目的中间节点(牙注:大概是说这个节点拥有到目标节点的路径序列)接收到分组。 图9显示了如何在自组织网络中传播RREQ消息。


图9  传播RREQ消息

新鲜度意味着中间节点具有到目的地的有效路由形成一段时间低于阈值。当RREQ分组在网络中传输的时候经过的每个中间节点都将跳数加1。如果一个中间节点收到一个RREQ ID相同的RREQ报文,它将默默丢弃新接收的RREQ包。当目标节点或者拥有到目标节点新鲜路由表的节点收到RREQ包时,它们将创建一个RREP(路由重发消息)消息,利用累积跳数和目标节点序列来更新路由表,之后将RREP消息单播到源节点。广播RREQ和单播RREP之间的区别可以从图9和图10中看出。虽然RREQ和RREP消息由中间节点转发,但中间节点更新其路由表并保存该路由条目3秒(牙注:懵逼……等我回头来过……),这是AODV协议的ACTIVE_ROUTE_TIMEOUT常数值。 AODV协议的默认常数值列在RFC-3561 [13]的附录中。 因此,节点知道到达目的地的邻居。 在术语中,目的地的邻居列表被标记为“Precursor List”。 图10展示了RREP消息如何单播以及中间节点中的路由条目如何更新。

图10 单播RREP消息


3.2序列号

序列号起到时间戳的作用,并用于比较节点之间的信息的新鲜度当节点发送任何类型的路由控制消息RREQ,RREP,RERR等时,它增加自己的序列号。越高的序列号代表越准确的信息,拥有最大序列号的那个节点的信息就会被考虑,其他节点就会根据这个节点的信息来完善路由表。(牙注:这个节点秀逗了怎么办……)

序列号是32位无符号整数值(4294967295)。 如果节点的序列号达到可能的最高序列号4294967295,则将其重置为零(0)。 如果节点中当前存储的序列号减去AODV路由控制消息的序列号小于0,则将节点存储的序列号随着输入的控制信息的序列号改变。

在图11中,当节点2转发来自节点3的RREP消息时,它将其自己先前存储的序列号与节点3的序列号进行比较。如果它发现序列号比其自身更新,则它改变其路由表条目

   图11 序列号更新

3.3黑洞攻击

在使用AODV协议的自组织网络中,黑洞节点吸收网络流量并丢弃所有数据包。 为了解释黑洞攻击,我们添加了一个恶意节点,在上一节的图形情况下展现黑洞行为。


图12 黑洞攻击

在这种情况下,如图12所示,我们假设节点3是恶意节点。 当节点1广播节点4的RREQ消息时,节点3立即使用包括节点4的最高序列号的RREP消息立即响应,就好像它来自节点4一样。节点1就猜想节点4在距离节点3一跳的地方,它丢弃了来自节点2的RREP数据包,开始向节点3传输数据包,相信这些数据包能够到达节点4,但实际上节点3将这些数据包全部丢弃了。

在黑洞攻击中,一段时间后,发送节点会因为接收节点不发送TCP ACK数据包了解到存在链路错误。 如果发送节点发送新的TCP数据包并发现目的地的新路由,那么恶意节点仍然设法欺骗发送节点。 如果发送节点发出UDP数据包,则不会检测到问题,因为UDP数据连接不等待ACK数据包。

在我们的方案中,我们使用UDP数据包,我们将在第5章中解释我们的场景及其结果。在第5章之前,我们将介绍如何在模拟器程序NS(网络模拟器)中实现洞行为。


[13] C.Perkins, “(RFC) Request for Comments – 3561”, Category: Experimental, Network, Working Group, July 2003.

第三章翻译结束,有不对的地方请批评指正。有疑虑的地方我会在解决之后重新修改上传。接下来几章内容详见之后博文。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/508610.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Java集合之HashMap源码分析

以下源码均为jdk1.7 HashMap概述 HashMap是基于哈希表的Map接口的非同步实现. 提供所有可选的映射操作, 并允许使用null值和null健. 此类不保证映射的顺序. 需要注意的是: HashMap不是同步的. 哈希表 哈希表定义: 哈希表是一种根据关键码去寻找值的数据映射结构, 该结构通…

NS2相关学习——可靠的MANET应用程序的Gossip协议分析

好久不写,应该努力啦!老师把这篇论文给了我,现在还不知道它在讲什么,来边翻译边学习吧! 文章链接:https://www.researchgate.net/publication/316844643_Analyzing_Gossip_Protocols_for_Reliable_MANET_Ap…

Java集合之LinkedList源码分析

概述 LinkedLIst和ArrayLIst一样, 都实现了List接口, 但其内部的数据结构不同, LinkedList是基于链表实现的(从名字也能看出来), 随机访问效率要比ArrayList差. 它的插入和删除操作比ArrayList更加高效, 但还是要遍历部分链表的指针才能移动到下标所指的位置, 只有在链表两头的…

lex和yacc环境配置

lex和yacc的使用很简单,但环境配置却是各种问题,本章说明lex和yacc在windows下的环境配置。 软件需求: 系统 win7-64位(win7-32, win8, win10全部通过) c编译器: vs2010(2008,2013,2015也全部通过) lex和yacc编译器&#xff1a…

Java集合之Vector源码分析

概述 Vector与ArrayLIst类似, 内部同样维护一个数组, Vector是线程安全的. 方法与ArrayList大体一致, 只是加上 synchronized 关键字, 保证线程安全, 下面就不具体分析源码了, 具体可以查看ArrayList中的源码分析. Vector源码分析 1.主要字段 2.构造函数 3.增删改查 其他方法…

Gossip协议的P2P会员管理

阅读此论文主要目的在于理解gossip协议及其背后的原理,此部分详细翻译,其余部分看时间 文章标题:Gossip协议的P2P会员管理 作者:Ayalvadi J. Ganesh, Anne-Marie Kermarrec, and Laurent Massoulie Abstract:基于…

Java集合之LinkedHashSet源码分析

概述 LinkedHashSet与HashSet类似, 不同的是LinkedHashSet底层使用LinkedHashMap维护元素插入的顺序. LinkedHashSet继承自HashSet, 只是重写了HashSet的构造方法, 初始化一个LinkedHashMap, 其他均与HashSet相同. LinkedHashSet构造方法 HashSet的构造方法: 以上几乎就是Li…

Java集合之ArrayList源码分析

概述 ArrayList可以理解为动态数组, 根据MSDN的说法, 就是Array的复杂版本. 与数组相比, 它的容量能动态增长. ArrayList是List接口的可变数组的实现. 实现了所有可选列表操作, 允许包括null在内的所有元素. 数组的特点, 查询快增删慢. 每个ArrayList实例都有一个容量, 该容…

Java集合之Hashtable源码分析

概述 Hashtable也是基于哈希表实现的, 与map相似, 不过Hashtable是线程安全的, Hashtable不允许 key或value为null. 成员变量 Hashtable的数据结构和HashMap一样, 采用 数组加链表的方式实现. 几个成员变量与HashMap一样: 方法 Hashtable的方法与HashMap基本一样, 只是 Ha…

视频质量检测中的TP、FP、Reacll、Precision

在看论文《Measuring Vedio QoE from Encrypted Traffic》的时候看到TP(True Positives)、FP(False Positives)、Precison、Recall的概念,这属于数据挖掘方面的内容,学习之后特来记录。 首先,下…

Java集合之LinkedHashMap源码分析

概述 HashMap是无序的, 即put的顺序与遍历顺序不保证一样. LinkedHashMap是HashMap的一个子类, 它通过重写父类的相关方法, 实现自己的功能. 它保留插入的顺序. 如果需要输出和输入顺序相同时, 就选用此类. LinkedHashMap原理 LinkedHashMap是如何保证输入输出顺序的呢? L…

Java集合之HashSet源码分析

概述 HashSet是基于HashMap来实现的, 底层采用HashMap的key来保存数据, 借此实现元素不重复, 因此HashSet的实现比较简单, 基本上的都是直接调用底层HashMap的相关方法来完成. HashSet的构造方法就是创建HashMap: 基本操作 1.添加操作 2.删除操作 3.迭代器 其他方法基本也是调…

三次握手wireshark抓包分析,成功握手和失败握手

转载之前:基于HTTP的视频流中,客户端有时会打开使用多条TCP与服务器连接,为了验证每一对话的sessionID是否相同,使用wireshark进行了抓包分析(抓到的都是加密的包,无卵用orz....),这…

Java 内部类及其原理

Java中实现内部类 内部类相信大家都用过很多次了,就不说它是怎么用的了。 内部类 1.成员内部类 需要注意的是, 当成员内部类拥有和外部类同名的成员变量或这方法时, 默认情况下访问的是内部类的成员, 如要访问外部类的同名成员&…

Java8 Lambda表达式

概述 lambda表达式, 是Java8中的一个新特性。可以理解为一个匿名函数。 lambda表达式可以理解为将一个函数浓缩为一行代码,使代码更加简洁紧凑。 lambda表达式语法: (parameters) -> statement; 或 (parameters) -> {statements;} 参…

Java8 方法引用

概述 方法引用是用来直接访问类或实例阴茎存在的方法或者构造方法.它需要由兼容的函数式接口(lambda表达式中用到的接口)构成的目标类型上下文. 有时候, 当我们想要实现一个函数式接口的方法, 但是已经由类实现了我们想要的功能, 这时可以使用方法引用来直接使用现有的功能实现…

配置过程中的一些问题

一、 Tomcat相关问题 1、百度经验有设置用户名密码,但是按照步骤进行,到测试的时候发现还是错误的。 解决:在设置的时候应该stop Tomcat,在设置好之后再重新开启Tomcat,发现可以。 2、把web项目加入Tomcat&#xff0…

流媒体通信协议HLS与DASH的对比

简单了解 HLS(HTTP Live Streaming)协议 是由苹果公司实现的基于HTTP的流媒体通信协议,并成为Quick TIme X和IPhone软件系统的一部分。苹果的IPad也有支持HLS的能力。 HLS传出的视频文件为基于MPEG2文件的切片,每个媒体切片在服务器上单独存放。在一个流…

Activity的四种启动模式和onNewIntent()

Android中Activity启动模式详解 在Android中每个界面都是一个Activity,切换界面操作其实是多个不同Activity之间的实例化操作。在Android中Activity的启动模式决定了Activity的启动运行方式。 Android总Activity的启动模式分为四种: Activity启动模式设置…

Java8 默认方法

概述 Java8新增了接口的默认方法。使用default关键字。 默认方法就是接口可以有实现方法,而且不需要实现类来实现其方法。相对于JDK1.8之前的接口来说,新增了可以接口中实现方法。 可以说在接口中实现方法一部分原因是为了lambda表达式服务的&#xf…