learn.lianglianglee.com/专栏/全解网络协议/10 我可是住二环的人 - IP地址的组成和分类.md.html
2022-05-11 18:57:05 +08:00

907 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>10 我可是住二环的人 - IP地址的组成和分类.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 class="current-tab" href="/专栏/全解网络协议/10 我可是住二环的人 - IP地址的组成和分类.md.html">10 我可是住二环的人 - IP地址的组成和分类.md.html</a>
</li>
<li>
<a 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>10 我可是住二环的人 - IP地址的组成和分类</h1>
<p>通过上一小节相信你对IP有了一个初步的认识。这一小节和我一起来了解一下IP地址的黑历史。以及它的演变进程。</p>
<h3>分类网络</h3>
<p><img src="assets/20210127154022485.png" alt="在这里插入图片描述" /></p>
<p>现在和我一起来一次时间旅行boom我们回到了1981年这一年开始出现了分类网络。我们来看一下它的工作方式是什么。这是子网掩码出现之前的事情。因此如果你生活在1985年那么你要在设备上输入IP地址。是没有子网掩码的。我们不需要子网掩码为什么因为它还不存在呢。也就是说还没有出生呢。分类网络确定了网络部分和地址的主机部分。根据地址类别我们有5个ABCD和E类。具体的分类看下面</p>
<pre><code>class Private IP Range
A 0.0.0,0 127.255.255.255
B 128.0.0.0 191.255.255.255
C 192.0.0.0 223.255.255.255
D 224.0.0.0 239.255.255.255
E 240.0.0.0 255.255.255.255
复制
</code></pre>
<p>从上面的分类可以看出每一个类别的IP地址是固定的。A类地址是从0到127.255.255.255。然后紧接着的就是B类从128.0.0.0到191.255.255。你有没有发现127.255.255.255的后一个数值就是128.0.0.0所以A和B其实是紧紧相邻的。然后再来看C的开始192.0.0.0是不是也是紧接着B的最后一个也就是191.255.255.255。所以C类地址就是192.0.0.0 到223.255.255.255。然后依次类推D类就是224.0.0.0到239.255.255.255。最后的E类也就是240.0.0.0到255.255.255.255了。</p>
<p>我们来分析一下A类的地址其实就是前8位的字节是网络部分。看下面的这个例子。</p>
<pre><code>10.0.10.0
10是网络部分 后面的0.10.0 是主机部分
二进制的写法是
00001010 00000000 00001010 00001010
复制
</code></pre>
<p>B类的地址就是前16位的字节是网络部分</p>
<pre><code>172.16.10.10
172.16是网络部分 后面的10.10是主机部分
二进制的写法是
10101100 000010000 00001010 00001010
复制
</code></pre>
<p>C类的地址就是前24位的字节是网络部分</p>
<pre><code>192.168.0.10
192.168.0是网络部分 后面的10是主机部分
二进制的写法是
11000000 10101000 00000000 00001010
复制
</code></pre>
<p>D类的地址就是前32位的字节是网络部分没有主机部分</p>
<pre><code>224.0.0.6
224.0.0.6是网络部分
二进制的写法是
11100000 00000000 00000000 00000110
复制
</code></pre>
<p>D类地址主要是用于广播。这是CCNA的一个很重要的考点但是你不需要了解CCNA因为你不是网络工程师这里指的是天天调试Switch和Router的工程师。然后E类的地址只是用于实验并不会实际的使用。所以你也能看到这种分法的使用其实很没有效率这也是为什么有了子网掩码。当时设计的人可能做梦也没有想到会有物联网就是你的冰箱和微波炉都需要一个ip。</p>
<h3>无类寻址IPV4最后的挣扎</h3>
<p>让我们再次坐上我们的时光机来到1995年。从1995年以后我们将开始谈论无类寻址因为这完全是你在职业生涯中要做的事情。毕竟你现在是2021年的新新人类。它的工作方式是什么呢那就是我们现在必须使用子网掩码。子网掩码是19941995年添加到IP地址上的一个技术。该技术的作用是说我们想要网络部分和地址的任何地方我们将创建一个单独的数字一个掩码。这是一个独立的数字将全1放入我们要网络部分的相应位将所有0放入主机的部分。看一下下面这个例子。</p>
<pre><code>203.0.113.10
203.0.113是网络部分 后面的10 是主机部分
二进制的写法是
11001011 00000000 01110001 00001010
11111111 11111111 11111111 00000000 这部分就是子网掩码,写成十进制就是
255.255.255.0
复制
</code></pre>
<p>因此看一下上面的例子你可能会稍微清楚一点。以上发生的事情是我们有了ipv4然后在它的下面有一个称为子网掩码的东西。主题掩码通过在子网掩码中放置一个或我们想要的网络部分并在想要宿主部分的位置用零来告诉我们地址网络的哪个部分是主机。因此如果将其转换回十进制则二进制的11111111会转换为十进制的255。因此我们将此地址203.0.113.10与子网掩码255.255.255.0结合在一起现在我们可以显式地将网络部分和主机部分分开。但是子网掩码的值不一定必须为255.255.255.0。使用无类寻址我们可以将网络部分移动到所需的任何位置。因此如果我们的网络部分只需要八字节我们可以将子网掩码的前8位的掩码更改为1并将子网掩码的后24位更改为零。那看上去就是下面这样</p>
<pre><code>10.0.0.10
10是网络部分 后面的0.0.10 是主机部分
二进制的写法是
00001010 00000000 00000000 00001010
11111111 00000000 00000000 00000000这部分就是子网掩码写成十进制就是
255.0.0.0
复制
</code></pre>
<p>当我们转换它时我们得到255.0.0.0作为掩码这简单地意味着我们IP地址的前8位是我们的地址的网络部分。其余的地址是主机部分子网掩码不必每8位变化。它可以变成或者放在我们想要放的任何地方。因此如果需要的话你可以设置一个子网掩码比如前20位是网络部分最后12位是主机部分。那会给我一个255.255.40.0的掩码。例子如下</p>
<pre><code>10.0.0.10
10是网络部分 后面的0.0.10 是主机部分
二进制的写法是
00001010 00000000 00000000 00001010
11111111 11111111 11110000 00000000这部分就是子网掩码写成十进制就是
255.255.240.0
复制
</code></pre>
<p>当然这是一个不寻常的情况子网掩码恰好位于八位字节的中间。稍后在进行子网划分时这会导致一些异常的十进制数字从我们的IP地址中弹出。但是实际上我想提出的要点是子网掩码的功用。子网掩码是确定IP地址的哪一部分寻址网络部分以及哪一部分是主机部分的数字。</p>
<p>好,现在让我们温故知新一下,还记得上节课讲的地址类型吗,来做一下下面的这个练习题。</p>
<pre><code>这个是什么地址?
203.0.113.53
255.255.255.0
</code></pre>
</div>
</div>
<div>
<div style="float: left">
<a href="/专栏/全解网络协议/09 我想有个家 - 什么是IP地址.md.html">上一页</a>
</div>
<div style="float: right">
<a href="/专栏/全解网络协议/11 我已经没地方住了吗 - IPv6.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":"709976314c363cfa","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>