Linux 内核源码分析---IPv6 数据包

IPv6是英文“Internet Protocol Version 6”(互联网协议第6版)的缩写,是互联网工程任务组(IETF)设计的用于替代IPv4的下一代IP协议,其地址数量号称可以为全世界的每一粒沙子编上一个地址。

由于IPv4最大的问题在于网络地址资源不足,严重制约了互联网的应用和发展。IPv6的使用,不仅能解决网络地址资源数量的问题,而且也解决了多种接入设备连入互联网的障碍。互联网数字分配机构(IANA)在2016年已向国际互联网工程任务组(IETF)提出建议,要求新制定的国际互联网标准只支持IPv6,不再兼容IPv4。

IPv6地址分为3类:单播地址、任意播地址及组播地址。

  • 单播
    在单播寻址模式下,IPv6 接口(host)在网段中唯一标识。 IPv6 数据包包含源 IP 地址和目标 IP 地址。 主机接口配备有在该网络段中唯一的 IP 地址。当网络交换机或路由器接收到单个主机的单播 IP 分组时,它发出其连接到该特定主机的输出接口之一 。
  • 组播
    IPv6 组播模式与 IPv4相同。 目的地为多个主机的数据包在特殊的多播地址上发送。 所有对该组播信息感兴趣的主机需要首先加入该组播组。 加入组的所有接口接收组播数据包并对其进行处理,而对组播数据不感兴趣的其他主机则忽略组播信息。
  • 任播
    IPv6 引入了一种新型的寻址,称为 Anycast 寻址。 在此寻址模式下,多个接口(host)被分配相同的任播 IP 地址。 当主机希望与配备有任播 IP 地址的主机通信时,它发送单播消息。 在复杂的路由机制的帮助下,在路由成本方面,该单播消息被递送到最接近发送方的主机。

IPv6地址由被划分为 8 个 16 位块的 128 位组成,共计 128 位。
IPv6 地址格式类似于:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx(其中x为十六进制位)。
在这里插入图片描述

特殊地址
地址0:0:0:0:0:0:0:0/128不指定任何内容,称为未指定地址。 简化后,所有的0被压缩为:: / 128
在IPv4中,地址0.0.0.0与网络掩码0.0.0.0表示默认路由。 相同的概念也适用于IPv6,地址0:0:0:0:0:0:0:0,网络掩码全0表示默认路由。 应用IPv6规则后,此地址压缩为:: / 0
IPv4中的环回地址由127.0.0.1127.255.255.255系列表示。 但在IPv6中,只有0:0:0:0:0:0:0:1/128表示环回地址。 环回地址后,可以表示为:: 1/128

映射IPv4地址的IPv6地址格式为:开头 80 位全为 0,接下来的 16 全为1,余下的 32 位为IPv4地址。

IPv6地址是 IPv4 的 4 倍,但IPv6地址的头部仅比 IPv4 的头部大2倍。 IPv6 报头有一个固定报头和零个或多个可选(扩展)报头。 所有必要的信息,对路由器是必不可少的保存在固定报头。 扩展报头包含可选信息,帮助路由器了解如何处理数据包/流。

IPv6报头:每个 IPv6 数据包都以 IPv6 报头开头,IPv6报头的长度固定为 40 字节(320位)。
在这里插入图片描述
版本(4位):表示Internet协议的版本,即0110。
流量类(8位):这8位分为两部分。 最重要的6位用于服务类型,以便让路由器知道应该向该分组提供什么服务。 最低有效2位用于显式拥塞通知(ECN)。
流标签(20位):此标签用于维护属于通信的数据包的顺序流。 源标记序列以帮助路由器识别特定分组属于特定信息流。 此字段有助于避免数据包的重新排序。 它是为流媒体/实时媒体设计的。
有效负载长度(16位):该字段用于告诉路由器特定分组在其有效载荷中包含多少信息。 有效载荷由扩展报头和上层数据组成。 使用16位,可以指示高达65535个字节; 但是如果扩展报头包含逐跳扩展报头,则有效载荷可能超过65535字节,并且此字段设置为0。
下一个报头(8位):该字段用于指示扩展报头的类型,或者如果扩展报头不存在,则它指示上层PDU。 上层PDU的类型的值与IPv4的相同。
跳跃限制(8位):此字段用于无限期地停止数据包在网络中循环。 这与IPv4中的TTL相同。 跳跃限制字段的值在它通过链路(路由器/跳跃)时递减1。 当字段达到0时,数据包被丢弃。
源地址(128位):此字段指示数据包的发起方的地址。
目的地址(128位):此字段提供数据包的预期收件人的地址。

