|
|
51CTO旗下网站
|
|
移动端

IPv6通讯原理 - LadBrokes网址网卡发动进程

本文以CentOS 7为试验环境,创立两个network namespace(姓名分别为ns1和ns2),并经过veth网卡桥接到同一个linux bridge(姓名为br0),来模仿最简略的环境,即两台同二层服务器。

作者:小慢哥Linux运维来历:今天头条|2019-06-18 11:13

 

目录

  • 一. 为什么不能疏忽网卡发动进程
  • 二. 试验环境
  • 三. 网卡发动前/后的姿态
  • 四. 定论写在前
  • Step1. 生成“链路本地地址”
  • Step2. 生成“被恳求节点多播地址”
  • Step3. “多播成员陈述”
  • Step4. “重复地址检测”
  • Step5. “无状况地址主动装备”
  • 思考题
  • 附. 试验脚本与抓包文件

一. 为什么不能疏忽网卡发动进程

把握网络技能,除了看RFC协议外,最直接高效的方法便是“亲眼所见”。

其间抓包剖析是最为要害的方法,能了解到:

  •  What:对应哪个协议
  • Why:协议用处
  • When:协议之间的相关
  • How:报文地址和内容

网卡发动是网络通讯的第一步,只需夯实根底方能展翅高飞。

二. 试验环境

本文以CentOS 7为试验环境,创立两个network namespace(姓名分别为ns1和ns2),并经过veth网卡桥接到同一个linux bridge(姓名为br0),来模仿最简略的环境,即两台同二层服务器。

先贴出mac地址:

  • ns1内的mac:52:54:00:00:00:01
  • ns2内的mac:52:54:00:00:00:02

试验进程:

  • 1⃣ 在ns1里发动网卡,但不抓包检查
  • 2⃣ 在ns2里发动网卡,一起在br0上进行抓包剖析

调查:

  •  ns2会发生哪些包
  • ns1是否会对ns2进行呼应

本文最终会附上试验脚本和抓包文件的下载地址。

三. 网卡发动前/后的姿态

网卡发动前的姿态

在ns2里发动网卡之前,先对ns2里的网络环境进行检查,指令如下:

  1. # 检查网卡状况 
  2. ip netns exec ns2 ip link 
  3.  
  4. # 检查ipv6地址 
  5. ip netns exec ns2 ip -6 addr 
  6.  
  7. # 检查ipv6路由 
  8. ip netns exec ns2 ip -6 route 
  9.  
  10. # 检查ipv6多播地址 
  11. ip netns exec ns2 ip -6 maddr 

IPv6通讯原理(1) - LadBrokes网址网卡发动进程

能够看到此时eth0处于DOWN的状况,接下去,对eth0进行UP。

网卡发动后的姿态

  1. # 发动网卡 
  2. ip netns exec ns2 ip link set eth0 up 

进入ns2里检查:

IPv6通讯原理(1) - LadBrokes网址网卡发动进程

能够看到,此时网卡已发动,并获得了一个链路本地地址(图中fe80最初的)。

抓到了哪些包呢

IPv6通讯原理(1) - LadBrokes网址网卡发动进程

这些包都是什么意思,怎么发生,为何发生,请接着往下看。

四. 定论写在前

网卡发动进程一共有5步,详见示意图(右边的数字,表明对应抓包图中的第几个包):

IPv6通讯原理(1) - LadBrokes网址网卡发动进程

接下来,将对这5步进行逐渐解说。

Step1. 生成“链路本地地址”

IPv6通讯原理(1) - LadBrokes网址网卡发动进程

(本进程没有发生数据包)

 “链路本地地址”是什么

  • 当网卡发动时会依据某种算法主动生成链路本地地址(Link-Local Address)。
  • 详细生成的地址,与操作体系有关,有的依据MAC地址换算而来(EUI-64),有的则是随机生成,并不一致。
  • “链路本地地址”是规模为fe80::/10的单播地址。
  • “链路本地”望文生义,只在同一个二层内传达,不会被LadBrokes网址转发。

“链路本地地址”有什么效果

  • 地址主动装备
  • 街坊发现协议
  • 路由转发(能够作为下一跳地址)

Step2. 生成“被恳求节点多播地址”

IPv6通讯原理(1) - LadBrokes网址网卡发动进程

(本进程没有发生数据包)

 “被恳求节点多播地址”是什么

在IPv6的国际中,每生成一个ip地址(精确说是单播地址),无论什么类型,都会对应生成一个“被恳求节点多播地址”(Solicited-Node multicast address)。

组成方法:FF02::1:FF00:0/104 + 单播地址的最终24bit。能够看到,该地址是经过单播地址推导而成,不是随机的。上图中红框里的地址便是“链路本地地址”对应的“被恳求节点多播地址”。

为什么需求“被恳求节点多播地址”

就4个字:“地址解析”

  •  IPv4顶用ARP做地址解析,ARP是依据播送的。
  •  IPv6没有播送,只需多播。既然是多播,就总得有一个多播地址才行,所以应运而生。

 “被恳求节点多播地址”作业原理

当他人想解析我的MAC地址时,发送一个“地址解析恳求包”到这个多播地址,然后归于该多播地址的成员(也便是“我”)就会收到该数据包,最终“我”回来MAC地址给对方。这样就完结了“地址解析”的流程。

“被恳求节点”这5个字到底是什么意思

他人恳求解析我的地址,那么我便是被恳求的节点。我生成“被恳求节点多播地址”的意图,便是让他人能够恳求到我。

