闲谈IPv6-IPv6地址的scope到底是什么?

2023-11-06

周日,大早上六点多和疯子去菜市场买了菜,顺便打了一壶糯米烧酒,回来把我的正则安哥哄睡了之后,继续思考IPv6的细节。


一台主机启动后,每一块网卡都会自动生成一个fe80打头的 链路本地地址 ,这个地址在Linux上你删都删不掉,不信你试试,在Windows是可以删掉的,但是只要你重置网卡,它就会自动生成…

这个所谓的链路本地地址到底有何怪异?


我的主机安装两块网卡,分别连接两个网络, 在系统初启的时候,两块网卡分别自动获得了两个IPv6地址:
enp0s8:fe80::fbb2:a1e:e59:15eb/64
enp0s9:fe80::ac5b:e7c6:9d00:797d/64

其中enp0s9的对端连接着另外一台机器的网卡,其网卡IP是:
eth0:fe80::ebad:9145:fe66:55cc/64

这里,enp0s9和eth0是直连的,二者可以直接ping通吗?

不能!

如果像IPv4那样理解为仅仅 二者是直连的 以及 二者是同一网段的 就可以ping通的话,那就错了。

事实上,你会发现, 全世界所有的网卡的链路本地地址都是同一个fe80::/16一个网段的! ,但是它们却不一定能彼此ping通。这是和IPv4之间的大不同。

IPv4之所以直连的同一网段的两个地址之间可以互通,完全是因为当你配置IP地址的时候,系统自动生成的 链路路由 使其可以互通,但是IPv6的所有链路本地地址都在一个网段,仅仅靠IP路由,便不足以使其互通。


IPv6地址是有严格scope限制的, 两个地址首先要被限制在自己的scope内,其次才考虑路由的连通性。

比如两个链路本地地址,必须是二层直连的,才能相互ping通。为了避免歧义,在上面的例子中,在操作上,如果你想从enp0s9这块网卡的链路本地地址ping通对端的eth0链路本地地址,那么你必须使用下面的命令:

ping6 fe80::ebad:9145:fe66:55cc%enp0s9

注意,后面的 %enp0s9 是必须的,它规定了 一条链路的维度! 否则,没有这个维度限制的话,ping6命令接下来的底层就会按照全球地址最长前缀匹配规则去寻址,全世界所有网卡,包括该主机自己的多块网卡,均拥有相同网段fe80::/16的地址,按照IPv4的规则,这实属同一网段,这会令其费解!左边也有链路路由,右边也有同样的链路路由,到底往哪走!?

有了链路scope维度的限制,链路路由又成了唯一的了,这样自然就通了。


IPv6声称自己实现了严格的地址scope,然而IPv6除了链路本地地址以及本地主机地址有着严格的scope限制之外,别的scope再也没有类似的限制了。我们知道IPv6的socpe包括host,link,site,global,但是site被废弃了,因此就再也没有了严格的限制。

不过,思想还是重要的,这是IPv6的创举,IPv4就没有类似的机制。但是IPv4模拟了scope,比如169.254这个网段的地址,就模拟了link-local链路本地地址。

总结一下:

  • IPv6的连通性首先要在自己的scope内考虑。
  • IPv6地址在自己的scope内基于IP路由来确保连通性。

浙江温州皮鞋湿,下雨进水不会胖。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