在这里插入图片描述

接收IPv6数据包:IPv6 数据包的主接收方法为ipv6_rcv(),它是所有IPv6数据包的处理程序。
在这里插入图片描述

发送IPv6数据包:IPv6 传输路径很像IPv4传输路径,使用方法名称基本都很像,在IPv6中,也有两个从第 4 层发送 IPv6 数据包的主方法:一个是方法 ip6_xmit(),由TCP、流控制传输协议和数据报拥塞控制协议 ;一个是方法 ip6_append_data(),由 UDP 和原始套接字等使用。

https://cloud.tencent.com/developer/article/2067425
https://www.cnblogs.com/kmist/p/18116023

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

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

相关文章

Tapd敏捷开发平台的使用心得

Tapd敏捷开发平台的使用心得 一、Tapd 简介 TAPD(Tencent Agile Product Development),腾讯敏捷产品研发平台行业领先的敏捷协作方案,贯穿敏捷产品研发生命周期的一站式服务,了解敏捷如下图 二、几个核心模块概念 需求迭代缺陷故事墙前期项目需求的管理,可以按类别建…

22AP10 SS524 平替 海思HI3521DV200 可提供开发资料

22AP10 是针对多路高清/超高清(1080p/4M/5M/4K)DVR 产品应用开发的新一代专 业 SoC 芯片。22AP10 集成了 ARM Cortex-A7 四核处理器和性能强大的图像分析工具 推理引擎,支持多种智能算法应用。同时,22AP10 还集成了多路 MIPI …

【可兼容的】protobuf、streamlit、transformers、icetk、cpm_kernels版本号

搞大模型训练的工作不可避免地需要很多库,但是非常讨厌的事情是这些库动不动就不兼容。最近在做文本分类训练的时候又遇到了这个问题,为了避免后面再安装包的时候把我之前的环境破坏了,所以特地来记录一下:protobuf、streamlit、t…

排序算法见解(2)

1.快速排序 1.1基本思想: 快速排序是通过一趟排序将待排序的数据分割成独立的两部分,其中一部分的所有数据都比另一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以…

解决Springboot项目Maven下载依赖速度慢的问题

🌟 前言 欢迎来到我的技术小宇宙!🌌 这里不仅是我记录技术点滴的后花园,也是我分享学习心得和项目经验的乐园。📚 无论你是技术小白还是资深大牛,这里总有一些内容能触动你的好奇心。🔍 &#x…

智能客服系统:提升客户体验与企业效率的革命性工具

在当今数字化时代,企业与客户之间的互动方式正在迅速改变。智能客服系统作为一种新兴技术,不仅在提高客户满意度方面发挥着重要作用,还能够大大提高企业的运营效率。本文将详细探讨智能客服系统的工作原理、优势、实施步骤以及未来发展趋势。…

AI的未来已来:GPT-4商业应用带来的无限可能

随着人工智能技术的快速发展,OpenAI于2023年3月15日发布了多模态预训练大模型GPT-4,这一里程碑式的进步不仅提升了AI的语言处理能力,还拓展了其应用范围。本文将深入探讨GPT-4的技术进步、商业化进程、用户体验改善、伦理和社会影响&#xff…

vue项目安装pnpm和无法加载pnpm,已解决

vue3安装pnpm命令: 1.提升依赖安装速度:npm config set registry https://registry.npmjs.org 2.安装pnpm:npm install -g pnpm 3.安装pnpm依赖:pnpm install 4…windows电脑,无法安装pnpm,pnpm install命令&#xff0…

Java三大器之拦截器(Interceptor)的实现原理及代码示例

1,拦截器的概念 java里的拦截器是动态拦截Action调用的对象,它提供了一种机制可以使开发者在一个Action执行的前后执行一段代码,也可以在一个Action执行前阻止其执行,同时也提供了一种可以提取Action中可重用部分代码的方式。在AO…

Oracle迁移至openGauss的工具:ora2op的安装配置

