learn.lianglianglee.com/专栏/全解网络协议/11 我已经没地方住了吗 - IPv6.md.html
2022-05-11 18:57:05 +08:00

905 lines
20 KiB
HTML
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<!DOCTYPE html>
<!-- saved from url=(0046)https://kaiiiz.github.io/hexo-theme-book-demo/ -->
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1.0, user-scalable=no">
<link rel="icon" href="/static/favicon.png">
<title>11 我已经没地方住了吗 - IPv6.md.html</title>
<!-- Spectre.css framework -->
<link rel="stylesheet" href="/static/index.css">
<!-- theme css & js -->
<meta name="generator" content="Hexo 4.2.0">
</head>
<body>
<div class="book-container">
<div class="book-sidebar">
<div class="book-brand">
<a href="/">
<img src="/static/favicon.png">
<span>技术文章摘抄</span>
</a>
</div>
<div class="book-menu uncollapsible">
<ul class="uncollapsible">
<li><a href="/" class="current-tab">首页</a></li>
</ul>
<ul class="uncollapsible">
<li><a href="../">上一级</a></li>
</ul>
<ul class="uncollapsible">
<li>
<a href="/专栏/全解网络协议/01 我应该站在谁的肩膀上 - OSI vs TCPIP模型.md.html">01 我应该站在谁的肩膀上 - OSI vs TCPIP模型.md.html</a>
</li>
<li>
<a href="/专栏/全解网络协议/02 万丈高楼平地起- 物理层 + 数据链路层.md.html">02 万丈高楼平地起- 物理层 + 数据链路层.md.html</a>
</li>
<li>
<a href="/专栏/全解网络协议/03 OSI的灵魂就是我 - 网络层.md.html">03 OSI的灵魂就是我 - 网络层.md.html</a>
</li>
<li>
<a href="/专栏/全解网络协议/04 要快还是要稳你说好了 - 传输层.md.html">04 要快还是要稳你说好了 - 传输层.md.html</a>
</li>
<li>
<a href="/专栏/全解网络协议/05 是时候展现真正的技术了 - 应用层.md.html">05 是时候展现真正的技术了 - 应用层.md.html</a>
</li>
<li>
<a href="/专栏/全解网络协议/06 重回小学课堂 - 二进制101.md.html">06 重回小学课堂 - 二进制101.md.html</a>
</li>
<li>
<a href="/专栏/全解网络协议/07 1+1 = 2吗 - 二进制的计算.md.html">07 1+1 = 2吗 - 二进制的计算.md.html</a>
</li>
<li>
<a href="/专栏/全解网络协议/08 16进制又是个什么鬼 - 16进制的讲解.md.html">08 16进制又是个什么鬼 - 16进制的讲解.md.html</a>
</li>
<li>
<a href="/专栏/全解网络协议/09 我想有个家 - 什么是IP地址.md.html">09 我想有个家 - 什么是IP地址.md.html</a>
</li>
<li>
<a href="/专栏/全解网络协议/10 我可是住二环的人 - IP地址的组成和分类.md.html">10 我可是住二环的人 - IP地址的组成和分类.md.html</a>
</li>
<li>
<a class="current-tab" href="/专栏/全解网络协议/11 我已经没地方住了吗 - IPv6.md.html">11 我已经没地方住了吗 - IPv6.md.html</a>
</li>
<li>
<a href="/专栏/全解网络协议/12 向左还是向右 - IP路由.md.html">12 向左还是向右 - IP路由.md.html</a>
</li>
<li>
<a href="/专栏/全解网络协议/13 我能给你安全感 - TCP.md.html">13 我能给你安全感 - TCP.md.html</a>
</li>
<li>
<a href="/专栏/全解网络协议/14 我那不为人知的秘密是什么 - TCP.md.html">14 我那不为人知的秘密是什么 - TCP.md.html</a>
</li>
<li>
<a href="/专栏/全解网络协议/15 不问收没收到,就问快不快 - UDP.md.html">15 不问收没收到,就问快不快 - UDP.md.html</a>
</li>
<li>
<a href="/专栏/全解网络协议/16 我为什么与众不同 - TCP高级篇拥塞模型.md.html">16 我为什么与众不同 - TCP高级篇拥塞模型.md.html</a>
</li>
<li>
<a href="/专栏/全解网络协议/17 来,先看看我的家谱 - HTTP的身世.md.html">17 来,先看看我的家谱 - HTTP的身世.md.html</a>
</li>
<li>
<a href="/专栏/全解网络协议/18 我都这么成功了,你却说我不行 - HTTP 的特点和缺点.md.html">18 我都这么成功了,你却说我不行 - HTTP 的特点和缺点.md.html</a>
</li>
<li>
<a href="/专栏/全解网络协议/19 我老了,让我儿子来吧 - HTTP2.md.html">19 我老了,让我儿子来吧 - HTTP2.md.html</a>
</li>
<li>
<a href="/专栏/全解网络协议/20 稳重的大外甥 - HTTPS.md.html">20 稳重的大外甥 - HTTPS.md.html</a>
</li>
<li>
<a href="/专栏/全解网络协议/21 HTTP的高级篇 - HTTPClientJava.md.html">21 HTTP的高级篇 - HTTPClientJava.md.html</a>
</li>
<li>
<a href="/专栏/全解网络协议/22 想来我家,你自己查呀 - DNS.md.html">22 想来我家,你自己查呀 - DNS.md.html</a>
</li>
<li>
<a href="/专栏/全解网络协议/23 来的早,不如来得巧 - NAT.md.html">23 来的早,不如来得巧 - NAT.md.html</a>
</li>
<li>
<a href="/专栏/全解网络协议/24 辛苦的邮政 - SMTP.md.html">24 辛苦的邮政 - SMTP.md.html</a>
</li>
<li>
<a href="/专栏/全解网络协议/25 你就是看不见我 - VPN.md.html">25 你就是看不见我 - VPN.md.html</a>
</li>
<li>
<a href="/专栏/全解网络协议/26 黑客的好帮手 - SSH.md.html">26 黑客的好帮手 - SSH.md.html</a>
</li>
<li>
<a href="/专栏/全解网络协议/27 你可以得到我的心,却得不到我的人 - 物理安全设备.md.html">27 你可以得到我的心,却得不到我的人 - 物理安全设备.md.html</a>
</li>
<li>
<a href="/专栏/全解网络协议/28 你怎么证明你就是你 - 身份验证和访问控制.md.html">28 你怎么证明你就是你 - 身份验证和访问控制.md.html</a>
</li>
<li>
<a href="/专栏/全解网络协议/29 我要怎么藏好我的考研资料 - 网络攻击(一).md.html">29 我要怎么藏好我的考研资料 - 网络攻击(一).md.html</a>
</li>
<li>
<a href="/专栏/全解网络协议/30 我要怎么藏好我的考研资料 - 网络攻击(二).md.html">30 我要怎么藏好我的考研资料 - 网络攻击(二).md.html</a>
</li>
<li>
<a href="/专栏/全解网络协议/31 如何保护我的考研资料 - 网络攻击防范.md.html">31 如何保护我的考研资料 - 网络攻击防范.md.html</a>
</li>
<li>
<a href="/专栏/全解网络协议/32 Linux网络安全 - 安全实战.md.html">32 Linux网络安全 - 安全实战.md.html</a>
</li>
<li>
<a href="/专栏/全解网络协议/33 结语.md.html">33 结语.md.html</a>
</li>
</ul>
</div>
</div>
<div class="sidebar-toggle" onclick="sidebar_toggle()" onmouseover="add_inner()" onmouseleave="remove_inner()">
<div class="sidebar-toggle-inner"></div>
</div>
<script>
function add_inner() {
let inner = document.querySelector('.sidebar-toggle-inner')
inner.classList.add('show')
}
function remove_inner() {
let inner = document.querySelector('.sidebar-toggle-inner')
inner.classList.remove('show')
}
function sidebar_toggle() {
let sidebar_toggle = document.querySelector('.sidebar-toggle')
let sidebar = document.querySelector('.book-sidebar')
let content = document.querySelector('.off-canvas-content')
if (sidebar_toggle.classList.contains('extend')) { // show
sidebar_toggle.classList.remove('extend')
sidebar.classList.remove('hide')
content.classList.remove('extend')
} else { // hide
sidebar_toggle.classList.add('extend')
sidebar.classList.add('hide')
content.classList.add('extend')
}
}
function open_sidebar() {
let sidebar = document.querySelector('.book-sidebar')
let overlay = document.querySelector('.off-canvas-overlay')
sidebar.classList.add('show')
overlay.classList.add('show')
}
function hide_canvas() {
let sidebar = document.querySelector('.book-sidebar')
let overlay = document.querySelector('.off-canvas-overlay')
sidebar.classList.remove('show')
overlay.classList.remove('show')
}
</script>
<div class="off-canvas-content">
<div class="columns">
<div class="column col-12 col-lg-12">
<div class="book-navbar">
<!-- For Responsive Layout -->
<header class="navbar">
<section class="navbar-section">
<a onclick="open_sidebar()">
<i class="icon icon-menu"></i>
</a>
</section>
</header>
</div>
<div class="book-content" style="max-width: 960px; margin: 0 auto;
overflow-x: auto;
overflow-y: hidden;">
<div class="book-post">
<p id="tip" align="center"></p>
<div><h1>11 我已经没地方住了吗 - IPv6</h1>
<h3>IPV6的成长史</h3>
<p>IPV6其实已经是一位80后。它生于八十年代后期当时的工程师们已经意识到IPV4的空间正在迅速耗尽。然后到了1995年左右IPV4进行了一次挣扎。那就是实现了子网技术我们前面有讲过这样就可以缓解IP地址不足和遍及全球的问题。从那时起已经过去了20多年我们现在才刚刚开始看到IPV6在世界上的快速发展和部署。我记得我2011年的时候想要去考CCNAIPV6的知识设计的很少。那么这是否意味着我们将立即转成IPV6吗那当然是极不可能的。比如在医疗保健领域。IT的技术不是那么的先进。整个商业领域中尚不支持IPV6。因此我们必须要找到一种折中的办法。你先去洗一下脸清醒一下。忘记IPV6已经三十多岁了还一事无成。忘记某些领域完全不支持IPV6。我希望当你读到这篇文章的时候内心是充满希望是充满着对明天美好的憧憬。我们来看一下IPV6的工作原理。他本身是一个阳光帅气的中年大叔每位大叔都是潜力股。只是还没有完全的开花。</p>
<h3>IPV4 vs IPV6</h3>
<p>俗话说的话没有对比就没有伤害但是不对比我们又怎么能知道两者的区别以及强弱呢。那我们就来无情的对比一下IPV4和IPV6。</p>
<h4>IPV4</h4>
<p>首先IPV4是32字节长有4个八位位组。 比如192.168.0.10。转成二进制就是11000000 1010100 00000000 00001010</p>
<h4>IPV6</h4>
<p>IPV6呢却比IPV4要长很多。有128位。表示的方式呢也是16进制的。比如这个例子2001:0DB8:0123:007D:0000:0000:00A5:53B5。</p>
<p>IPV6的话也同样分为网络部分和主机部分。一般是前64位作为网络部分这个不是必须的。却是极力推荐的因为IPV6就是这么设计的。可能你会觉得这个IPV6的地址太长了这是不是太难记了。这位80后的钻石王老五已经想到了。为了可以吸引更多的漂亮妹子。它做了一些改变。比如前缀0优化。这是什么意思呢</p>
<pre><code>比如说你现在手上有1元那你写成01元还有001元还有0001元有区别吗是不是都等于1元。
但是如果0在后面比如10元100元1000元还等于1元吗当然不等于是不是。所以前置的0是可以省略的。那么我们上面的IPV6地址就可以写成
2001:0DB8:0123:007D:0000:0000:00A5:53B5 全写
2001:DB8:123:7D:0:0:A5:53B5 简写 还可以写成更简写
2001:DB8:123:7D::A5:53B5
复制
</code></pre>
<p>这里提示一个潜在的错误,那就是::这种简写只能用一次。比如下面这个例子就是错误的</p>
<pre><code>2001:DB8:123::A5::53B5 (X) 你想一下这个为什么是错误的呢?
因为你无法判断前面和后面0的个数
2001:DB8:123:0:A5:0:0:53B5 (第一种可能)
2001:DB8:123:0:0:A5:0:53B5第二种可能
复制
</code></pre>
<p>如果你都无法判断,你怎么可能要求计算机知道哪种是你需要的呢?所以这个是要切记的点。</p>
<p>我们知道了IPV6的结构那IPV6是怎么运作的呢理论上来说和IPV4运作非常相似。如果有两台设备用电缆连接在一起。他们想要互相通信的话这些地址的网络部分必须匹配。比如这个例子</p>
<pre><code>192.168.10.10
255.255.255.0
192.168.10.12
255.255.255.0
复制
</code></pre>
<p><img src="assets/20210127154139167.png" alt="在这里插入图片描述" /></p>
<p>如果我的IPV4不具有相同的网络部分那么这些设备就无法就行通信。比如下面这个例子。</p>
<pre><code>192.168.55.10
255.255.255.0
192.168.10.12
255.255.255.0
复制
</code></pre>
<p><img src="assets/202101271541552.png" alt="在这里插入图片描述" /></p>
<p>从这个图的红色范围里你可以清楚的看到两个IP地址的网络部分是完全不同的。所以无法直接进行通信。除非你在中间添加一个路由器。</p>
<p>IPV6和IPV4的原理是相似的。如果网络部分相同之间是可以互相通信的。比如</p>
<pre><code>2001CA7:3:B::10/64
2001CA7:3:B::11/64
复制
</code></pre>
<p>如果我稍微的修改一下,比如下面这样,那他们就不能直接通信了。当然路由器还是可以解决问题的</p>
<pre><code>2001CA7:3:A::10/64
2001CA7:3:B::11/64
复制
</code></pre>
<p>我们来放大我们的场景到Internet。当在Internet上进行通信时我们需要使用的是称为IPV6的全球单播地址用于全球通信。还需要一个链路本地地址来进行本地的通信。让我们继续向下一起来看一下IPV6的地址类型。</p>
<h3>IPV6的地址类型</h3>
<ul>
<li>单播地址
<ul>
<li>全球单播地址</li>
<li>链路本地地址 - 用于本地的通信。格式必须是FE80::/10</li>
<li>环回地址 - ::1/128 (还记得IPV4的环回地址是多少吗127.0.0.1)</li>
<li>未指定地址 ::/128</li>
<li>唯一本地地址 FC00::/7, 这个地址是不可以和公共网络进行交流的这点和IPV4不同IPV4的话即使是私有地址通过NAT还是可以和公网通信。但是在IPV6中却无法左到这一点。所以这个唯一本地地址对你做实验和练习的时候比较有用但是不适合设置你的网络环境来和公网通信。</li>
</ul>
</li>
<li>组播地址
<ul>
<li>一对多的通信。主要用于企业内部</li>
</ul>
</li>
<li>任播地址
<ul>
<li>一个IPV6地址赋给多态机器Wait a Sec。这时候你是不是会有疑惑这样是不是违规了你的猜测是正确的那你开动脑瓜想一想有什么场景可以这么使用--&gt; 负载均衡Load Balancing</li>
</ul>
</li>
</ul>
<h3>IPV6的地址数量</h3>
<p>你是不是会有一个疑问就是我们之所以使用IPV6就是因为IPV4的地址太少了快被用完了所以才有了IPV6那么IPV6有多少地址呢我可以负责任的告诉你很多很多。真的是太难以计算了我们来看一个单一的网络地址吧。比如网络部分已经确定了然后只考虑主机部分的64位。就是说一个确定的IPV6网络地址上有多少个主机地址可以分配就是2的64次方计算出来是18,446,744,073,709,600,000。我已经不知道这个数字怎么念出来了所以就给你一个“准确的”数字那就是很多很多。你觉得IPV6会用尽吗我只能说世事无绝对但是基本上我们这一代是不用操心这个问题了。估计你不需要学习IPV8了。</p>
</div>
</div>
<div>
<div style="float: left">
<a href="/专栏/全解网络协议/10 我可是住二环的人 - IP地址的组成和分类.md.html">上一页</a>
</div>
<div style="float: right">
<a href="/专栏/全解网络协议/12 向左还是向右 - IP路由.md.html">下一页</a>
</div>
</div>
</div>
</div>
</div>
</div>
<a class="off-canvas-overlay" onclick="hide_canvas()"></a>
</div>
<script defer src="https://static.cloudflareinsights.com/beacon.min.js/v652eace1692a40cfa3763df669d7439c1639079717194" integrity="sha512-Gi7xpJR8tSkrpF7aordPZQlW2DLtzUlZcumS8dMQjwDHEnw9I7ZLyiOj/6tZStRBGtGgN6ceN6cMH8z7etPGlw==" data-cf-beacon='{"rayId":"70997633994a3cfa","version":"2021.12.0","r":1,"token":"1f5d475227ce4f0089a7cff1ab17c0f5","si":100}' crossorigin="anonymous"></script>
</body>
<!-- Global site tag (gtag.js) - Google Analytics -->
<script async src="https://www.googletagmanager.com/gtag/js?id=G-NPSEEVD756"></script>
<script>
window.dataLayer = window.dataLayer || [];
function gtag() {
dataLayer.push(arguments);
}
gtag('js', new Date());
gtag('config', 'G-NPSEEVD756');
var path = window.location.pathname
var cookie = getCookie("lastPath");
console.log(path)
if (path.replace("/", "") === "") {
if (cookie.replace("/", "") !== "") {
console.log(cookie)
document.getElementById("tip").innerHTML = "<a href='" + cookie + "'>跳转到上次进度</a>"
}
} else {
setCookie("lastPath", path)
}
function setCookie(cname, cvalue) {
var d = new Date();
d.setTime(d.getTime() + (180 * 24 * 60 * 60 * 1000));
var expires = "expires=" + d.toGMTString();
document.cookie = cname + "=" + cvalue + "; " + expires + ";path = /";
}
function getCookie(cname) {
var name = cname + "=";
var ca = document.cookie.split(';');
for (var i = 0; i < ca.length; i++) {
var c = ca[i].trim();
if (c.indexOf(name) === 0) return c.substring(name.length, c.length);
}
return "";
}
</script>
</html>