Tunel技术是什么?

news2024/12/22 20:07:12

IPv4 用 32 位整数描述地址,最多只能支持 43 亿设备,显然是不够用的,这也被称作 IP 地址耗尽问题。为了解决这个问题,有一种可行的方法是拆分子网。拆分子网,会带来很多问题,比如说内外网数据交互,需要网络地址转换协议(NAT 协议),增加传输成本。再比如说,多级网络会增加数据的路由和传输链路,降低网络的速度。理想的状态当然是所有设备在一个网络中,互相可以通过地址访问。为了解决这个问题,1998 年互联网工程工作小组推出了全新款的 IP 协议——IPv6 协议。但是目前 IPv6 的普及程度还不够高,2019 年据中国互联网络信息中心(CNNIC)统计,IPv6
协议目前在我国普及率为 60%,已经位居世界首位。

IPv4 和 IPv6 相似点

IPv6 的工作原理和 IPv4 类似,分成切片(Segmentation)、增加封包头、路由(寻址)这样几个阶段去工作。IPv6 同样接收上方主机到主机(Host-to-Host)协议传递来的数据,比如一个 TCP 段(Segment),然后将 TCP 段再次切片做成一个个的 IPv6 封包(Datagramor Packet),再调用底层局域网能力(数据链路层)传输数据。具体的过程如下图所示:
在这里插入图片描述
作为网络层协议的 IPv6,最核心的能力是确保数据可以从发送主机到达接收主机。因此,和IPv4 类似,IPv6同样需要定义地址的格式,以及路由算法如何工作

IPv6 地址

重点说说地址格式的区别。IPv4 的地址是 4 个 8 位(octet),总共 32 位。 IPv6 的地址是 8 个 16 位(hextet),总共128 位。从这个设计来看,IPv6 可以支持的地址数量是 IPv4 的很多倍。就算将 IPv6 的地址分给每个人,每个人拥有的地址数量,依旧是今天总地址数量的很多倍。格式上,IPv4 的地址用.分割,如103.28.7.35。每一个是 8 位,用 0-255 的数字表示。IPv6 的地址用:分割,如0123:4567:89ab:cdef:0123:4567:89ab:cdef,总共 8 个 16位的数字,通常用 16 进制表示。

  • Hexadecimal notation:十六进制表示
  • Quartet:16 位
  • Most significant:最高有效位
  • Binary notation:二进制表示
  • 在这里插入图片描述
    上图中的地址是一个 IPv6 地址的完全态,其实也有简写的方式。比如:
    0123:4567:0000:0000:0123:4567:0000:cdef
    可以省略前 64 字节的0000:0000简写为: ::只能出现一次,相当于省略了若干组0000。比如说1111::2222相当于中间省略了 6 组0000。为什么不能出现两个::呢?因为如果有两个::,就会对省略的0000的位置产生歧义。比如1111::2222:3333,你就不知道究竟0000在1111::2222和2222::3333是怎么分布的。开头的 0 也可以简写,就变成如下的样子:还有一种情况我们想要后面部分都填0,比如说3c4d::/16,这个代表只有前16位有数据,后面是0;1234:5878:abcd/64代表只有左边64位有数据,后面是 0;再比如ff00/8,只有左边 8 位是有数据的。

IPv6 和 IPv4 的兼容

目前 IPv6 还没有完全普及,大部分知名的网站都是同时支持 IPv6 和 IPv4。这个时候我们可以分成 2 种情况讨论:
1.
一个 IPv4 的网络和一个 IPv6 的网络通信;
2.
一个 IPv6 的网络和一个 IPv6 的网络通信,但是中间需要经过一个 IPv4 的网络。
下面我们具体分析一下。

情况 1:IPv4 网络和 IPv6 网络通信

例如一个 IPv6 的客户端,想要访问 IPv4 的服务器,步骤如下图所示:
在这里插入图片描述
1.
客户端通过 DNS64 服务器查询 AAAA 记录。DNS64 是国际互联网工程任务组(IETF)提供的一种解决 IPv4 和 IPv6 兼容问题的 DNS 服务。这个 DNS 查询服务会把 IPv4 地址和 IPv6 地址同时返回。
2.
DNS64 服务器返回含 IPv4 地址的 AAAA 记录。
3.
客户端将对应的 IPv4 地址请求发送给一个 NAT64 路由器
4.
由这个 NAT64 路由器将 IPv6 地址转换为 IPv4 地址,从而访问 IPv4 网络,并收集结果。
5.
消息返回到客户端。