目录 前言 1. ora2op的下载 1.1 下载地址 1.2 ora2op 介绍 2. ora2op的安装 2.1 安装perl的依赖包 2.2 安装连接Oracle数据库的模块 2.3 安装ora2op 2.4 安装连接openGauss数据库的模块 前言 本工具是使用perl,在安装时会遇到各种问题,解决方式…

如何在知行之桥上通过业务单号查找原始报文?

在知行之桥中接收或发送的数据通常是EDI原始报文,知行之桥会对EDI原始报文进行格式转换,以方便用户后端系统的处理。因此,一般情况下,用户看到的都是转换后的数据结构,例如Json、XML或Excel等,无需直接查看…

2024年第十五届蓝桥杯图形化省赛真题分享包含答案

Scratch初级:8月24日9:30-11:00 Scratch中级:8月24日14:00-15:30 Python:8月25日9:30-11:00 C++:8月25日14:00-15:30 这次考了哪些内容呢,我们来大概看看(编程题没有答案,编程题有,大家可以评论群留言单选题的答案): <

AT LINE-SELECTION

Syntax 语法 AT LINE-SELECTION. Effect 作用 This statement defines an event block whose event is triggered by the ABAP runtime environment during the display of a screen list - provided the scren cursor is on a list line and you select a function using t…

【数据结构】总结二叉树的概念以及存储结构

目录 1. 树的概念及结构 1.1 树的名词定义 1.2 树的表示 2. 二叉树的概念及结构 2.1 二叉树的概念 2.2 特殊的二叉树 2.2.1 满二叉树 2.2.2 完全二叉树 2.3 二叉树的存储结构 2.3.1 顺序存储 2.3.2 链式存储 3. 选择题 1. 树的概念及结构 1.1 树的名词定义 1. 节…

太阳方向角/高度角/赤纬角/太阳时角/真平太阳时差/理论计算方法(matlab)

1. 理论学习 方向角&#xff0c;高度角计算公式 如图&#xff0c;直观地描述了方位角(圆盘上红色夹角)与高度角(黄色线与圆盘的夹角) 赤纬角计算公式 地球赤道平面与太阳和地球中心的连线之间的夹角 如图所示&#xff0c;23度那个. 时角计算公式 太阳时角是指日面中心的时角…

SAP BW/BPC:实现自动执行BPC跑包程序

作者 idan lian 如需转载备注出处 如果对你有帮助&#xff0c;请点赞收藏~~~ 用途&#xff1a;创建程序&#xff0c;跑BPC包&#xff0c;把数据从BW应用层跑到BPC,程序可放到处理链或自动作业中&#xff0c;实现定时跑包。 1.步骤 首先需要BPC顾问创建一个他们手动执行的包…

在 Facebook 上投放广告需要多少钱?

Facebook 拥有 23.2 亿的月活跃用户&#xff0c;用户体量非常庞大&#xff0c;你的目标群体出现在社交媒体平台上的可能性非常高&#xff0c;所以企业会选择在Facebook 上投放广告。很多朋友想入局&#xff0c;但总是在思考Facebook 推广到底要花多少钱才能有效&#xff1f;如果…

NoSql数据库 Redis集群详解

目录 一、NoSql数据库简介 1.1 数据库主要分为两大类&#xff1a;关系型数据库与 NoSQL 数据库 1.2 为什么还要用 NoSQL 数据库呢&#xff1f; 1.3 RDBMS和NOSQL的特点及优缺点&#xff1a; 二 Remote Dictionary Server 简介&#xff08;redis&#xff09; 2.1 什么是redis …

【数据结构】队列(Queue)

目录 队列概念 ​方法 队列模拟实现 链表实现队列 入队列 出队列 获取队头元素 数组实现队列 入队列 出队列 返回头队列 返回尾队列 完整代码 双链表实现队列 数组实现队列&#xff08;设计循环队列&#xff09; 队列概念 队列&#xff1a;只允许在一段进行插入…

悬浮翻译软件有哪些?试试这些利器

在观看外国电影或电视剧的奇幻旅程中&#xff0c;面对字幕如流星般划过屏幕&#xff0c;是否渴望能即时捕捉每一个细微的情感涟漪与幽默火花&#xff0c;让体验更加完整无憾&#xff1f; 此刻&#xff0c;无需再为语言障碍而烦恼&#xff01;悬浮翻译器电脑版作为你贴心的跨文…