mirror of
https://github.com/zhwei820/learn.lianglianglee.com.git
synced 2025-09-17 08:46:40 +08:00
907 lines
20 KiB
HTML
907 lines
20 KiB
HTML
<!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的高级篇 - HTTPClient(Java).md.html">21 HTTP的高级篇 - HTTPClient(Java).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个A,B,C,D和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年的新新人类。它的工作方式是什么呢?那就是我们现在必须使用子网掩码。子网掩码是1994,1995年添加到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>
|
||
|