IPv6下的DAD检测

欢迎转载,转载请务必注明出 处:http://blog.csdn.net/alading2009/article/details/46346501

  在IPv6环境下,当一个主机企图配置一个IPv6地址时,会先进行地址重复性检测,以确认在链路上该地址的唯一性。这一过程称为DAD(Duplicate Address Detection)。

  比如在启动一个开启了IPv6的网卡时,网卡上会先自动配置一个link-local地址——以fe80开头的地址,在这个地址生效前会进行DAD检测。报文截图如下:

  

  DAD检测的关键就是图中这个NS报文,注意到该报文的源地址为全0,目的地址为一个多播地址,Target指向自己欲配置的IPv6地址。一段时间内,若链路上没有谁回复NA,或者在链路上收到同样结构的NS报文,则认为该地址在链路上具有唯一性,配置生效。

  



  若在检测期间在链路上收到NA报文,情况又会如何?接下来我们可以伪造一个NA报文试一下,该NA报文在链路上通告:fe80::20c:29ff:fed7:5f0d 这个地址已经有人在用了。

  NA报文对主机造成了干扰,干扰结果是DAD检测失败,这个地址在链路上配置失败。

  

  从DAD的整个过程来看,似乎可以通过伪造报文在局域网上做一些捣蛋的事,例如对于每个源地址为::的NS报文,可以组装出一个对应的NA或者NS报文,欺骗主机,干扰其地址的配置,造成主机无法有效的配置IPv6地址。

时间: 2024-10-29 19:29:30

IPv6下的DAD检测的相关文章

【调试】Linux下超强内存检测工具Valgrind

[调试]Linux下超强内存检测工具Valgrind 内容简介 Valgrind是什么? Valgrind的使用 Valgrind详细教程 1. Valgrind是什么? Valgrind是一套Linux下,开放源代码(GPLV2)的仿真调试工具的集合.Valgrind由内核(core)以及基于内核的其他调试工具组成. 内核类似于一个框架(framework),它模拟了一个CPU环境,并提供服务给其他工具:而其他工具则类似于插件 (plug-in),利用内核提供的服务完成各种特定的内存调试任务.

ipv6下jdbc的连接数据库方式

ipv6下jdbc的连接数据库方式 MySQL: ipv4 Driver URL:           jdbc:mysql://127.0.0.1:3306/database   ipv6 Driver URL:  jdbc:mysql://address=(protocol=tcp)(host=fe80::a00:27ff:fec3:87c7)(port=3306)/database  驱动要求:jdbc连接驱动需要大于5.1.31以上,之前我没注意到这个问题,一直使用项目上统一的5.1.6

linux下u盘检测程序

       获得U盘的插入或者拔取得信息的传统方法是在内核级运行hotplug程序,相关参数通过环境变量传递过来,再由hotplug通知其他关注hotplug的应用程序,但是效率比较低.      网上查找知道:    用户空间的程序与设备通信的方法,主要有以下几种方式, 1. 通过ioperm获取操作IO端口的权限,然后用inb/inw/ inl/ outb/outw/outl等函数,避开设备驱动程序,直接去操作IO端口.(没有用过) 2. 用ioctl函数去操作/dev目录下对应的设备,这

linux下的键盘检测

话说,仅仅是一个键盘检测就好麻烦.我还是懂的太少了... #include <stdio.h> #include <stdlib.h> #include <unistd.h> #include <errno.h> #include <fcntl.h> #include <stdio.h> #include <termios.h> #include <unistd.h> #include <string.h

linux下内存泄露检测工具Valgrind

日前在linux开发一个分析实时路况的应用程序,在联合测试中发现程序存在内存泄露的情况. 这下着急了,马上就要上线了,还好发现了一款Valgrind工具,完美的解决了内存泄露的问题. 推荐大家可以使用看看. Valgrind是运行在Linux上一套基于仿真技术的程序调试和分析工具,它的主要作者是获得过Google-O'Reilly开源大奖的Julian Seward,它包含一个内核──一个软件合成的CPU,和一系列的小工具,每个工具都可以完成一项任务──调试,分析,或测试等.Valgrind可以

linux下内存泄露检测工具Valgrind介绍

目前在linux开发一个分析实时路况的应用程序,在联合测试中发现程序存在内存泄露的情况. 这下着急了,马上就要上线了,还好发现了一款Valgrind工具,完美的解决了内存泄露的问题. 推荐大家可以使用看看. Valgrind是运行在Linux上一套基于仿真技术的程序调试和分析工具,它的主要作者是获得过Google-O'Reilly开源大奖的Julian Seward,它包含一个内核──一个软件合成的CPU,和一系列的小工具,每个工具都可以完成一项任务──调试,分析,或测试等.Valgrind可以

java中在linux下利用jstack检测死锁

首先,编写一个死锁程序 1 package deadlock; 2 3 public class testJstack { 4 final static Object resource_1 = new Object(); 5 final static Object resource_2 = new Object(); 6 7 public static void main(String[] args) { 8 Thread t1 = new Thread("t1") { 9 publi

嵌入式linux下自动定时检测硬盘空间并删除旧文件脚本

#! /bin/sh while true; do i=`df -h | egrep '/mnt/yourpath'| awk '{print $5}' | cut -d "%" -f1 -` if [ "$i" -ge 90 ] then echo "disk nearly full" cd /mnt/yourpath for file1day in `ls -d */ | sort -n | cut -d "/" -f1

chrome下使用JS检测浏览器是否使用开发者工具

在浏览网页的时候无意中看到一个检测浏览器是否使用开发者工具方法,特此记录 代码示例: 1 (function(){ 2 var re=/x/; 3 var i=0; 4 console.log(re); 5 6 re.toString=function(){ 7 return '第'+(++i)+'次打开控制台' 8 } 9 })(); 原理如下: 控制台输出的内容如果是对象(包括正则表达是对象),则保留的是对象的引用,输出的 会是对象的实时值,即对象内容被改变时,能够反映其变化(前提是重新开启