情况 2:两个 IPv6 网络被 IPv4 隔离

这种情况在普及 IPv6 的过程中比较常见,IPv6 的网络一开始是一个个孤岛,IPv6 网络需要通信,就需要一些特别的手段。不知道你有没有联想到坐火车穿越隧道的感觉,连接两个孤岛 IPv6 网络,其实就是在 IPv4 网络中建立一条隧道。如下图所示:
在这里插入图片描述
IPv6 解决的是地址耗尽的问题。因为解决了地址耗尽的问题,所以很多其他问题也得到了解决,比如说减少了子网,更小的封包头部体积,最终提升了性能等。
Tunnel 就是隧道,这和现实中的隧道是很相似的。隧道不是只有一辆车通过,而是每天都有大量的车辆来来往往。两个网络,用隧道连接,位于两个网络中的设备通信,都可以使用这个隧道。隧道是两个网络间用程序定义的一种通道。具体来说,如果两个 IPv6 网络被IPv4 分隔开,那么两个 IPv6 网络的出口处(和 IPv4 网络的网关处)就可以用程序(或硬件)实现一个隧道,方便两个网络中设备的通信。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

银行业数字化运营体系(上):渠道触点矩阵建设

数字化运营体系是构建从获客、激活、留存、营收转化到转介的客户全生命周期的运营体系,推动线上产品和业务运营的数字化与智能化。 随着互联网技术的不断发展,移动设备已经成为人们日常生活中不可或缺的一部分,越来越多的用户在数字化渠道进行…

vmware 详细安装教程

一.VM是什么? VMware Workstation是一个“虚拟 PC”软件。它使你可以在一台机器上同时运行二个或更多 Windows、DOS、LINUX 系统。与“多启动”系统相比,VMWare 采用了完全不同的概念。多启动系统在一个时刻只能运行一个系统,在系统切换时需…

软考A计划-重点考点-专题六(数据库知识)

点击跳转专栏>Unity3D特效百例点击跳转专栏>案例项目实战源码点击跳转专栏>游戏脚本-辅助自动化点击跳转专栏>Android控件全解手册点击跳转专栏>Scratch编程案例 👉关于作者 专注于Android/Unity和各种游戏开发技巧,以及各种资源分享&am…

数据结构实验的实验报告--B树

访问【WRITE-BUG数字空间】_[内附完整源码和文档] 数据结构实验的实验报告–B树 环境及工具 环境:C 工具:AnyivewCL B 定义 一棵 m 阶 B 树(Balance Tree of order m), 或为空树,或满足下列的特性的 m 叉树:(本次实验采用链式存储结构) …

SSM框架学习-加载properties文件

1. 创建新的命名空间 将 xmlns"http://www.springframework.org/schema/beans" 复制修改为 xmlns:context"http://www.springframework.org/schema/context" 再添加进去 表示开辟一个新的命名空间,叫做context 在xsi:schemaLocation中&#xff…

为什么耳鸣越来越年轻化了

耳鸣是一种声幻觉,当出现耳鸣的情况的时候,很多人都表示,耳朵总觉得听到很多奇怪的声音,甚至有时候还能听到车鸣笛声、或是轮船鸣笛声,但是附近并没有汽车轮船。 耳鸣,是一种没有外界声源情况下&#xff0c…

MapReduce框架原理

从源码的角度 :map --> sort —> copy --> sort -->reduce   sort —> copy --> sort属于shuffle InputFormat数据输入 切片与MapTask并行度决定机制 1)问题引出 MapTask的并行度决定Map阶段的任务处理并发度,进而影响到整个Job的…

每日一个小技巧:1分钟告诉你视频转文字软件哪个好用

如果你曾经遇到过观看视频时无法边看边记笔记的尴尬,或是在听取讲座、会议录屏时错过关键词汇,那么这里有一个好的解决方法——使用视频转文字技术帮助你获取重要信息。通过这项技术,我们可以将视频中的内容转换成易于搜索和阅读的文字&#…