闲谈IPv6-IPv6地址的scope到底是什么? 的相关文章

  • SSH 在通过 ipv6 连接时超时,但适用于 ipv4 [关闭]

    Closed 这个问题不符合堆栈溢出指南 目前不接受答案 昨天我重新安装了 Ubuntu 出于不相关的原因 从那时起 ssh 的行为就非常奇怪 连接需要很长时间 几分钟 使用 vvv 我发现它首先尝试使用 ipv6 连接 超时 然后尝试通过
  • 即使不支持 IPv6,如何在 Google Cloud 上运行 iOS 应用程序

    苹果新的应用商店政策已于 6 月 1 日生效 提交到 App Store 的所有应用程序都必须支持纯 IPv6 网络 https developer apple com news id 05042016a 如何在仅支持 IPv4 的 Goo
  • 不常见的 IP 符号

    我知道可以将 IPv4 中的 IP 写为整数 例如2130706433代替127 0 0 1 造成这种可能性的原因是什么 IPv6 有类似的表示法吗 I tried ping 6 1作为尝试 ping 1 但这不起作用 主机不存在 IPv4
  • 强制请求使用 IPv4 / IPv6

    如何强制requests库使用特定的互联网协议版本来获取请求 或者可以用Python中的另一种方法更好地实现这一点吗 我可以 但我不想使用curl 阐明目的的示例 import requests r requests get https m
  • IPv6 的示例数据?

    是否存在 IPv6 流量的示例数据集 例如Apache 日志还是流量分析日志 或者 是否有人有任何想法如何生成一个或 乐观地 现有工具来生成数据 理想情况下 我希望实际部署的示例地址与该范围内的地址数量和 或来自这些范围的预期流量成比例 即
  • 一个插座双堆栈

    我正在开发双栈客户端 服务器通信 我很好奇 我是否必须打开两个套接字 一个用于 IPv4 一个用于 IPv6 还是可以选择打开一个用于 IPv6 的套接字 并且它能够同时使用 IPv4 和 IPv6 连接 例如 如果我打开这样的套接字 SO
  • 在 PHP 中检查字符串是否包含 IPV6 地址

    使用 PHP 我需要检查字符串是否包含 IPv6 地址 如果包含 则提取该 IPv6 地址 我有一个正则表达式 它匹配一个字符串 如果它恰好是 IPv6 matches regex 3 3 3 dA F 1 4 3 b 2 4 5 4 2
  • Apple 应用商店 IPV6 要求

    我打算在 Apple Store 上发布一个应用程序 然后我知道了 IPV6 拒绝问题 我的应用程序仅支持 IPV4 并且在此link我发现该应用程序应该支持 IPV6 所以我的问题是 应用程序是否必须同时支持 IPV4 和 IPV6 抱歉
  • 此正则表达式 (RegEx) 标志有何含义 /iD

    我想使用这个正则表达式来验证 IPv6 但我想了解它所做的一切https stackoverflow com a 1934546 3112803 gt gt a f0 9 1 4 gt 1 7 a f0 9 gt 8 1 gt 1 0 6
  • 具有 IPv6 IP 地址的 RewriteRule 不起作用

    我在代理 IPv6 地址内的请求时遇到问题 在 htaccess apache2 conf 上 我有它 RewriteRule http 18 4 15 8 80 path 1 P L 它工作正常 因为它是 IPv4 地址 但是 它不起作用
  • 使用 IPV6 连接到 Google Cloud SQL

    我一直在尝试使用 Google 提供的 IPV6 地址连接到我的 google cloud sql 数据库 mysql 但没有成功 mysql h 0 0 0 0 0 aaaa aaaa aaaa u admin p 客户端提示输入密码 但
  • 本地主机上的双栈 ipv6/ipv4

    我有一个 ipv4 服务器 它只接受本地主机上的连接 使用INADDR LOOPBACK 我想将此服务器转换为双栈 ipv6 ipv4 然而 使用in6addr loopback只接受连接到 1 我发现我可以同时接受 ipv4 和 ipv6
  • 使用 JSP 发送电子邮件

    这个问题快把我逼疯了 我有以下代码
  • IPv6 Socket程序问题

    似乎流程没有进入包含 ipv6server c 中接受的 for 循环 因此无法接受并与客户端连接 有什么错误吗 此代码对于 IPV4 工作正常 但在 IPV6 更改后出现此问题 ipv6server c include
  • 如何在SQL中计算IPv6 CIDR路由前缀?

    我一直致力于使用在 SQL Server 2012 实例上运行的 T SQL 从 IPv4 和 IPv6 地址范围生成 CIDR 一般来说 我们的应用程序 数据库外部 负责计算 CIDR 但我目前需要在数据库中进行 CIDR 计算 由于 I
  • 使用C++对ipv6地址进行比较运算

    由于 IPV6 地址有 16 个字节 并且它们没有数据类型可以在 C 中存储它 我想存储 IPV6 地址 并在 IPv6 地址之间进行一些比较 请让我知道该怎么做 您可以将它们存储为普通数组unsigned char就像你在 C 中所做的那
  • IPv6 地址的正则表达式

    我有一个 IPv6 地址的正则表达式 如下所示 IPV4ADDRESS t digit 1 3 3 digit 1 3 t x4 xdigit 1 4 xseq x4 x4 0 7 xpart xseq xseq xseq xseq IPV
  • 匹配有效 IPv6 地址的正则表达式

    这个问题的答案是社区努力 help privileges edit community wiki 编辑现有答案以改进这篇文章 目前不接受新的答案或互动 我在编写匹配有效 IPv6 地址的正则表达式时遇到问题 包括压缩形式的地址 使用 或从每
  • CreateUnicastIpAddressEntry 后无法获取UnicastIpAddressEntry

    背景 我正在尝试加快使用速度RFC7217 https www rfc editor org rfc rfc7217兼容的 ipv6 地址 为此 我编写了创建有效可路由 ipv6 地址的代码 例如2600 8806 2700 115 c4a
  • 将 IPv4 应用程序移植到双栈 IPv4/IPv6

    实际上 我正在将 IPv4 服务器应用程序移植到 Linux 上的双栈 IPv4 IPv6 应用程序 我使用以下方法解决了基本功能 serv addr sin6 family AF INET6 serv addr sin6 addr in6