Step3. “多播成员陈述”

IPv6通讯原理(1) - LadBrokes网址网卡发动进程

(对应抓包图中的No. 1/2/4/6)

什么是“多播成员陈述”

  •  MLDv2协议(多播操控协议)中的一种报文类型(Membership Report)。
  • 浅显了解便是对外声称“我要参加某某多播组”。
  • 成员陈述是单向的,不会收到回应包。

为什么要进行“多播成员陈述”

  • 只需生成多播地址,就要进行成员陈述,这是多播的作业机制。
  • 成员陈述的意图是为了削减网络中的多播流量。

要陈述的是哪个成员

  • 要陈述的成员不是单播地址,而是多播地址。
  • 这儿指的便是“被恳求节点多播地址”。即“我要参加ff02::1:ff00:2多播组”

IPv6通讯原理(1) - LadBrokes网址网卡发动进程

Step4. “重复地址检测”

IPv6通讯原理(1) - LadBrokes网址网卡发动进程

(对应抓包图中的No. 3)

什么是“重复地址检测”

  • 为了避免IP地址抵触,每生成一个单播地址,都会进行一次“重复地址检测”(Duplicate Address Detection,简称DAD)。
  • 此时,便是对Step1生成的“链路本地地址”进行检测。

 何时进行“重复地址检测”

  • 在生成单播地址并完结发送一次“MLDv2成员陈述”后,就会随机延时一小段时刻进行检测。
  • 在centos7里检测次数可经过内核参数net.ipv6.conf.eth0.dad_transmits进行修正,若设置为0表明不进行检测。

“重复地址检测”的作业原理

  • 举个比如:我想给我家小狗取名,叫“球球”,但不想和街坊家的小狗重名,所以我大声喊:“球球”。假如没有任何狗狗看过来,那就能够确定此姓名没有抵触。
  • 专业解说:发送一个地址解析包(Neighbor Solicitation,简称NS),恳求解析的地址便是自己的地址,并等候回应,若超时仍未得到回应(Neighbor Advertisement,简称NA),即能够为地址可用。

Step5. “无状况地址主动装备”

IPv6通讯原理(1) - LadBrokes网址网卡发动进程

(对应抓包图中的No. 5/7/8)

什么是“无状况地址主动装备”

在IPv6中,有2种主动装备IP地址的方法:

  • DHCPv6:也叫做“有状况分配”
  • SLAAC:“无状况地址主动装备”(Stateless Address Autoconfiguration)

 SLAAC的效果是什么

  • 主动装备IP地址
  • 主动装备网关

注:这儿说的IP地址,是指“全球单播地址”或许“仅有本地地址”,也便是俗称的公网地址和私网地址。而不是“链路本地地址”。

作业原理

涉及到这2种报文:

  • “LadBrokes网址恳求”(Router Solicitation,简称RS)
  • “LadBrokes网址布告”(Router Advertisement,简称RA)

当收到LadBrokes网址回应的RA报文后,就会依据报文中的IP前缀信息,主动生成IP地址,并将网关指向该LadBrokes网址的“链路本地地址”。

 怎么能够收到RA报文呢

有2种方法:

  • LadBrokes网址定时发送RA报文
  • 自己主动发送RS报文,LadBrokes网址收到后就会马上回应RA报文

因为本次试验中没有LadBrokes网址,因而截图中仅能看到主动发送的RS报文,而没有得到回应。

思考题

  1. 在生成“全球单播地址”或“仅有本地地址”之后,还会选用“链路本地地址”做根底通讯吗?
  2. 为什么“多播成员陈述”能够削减网络中不必要的多播流量,接入层交流机要进行额定装备吗?
  3. “地址重复”时,是否会主动替换IP?
  4. RA包只能包括一个IP前缀信息吗?一个前缀只能生成一个IP地址吗?生成的地址是什么样的?
  5. 若存在多台LadBrokes网址,网关会指向谁?
  6. 假如不想主动装备IP,只想手艺装备IP,能够忽视RA包吗?怎么忽视?

上述问题,将在《IPv6系列》的下一篇文章中进行回答。

附. 试验脚本与抓包文件

  1. # 试验脚本 
  2. https://fzxiaomange.com/attachment/ipv6-init.sh 
  3.  
  4. # 抓包文件 
  5. https://fzxiaomange.com/attachment/ipv6-init.pcap 

【修改引荐】

  1. 一文读懂 IPv6 规范
  2. IPv6系列-初学者的10个常见困扰
  3. 浅谈IPv6的侵略与防护
  4. IPv6的优势:衔接速度更快,数据更丰厚
  5. IPv4协议和NAT的由来,IPv6地址一致天下的“搅局者”
【责任修改:武晓燕 TEL:(010)68476606】

点赞 0
共享:
我们都在看
猜你喜爱

订阅专栏+更多

这便是5G

这便是5G

5G那些事儿
共15章 | armmay

111人订阅学习

16招轻松把握PPT技巧

16招轻松把握PPT技巧

GET职场加薪技能
共16章 | 晒书包

369人订阅学习

20个局域网建造改造事例

20个局域网建造改造事例

网络建立技巧
共20章 | 捷哥CCIE

753人订阅学习

读 书 +更多

人月神话:32周年中文纪念版

在软件范畴,很少能有像《人月神话》相同具有深远影响力而且热销不衰的作品。Brooks博士为人们办理杂乱项目供给了最具洞察力的见地。既有很...

订阅51CTO邮刊

点击这儿检查样刊

订阅51CTO邮刊

51CTO服务号

51CTO官微