mirror of
https://github.com/zhwei820/learn.lianglianglee.com.git
synced 2025-11-14 21:23:50 +08:00
u
This commit is contained in:
@@ -1,820 +1,410 @@
|
||||
<!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>13 我能给你安全感 - TCP(一).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 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 class="current-tab" 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>13 我能给你安全感 - TCP(一)</h1>
|
||||
|
||||
<p>不知不觉我们已经来到了第四部分,这里我们会开始来详细的讲解TCP和UDP,也就是传输层部分。我们首先来看一下协议中的王者TCP。相信你最熟悉的就是三次握手了。</p>
|
||||
|
||||
<p>我们上一章详细讲解了IP,也就是第三层网络层的主要协议,现在我们开始看一下传输层的重要协议TCP。</p>
|
||||
|
||||
<h2>TCP</h2>
|
||||
|
||||
<p>TCP的全称是Transmission Control Protocol。这个协议的目的就是创建一个Session,通过这个Session来传输数据。</p>
|
||||
|
||||
<p>我们在数据链路层查看了源和目标Mac地址,并看到了这些Mac地址是使我们能够将流量从一台设备发送到其自己局域网中的另一台设备。我们又看了网络层,也就是IP,了解了网络层的地址如何使我们能够从一个网络上的一个设备与世界其他地方的另一个设备进行通信。现在又到了TCP,TCP所要做的就是允许我们在网络上的两个设备之间创建会话,然后通过这个会话来传输数据。</p>
|
||||
|
||||
<p>我们现在来看看它是如何工作的。TCP使用一种称为客户端服务器模型的东西。比如我有一台PC或一个客户端,和一个Web服务器。我的客户端被认为是客户,因为运行某一种Web浏览器比如Chrome或者FireFox。这个Web浏览器就是一个HTTP的客户端。(HTTP超文本传输协议是我们用于传输Web页面的协议)。在HTTP的服务端需要有完全不同的软件在运行,也就是我们说的服务器,服务器是有很多的选择,比如Apache是一个非常流行的开源Web服务器。当然还有老牌的微软IIS等等。现在这里要做的就是客户端看做是一个设备说“你能给我发送网站吗?”。服务器会回答说,给你,这是你要的网站”。但是我们使用的是倒叙模式,在我们能够做到这一点之前,我们必须在两方之间建立一个会话。</p>
|
||||
|
||||
<p><img src="assets/20210202133201608.png" alt="在这里插入图片描述" /></p>
|
||||
|
||||
<h2>三次握手和四次挥手</h2>
|
||||
|
||||
<p><img src="assets/20210202133309953.png" alt="在这里插入图片描述" /></p>
|
||||
|
||||
<p>通过我这个灵魂画手的画作,你应该可以看出三次握手的精髓,那就是客户端会先向服务器端发送一个SYN,然后服务器端会发送回一个SYN-ACK。(ACK一般表示收到)然后客户端会再回复一个ACK。经过了三次通信也就是三次握手之后,这才能建立起连接,说明双方都没有问题,可以开始唠嗑了。就好像我们之前的例子还是美国队长和黑寡妇姐姐唠嗑。聊完之后。不能突然就断开了吧。这样太没有礼貌了。所以需要经过一个流程也就是我们说的四次分手。这是一个非常优雅的过程。首先服务端会发一个FIN消息。然后客户端回一个FIN-ACK。然后客户端会发送一个自己的FIN 消息。然后服务器发送一个FIN-ACK。这样双方就终止了通信。就好像黑寡妇姐不想和美国队长说话了,她会说,我要去给绿巨人做饭了,BYE BYE,然后美国队长会说,好您了,收到。那我也去给小美队抱孙子去了(这是两条消息),黑寡妇说,好的,您快去吧。这样两人就挂断了通信。这样是不是很容易理解。当然4次分手不是唯一的断开的方式。还有一种方式叫做Reset。</p>
|
||||
|
||||
<p>我们把整个的通信过程退后两步来看。想象一下客户端只是向Web服务器询问该网页。服务器回应说,这是网页。现在可能发生的事情是,任何时候任何一端都可以发送TCP重置消息(reset)。为什么它会发送TCP重置消息而不执行四次分手呢?因为有时我们可能在PC和Web服务器之间安装了一个安全设备,如果网络中发现某些不应该在网络上传入和传出的内容(比如小电影,一不小心就飙车了,但是开车犯法呀,切记)。这些设备的安全措施可能会发送TCP重置。该设备通常被编程为发送TCP重置并仅关闭两个设备之间的通信,所以这种情况的发生是很不友好的。其中一端(在这种情况下可能是Web服务器)将发送TCP重置。一旦这个客户收到了RST,连接就会立即关闭。我们将无法再发送数据。哪端都可以发送这个RESET。任何时候都可以。完全取决于你使用的软件。还是看我们的例子。美国队长和黑寡妇聊天,但是呢黑寡妇的老公在另一个房间默默的拿起了电话在监听,这时候美国队长和志玲姐姐开个玩笑,你的内衣真好看。绿巨人觉得你怎么可以开车,和美国队长说了一句,你给我滚(RST),然后就挂断了。这样是不是更容易理解。(这些只是开玩笑的例子呀,不要当真,是为了加深你的理解,如果你是任何一位的粉丝,有冒犯到,我提前说个对不起呀)。</p>
|
||||
|
||||
<p><img src="assets/20210202133228851.png" alt="在这里插入图片描述" /></p>
|
||||
|
||||
<h2>端口号</h2>
|
||||
|
||||
<p>我们看传输层寻址之前再来穿插一下端口号(我的思维就是这么活跃)。</p>
|
||||
|
||||
<p>端口号的范围从0到65535,通过端口号被分为三个不同的类别。</p>
|
||||
|
||||
<ul>
|
||||
|
||||
<li>公认端口(Well-Known)0-1023</li>
|
||||
|
||||
<li>注册端口(Registered)1024-49151</li>
|
||||
|
||||
<li>临时端口(Ephemeral)49152-65535</li>
|
||||
|
||||
</ul>
|
||||
|
||||
<p>服务器端口号是为非常特定的服务器应用程序层协议设计的。客户端的这些临时端口号主要用于一个会话的临时时间段,然后可以将该端口号扔掉或放回池中,以后我们可能会也可能不会重复使用该端口号。这些客户端端口号将在我们网络上的不同TCP会话中重复使用。</p>
|
||||
|
||||
<p>你想一下,你所熟悉的公认端口号有哪些?</p>
|
||||
|
||||
<ul>
|
||||
|
||||
<li>HTTP - 80</li>
|
||||
|
||||
<li>HTTPS - 443</li>
|
||||
|
||||
<li>FTP - 20,21</li>
|
||||
|
||||
<li>SSH - 22</li>
|
||||
|
||||
<li>Telnet - 23</li>
|
||||
|
||||
</ul>
|
||||
|
||||
<h4>公认端口</h4>
|
||||
|
||||
<p>这些端口已经存在很长时间了,是经过实践检验的协议,所以称为公认端口。诸如Http使用端口80,https(这是HTTP的加密版本,使用443)。FTP,出于不同的目的使用了两个不同的端口号,这使它使用起来有点麻烦和复杂,尤其是对于通过防火墙。SSH,使用端口22。Telnet使用端口23。当然还有很多就不一一列举了。</p>
|
||||
|
||||
<h4>注册端口</h4>
|
||||
|
||||
<p>然后是注册端口,它们可以是官方的也可以是非官方的。官方的意思就是该自定义应用程序的组织已经将使用的端口号注册到了Internet Assigned Numbers Authority(IANA)。比如微软的Microsoft Windows Internet Name Service (WINS)。它就是注册了端口号1512。还比如Cisco HSRP或者叫做Hot Standby Router Protocol注册了端口号1985。以及Microsoft Point-to-Point Tunneling Protocol (PPTP)点到点协议注册了1723。这三个例子都是正式注册的端口号。</p>
|
||||
|
||||
<p>还有另一种程序当然就是非官方的,比如游戏Civilization(文明)。使用的就是端口号2033。这意味着我们知道这个游戏将使用这个端口,但尚未正式注册。这是否意味着我们不能使用它了呢?当然不是。我们可以使用它。我们只需要知道某个特定的程序会使用它即可。</p>
|
||||
|
||||
<p>所有这些公认和注册的端口号会赋给应用层上的程序。服务器会监听这些端口号。</p>
|
||||
|
||||
<p>我们还是用例子来讲解。看下图。</p>
|
||||
|
||||
<p><img src="assets/202102021333371.png" alt="在这里插入图片描述" /></p>
|
||||
|
||||
<p>我有一个PC的服务端在左边,右边我放一个路由器,在这个路由器端,我配置的服务器是telnet,将路由器配置为服务器似乎有点奇怪。但是,在进行TCP通信时,请记住,我必须有一个设备作为客户端,而另一个设备必须是服务器。所以,为了使我的客户端可以Telnet到Router上,我必须在路由器上启用Telnet服务或者设置Telnet服务器。PC端我将使用我们熟悉的Putty作为客户端来访问。现在这个路由器一直在监听端口23,客户端将选择一些临时端口号(比如49160)用作其在传输层的源端口地址。我现在想将消息从客户端发送到服务端。我要使用源端口49160和目标端口23(代表Telnet)。这个时候需要做的是建立一个Segment也就是协议数据单元。</p>
|
||||
|
||||
<p><img src="assets/20210202133402425.png" alt="在这里插入图片描述" /></p>
|
||||
|
||||
<p>从上图可以看出,这个数据单元里包含一个源端口,一个目的端口,一些标志,一个序列号,一个确认号,然后是我们的有效负载。在那个标志的地方就是我们要发送的信息,还记得前面握手和分手时候发送的SYN,ACK等等吗?然后我们的客户端要发送这个给Router,其实协议数据单元只是包裹的一部分。看下图我们来认识一下,要发送的数据单元是什么样子。</p>
|
||||
|
||||
<p><img src="assets/20210202141228321.png" alt="在这里插入图片描述" /></p>
|
||||
|
||||
<p>而这个数据单元实际上只是包裹(Packet)的一部分。</p>
|
||||
|
||||
<p><img src="assets/20210202141300879.png" alt="在这里插入图片描述" /></p>
|
||||
|
||||
<p>从图上你可能会注意到我使用的地址是10.0.0.10:49160和10.0.0.1:23这个就是我们所说的Socket,Socket就是IP地址和端口号的组合。我们下一步是要把我们的Packet做为一部分放到Frame里,然后发送出去。然后路由器也就是服务器那边会像剖洋葱一样,一层层的剖开,把Packet从Frame里取出,再把Segment从Packet里取出。然后再做出一个类似的动作,形成一个新的Segment,Packet,Frame然后再发送给客户端。。。这样是不是就形成了三次握手。然后就可以开始传输数据了。听我这么讲完,是不是不仅仅知道了三次握手,还知道了应该怎么握手,以及握手前有没有洗手。</p>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
<div>
|
||||
|
||||
<div style="float: left">
|
||||
|
||||
<a href="/专栏/全解网络协议/12 向左还是向右 - IP路由.md.html">上一页</a>
|
||||
|
||||
</div>
|
||||
|
||||
<div style="float: right">
|
||||
|
||||
<a href="/专栏/全解网络协议/14 我那不为人知的秘密是什么 - TCP(二).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":"709976386bc53cfa","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>
|
||||
|
||||
|
||||
@@ -1,770 +1,385 @@
|
||||
<!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>28 你怎么证明你就是你 - 身份验证和访问控制.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 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 class="current-tab" 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>28 你怎么证明你就是你 - 身份验证和访问控制</h1>
|
||||
|
||||
<h5>AAA</h5>
|
||||
|
||||
<p>我们先从AAA开始(你一定很迷惑,什么是AAA)英文就是(authentication, authorization, and accounting)- 身份验证,授权和审计。我们先来看一下身份验证部分。</p>
|
||||
|
||||
<ol>
|
||||
|
||||
<li>身份验证就是你的用户名和密码。你输入用户名和密码以后,以此来获得进入的权限。没有此处的第二个组件,用户名和密码显得有一点毫无意义那就是 - 授权</li>
|
||||
|
||||
<li>授权就是你的特权和访问权限。换句话说,也就是在你登入的系统中,你可以访问哪些软件,你可以访问哪些文件共享,你可以访问哪些计算机和服务器?因此,你的用户名和密码与授权信息是相关联的,从而告诉你可以访问的内容。</li>
|
||||
|
||||
<li>从审计的角度来看,这里的最后一个组件很重要,你试想一下,如果出现问题,我们需要对问题进行故障排除,比如员工有没有按照预期的方式行事,我们会去将审查谁在何时何地做了什么;这就是这里的审计部分。</li>
|
||||
|
||||
</ol>
|
||||
|
||||
<p>所以我们有了身份验证,那就是我们的用户名和密码;授权,该用户有权访问什么;最后是审计,该用户做了什么,他们什么时候做的?因此,AAA身份验证就是这样。它是用户名,访问权限以及它们所做的记录。有两个组织支持在现代网络中使用的AAA服务器。思科是其中之一。它称为(Terminal Access Controller Accesses-Control System Plus)- “终端访问控制器访问控制系统Plus”或简称为TACACS。</p>
|
||||
|
||||
<h5>身份验证</h5>
|
||||
|
||||
<p>我们在这里来对身份验证进行一下深度研究。有本地身份验证,可以在其中对工作站本身进行身份验证。在家用设备中,如果你在家中有一台计算机或笔记本电脑,你最有可能通过无线网络将其连接到Internet,但是你可能没有要连接到服务器。此处的本地身份验证只是用户名和密码,使你可以直接在本地计算机上访问资源。一般会被分为两类-管理员和普通用户。与管理员相比,通常普通用户只是具有查看的权限,而管理员具有在工作站上配置的权限,尤其是对配置文件(这个很好理解,不需要解释呀)。</p>
|
||||
|
||||
<p>本地的身份验证只适用于用于本地工作站本身(比如你电脑的登录,输入的用户名和密码只是针对你的笔记本)。域名(Domain)身份验证意味着我们将登录一台要加入某种Domain的计算机。通常是使用Active Directory,这意味着我们将用户名和密码发送到domain控制器。然后,域控制器会将我们的设备添加到该domain中。当我们将设备连接到域控制器时,我们将使用称为Kerberos的协议来做(该Kerberos协议是开源的),由MIT及其包括IETF的联盟开发。 Kerberos所做的是对通信进行某种加密,以便当我们向服务器发送用户名和密码时,对通信进行加密,这就是这里的组成部分之一。另一个组件是确保发送用户名和密码的计算机是他自己,而不是在该网上其他试图假冒该设备的其他设备。因为这里可以进行某些类型的中间人攻击,即侦听设备和服务器的通信,然后稍后将通信重播回服务器,以欺骗服务器。Kerberos是服务器和客户端验证其身份的一种方式。除此之外,它还会加密该通信,以允许该用户名和密码成功到达服务器,对其进行验证,以查看是否允许该设备加入domain。</p>
|
||||
|
||||
<p>当你需要使用域身份验证时,或者是你早上准备开始工作了,打开你的电脑,输入用户名和密码来登录。这将与域控制器进行核对,以验证你是谁,并允许你登录并访问设备上的应用程序。现在,假设你在会计部门工作,并且需要使用一些会计软件比如QuickBook,并且这个软件的依赖位于我们数据中心中的服务器。这里的问题是,在大型公司,你每天都会使用很多不同的程序。你可能有一个内部网站和电邮。你可能会使用特定的专业软件,例如刚才提到的Quickbook,你可能还会使用某些绘图软件等等。可能需要使用许多很多软件(大公司就是有钱,全是买license)。这些软件中的大多数都将具有某种身份验证系统,要确保只有你才能使用该软件,该软件会阻止那些很熟练的程序员或其他工种,但是不是会计的人。这就是术业有专攻,你不是会计,不要动我的软件。因此,我们一般会使用一种叫做LDAP的东西。现在,LDAP已内置到Microsoft Server系统(特别是Active Directory)中,它允许我们执行的操作是允许我们将用户名和密码发送到我们的比如会计软件。然后,这个软件服务器会说“嘿,Active Directory”,该用户是否有权使用这个软件?如果是的话,说明此用户已被授权,然后该用户就可以登录到这个会计软件。</p>
|
||||
|
||||
<p>以上的例子其实很接近于所谓的单点登录(现在单点登录很火呀)。单点登录是一个很重要的概念,因为这意味着我只需要知道一个用户名和密码。这就和你的个人生活有一点不同,比如在我的个人生活中,我需要我的Gmail帐户密码,我的netflix的帐户密码,我的Facebook帐户密码,我的HBO账户,我的银行账户等等。对于所有不同的系统,我都需要所有不同的用户名和密码(你可以一个密码走天下,但是会不安全),并且没有一种很好的方法将它们统一在一起。 Facebook和Google对其单点登录产品进行了一些尝试,但是效果不是那么好。可是当我们在企业中使用时,效果就不一样了。用户只需要知道一个用户名和密码,就会感到非常满意。此外,它还提供了无与伦比的安全性,因为你不再被迫去创建许多密码,并且还需要记住许多不同的用户名和密码的组合。</p>
|
||||
|
||||
<p>你想一下这里是不是有一个小问题,那就是假设用户名和密码遭到泄露,是不是意味着拥有该用户名和密码的任何人都可以将设备加入网络中的domain,这样会不会危险。因此,我们可以采取的预防措施之一是向网络上的设备颁发证书。在设备联机时可以通过将证书的一部分发送到域控制器来验证它是否属于这个domain(我喜欢用英文单词在这里,中文的翻译总感觉有一点点变扭)。域控制器可能说,是的,此设备在我们的网络上有效,是自己人,放进来把。这比仅使用用户名和密码来使设备加入Active Directory域要好一些,因为现在Active Directory域控制器必须专门为我们要加入domain的设备颁发证书。因此,我们使用证书和一些凭据在此处登录。这将防止有人携带自己的设备并将其加入domain。这就好比什么呢?比如说天地会的密码是”天王盖地虎,宝塔镇河妖“,是不是每一个知道这个口号的人都是自己人呢?不一定吧。你只要偷听到了就会知道,但是你有一个证书,上面陪着你的照片,这样是不是就不好蒙混过关了(可能有同学会说这样还是有漏洞,不要抬扛呀,任何软件和方案都有安全问题,只要你钻研,都能攻克,只是简单和难得区别)。我们通常会为无线设备使用基于证书的身份验证。这也确实非常有效。</p>
|
||||
|
||||
<h3>日志和审核</h3>
|
||||
|
||||
<p>在AAA中,最后一个就是审核,日志是属于审核的一部分。我们需要记录所有的traffic,这使我们可以在将来审核这部分。美国有一个法律那就是关于美国健康法的一部分是,医疗记录系统的用户不得查看不在其直接护理下的任何患者的健康信息。比如你在医院工作,发现蔡x坤是你的病人,你有接触病历软件的权限,你可能想了解阿坤怎么了。可能是出于好奇。可能希望将该信息出售给某家机构来引起轰动。所以,如果让你来设计这个审核来防止这种情况发生,你怎么做呢?设计目的是使我们能够准确的记录谁在何时何地做了什么;然后出现问题的时候,可以审核然后说,那个人这样做是对的吗?</p>
|
||||
|
||||
<h3>多因素身份验证</h3>
|
||||
|
||||
<p>我前面应该有提到过这个,我们现在来细谈一下多因素身份验证。现在是我们有史以来第一次能够真正实现多因素身份验证的年代。尽管仍然存在很多挑战,但比以前要好很多很多。多因素身份验证,这个想法是收集有关你的东西,与你有关的东西。因此,我们在这里需要做的一件事情是,你知道的事情,你拥有的一些东西,你是谁,你在哪,你在做什么。让我们看一下其中的例子。所以你知道的事情在这里可以是你的用户名。自定义ID一般会是你的电邮地址,因为用户名通常是你的用户名,而电邮地址一般都是公开的。所以,公司不希望你的用户名成为唯一的标准,这就是为什么我们还需要添加密码。因此,你拥有或者说知道用户名和密码,这就是我们对用户名和密码的单因素身份验证。这是我们知道的东西。我们可以通过添加我们拥有的东西来增强它。我们使用了一些我们知道的东西,例如用户名密码,我们还可以添加一些我们有的东西,比如钥匙卡,钥匙扣,某种类型的数字生成器,甚至可以是我们的智能手机。因此,我们在这里所要做的就是输入用户名和密码,然后可能还要刷智能卡。在银行工作的同学可能会知道,员工会得到一些小的安全身份证,这是一个随机生成数字的小设备。因此,每隔30秒左右会弹出一个新号码,然后你将使用该号码以及用户名和密码来在系统中进行身份验证。因为生成的数字有些随机,很难预测。我们也可以使用智能手机来做同样的事情。还记得我前面提到的一个App(Authenticator)。当我们要登录到系统时,我们可以请求我们的代码登录。然后,我们登录到系统中,可以输入我们的用户名,密码,然后还有就是这个App里的一个数字。这里的想法是你的用户名和密码就是你所知道的。如果有人出于某种原因得到了这些密码,也许你写下了你的用户名和密码,然后又有人从你那里偷了密码,则可以使用第三种身份验证方式。</p>
|
||||
|
||||
<p>因此,窃取你信息的人将无法登录,除非他们有此第三因素。我们可以在这里使用的另一种东西就是你自己。这可能很简单,例如指纹,脸部扫描,视网膜扫描,手掌扫描。通常,这将是某种生物特征识别,而你很难复制给其他人。因此,也许你会再次输入用户名,密码和指纹。智能手机使用指纹读取器。有时,指纹读取器仅用作身份验证的一种形式。这有点危险,因为如果有人可以访问我的指纹并能够复制它,那么他们实际上可以在我的手机上进行身份验证。但是手机上还有其他应用程序需要更多,并且还需要用户名,密码和指纹才能进入。这里的另一个因素是你所在的地方。我马上想到的一个例子就是这项技术,我知道苹果称之为HomeKit。你可以做的就是在你要为自己做某事的地方使用它,比如你在自己的家中,你可以使用智能手机打开锁。这里是不需要用户名和密码的。从字面上看,它将只是在你所处的某个地方,你所拥有的某个事物以及你是谁。可以你你在家附近,拥有你的智能手机,并将指纹放在智能手机上。然后,这三件事加在一起就可以解锁你的房门。因此,在某个地方,您可以将自己拥有的东西和自己所有的东西结合起来使用,例如做一些事情,例如打开房屋的门,或者在回家后打开室内的灯。</p>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
<div>
|
||||
|
||||
<div style="float: left">
|
||||
|
||||
<a href="/专栏/全解网络协议/27 你可以得到我的心,却得不到我的人 - 物理安全设备.md.html">上一页</a>
|
||||
|
||||
</div>
|
||||
|
||||
<div style="float: right">
|
||||
|
||||
<a href="/专栏/全解网络协议/29 我要怎么藏好我的考研资料 - 网络攻击(一).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":"7099765bff413cfa","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>
|
||||
|
||||
|
||||
Reference in New Issue
Block a user