随机推荐

  • 基于AntDesign Vue的响应式登录页面

    为了做一个自己的前后端分离的后台管理系统 特地做了一下登录页面 大概的架子如下 后面需要替换一下顶部导航的信息 先大概贴一下代码 以后直接复制使用 整体的布局是自己写的样式 如果后面要替换为其他的UI框架 比如element ui ivie
  • selenium打开edge浏览器闪退问题

    selenium打开浏览器闪退问题 本文记录selenium在打开浏览器后会自动闪退问题 版本如下 需保证浏览器驱动为对应版本 官方给的下载驱动的地址为 https developer microsoft com zh cn microso
  • javaScript的数学计算

    js自带的数学计算的方法 默认加减乘除符号 NaN与任意操作数加减乘除 结果都是NaN 加法 数字与字符串相加会拼接成字符串 特殊操作数的求和 n代表任意数字 NaN与任意操作数相加 结果都是NaN console log NaN n In
  • Tibco EMS 初级使用方法小结

    TIBCO Enterprise Message Service 是一个消息服务器产品 它采用C语言编写 完全支持JMS的通讯协议 在运行速度和消息吞吐量上表现非常出色 对于Windows Linux Mac AIX平台都提供支持 关于这个
  • vscode_c++_slambook 编译配置

    工作目录 配置文件 launch json version 0 2 0 configurations name slamBook程序调试 type cppdbg request launch program fileDirname buil
  • MySQL高级:(十二)MySQL事务日志

    笔记来源 MySQL数据库教程天花板 mysql安装到mysql高级 强 硬 文章目录 12 1 事务日志概述 12 2 redo日志 12 2 1 为什么需要redo日志 12 2 2 redo日志的好处 特点 12 2 3 redo日志
  • 【CI/CD】基于 Jenkins+Docker+Git 的简单 CI 流程实践(上)

    基于 Jenkins Docker Git 的简单 CI 流程实践 上 在如今的互联网时代 随着软件开发复杂度的不断提高 软件开发和发布管理也越来越重要 目前已经形成一套标准的流程 最重要的组成部分就是 持续集成 及 持续交付 部署 在此
  • 华为OD机试 - 叠积木(Java)

    题目描述 有一堆长方体积木 它们的宽度和高度都相同 但长度不一 小橙想把这堆积木叠成一面墙 墙的每层可以放一个积木 也可以将两个积木拼接起来 要求每层的长度相同 若必须用完这些积木 叠成的墙最多为多少层 输入描述 输入为一行 为各个积木的长
  • 如何检测勒索软件攻击

    什么是勒索软件 勒索软件又称勒索病毒 是一种特殊的恶意软件 又被归类为 阻断访问式攻击 denial of access attack 与其他病毒最大的不同在于攻击方法以及中毒方式 攻击方法 攻击它采用技术手段限制受害者访问系统或系统内的数
  • c++ 实现职工管理系统

    一 案例描述 某公司中的职工分为三种 普通员工 经理和老板 每个职工都有自己的职工编号 姓名 年龄 电话号码和岗位 管理系统需要实现的功能如下 添加职工信息 显示职工信息 删除离职职工 修改职工信息 查找职工信息 职工编号排序 清空职工信息
  • git回滚到指定版本,并提交到远程分支

    1 git reflog 可以查看所有分支的所有操作记录包括已经被删除的commit记录和reset的操作 2 git log 可以显示所有提交过的版本信息 二者的区别 用git log 则看不出来被删除的commitid 用git ref
  • cookie session总结

    Cookie是由服务器创建 然后通过响应发送给客户端的一个键值对 客户端会保存Cookie 并会标注出Cookie的来源 哪个服务器的Cookie Cookie规范 Cookie通过请求头和响应头在服务器与客户端之间传输 Cookie大小上
  • 踩坑:git或gitee之上传超过100M文件

    直接说 如果你是免费用户 g远程仓库是gitee 那么对不起 你没法上传超过100M的大文件 不支持git fls 只有企业项目 才支持 如果你的远程仓库是git 那么借助git fls就可以了 至于怎么使用 网上一大堆博客 我就不浪费篇幅
  • hive 使用 jndi 数据源时已经在 Tomcat 中配置好 但是在 java 代码中获取数据源就会报错

    这个是异常信息 javax naming NoInitialContextException Need to specify class name in environment or system property or as an app
  • kafka系统的架构

    系统的架构 主题topic和分区partition topic Kafka中存储数据的逻辑分类 你可以理解为数据库中 表 的概念 比如 将app端日志 微信小程序端日志 业务库订单表数据分别放入不同的topic partition分区 提升
  • 数值分析 第一章:绪论

    第一章 绪论 1 2误差基础知识 1 2 1误差来源 1 2 2误差度量 1 2 3初值误差传播 1 3 舍入误差分析及数值稳定性 1 2误差基础知识 1 2 1误差来源 数学模型与实际问题的差异称为模型误差 数学模型中常常还包含有一些参数
  • 一起学SF框架系列附-Springframework源码学习总结

    学习过程 学习Springframework6 0 8 前后将近4个月终于结束了 学习主要内容如图 红框 本次学习主要针对核心模块 Beans Context Core SpEL 完全独立于框架的 没深入学习 AOP 以SF应用的初始化过程
  • nginx开启gzip压缩功能遇到的坑

    nginx开启gzip压缩功能一大堆 网上大多数配置如下 server listen 8080 proxy http version 1 1 gzip on gzip min length 1k gzip buffers 4 16k gzi
  • tf.reduce_sum tensorflow维度上的操作

    tensorflow中有很多在维度上的操作 本例以常用的tf reduce sum进行说明 官方给的api reduce sum input tensor axis None keep dims False name None reduct
  • 闲谈IPv6-IPv6地址的scope到底是什么?

    周日 大早上六点多和疯子去菜市场买了菜 顺便打了一壶糯米烧酒 回来把我的正则安哥哄睡了之后 继续思考IPv6的细节 一台主机启动后 每一块网卡都会自动生成一个fe80打头的 链路本地地址 这个地址在Linux上你删都删不掉 不信你试试 在W