第一行代码 第八章 运用手机多媒体

第八章 运用手机多媒体 使用通知 通知(Notification)是Android系统中比较有特色的一个功能,当某个应用程序希望向用户发出一些提示信息,而该应用程序又不在前台运行时,就可以借助通知来实现。发出一条通知后&#xf…

2023年免费自动养站程序

什么是养站?SEO是与搜索引擎建立信任的过程,养站不仅仅是建立一个网站,还需要我们不断的更新和维护,才能使网站长时间稳定运行并获得更好的排名。今天跟大家分享如何建站以及如何养站。 一、明确TDK 在设计网站时,我…

无公网IP,公网SSH可远程访问家中的树莓派

文章目录 前言如何通过 SSH 连接到树莓派步骤1. 在 Raspberry Pi 上启用 SSH步骤2. 查找树莓派的 IP 地址步骤3. SSH 到你的树莓派步骤 4. 在任何地点访问家中的树莓派4.1 安装 Cpolar内网穿透4.2 cpolar进行token认证4.3 配置cpolar服务开机自启动4.4 查看映射到公网的隧道地址…

“土狗”的季节,meme热潮回归

文/章鱼哥 出品/陀螺财经 meme代币的热度好像又回来了,两周前推出的PEPE创下了历史新高。尽管加密货币市场仍处于漫长熊市中,但人们似乎仍然对风险投资保有兴趣。 meme代币作为基于互联网模因的高波动数字资产,似乎没有太多实用性。它们的价格…

屏幕录制大师哪款好用?这3款录屏工具,值得推荐!

案例:电脑录屏工具哪一款比较好用? 【我一般用手机拍电脑上需要录制的内容,但是拍出来的视频画面小且不清晰。朋友说可以使用电脑录屏软件录制电脑屏幕,但我以前没有用过,不知道哪款好用?家人们有没有推荐…

文件找回工具,值得推荐的4款!

例:文件找回工具 【对于我这种粗心大意经常丢失文件的人来说,有好用的文件找回工具实在太重要啦!大家可以给我推荐一些好用的文件找回工具吗?感谢感谢!】 当我们在使用电脑时,经常会遇到文件丢失的情况&a…

Java 如何在 Array 和 List 之间进行转换

概述 在本文章中,我们对如何在 Java 中对 Array 和 List 进行转换进行一些说明和示例。 这些示例通过使用 Core Java 和一些第三方的转换工具,例如 Guava 和 Apache Commons Collections。 更多有关的文章,请访问:Java - OSSEZ …

c++ 11标准模板(STL) std::vector (十一)

定义于头文件 <vector> template< class T, class Allocator std::allocator<T> > class vector;(1)namespace pmr { template <class T> using vector std::vector<T, std::pmr::polymorphic_allocator<T>>; }(2)(C17…

单元测试 - 注解篇

1. RunWith 指定单测的运行环境 RunWith(JUnit4.class) - JUnit4环境RunWith(MockitoJUnitRunner.class) - Mock环境RunWith(SpringJUnit4ClassRunner.class) / RunWith(SpringRunner.class) - Spring环境 ps: SpringJUnit4ClassRunner 与 SpringRunner区别 SpringRunner继承…

Gradio的web界面演示与交互机器学习模型,分享应用《3》

Gradio的web界面演示与交互机器学习模型&#xff0c;安装和使用《1》https://blog.csdn.net/weixin_41896770/article/details/130540360Gradio的web界面演示与交互机器学习模型&#xff0c;主要特征《2》https://blog.csdn.net/weixin_41896770/article/details/130556692 前…

pywinauto使用教程

这里写自定义目录标题 引入pycharm项目新的改变功能快捷键合理的创建标题&#xff0c;有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants 创建一个自定义列表如何创建一个注脚注…

JDK的版本迭代(JDK9 - JDK20)

文章目录 1. 发布特点2. 名词解释Oracle JDK和Open JDKJEPLTS 3. 各版本支持时间路线图4. 各版本介绍jdk 9jdk 10jdk 11jdk 12jdk 13jdk 14jdk 15jdk 16jdk 17jdk 18jdk 19jdk 20 5. JDK各版本下载链接6. 应该如何学习新特性 1. 发布特点 发行版本发行时间备注Java 1.01996.01…