加入收藏 | 设为首页 | 会员中心 | 我要投稿 PHP编程网 - 黄冈站长网 (http://www.0713zz.com/)- 数据应用、建站、人体识别、智能机器人、语音技术!
当前位置: 首页 > 运营中心 > 网站设计 > 教程 > 正文

IPv6通讯原理 - 不能忽略的网卡启动过程

发布时间:2019-06-19 10:39:11 所属栏目:教程 来源:小慢哥Linux运维
导读:副标题#e# 目录 一. 为什么不能忽略网卡启动过程 二. 实验环境 三. 网卡启动前/后的样子 四. 结论写在前 Step1. 生成链路本地地址 Step2. 生成被请求节点多播地址 Step3. 多播成员报告 Step4. 重复地址检测 Step5. 无状态地址自动配置 思考题 附. 实验脚本
副标题[/!--empirenews.page--]

 IPv6通讯原理 - 不能忽略的网卡启动过程

目录

  • 一. 为什么不能忽略网卡启动过程
  • 二. 实验环境
  • 三. 网卡启动前/后的样子
  • 四. 结论写在前
  • 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) - 不能忽略的网卡启动过程

可以看到此时eth0处于DOWN的状态,接下去,对eth0进行UP。

网卡启动后的样子

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

进入ns2里查看

IPv6通讯原理(1) - 不能忽略的网卡启动过程

可以看到,此时网卡已启动,并获得了一个链路本地地址(图中fe80开头的)

抓到了哪些包呢

IPv6通讯原理(1) - 不能忽略的网卡启动过程

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

四. 结论写在前

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

IPv6通讯原理(1) - 不能忽略的网卡启动过程

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

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

IPv6通讯原理(1) - 不能忽略的网卡启动过程

(本步骤尚未产生数据包)

 “链路本地地址”是什么

  • 当网卡启动时会根据某种算法自动生成链路本地地址(Link-Local Address)。
  • 具体生成的地址,与操作系统有关,有的根据MAC地址换算而来(EUI-64),有的则是随机生成,并不统一。
  • “链路本地地址”是范围为fe80::/10的单播地址。
  • “链路本地”顾名思义,只在同一个二层内传播,不会被路由器转发。

“链路本地地址”有什么作用

  • 地址自动配置
  • 邻居发现协议
  • 路由转发(可以作为下一跳地址)

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

IPv6通讯原理(1) - 不能忽略的网卡启动过程

(本步骤尚未产生数据包)

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

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

组成方式:FF02::1:FF00:0/104 + 单播地址的最后24bit。可以看到,该地址是通过单播地址推导而成,不是随机的。上图中红框里的地址就是“链路本地地址”对应的“被请求节点多播地址”。

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

(编辑:PHP编程网 - 黄冈站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读