谷歌-IT-支持笔记-全-
谷歌 IT 支持笔记(全)
001:网络基础与协议模型 🖧

在本节课中,我们将学习计算机网络的基本概念,了解计算机如何像人类一样进行通信,并介绍用于描述网络通信层次的核心模型。理解这些基础是成为一名优秀IT支持专家的关键。
课程介绍与讲师背景
大家好,我是维克多·埃斯科维多,目前是一名企业运营工程师。我对IT的热情始于九岁时,父亲带回了家里的第一台电脑。他是一名机械工程师,用电脑辅助CAD工作。这是我第一次接触计算机,后来我意识到可以在上面安装新软件,包括电脑游戏。在摆弄电脑的过程中,我对其工作原理越来越感兴趣,并开始打开机箱一探究竟。
我通过反复试验进行学习,虽然当时无法确切解释,但我发现所有部件协同工作的机制非常迷人。回想起来,这些经历为我后来的职业生涯埋下了种子。但在我成长的环境中,上大学和追求职业发展并非主流话题。作为第一代墨西哥裔美国人,我认识的人里很少从事科技行业。我的学校和家庭资源有限,父母虽然鼓励我努力学习计算机,但他们自身缺乏相关经验,无法在大学或科技职业规划上给我具体建议。
我决定上大学并尝试计算机科学专业,以满足我对计算机底层工作原理的好奇心。我发现,拥有这些基础知识让我能够理解IT职业中一些更高级的重要概念。在校期间,我在一家本地小公司找到了第一份IT工作。至今,我已从事IT行业12年,其中最近7年在谷歌工作。
目前,我负责管理公司大型内部IT项目的部署工作。我运用从最初服务台角色中积累的知识,确保理解我的工作对用户和各种支持团队的影响。作为一名企业运营工程师,我需要理解变更对公司基础设施的影响。因此,网络技能至关重要。我不仅需要了解应用程序在单个系统上的运行方式,还需要理解它们如何与公司内外的所有其他系统交互。
计算机如何通信
现在大家对我有了一些了解,让我们深入探讨网络的“比特与字节”。
计算机之间的通信与人类非常相似。以口头交流为例:两个人需要说同一种语言,并且能够听到对方,才能有效沟通。如果环境嘈杂,一方可能需要请另一方重复。如果一方对解释的概念理解不深,可能会要求澄清。一个人可能只对另一个人说话,也可能对一群人说话。通常,对话会有问候和结束的方式。
关键在于,人类在交流时遵循一系列规则,计算机也必须如此。计算机为了正确通信而必须遵循的这一套既定标准,就叫做协议。
计算机网络是我们赋予计算机之间如何进行完整通信的总称。网络涉及确保计算机能够“听到”彼此、它们说的协议能被其他计算机理解,以及它们能重传未完全送达的消息——就像人类交流一样。
网络分层模型
有多种模型用于描述计算机网络中不同层次的作用。在本课程中,我们选择TCP/IP五层模型。我们也会提及另一个主要的网络模型——拥有七层的OSI模型。
如果你不知道这些模型是什么或它们如何工作,不用担心,我们将在整个课程中深入探讨这些主题。
了解这类分层模型对于学习计算机网络至关重要,因为网络本身就是一个高度分层的事务。每一层的协议承载着其上层的协议,以便将数据从一处传送到另一处。

可以这样思考:用于将数据从网络电缆一端传送到另一端的协议,与用于将数据从地球一端传送到另一端的协议完全不同。但是,要使互联网和企业网络以现有方式工作,这两种协议必须同时协同工作。

学习目标与重要性
有时,互联网或企业网络上的计算机在尝试相互通信时会遇到问题,而通常需要IT支持专家来解决这些问题。这就是理解计算机网络如此重要的原因。
到本课程结束时,你将能够:
- 解释我们模型的全部五个层次。
- 描述计算机如何确定消息的发送目的地。
- 说明DNS和DHCP等网络服务的工作原理。
- 使用强大的工具来帮助诊断网络问题。
你准备好了吗?让我们开始深入学习吧。
总结
本节课我们一起学习了计算机网络的基本类比,了解了协议在通信中的核心作用,并初步认识了TCP/IP和OSI这两种关键的网络分层模型。我们还了解了学习这些知识对于IT支持工作的重要性,并明确了本课程的学习目标。在接下来的章节中,我们将对这些分层模型进行深入剖析。
002:课程介绍 🖥️

在本节课中,我们将学习计算机网络的“比特与字节”基础。课程将介绍计算机网络的基本概念、通信协议以及用于描述网络通信的分层模型。通过学习,你将理解计算机如何像人类一样遵循规则进行通信,并初步认识网络模型的重要性。
讲师介绍
我是维克多·埃斯科维多,现任企业运营工程师。我对信息技术的热情始于九岁时,父亲带回家第一台电脑。他是一名机械工程师,使用电脑辅助CAD工作。这是我首次接触计算机,后来我意识到可以在上面安装新软件,包括电脑游戏。
在摆弄电脑的过程中,我对其工作原理越来越感兴趣,最终开始打开机箱查看内部结构。我发现有些部件可以拆卸,甚至有些本不该拆卸。通过不断的尝试和错误,我学到了很多。虽然当时无法确切解释,但我对各个部件如何协同工作的机制感到着迷。回想起来,这些经历为我后来的职业生涯播下了种子。
在我成长的环境中,上大学和追求职业发展并非普遍谈论或强烈鼓励的话题。作为第一代墨西哥裔美国人,我认识的人中很少有人投身科技行业。我的朋友和家人主要关注高中毕业和确保有工作,并未过多考虑长远的职业生涯。我的学校资源有限,无法提供许多技术课程。尽管父亲从事机械工程,但电脑对他而言只是一个工具,如同铣尺或锤子。
我的父母鼓励我努力学习并探索计算机领域,但他们自身缺乏相关经验,无法在大学或科技职业规划上给我具体建议。当我决定上大学时,我选择了计算机科学专业,以满足我对计算机更基础工作原理的好奇心。我意识到,拥有这些基础知识能让我更好地理解IT职业中一些重要的高级概念。
在校期间,我在一家本地小公司获得了第一份IT工作。至今,我已从事IT行业12年,其中最近7年在谷歌工作。目前,我负责管理公司大型内部IT项目的部署工作。我将早年担任服务台角色时积累的知识应用于此,以确保理解我的工作如何影响用户及各支持团队。
作为企业运营工程师,我的职责是理解变更对公司基础设施的影响。因此,网络技能至关重要。我不仅需要理解应用程序在单个系统上的运行方式,还需了解它们如何与公司内乃至外部的所有其他系统交互。
计算机网络基础
既然你对我有了一些了解,现在让我们深入探讨计算机网络的“比特与字节”。
计算机之间的通信与人类非常相似。以口头交流为例:两个人需要说同一种语言,并且能够听到对方,才能有效沟通。如果环境嘈杂,一方可能要求另一方重复。如果一方对解释的概念理解不深,可能会要求澄清。一个人可能只与另一个人对话,也可能对一群人讲话。通常,对话会有问候和结束的方式。
关键在于,人类在交流时遵循一系列规则,计算机也必须如此。计算机为了正确通信而必须遵循的这一套既定标准,称为协议。计算机网络是我们赋予计算机之间如何进行完整通信范畴的名称。网络涉及确保计算机能够“听到”彼此、它们使用的协议能被其他计算机理解,以及在信息未完全送达时重复发送消息——正如人类的交流方式。
网络模型简介
有多种模型用于描述计算机网络中不同层次的作用。在本课程中,我们选择TCP/IP五层模型。我们也会提及另一个主要的网络模型——OSI模型,它包含七层。
如果你不知道这些模型是什么或它们如何工作,请不要担心。我们将在整个课程中深入探讨这些主题。

了解这类分层模型对于学习计算机网络至关重要,因为网络本身就是一个高度分层的事务。每一层的协议承载其上层协议的数据,以便将数据从一处传输到另一处。可以这样想:用于将数据从网络电缆一端传输到另一端的协议,与用于将数据从地球一端传输到另一端的协议完全不同。但要使互联网和企业网络以现有方式工作,这两种协议必须同时协同工作。

有时,互联网或企业网络上的计算机在尝试相互通信时会遇到问题。通常,这需要IT支持专家来解决。这就是理解计算机网络如此重要的原因。
课程目标
在本课程结束时,你将能够解释我们模型的全部五层。不仅如此,你还将能够描述计算机如何确定消息的发送目的地,以及DNS和DHCP等网络服务如何工作。你还将学会使用强大的工具来帮助诊断网络问题。
你准备好了吗?让我们开始深入学习吧。
总结
本节课我们一起学习了课程的整体介绍和计算机网络的基本概念。我们认识了讲师维克多·埃斯科维多,了解了他的职业背景。我们明确了计算机通信依赖于协议,并初步接触了TCP/IP五层模型和OSI模型这两个关键的网络分层模型。最后,我们了解了本课程的学习目标,即掌握网络各层原理、关键服务(如DNS、DHCP)以及网络故障诊断工具。下一节,我们将开始深入探索网络模型的第一层。
003:TCP/IP五层网络模型 🏗️

在本节课中,我们将要学习一个用于理解网络通信的核心框架——TCP/IP五层模型。我们将从最底层的物理连接开始,逐层向上,了解每一层的作用和关键协议,从而理解数据是如何在网络中传输的。
要真正理解网络,我们需要了解所有相关的组件。这包括连接设备之间的线缆,以及设备之间用于通信的协议。有多种模型可以帮助解释网络设备如何通信,但在本课程中,我们将重点介绍一个五层模型。学完本课后,你将能够识别和描述每一层及其作用。

物理层 🔌
让我们从模型的最底层开始,即物理层。
物理层正如其名。它代表了连接计算机的物理设备。这包括网络线缆的规格、连接设备在一起的接头,以及描述信号如何通过这些连接发送的规范。
数据链路层 🔗

上一节我们介绍了物理连接,本节中我们来看看数据链路层。
我们模型的第二层被称为数据链路层。有些资料会称此层为网络接口层或网络接入层。在这一层,我们引入了第一个协议。物理层关注的是线缆、接头和信号发送,而数据链路层则负责定义一种通用的方式来解释这些信号,以便网络设备能够通信。

以下是数据链路层的关键点:
- 存在许多协议,但最常见的是以太网协议,尽管无线技术正变得越来越流行。
- 除了规定物理层属性,以太网标准还定义了一个负责将数据传送到同一网络或链路上的节点的协议。
网络层 🌐

接下来,我们进入负责跨网络通信的第三层。
第三层,网络层,有时也被称为互联网层。正是这一层允许不同的网络通过称为路由器的设备相互通信。

以下是网络层的核心概念:
- 通过路由器连接在一起的网络集合称为互联网网络,其中最著名的就是互联网。
- 数据链路层负责数据跨越单个链路,而网络层则负责数据跨越一系列网络的传递。
- 当你家庭网络上的设备与互联网上的服务器通信时,正是网络层帮助数据在这两个位置之间传递。
- 这一层最常用的协议是IP,即互联网协议。IP是互联网和全球大多数小型网络的核心。
传输层 🚚

上一节我们了解了数据如何跨网络路由,本节中我们来看看传输层如何确保数据到达正确的应用程序。

网络软件通常分为客户端和服务器两类,客户端应用程序发起数据请求,服务器软件通过网络响应请求。一个节点可能同时运行多个客户端或服务器应用程序。例如,你可以在电脑上同时运行电子邮件程序和网页浏览器这两个客户端应用程序,而你的电子邮件和网页服务器可能运行在同一台服务器上。那么,电子邮件如何进入你的邮件应用,而网页如何进入你的浏览器呢?这是因为我们的下一层——传输层。
虽然网络层负责在两个独立节点之间传递数据,但传输层负责理清哪些客户端和服务器程序应该接收这些数据。
以下是传输层的关键协议:
- 当你听到网络层协议IP时,你可能想到了TCP/IP这个常见短语。这是因为第四层(传输层)最常用的协议被称为TCP,即传输控制协议。
- 其他传输协议也使用IP来传输数据,包括一种称为UDP(用户数据报协议)的协议。
- 两者之间的最大区别在于,TCP提供了确保数据可靠传递的机制,而UDP没有。
现在,重要的是要知道网络层(在我们的例子中是IP)负责将数据从一个节点传送到另一个节点。同时,请记住传输层(主要是TCP和UDP)负责确保数据到达运行在这些节点上的正确应用程序。
应用层 📦
最后但同样重要的是,第五层被称为应用层。
这一层有许多不同的协议,正如你从名称中猜到的那样,它们是特定于应用程序的协议。用于让你浏览网页或收发电子邮件的协议就是一些常见的例子。应用层中的协议对你来说最为熟悉,因为它们可能是你以前直接交互过的,即使你没有意识到。

你可以将各层想象成包裹递送的不同方面:
- 物理层是送货卡车和道路。
- 数据链路层是送货卡车如何从一个十字路口反复到达下一个十字路口。
- 网络层确定需要走哪些道路才能从地址A到达地址B。
- 传输层确保送货司机知道如何敲你的门来告诉你包裹已送达。
- 应用层则是包裹本身的内容。
总结 📝

本节课中我们一起学习了TCP/IP五层网络模型。我们从底层的物理连接(物理层)开始,学习了如何解释信号进行本地通信(数据链路层),然后了解了数据如何跨越不同网络进行路由(网络层)。接着,我们探讨了如何确保数据被交付到正确的应用程序(传输层),最后认识了直接为用户服务的各种应用协议(应用层)。理解这个分层模型是诊断和解决网络问题的基础。
004:亚历克斯为何选择网络


在本节课中,我们将探讨网络知识对于IT支持专业人员的重要性,并了解本课程如何通过聚焦实际案例和核心技能,帮助初学者掌握网络基础知识。
我们日常交互的每一台计算设备都是网络设备。计算机不再是孤立的存在。从手机到平板电脑,从笔记本电脑到台式机,它们都以某种方式连接在网络中。它们都在与其他计算机进行通信。
对许多人而言,网络被视为某种“黑魔法”,似乎只有特定人群才能真正理解其运作原理。但根据我的经验,一名IT支持人员如果能在基础层面真正理解网络,他就能在工作的各个方面都表现得更加成功。
市面上有很多网络课程可供选择。实际上,自20世纪90年代以来,人们就一直以类似的方式教授网络知识。但我认为本课程确实与众不同,因为它聚焦于大量实际案例,并真正专注于IT支持人员需要了解的知识,而非网络工程师必须掌握的全部内容。
我们将在DNS(域名系统)上花费大量时间。我们将在不同的故障排除技术和工具上花费大量时间。我们还将花费大量时间,专注于IT人员在日常工作中真正需要了解的那些事情。
本节课中我们一起学习了网络在当今计算环境中的普遍性,以及掌握基础网络知识对IT支持人员职业成功的关键作用。本课程的设计旨在通过实践案例和针对性内容,帮助初学者克服对网络技术的畏惧,掌握实用的核心技能。
005:网络电缆与设备 🖧

在本节课中,我们将学习计算机网络中用于连接设备、传输数据的核心物理组件——电缆与设备。你将能够识别并描述不同类型的网络电缆和网络设备,这是IT支持专业人员日常工作的基础。
网络电缆:连接的基础
上一节我们介绍了网络通信的基本概念,本节中我们来看看实现这些连接的具体物理媒介——电缆。电缆连接不同的设备,使数据能够在它们之间传输。

当今使用的大多数网络电缆可分为两大类:铜缆和光纤。
铜缆:最常见的网络电缆
铜缆是最常见的网络电缆形式。它们由包裹在塑料绝缘层内的多对铜线组成。
你可能已经知道,计算机使用二进制进行通信,人们用1和0来表示。发送设备通过改变铜线两端的电压范围来传输二进制数据。接收端的系统能够将这些电压变化解释为二进制的1和0,进而转换成不同形式的数据。
以下是网络中最常见的几种双绞线铜缆:

- Cat 5:较老的型号,已基本被Cat 5e和Cat 6取代。
- Cat 5e:对内部结构进行了改进,以减少串扰。
- Cat 6:遵循更严格的规范,数据传输更快、更可靠,但在高速下最大传输距离较短。
这些类别(Cat 5、Cat 6)具有不同的物理特性,例如铜线对的绞合次数,这导致了不同的可用长度和传输速率。从外部看,它们看起来差不多,内部结构肉眼看来也非常相似。重要的是,这些电缆内部双绞线的排列方式差异,会极大地影响数据传输速度以及信号抵抗外界干扰的能力。
Cat 5e电缆之所以基本取代了旧的Cat 5电缆,是因为其内部结构减少了串扰。串扰是指一条电线上的电脉冲意外地被另一条电线检测到,导致接收端无法理解数据,从而造成网络错误。

更高级的网络协议有方法检测丢失的数据并请求重传,但这当然会占用更多时间。Cat 5e电缆更高质量的规格使其需要重传数据的可能性降低。这意味着在相同时间内,平均可以传输更多数据。
Cat 6电缆遵循更严格的规范以避免串扰,因此价格更昂贵。Cat 6电缆比Cat 5e电缆能更快、更可靠地传输数据,但由于其内部结构,在更高速度下使用时,最大传输距离较短。

光纤:高速远距离传输
第二种主要的网络电缆形式是光纤,即光纤电缆的简称。
光纤电缆内含独立的光纤,这是由玻璃制成的微小细管,宽度大约相当于人类头发。与使用电压的铜缆不同,这些玻璃管可以传输光束。光纤电缆使用光脉冲来表示底层数据的1和0。
光纤有时专门用于存在大量来自外部源的电磁干扰的环境,因为这种干扰会影响通过铜缆发送的数据。光纤电缆通常能比铜缆更快地传输数据,但它们更昂贵且更脆弱。
光纤还能在比铜缆长得多的距离上传输数据,而不会遭受潜在的数据丢失。现在你对光纤电缆的优缺点有了更多了解,但请记住,你在计算机数据中心遇到光纤电缆的可能性远大于在办公室或家中。

网络设备:构建网络的枢纽

了解了连接介质后,我们来看看管理和引导这些数据流的设备。许多不同的网络设备用于帮助计算机之间正确通信。
以下是几种关键的网络设备及其功能:

- 集线器:一种物理层设备,将多个网络设备连接在一起。它接收数据包后,会简单地将其复制并发送到所有连接的设备。
- 交换机:一种更智能的数据链路层设备,也用于连接多个设备。但交换机会学习哪些设备连接在它的哪个端口上,并能将数据包只发送到目标设备,这使网络更高效。
- 路由器:一种网络层设备,顾名思义,它负责在网络之间路由数据。路由器帮助数据包在互连的网络中找到最佳路径,例如在你家的网络和互联网之间。
- 调制解调器:一种设备,负责在数字信号和模拟信号之间进行转换。它使数字数据能够通过模拟线路(如电话线或电缆线)进行传输,是连接广域网(如互联网)的关键设备。
总结
本节课中我们一起学习了计算机网络的基础物理组件。我们探讨了两种主要的网络电缆:使用电信号的铜缆(包括Cat 5e, Cat 6)和使用光信号的光纤,并比较了它们的特性与应用场景。接着,我们介绍了构建网络所需的几种核心设备:集线器、交换机、路由器和调制解调器,了解了它们在网络不同层级中的作用。掌握这些电缆和设备的区别与用途,是理解和维护现代计算机网络的重要一步。
006:集线器与交换机 🖧

在本节课中,我们将学习两种基础的网络设备:集线器和交换机。我们将了解它们的工作原理、区别以及各自在网络通信中扮演的角色。
网络设备概述
在本视频和下一个视频中,我们将对网络设备进行概述。几乎每一位IT专家都需要定期与这类设备打交道。

点对点连接
首先,我们来了解点对点网络连接。电缆允许你建立点对点的网络连接。在这种网络中,链路的每一端只存在一个设备。

从点到多点:集线器的引入
虽然点对点连接有其用途,但在一个拥有数十亿计算机的世界里,它们并不十分实用。幸运的是,存在允许许多计算机相互通信的网络设备。这些设备中最简单的是集线器。
集线器是一种物理层设备,允许同时连接多台计算机。连接到集线器的所有设备最终会同时与其他所有设备通信。由连接到集线器的每个系统来决定传入的数据是否是发送给自己的,如果不是则忽略它。






理解冲突域
上一节我们介绍了集线器的工作方式,本节中我们来看看它带来的问题。这种方式会在网络上产生大量“噪音”,并形成所谓的冲突域。
冲突域是一个网络段,其中一次只能有一个设备进行通信。


以下是其工作原理:
如果多个系统试图同时发送数据,电缆上传输的电脉冲会相互干扰。这导致这些系统必须等待一个“安静”的时段,然后才能再次尝试发送数据。
这确实会减慢网络通信速度,也是集线器如今相当罕见的主要原因。它们今天主要是一种历史产物。
更优的解决方案:网络交换机
既然集线器效率低下,那么连接多台计算机的更常见方式是使用一种更复杂的设备,称为网络交换机,最初被称为交换式集线器。




交换机的工作原理
交换机与集线器非常相似,因为你可以将许多设备连接到它上面进行通信。区别在于,集线器是第1层(物理层)设备,而交换机是第2层(数据链路层)设备。
这意味着交换机实际上可以检查网络中传输的以太网协议数据的内容,确定数据是发送给哪个系统的,然后只将数据发送给那一个系统。



交换机的优势


这种工作方式减少甚至完全消除了网络上的冲突域大小。如果你猜测这将导致更少的重传和更高的整体吞吐量,那么你是正确的。


总结

本节课中我们一起学习了两种关键的网络连接设备。我们了解了集线器作为简单的物理层广播设备,会创建冲突域,导致效率低下。而交换机作为更智能的数据链路层设备,能够定向转发数据,极大地提升了网络效率和性能。理解这两者的区别是构建和维护高效网络的基础。
007:路由器的工作原理 🚦
在本节课中,我们将要学习网络中的一个关键设备——路由器。我们将了解它与集线器、交换机的区别,以及它在连接不同网络、特别是构成互联网骨干中所扮演的核心角色。
上一节我们介绍了用于连接单个网络内计算机的设备,如集线器和交换机。本节中我们来看看如何实现不同网络之间的通信。
路由器的基本概念
集线器和交换机是用于连接单个网络内计算机的主要设备,这个网络通常被称为局域网。
但我们经常需要向其他网络上的计算机发送或接收数据,这时就需要路由器登场。
路由器是一种知道如何在独立网络之间转发数据的设备。集线器是第1层设备,交换机是第2层设备,而路由器则在第3层——网络层运行。
就像交换机可以检查以太网数据以确定发送目的地一样,路由器可以检查IP数据以确定发送路径。路由器内部存储着路由表,这些表包含了如何在全世界众多不同网络之间路由流量的信息。




家用路由器与核心路由器
最常见的路由器类型是用于家庭网络或小型办公室的路由器。这些设备的路由表通常并不详细。
这类路由器的目的主要是将源自家庭或办公室局域网的流量,转发给互联网服务提供商。
一旦流量到达ISP,一种复杂得多的路由器就会接管。这些核心路由器构成了互联网的骨干,直接负责我们每天在互联网上发送和接收数据的方式。
核心ISP路由器不仅要处理比家庭或小型办公室路由器多得多的流量,还必须在决定流量发送路径时应对复杂得多的局面。

路由器如何协同工作
核心路由器通常与许多其他路由器建立多种不同的连接。


路由器之间通过一种称为BGP的协议共享数据,这使它们能够了解转发流量的最优路径。


数据包的旅程

当你打开网页浏览器加载一个网页时,计算机和网络服务器之间的流量可能已经经过了数十台不同的路由器。
互联网规模极其庞大且复杂,而路由器正是将流量引导至正确目的地的全球向导。
本节课中我们一起学习了路由器的基础知识。我们了解到路由器是工作在网络层、负责在不同网络间转发数据的设备。它通过检查IP地址和查询内部路由表来决定数据包的下一跳。从简单的家用路由器到构成互联网骨干的复杂核心路由器,它们共同协作,通过BGP等协议共享路由信息,确保了全球数据的顺畅流通。理解路由器是理解互联网如何工作的关键一步。
008:服务器与客户端 🖥️

在本节课中,我们将要学习计算机网络中的两个核心概念:服务器与客户端。你将了解它们的基本定义、相互关系以及在实际网络环境中的角色。
概述
我们之前学习的所有网络设备,无论是位于同一房间还是相距数千英里,其存在的根本目的都是为了让计算机能够相互通信。我们通常将这些设备称为节点,并将继续沿用这个称呼。然而,理解服务器和客户端的概念同样至关重要。

服务器与客户端的定义
理解服务器最简单的方式是:服务器是向请求方提供数据的一方。接收数据的一方则被称为客户端。
角色的动态性
虽然我们经常讨论节点作为服务器或客户端的角色,但我们的定义使用了“一方”这样宽泛的词语,这是因为不仅节点可以成为服务器或客户端。在同一节点上运行的独立计算机程序也可以互为服务器和客户端。
同样重要的是,大多数设备并非纯粹是服务器或客户端。几乎所有的节点在某个时间点都同时扮演着两种角色,它们是擅长多任务的“全能选手”。
尽管如此,在大多数网络拓扑结构中,每个节点主要被归类为服务器或客户端。例如,我们有时将电子邮件服务器称为“邮件服务器”,即使它本身也是DNS服务器的客户端。这是因为它存在的主要目的是向客户端提供数据。

同理,如果一台台式机偶尔以服务器的身份向另一台计算机提供数据,它存在的主要目的通常是从服务器获取数据,以便计算机前的用户能够完成工作。
核心概念总结
总而言之,服务器是任何能够向客户端提供数据的一方,但我们也用这些词语来指代网络中各种节点存在的主要目的。
本节总结
本节课中,我们一起学习了服务器与客户端的基本概念。我们明确了服务器是数据的提供者,客户端是数据的请求者与接收者,并理解了网络节点角色的动态性和主要用途的划分。掌握这些概念是理解后续更复杂网络交互的基础。
009:塞尔吉奥的网络工程师之路

在本节课中,我们将跟随谷歌网络工程师塞尔吉奥,了解网络工程师的日常工作、职责以及网络技术的重要性。我们将学习网络工程师如何设计并维护互联网的“道路”,确保各类在线服务稳定运行。
🛠️ 网络工程师的角色
我的名字是塞尔吉奥,我是谷歌的一名网络工程师。我主要负责YouTube TV产品。我的团队被称为线性电视运营团队,我们的核心任务是确保直播电视服务始终可供客户使用。
简单来说,网络工程师是为互联网设计道路的人。
📅 非典型的工作日常
网络工程师没有典型的一天。工作内容可能包括处理故障修复问题、参加会议、解决具有挑战性的问题或项目。
对我个人以及大多数网络工程师而言,事件管理是核心工作之一。在运营团队工作时,你就是网络的消防员。如果网络中断,业务就会停止。
具体到我的产品,如果我们的网络中断,就意味着观众将无法观看电视。
🚨 实战案例:应对飓风“艾尔玛”
我们团队最近处理的一个事件是飓风“艾尔玛”。我们在佛罗里达州有许多电视服务。当飓风来临时,人们试图用手机观看新闻或其他内容。如果网络中断,他们将无法获取新闻。因此,我们必须迅速反应并制定计划,以确保在飓风期间服务仍然可用。
🌐 网络为何如此重要?
我相信网络对我们至关重要,因为它是通往互联网的道路。这就是我们每天使用设备的方式。
没有网络,你将无法享受手机上的应用程序,也无法访问你常去的网站。因此,它极其重要。
如果没有网络工程师来建设和维护这些道路或虚拟道路,你将无法享受像Snapchat或谷歌搜索这样有趣的应用。
本节课中,我们一起学习了网络工程师在谷歌的具体工作,包括其设计互联网基础设施的核心角色、应对网络事件的日常挑战,以及一个真实的危机处理案例。我们明确了网络作为现代数字生活基础架构的重要性,正是网络工程师构建和维护的“道路”,支撑着我们日常使用的所有在线服务。
010:在线路上传输比特 🔌


在本节课中,我们将学习计算机网络物理层的核心概念,了解比特(0和1)是如何通过各种物理介质(如电缆)进行传输的。我们将探讨调制与线路编码的基本原理,并理解这些基础技术如何支撑起现代高速数据传输。
物理层的复杂性
从某些方面看,网络栈模型中的物理层是最复杂的。它的主要关注点是将比特(0和1)从链路的一端移动到另一端。为了实现以惊人速度在细小线缆上传输海量数据,背后涉及非常复杂的数学、物理和电气工程原理。
幸运的是,对于立志成为IT支持专家的你而言,需要了解的物理层知识要平易近人得多。学完本课后,你将对物理层的各个方面打下坚实基础,这将帮助你正确地排查网络故障并搭建新的网络。
让我们开始吧。
比特与物理层
物理层由设备和在计算机网络中传输比特的手段组成。比特是计算机能够理解的数据的最小表示单位,它是一个1或一个0。
在最低层级通过网络发送的这些0和1,构成了我们将在学习其他层时了解的数据帧和数据包。关键在于,无论你是在流媒体播放最爱的歌曲、给老板发邮件,还是使用ATM机,你实际上都是在通过你与所交互服务器之间的众多不同网络的物理层,发送着0和1。
调制与线路编码
一根标准的铜质网络电缆,一旦两端连接到设备,就会承载恒定的电荷。0和1通过一个称为调制的过程在这些网络电缆上发送。
调制是一种改变通过电缆移动的电荷电压的方法。当用于计算机网络时,这种调制更具体地被称为线路编码。
它允许链路两端的设备理解:处于某种状态的电荷代表0,而另一种状态则代表1。正是通过这种看似简单的技术,现代网络能够每秒在单根网络电缆上传输100亿个0和1。
总结

本节课我们一起学习了计算机网络物理层的基础知识。我们了解到物理层负责传输数据的基本单位——比特(0和1),并介绍了通过调制和线路编码技术,如何利用电缆中的电荷变化来表示这些比特,从而实现高速数据传输。理解这些原理是后续排查物理层网络问题和进行网络设置的重要基础。
011:双绞线电缆与双工模式

在本节课中,我们将要学习计算机网络中最常见的物理连接介质——双绞线电缆,以及数据在电缆上传输的两种基本模式:单工和双工通信模式。理解这些基础知识对于搭建和维护网络至关重要。
双绞线电缆概述
连接计算设备最常用的电缆类型被称为双绞线电缆。
它之所以被称为双绞线电缆,是因为它内部包含成对的铜线,这些铜线被绞合在一起。
这些线对作为信息传输的单一通道,其绞合的特性有助于抵御电磁干扰和来自邻近线对的串扰。
一根标准的Cat6电缆内部有八根导线,它们组成了四对双绞线,并包裹在一个外护套内。

实际使用多少对导线取决于所采用的传输技术。
双工通信模式
上一节我们介绍了双绞线电缆的物理结构,本节中我们来看看数据是如何在其上传输的。在现代网络的所有形式中,了解这些电缆支持双工通信非常重要。

双工通信是指信息可以沿电缆双向流动的概念。

单工通信模式
与双工通信相对,还有一种称为单工通信的过程,它是单向的。
例如,婴儿监视器的数据传输只朝一个方向进行,这使其成为单工通信。


而电话通话则是双工的,因为双方都可以听和说。
全双工与半双工
网络电缆确保双工通信成为可能的方式是,预留一对或两对线用于一个方向的通信。
然后使用另外一对或两对线用于另一个方向的通信。
这样,网络链路两端的设备就可以在同一时刻相互通信,这被称为全双工。

如果连接出现问题,你可能会看到网络链路降级并报告自己以半双工模式运行。
半双工意味着虽然每个方向都可以通信,但一次只能有一个设备进行通信。
总结

本节课中我们一起学习了计算机网络的基础物理组件。我们了解了双绞线电缆的构造及其抗干扰原理,并重点区分了单工、半双工和全双工这三种通信模式。全双工模式是现代高效网络通信的基石,它允许数据同时双向传输。理解这些概念有助于诊断网络性能问题,例如识别因故障导致的半双工模式降级。
012:网络端口与配线架 🖧

在本节课中,我们将要学习物理层工作的最后步骤,即网络链路终端的连接方式。我们将重点介绍RJ45插头、网络端口的状态指示灯以及配线架的作用。
上一节我们介绍了网络电缆的物理构成,本节中我们来看看这些电缆是如何连接到网络设备上的。

网络电缆的终端:RJ45插头
双绞线网络电缆的末端需要一个插头,将内部独立的导线暴露并连接起来。最常见的插头被称为RJ45(注册插孔45)。它是众多电缆插头规格之一,但迄今为止是计算机网络中最常见的一种。
带有RJ45插头的网络电缆可以连接到RJ45网络端口。
网络端口与设备连接
网络端口通常直接连接到构成计算机网络的设备上。以下是不同类型设备端口数量的典型情况:
- 交换机:拥有许多网络端口,因为其目的是连接多台设备。
- 服务器和台式机:通常只有一到两个端口。
- 笔记本电脑、平板电脑或手机:可能没有有线网络端口(无线网络将在后续模块中讨论)。

端口状态指示灯
大多数网络端口有两个小型LED指示灯:一个是连接指示灯,另一个是活动指示灯。
- 当电缆正确连接到两台均已开机的设备时,连接指示灯会常亮。
- 当有数据通过电缆主动传输时,活动指示灯会闪烁。
过去,活动指示灯的闪烁直接对应于发送的二进制1和0。如今,计算机网络速度极快,活动指示灯除了指示是否有流量外,并不能传达太多具体信息。
在交换机上,有时同一个LED会用于指示连接和活动状态,甚至可能指示其他信息,如链路速度。你需要查阅正在使用的特定硬件文档,但端口指示灯几乎总能为你提供一些故障排除信息。
墙壁端口与配线架

有时,网络端口并非直接连接到设备,而是安装在墙上或桌子下方。这些端口通常通过隐藏在墙内的电缆连接到网络,这些电缆最终终结于一个配线架。

配线架是一个包含许多网络端口的设备,但它本身不执行任何其他网络功能。它只是多根电缆线路端点的容器。

随后,通常会使用额外的电缆从配线架连接到交换机或路由器,从而为链路另一端的计算机提供网络接入。
总结
本节课中我们一起学习了物理层连接的终端环节。我们认识了标准的RJ45插头和端口,了解了连接指示灯与活动指示灯的用途,并明白了配线架作为电缆管理枢纽的角色,它通过跳线将墙内线路与网络设备连接起来,最终完成整个有线网络的物理连通。
013:以太网与MAC地址 📡

在本节课中,我们将学习以太网协议和MAC地址。以太网是数据链路层最广泛使用的协议,用于在单个链路上发送数据。MAC地址则是全球唯一的硬件标识符,用于在网络中识别设备。理解这些概念对于IT支持专家进行网络故障排查至关重要。
以太网简介 🌐
无线和蜂窝网络接入正迅速成为连接计算设备到网络的常见方式,这很可能也是您当前的连接方式。但您可能会惊讶地发现,传统的有线网络仍然是工作场所,尤其是数据中心中最常见的选项。
在单个链路上发送数据最广泛使用的协议被称为以太网。以太网和数据链路层为协议栈更高层的软件提供了发送和接收数据的手段。该层的主要目的之一是,从根本上抽象掉其他层对物理层和使用何种硬件的关注。
通过将这一职责交给数据链路层,无论设备如何连接,其上的互联网层、传输层和应用层都能以相同的方式运行。例如,您的网络浏览器无需知道其运行的设备是通过双绞线还是无线连接,它只需要底层协议为其发送和接收数据。

课程目标与以太网历史 📜
在本节结束时,您将能够解释什么是MAC地址以及它们如何用于识别计算机。您还将了解如何描述构成以太网帧的各种组件,并能够区分单播、多播和广播地址。最后,您将能够解释循环冗余校验如何帮助确保通过以太网发送的数据的完整性。理解这些概念将帮助您作为IT支持专家排查各种问题。
注意: 一段关于传统技术的历史课即将开始。
以太网是一项相当古老的技术,它最早诞生于1980年,并在1983年首次完全发布标准化。自那时起,主要为了支持不断增长的带宽需求,引入了一些变化。但在很大程度上,今天使用的以太网与多年前首次发布的标准是相似的。
在1983年,计算机网络与今天完全不同。一个显著的拓扑结构差异是,交换机或可交换集线器尚未发明。这意味着,网络上的许多或所有设备经常共享一个冲突域。您可能还记得我们关于集线器和交换机的讨论,冲突域是一个网络段,其中一次只能有一个设备通信。
冲突域与CSMA/CD ⚡

这是因为冲突域中的所有数据都被发送到连接至该域的所有节点。如果两台计算机同时通过线路发送数据,这将导致代表我们1和0的电流发生实际碰撞,使得最终结果无法理解。
以太网协议通过使用一种称为带冲突检测的载波侦听多路访问的技术解决了这个问题。我们通常将其缩写为 CSMA/CD。
CSMA/CD用于确定通信信道何时空闲,以及设备何时可以自由传输数据。CSMA/CD的工作原理其实很简单:如果当前网络段上没有数据传输,节点就会自由地发送数据。如果最终有两台或更多计算机试图同时发送数据,计算机会检测到这种冲突并停止发送。
涉及冲突的每个设备然后会等待一个随机的时间间隔,然后再尝试发送数据。这个随机间隔有助于防止所有涉及冲突的计算机在下一次尝试传输任何数据时再次发生冲突。
MAC地址的作用 🏷️
当一个网络段是一个冲突域时,意味着该段上的所有设备都会接收整个段的所有通信。这意味着我们需要一种方法来识别传输实际上是针对哪个节点的。这就是媒体访问控制地址或MAC地址发挥作用的地方。
MAC地址是附加到单个网络接口的全球唯一标识符。它是一个48位的数字,通常由六组两位的十六进制数表示。
就像二进制是一种仅用两个数字(0和1)表示数字的方式一样,十六进制是一种使用16个数字表示数字的方式。由于我们没有代表大于9的单个数字的数码,十六进制数字使用字母A、B、C、D、E和F来代表数字10、11、12、13、14和15。

MAC地址的结构与唯一性 🔢
在MAC地址中,每组数字的另一种称呼是八位组。在计算机网络中,八位组是任何可以用8位表示的数字。在这种情况下,两个十六进制数字可以表示与8位相同的数字范围。
现在,您可能已经注意到我们提到MAC地址是全球唯一的,这可能会让您疑惑这怎么可能。简短的答案是,48位数字比您想象的要大得多。可能存在的MAC地址总数是2的48次方,即281,474,976,710,656种独特的可能性。这是一个非常庞大的数字。

MAC地址分为两个部分。MAC地址的前三个八位组被称为组织唯一标识符或OUI。

OUI与地址分配 🏭
这些OUI由IEEE(电气和电子工程师协会)分配给各个硬件制造商。这是一个有用的信息,因为它意味着您始终可以通过MAC地址识别网络接口的制造商。
MAC地址的最后三个八位组可以由制造商以他们希望的任何方式分配,条件是每个可能的地址只分配一次,以保持所有MAC地址的全球唯一性。

以太网使用MAC地址来确保其发送的数据既包含发送传输的机器的地址,也包含传输预期接收者的地址。
通过这种方式,即使在一个作为单个冲突域的网络段上,该网络上的每个节点也知道何时有流量是发送给它的。

总结 📝

本节课中,我们一起学习了以太网协议的基础知识及其历史背景。我们探讨了冲突域的概念以及CSMA/CD机制如何解决数据碰撞问题。核心内容是MAC地址:我们了解了其作为全球唯一硬件标识符的作用、48位的结构(表示为六组十六进制数),以及它如何由OUI(制造商代码)和设备唯一标识符组成。最后,我们明白了MAC地址如何使网络设备能够在共享介质中识别属于自己的数据。
理解以太网帧结构、MAC地址类型(单播、多播、广播)以及数据完整性校验(如CRC),将是后续深入学习和进行实际网络故障排查的重要基础。
014:单播、多播与广播 📡

在本节课中,我们将学习以太网中三种基本的数据传输方式:单播、多播和广播。理解这些概念是掌握网络设备如何相互通信的基础。

到目前为止,我们讨论的都是一个设备向另一个设备传输数据的方式。
单播传输 🎯

上一节我们介绍了设备间的基本通信,本节中我们来看看单播传输的具体机制。
这种传输方式被称为单播。单播传输始终只针对一个接收地址。
在以太网层面,这是通过查看目标MAC地址中的一个特殊位来实现的。如果目标地址第一个字节的最低有效位被设置为0,则意味着该以太网帧仅针对该目标地址。

公式表示:
目标MAC地址第一个字节 & 0x01 == 0

这意味着该帧会被发送到冲突域中的所有设备,但只有预期的目标设备才会实际接收并处理它。
多播传输 👥
了解了点对点的单播后,我们来看看如何向一组特定设备发送数据。
如果目标地址第一个字节的最低有效位被设置为1,则意味着你正在处理一个多播帧。多播帧同样会被发送到本地网络段上的所有设备。


公式表示:
目标MAC地址第一个字节 & 0x01 == 1
不同之处在于,每个设备会根据除自身硬件MAC地址之外的其他标准来决定接受还是丢弃该帧。网络接口可以配置为接受一系列指定的多播地址,以参与这类通信。
以下是多播帧的处理流程:
- 帧被发送到网络上的所有设备。
- 每个设备的网络接口检查帧的目标多播地址。
- 如果接口被配置为监听该多播地址,则接受该帧。
- 否则,接口将丢弃该帧。
广播传输 📢
最后,我们来学习如何向网络上的每一个设备发送信息。

第三种以太网传输类型被称为广播。以太网广播会被发送到局域网上的每一台设备。
这是通过使用一个称为广播地址的特殊目标地址来实现的。以太网广播地址是全F,即 FF:FF:FF:FF:FF:FF。

以太网广播用于让设备能够更多地了解彼此。别担心,在本课程后面,你将学习更多关于广播以及一种称为地址解析协议的技术。
总结 📝
本节课中我们一起学习了以太网的三种数据传输方式:
- 单播:一对一通信,目标地址首位为0。
- 多播:一对多通信(特定组),目标地址首位为1,接收设备需预先配置。
- 广播:一对所有通信,使用全F地址
FF:FF:FF:FF:FF:FF,网络上的所有设备都会接收。
现在,让我们继续前进,深入剖析以太网帧的结构。
070:无线网络基础 📡

概述
在本节课中,我们将要学习无线网络的基础知识。随着笔记本电脑、平板电脑和智能手机等便携式计算设备的普及,无线网络技术变得越来越重要。我们将了解无线通信的基本原理、不同类型的无线网络架构、无线信道的作用以及无线安全协议的基础知识。这些知识对于IT支持专家至关重要,因为无线网络在工作场所中正变得越来越普遍。
无线网络标准与Wi-Fi
无线网络设备之间通过无线电波进行通信。最常见的无线网络通信规范由IEEE 802.11标准定义。这套规范也被称为802.11系列,构成了我们称之为Wi-Fi的技术集合。


不同的802.11标准通常使用相同的基本协议,但可能在不同的频段上运行。频段是无线电频谱中特定的一部分,被约定用于特定的通信。在北美,FM无线电传输在88至108 MHz之间运行,这个特定的频段被称为FM广播频段。
Wi-Fi网络在几个不同的频段上运行,最常见的是2.4 GHz和5 GHz频段。802.11规范有很多种,包括一些仅用于实验或测试的规范。您可能遇到的最常见规范包括802.11b、802.11a、802.11g、802.11n和802.11ac。我们目前不会详细讨论每一种,只需知道我们按它们被采用的顺序列出了这些规范。每个新版本的802.11规范通常都有一些改进,无论是更高的接入速度还是允许更多设备同时使用网络的能力。
在网络模型中,您应该将802.11协议视为定义了我们在物理层和数据链路层的操作方式。

802.11帧结构
一个802.11帧包含多个字段。理解这些字段有助于我们了解无线数据是如何被封装和传输的。

以下是802.11帧的主要组成部分:




- 帧控制字段:该字段长16位,包含许多子字段,用于描述帧本身应如何处理。这包括使用了哪个版本的802.11协议等信息。
- 持续时间字段:该字段指定整个帧的长度,以便接收方知道需要监听传输多长时间。
- 地址字段:共有四个地址字段,每个长6字节,存储MAC地址。这与通常的两个地址(源和目的)不同,原因与无线网络的架构有关,我们将在后面详细讨论。
- 序列控制字段:该字段长16位,主要包含一个用于跟踪帧顺序的序列号。
- 数据载荷部分:包含协议栈更高层的所有数据。
- 帧校验序列字段:包含一个用于循环冗余校验的校验和,其工作原理与以太网相同。

无线网络架构与接入点
上一节我们介绍了802.11帧的结构,特别是四个地址字段的用途。本节中我们来看看为什么需要这些地址,这涉及到无线网络最常见的架构。
最常见的无线网络设置包含称为接入点的设备。无线接入点是一种桥接网络无线部分和有线部分的设备。
一个无线网络可能拥有许多不同的接入点以覆盖大面积区域。无线网络上的设备会与某个特定的接入点关联。这通常是物理上最近的接入点,但也可以由其他各种因素决定,例如总体信号强度和无线干扰。
关联不仅对于无线设备与特定接入点通信很重要,它还允许发送给无线设备的传入传输由正确的接入点发出。

之所以有四个地址字段,是因为需要空间来指示应由哪个无线接入点处理该帧。因此,我们有正常的源地址字段(代表发送设备的MAC地址)和网络上的预期目的地址。此外,还有接收地址和发送地址。接收地址是应接收该帧的接入点的MAC地址,发送地址是刚刚发送该帧的设备的MAC地址。在许多情况下,目的地址和接收地址可能是相同的。通常,源地址和发送地址也是相同的。但根据特定无线网络的具体架构方式,情况并非总是如此。有时无线接入点会相互中继这些帧。

总结



本节课中我们一起学习了无线网络的基础知识。我们了解到无线通信遵循IEEE 802.11标准(即Wi-Fi),并在特定的无线电频段(如2.4 GHz和5 GHz)上运行。我们剖析了802.11帧的结构,理解了其多个字段的用途,特别是四个地址字段如何支持复杂的无线网络架构。最后,我们探讨了无线网络中最常见的架构,即通过无线接入点桥接有线与无线网络,并解释了设备与接入点关联的重要性。掌握这些核心概念是管理和支持日益普及的职场无线网络的关键第一步。
100:在CLI中更改目录 🗂️

在本节课中,我们将要学习如何在命令行界面(CLI)中查看和更改当前所在的目录。这是文件系统导航的基础,对于高效使用命令行至关重要。
查看当前目录
首次打开PowerShell时,通常会位于你的主目录中。命令行提示符会显示你当前所在的目录,但还有一个专门的命令可以明确告知你的位置。
pwd 或 打印工作目录 命令会告诉你当前位于哪个目录。
pwd
更改当前目录
如果我们想切换到另一个目录,可以使用 cd 或 更改目录 命令。
cd [路径]
使用此命令时,需要指定要切换到的目标路径。这个路径可以是绝对路径,即从驱动器盘符开始,完整地拼写出整个路径。相反,它也可以是相对路径,即仅使用部分路径来描述如何从当前位置到达目标位置。
接下来,我将通过示例展示这两种路径的用法。
使用绝对路径
假设我们当前位于 C:\Users\Cindy。现在,我们想切换到 C:\Users\Cindy\Documents 目录。
以下是使用绝对路径的命令:
cd C:\Users\Cindy\Documents
执行后,我们就切换到了Documents目录。虽然绝对路径很明确,但有时输入起来会比较繁琐。
使用相对路径
我们知道Documents目录就在Cindy文件夹下。那么,我们能否通过“向上移动一级”再进入该文件夹呢?当然可以。
有一个快捷方式可以让你移动到当前目录的上一级目录:cd ..
让我们先运行 pwd 命令确认当前位置。现在,我们可以看到我位于 C:\Users\Cindy,这是我之前所在目录的父目录。
.. 被视为一个相对路径,因为它会根据你当前的位置,让你向上移动一级。
让我们回到Documents文件夹,并尝试用新学的命令切换到Desktop文件夹。我们知道Desktop和Documents目录都在主目录下,所以我们可以运行:
cd ..
cd Desktop
但实际上,有一种更简洁的写法:
cd ..\Desktop
让我们再次用 pwd 检查一下。现在,它显示我们位于Desktop文件夹。
使用主目录快捷方式
另一个很酷的 cd 快捷方式是 cd ~。波浪号 ~ 是你主目录路径的快捷方式。
假设我想进入主文件夹中的Desktop目录,我可以这样做:
cd ~\Desktop
使用Tab键自动补全
到目前为止,我们输入了不少内容。你可能会想,如果我们在输入这些目录名时出错了怎么办?我们怎么可能记住所有东西的位置和正确拼写?
幸运的是,我们不必这样做。我们的Shell内置了一个名为 Tab键自动补全 的功能。Tab补全允许我们使用Tab键来自动补全文件名和目录名。
让我们使用Tab补全功能从主目录进入Desktop目录。
如果我输入 D,然后按Tab键。第一个以D开头的文件或目录名就会被自动补全。如果这不是我要找的文件或目录,我可以继续按Tab键,路径会在所有匹配我输入开头的选项中循环显示。
例如,我会看到 Desktop,然后是 Documents,接着是 Downloads。
请注意,路径前的 .\ 仅表示当前目录。如果我删掉它,然后输入 De,再按Tab键,唯一匹配的目录就是 Desktop。
Tab补全是一个极好的功能,随着你更多地使用命令行,你会越来越频繁地用到它。
总结

本节课中,我们一起学习了命令行导航的核心技能。我们了解了如何使用 pwd 查看当前目录,以及如何使用 cd 命令配合绝对路径和相对路径(包括 .. 和 ~ 快捷方式)来切换目录。最后,我们还掌握了利用Tab键自动补全来提高输入效率和准确性的技巧。这些是高效管理文件系统的基础,请务必多加练习。
101:在Bash中更改目录


在本节课中,我们将学习如何在Linux的Bash命令行环境中更改当前工作目录。我们将介绍几个核心命令,并了解它们与Windows PowerShell的相似之处,帮助你快速上手。
从桌面导航到文档文件夹
上一节我们介绍了命令行的基本概念,本节中我们来看看如何在Bash中实际移动位置。我们将从桌面目录开始,导航到文档文件夹。
在Bash中使用的命令与之前在PowerShell中使用的命令完全相同。
查看当前目录
在开始移动之前,我们需要知道当前身处何处。pwd命令(Print Working Directory的缩写)可以显示我们当前所在的完整路径。
执行pwd命令后,输出如下:
/home/Cindy/desktop
这表明我们当前确实位于桌面目录中。
使用cd命令导航
要更改目录,我们使用cd命令,这与Windows系统一致。cd命令可以接受两种类型的路径:绝对路径和相对路径。
以下是使用cd命令的两种方式:
-
使用绝对路径:绝对路径从根目录(
/)开始,指定目标的完整位置。cd /home/Cindy/documents -
使用相对路径:相对路径从当前目录开始,指向目标位置。
cd ../documents这里的
..代表上一级目录(即/home/Cindy),所以这个命令会从桌面进入Cindy主目录下的文档文件夹。
使用特殊符号快速导航
Bash提供了一些特殊符号来简化导航,其中~(波浪号)非常有用。它代表当前用户的主目录(例如/home/Cindy)。
因此,要快速回到桌面,我们可以使用:
cd ~/desktop
这个命令等同于cd /home/Cindy/desktop。
Bash的Tab键自动补全功能
与Windows PowerShell类似,Bash也支持Tab键自动补全功能,可以节省输入时间并减少错误。
不过,Bash的Tab补全与Windows有一个区别:当存在多个可能的补全选项时,Bash不会在选项间循环,而是会一次性列出所有可能的选项。
例如,输入cd D后按Tab键,如果存在Documents和Downloads两个文件夹,Bash会同时显示这两个选项供你选择。


总结
本节课中我们一起学习了在Linux Bash中导航文件系统的基础知识。我们掌握了pwd命令来查看当前位置,使用cd命令配合绝对路径或相对路径来切换目录,了解了~符号代表主目录的快捷用法,并体验了Bash中Tab键自动补全功能的工作方式。通过这些学习,我们已经可以开始连接Windows与Linux命令行操作之间的桥梁了。
102:在GUI与CLI中创建目录
在本节课中,我们将学习如何在图形用户界面和命令行界面中创建新的目录。我们将从简单的图形界面操作开始,然后深入探讨在PowerShell中使用命令创建目录的方法,并解决创建包含空格名称的目录时可能遇到的问题。
图形用户界面创建目录 🖱️

上一节我们介绍了如何列出和更改目录,本节中我们来看看如何添加新的目录。
在图形用户界面中创建目录非常简单。
以下是具体步骤:
- 在文件资源管理器或桌面的空白处右键单击。
- 在弹出的菜单中选择“新建”。
- 在子菜单中选择“文件夹”。


操作完成后,一个新的文件夹就创建成功了。

命令行界面创建目录 ⌨️
那么,如果我们想在命令行界面中完成同样的操作呢?在PowerShell中,创建新目录的命令是 mkdir,它是“make directory”的缩写。
让我们创建一个名为 My_Cool_Folder 的新目录。


目录创建成功,这个过程非常直接。
处理带空格的目录名 🔤
如果我们想在文件夹名称中使用空格而不是下划线,会发生什么情况呢?
例如,如果我尝试执行 mkdir my cool folder,会发生什么?这会导致一个错误。
mkdir 命令试图将 cool 和 folder 解释为命令的其他参数。由于它不理解这些单词是有效的参数,因此操作失败。
事实证明,Shell解释空格的方式与我们通常的理解不同。因此,我们需要明确地告诉它,这个带空格的名字是一个整体。
我们可以通过多种方式来实现这一点。
以下是两种常用方法:
- 使用引号:将整个名称用引号包围起来。例如:
mkdir “my cool folder”。 - 使用转义字符:在空格前使用反引号进行转义。例如:
mkdir mycoolfolder。
转义字符在处理代码时是一个相当常见的概念。它意味着反引号后面的下一个字符应被按字面意义处理。在我们的例子中,转义空格告诉Shell,反引号后面的空格是我们文件名的一部分。


需要注意的是,反引号是PowerShell中的转义字符。在其他Shell或编程语言中,可能会使用不同的字符作为转义字符,我们将在下一个视频中看到这一点。
总结 📝
本节课中我们一起学习了在Windows系统中创建目录的两种方式。我们首先回顾了在图形用户界面中通过右键菜单创建文件夹的直观方法。接着,我们重点学习了在PowerShell命令行中使用 mkdir 命令创建目录,并掌握了如何处理包含空格的目录名称,主要方法是使用引号或反引号进行转义。理解这些基础操作是有效进行文件管理和IT支持工作的关键第一步。
103:在Bash中创建目录
在本节课中,我们将学习如何在Linux的Bash命令行环境中创建新的目录。我们将重点介绍创建带空格目录的两种方法,并比较Linux与Windows在命令语法上的异同。

概述
在Bash中创建新目录的命令与在Windows中相同。
创建目录的基本命令
在Bash中,创建新目录的命令是 mkdir,这与Windows系统下的命令一致。
让我们使用 mkdir 命令创建一个名为“My cool folder”的新目录。
现在,我们可以验证“My cool folder”目录是否已成功创建在我们的桌面位置。
处理带空格的文件名
与Windows系统使用反引号来转义字符不同,在Bash中,你可以使用反斜杠来转义空格等特殊字符。
类似于Windows,你也可以使用引号将整个文件名包裹起来。
实践:创建带空格的目录
那么,你认为在Linux中如何创建一个名为“My cool folder”的目录呢?
以下是两种正确的方法:

第一种方法是使用反斜杠转义空格:
mkdir My\ cool\ folder
第二种方法是使用引号包裹整个名称:
mkdir "My cool folder"
如果你猜到了这些方法,你是正确的。如果你猜错了,也没有关系,可以重新观看本视频,以便更好地理解我们是如何得出这些结论的。
总结
本节课我们一起学习了在Linux Bash中创建目录的命令 mkdir,并掌握了两种处理目录名中空格的方法:使用反斜杠转义或使用引号包裹。理解这些基础操作是熟练使用命令行环境的重要一步。
104:Windows命令历史 🔍

在本节课中,我们将学习PowerShell中一个非常实用的功能——命令历史。这个功能能帮助我们快速查找和重用之前输入过的命令,从而提升工作效率。我们将了解如何查看历史命令、如何快速调用它们,以及如何清理命令行界面。
上一节我们介绍了如何在PowerShell中创建目录。本节中,我们来看看如何利用命令历史功能,避免重复输入相同的命令。
每次在PowerShell中输入命令时,该命令都会被保存到内存中,并添加到一个特殊的文件中。你可以使用history命令来查看之前输入过的命令列表。
以下是查看历史命令的步骤:
- 在PowerShell中输入
history。 - 终端会显示一个之前输入过的命令列表。
仅仅查看列表本身作用有限。命令历史更实用的用法是让我们快速滚动浏览这些命令并再次使用它们。
我们可以使用键盘上的上箭头或下箭头键来滚动浏览这些命令。例如,按上箭头键可以找到之前输入过的mkdir mycoolfolder命令。
无需重新输入整个命令来创建新文件夹,我只需在之前的命令后追加数字“2”。这样,无需重复输入所有内容,一个新文件夹就创建好了。
你甚至可以使用快捷键Ctrl+R来搜索之前使用过的命令。按下快捷键后,开始输入你想查找的命令片段,它会显示匹配的结果。例如,搜索“folder”一词,就能看到之前使用过的mkdir命令。
如果你使用的是旧版本的PowerShell,它可能没有Ctrl+R功能。在这种情况下,你可以输入井号#,后跟旧命令的某个部分,然后使用Tab键补全来循环浏览历史记录中的项目。
在PowerShell中工作时,命令历史功能、Tab键补全和get-help命令将成为你最好的帮手。请熟练掌握它们。
我们的命令行界面现在看起来有点杂乱,很难看清当前的位置。因此,让我们清理一下界面。我们可以使用clear命令来实现。这个命令不会清除你的历史记录,它只是清空屏幕上的输出。
现在,界面看起来清爽多了。

本节课中,我们一起学习了PowerShell的命令历史功能。我们掌握了如何使用history命令查看列表、用方向键滚动命令、用Ctrl+R搜索历史,以及用clear命令清理屏幕。熟练运用这些技巧将极大提高你在命令行环境下的操作效率。
105:命令历史与终端控制 🐧
在本节课中,我们将学习Linux系统中两个非常实用的功能:命令历史记录和终端屏幕控制。掌握这些技巧能显著提高你在命令行环境下的工作效率。
命令历史记录

上一节我们介绍了基本的命令行操作,本节中我们来看看如何利用命令历史功能。
Linux系统中使用的history命令与Windows系统中的完全相同。执行此命令可以查看你之前输入过的所有命令列表。
从历史记录中,我们可以使用键盘的上箭头和下箭头键来快速浏览和选择之前执行过的命令。
你甚至可以使用Ctrl + R组合键来搜索你的命令历史记录。这是一个非常强大的功能,可以让你快速定位并重新执行过去输入过的复杂命令。
控制终端显示
了解了如何追溯过去的命令后,我们来看看如何管理当前的终端界面。
当终端屏幕上充满了之前命令的输出,显得杂乱时,你可能希望清理它。那么,你认为应该怎么做呢?
没错,就是使用clear命令。这个命令会清空当前终端屏幕的所有内容,给你一个干净的工作区。

以下是本节课涉及的核心命令总结:
history: 显示命令历史列表。上/下箭头键: 浏览历史命令。Ctrl + R: 搜索命令历史。clear: 清空终端屏幕。
本节课中我们一起学习了Linux命令历史功能的使用方法,包括查看、浏览、搜索历史命令,以及使用clear命令来保持终端界面的整洁。这些工具是高效使用命令行环境的基础。
106:Windows文件与目录复制操作 🗂️
在本节课中,我们将学习如何在Windows系统中复制文件和目录。我们将涵盖图形界面操作、PowerShell命令,以及如何使用通配符和参数来高效地批量复制文件和包含内容的目录。
图形界面复制操作 🖱️
我们已经创建了一些文件和目录,但还需要更多。我们不想从头开始创建所有内容,所以让我们在Windows图形界面中进行复制。
以下是操作步骤:
- 右键点击目标文件或目录。
- 选择“复制”。
- 在目标位置右键点击,选择“粘贴”。

你也可以使用热键来提高效率。热键是Windows中用于执行特定任务的键盘快捷键。复制操作的热键是 Ctrl + C,粘贴操作的热键是 Ctrl + V。

使用PowerShell复制文件 💻
上一节我们介绍了图形界面的复制方法,本节中我们来看看如何在PowerShell中使用命令完成复制。
在PowerShell中,用于复制文件的命令是 cp。使用此命令时,我们需要指定要复制的源文件路径以及目标路径。

例如,让我们将 myCoolFile.txt 复制到桌面。执行命令后,你可以在桌面上看到 myCoolFile.txt 文件。
cp .\myCoolFile.txt C:\Users\[用户名]\Desktop\
我有好几个文件需要移动,但我不想一遍又一遍地重复运行这个命令。


使用通配符批量复制 🃏
为了高效地一次性复制多个文件,我们可以使用通配符。通配符是一种用于根据特定模式选择文件的字符。
假设你想复制所有JPEG格式的图片文件到“我的文档”目录。文件夹里有名为 hotdog.jpg、cottoncandy.jpeg 和 pretzel.JPEG 的文件。我需要想出一个模式来选中所有这些文件。
除了都以美食命名外,它们的共同点是什么?是 .jpg 或 .jpeg 扩展名。实际上,在 .jpg 文件扩展名之前的任何内容都无关紧要。这就是星号 * 通配符的作用,它代表“任何内容”。
本质上,我是在说:选择所有符合“任何内容+.jpeg”模式的文件。因此,要复制文件夹中所有JPEG文件,我可以使用以下命令:
cp *.jpeg C:\Users\[用户名]\Documents\
现在,我们不再需要逐个复制文件,而是可以使用单个命令获取所有需要的文件。目前,我们将使用的唯一选择器是代表“所有”的星号 *。

复制目录及其内容 📁
接下来,假设我想复制一个目录。我将尝试将一个名为 BirdPictures 的文件夹复制到桌面。
让我们回到文档目录。这是 BirdPictures 文件夹,现在将其复制到桌面。
cp .\BirdPictures\ C:\Users\[用户名]\Desktop\

这个命令完全按照我们的指令执行:它复制了目录。


然而,这个目录是空的。它没有做的是复制目录内的内容。

要复制目录的内容,你需要使用另一个命令参数:-Recurse(递归)。-Recurse 参数会列出目录的内容,然后如果该列表中有任何子目录,它会为每个子目录递归或重复目录列表过程。
我们需要将 -Recurse 参数与 copy 命令一起使用,以连同目录本身一起复制目录的内容。我们还将使用一个新参数 -Verbose(详细)。默认情况下,除非有错误,否则 copy 命令不会向命令行界面输出任何内容。当我们使用 cp -Verbose 时,它会为正在复制的目录中的每个文件输出一行信息。
让我们试一下:
cp .\BirdPictures\ C:\Users\[用户名]\Desktop\ -Recurse -Verbose
这条消息说明我们已经复制了 BirdPictures 目录,但我们之前没有做的是复制里面的文件,现在文件就在这里了。

现在,目录及其所有内容都已成功复制到我的桌面。

总结 📝
本节课中我们一起学习了Windows环境下的文件与目录复制操作。我们从图形界面的基本复制粘贴操作开始,介绍了快捷键 Ctrl+C 和 Ctrl+V。接着,我们深入PowerShell,学习了使用 cp 命令进行复制,并通过 * 通配符实现了文件的批量操作。最后,我们掌握了复制目录及其内部所有内容的关键,即使用 -Recurse 参数,并结合 -Verbose 参数来查看详细的复制过程。这些技能将帮助你更高效地管理文件和目录。
107:复制文件和目录 📂

在本节课中,我们将学习如何在Linux的Bash命令行环境中复制文件和目录。我们将了解基本的复制命令、使用通配符进行模式匹配,以及复制目录所需的特殊参数。
概述
在Bash中,复制文件所使用的命令与Windows命令行中的命令完全相同。这为熟悉Windows操作的用户提供了便利。本节我们将通过具体示例,演示如何使用copy命令及其相关参数。
复制单个文件
首先,我们来看一个简单的目录。假设我们想将名为my_very_cool_file.txt的文件复制到桌面目录。
执行命令后,文件便成功复制到了桌面。
使用通配符复制多个文件
与Windows命令类似,我们也可以使用星号(*)通配符来匹配特定模式的文件。
考虑到这个命令与Windows的复制命令相似,你认为我们可以如何复制当前目录下所有.png格式的文件呢?
假设目录中有pizza.png、soda.png、cake.png等文件,我们可以使用以下命令模式:
copy *.png Desktop/
以下是具体步骤:
- 使用
*.png匹配所有PNG文件。 - 指定目标目录为
Desktop/。
现在,再次查看桌面目录,所有匹配的.png文件都已成功复制过去。
复制整个目录
在Bash中,复制目录时同样适用与文件相似的规则。但是,如果我们想复制一个目录及其内部的所有内容,就必须使用递归复制。
递归复制的命令标志是 -R(或 -r)。
例如,如果我想将名为cat_pictures的文件夹复制到桌面,可以执行如下操作:
copy -R cat_pictures/ Desktop/
执行后,整个cat_pictures目录及其所有子文件和子文件夹便完整地复制到了桌面位置。
总结

本节课我们一起学习了Linux Bash环境下的复制操作。我们掌握了使用copy命令复制单个文件,利用*通配符批量复制特定类型的文件,以及通过-R参数递归复制整个目录及其内容。这些是文件管理中最基础且重要的命令。
108:Windows中移动与重命名文件
在本节课中,我们将学习如何在Windows系统中移动和重命名文件与目录。我们将涵盖图形用户界面(GUI)和命令行两种操作方式,并介绍如何使用通配符批量处理文件。
概述
之前我们已经讨论了如何创建和复制文件与目录。本节中,我们将探讨如何重命名已创建的项目,以及如何将文件移动到不同的目录中。我们将从图形界面操作开始,然后深入命令行工具的使用。
在图形用户界面中重命名文件
在Windows图形用户界面中,重命名文件的操作非常直观。以下是具体步骤:
- 在文件或文件夹上单击鼠标右键。
- 从弹出的上下文菜单中选择“重命名”选项。
- 输入新的名称并按回车键确认。
在命令行中移动与重命名文件
在命令行环境中,我们使用 Move-Item 命令(或其别名 mv)来重命名或移动文件。这个命令的功能非常灵活。
重命名文件(不改变位置)
Move-Item 命令允许我们在不改变文件存储目录的情况下,仅对其重命名。其基本语法是:
Move-Item -Path “原文件路径\原文件名” -Destination “原文件路径\新文件名”
例如,将桌面上的“blue_document.txt”重命名为“yellow_document.txt”:

Move-Item -Path “C:\Users\用户名\Desktop\blue_document.txt” -Destination “C:\Users\用户名\Desktop\yellow_document.txt”
执行后,桌面上的“blue_document”文件将更名为“yellow_document”。
将文件移动到其他目录
顾名思义,Move-Item 命令的核心功能是移动文件。我们可以将文件从一个目录转移到另一个目录。
例如,将桌面的“yellow_document.txt”移动到“我的文档”文件夹:
Move-Item -Path “C:\Users\用户名\Desktop\yellow_document.txt” -Destination “C:\Users\用户名\Documents\”
执行命令后,可以使用 dir 命令在目标目录中验证文件是否已成功移动。
使用通配符批量移动文件
Move-Item 命令的强大之处在于支持使用通配符(如 *)来批量操作多个文件。
例如,将桌面上所有以“document”结尾的文件移动到“我的文档”文件夹:
Move-Item -Path “C:\Users\用户名\Desktop\*document.*” -Destination “C:\Users\用户名\Documents\”
这条命令会匹配桌面所有文件名包含“document”的文件,并将它们全部移动到指定目录。

总结
本节课我们一起学习了在Windows系统中管理文件的两种重要操作:移动与重命名。我们了解到,在图形界面中可以通过右键菜单轻松完成重命名,而在命令行中,Move-Item 命令是一个多功能工具,既能实现重命名(通过指定新路径下的新文件名),也能将文件移动到不同位置,并且配合通配符可以高效地处理批量文件。掌握这些技能将帮助你更灵活地组织和管理计算机中的文件。
109:移动与重命名文件及目录 📂
在本节课中,我们将学习如何在 Linux 系统中使用 mv 命令来移动和重命名文件与目录。这是文件管理中的一项基础且重要的操作。

命令概述
mv 命令在 Linux 中用于移动或重命名文件和目录。其基本语法是:
mv [源文件或目录] [目标文件或目录]
同一个命令可以完成两种功能:重命名和移动。
重命名文件
上一节我们介绍了命令的基本概念,本节中我们来看看如何重命名一个文件。
操作过程如下:我将把我的 red_document 文件重命名为 blue_document。
mv red_document blue_document
现在我们可以看到,它已被重命名为 blue_document。
移动文件
学会了重命名,接下来我们看看如何移动文件。我将把重命名后的 blue_document 移动到 documents 文件夹中。
mv blue_document documents/
文件现在位于 documents 文件夹内。
使用通配符批量移动
与 Windows 系统类似,Linux 也可以使用通配符一次性移动多个文件。以下是具体操作方法:
我们将移动所有以下划线 _ 开头的 document 文件到桌面。
mv *_document* ~/Desktop
现在检查桌面,可以看到这些文件已经全部被移动过来了。

本节课中我们一起学习了 Linux 下 mv 命令的核心用法,包括重命名单个文件、移动文件到指定目录,以及利用通配符高效地批量移动文件。掌握这些操作是进行有效文件管理的基础。
Windows 操作系统基础:第 2 课:文件与目录管理
在本节课中,我们将学习如何在 Windows 系统中删除文件和目录。我们将从图形用户界面(GUI)的基本操作开始,然后深入探讨在 PowerShell 中使用命令行进行删除操作的方法、注意事项以及相关的权限概念。
上一节我们介绍了如何列出、创建和移动文件与目录。本节中,我们来看看如何删除它们。
在 Windows 图形界面中,如果你想删除一个文件或文件夹,只需右键点击并选择“删除”。被删除的文件会进入“回收站”,你可以在桌面上找到它。
如果你想恢复回收站中的文件,可以右键点击该文件并选择“还原”。但请注意,如果你清空了回收站,将无法再找回那些文件。

在 PowerShell 中,删除文件和目录的命令是 rm 或 Remove-Item。使用 Remove 命令时需要格外小心,因为它不会使用回收站。一旦文件或目录被删除,它们将永久消失。
让我们删除 Home 目录中一个名为 test1.txt 的文件。首先,我们查看一下它是否存在。
Get-ChildItem test1.txt
确认文件存在后,我们使用 rm 命令删除它。
rm test1.txt
现在,这个文件已经被删除了。
Remove 命令如果使用不当,可能像一个危险的武器。幸运的是,系统有安全措施,只将删除权限授予真正被授权的用户。我们将在另一节课详细讨论文件权限,但这里先快速了解一下。
尝试删除一个名为 Important_System_File.txt 的文件。
rm Important_System_File.txt
我收到一条错误信息,提示我没有权限删除此文件。在某些情况下(比如本例),是因为该文件被标记为系统文件。在其他情况下,可能是因为我在文件系统中没有足够的权限来删除它。
这次,假设我拥有正确的权限,但由于这是一个重要文件,PowerShell 希望确认我确实打算删除它。如果我使用 -Force 参数重复该命令,Remove 将继续执行并删除文件。
rm Important_System_File.txt -Force
使用 -Force 参数后,可以看到文件被删除了。如果文件属于其他用户,或者我不是管理员,那么我可能没有删除该文件的正确权限。在这种情况下,我需要使用管理员账户来删除文件。
接下来,让我们尝试用 Remove 命令删除一个目录。这里,PowerShell 会再次询问我们是否真的打算这样做,因为目录中包含其他文件,而我们没有使用 -Recurse 参数。
系统会提示我们确认是否真的要删除该目录及其所有内容。我们可以选择“是”或“全是”以继续。我们也可以取消此命令,然后使用 -Recurse 参数再次运行它。这样,PowerShell 就知道我们理解此操作的后果。
让我们先取消这个操作,然后使用 -Recurse 参数重试。
rm MyDirectory -Recurse
是的,现在目录被删除了。这就是 Remove 命令的基本用法。

总结
本节课中,我们一起学习了在 Windows 中删除文件和目录的方法。我们了解了图形界面下的删除与回收站机制,并重点掌握了在 PowerShell 中使用 rm 命令。关键点包括:命令行删除是永久性的、使用 -Force 参数绕过确认提示、使用 -Recurse 参数删除包含内容的目录,以及理解文件权限对删除操作的影响。由于此命令的永久性,在删除文件或目录时务必格外小心。
111:删除文件与目录


在本节课中,我们将学习如何在Linux系统中删除文件和目录。我们将介绍rm命令的基本用法、删除目录的特殊方法,以及使用该命令时需要注意的安全事项。
删除文件
在Linux中删除文件,与在Windows中类似,我们可以使用rm(即remove)命令。
以下是删除文件的基本命令格式:
rm [文件名]
例如,要删除名为t1的文件,只需执行:
rm t1
执行后,该文件即被删除。
与Windows系统类似,当我们尝试删除某些无权删除或不应删除的内容时,系统会给出提示信息。
删除目录
上一节我们介绍了如何删除单个文件,本节中我们来看看如何删除整个目录。
如果你认为删除目录也需要递归操作,那么你的推断是正确的。要删除一个目录及其包含的所有子目录和文件,需要使用-r(递归)选项。
以下是删除目录的命令格式:
rm -r [目录名]
例如,要删除名为mi的文件夹(目录),应执行:
rm -r mi

执行后,如果检查文件系统,会发现mi文件夹已经消失。
重要安全提示
请务必记住,在使用rm命令时,要格外小心,确保不会意外删除重要文件或目录。该命令删除的内容通常无法从回收站恢复。
本节课中我们一起学习了Linux下rm命令的使用。我们掌握了删除单个文件的方法,以及使用rm -r递归删除目录的操作。最重要的是,我们认识到使用此命令时必须保持谨慎,以避免数据丢失。
操作系统入门:第2课:为何操作系统重要

在本节课中,我们将通过一位系统管理员辛迪的经历,探讨操作系统的重要性及其在IT支持中的核心作用。你将了解操作系统不仅是使用工具的平台,更是可以参与贡献和创新的领域。
上一节我们介绍了操作系统的基本概念,本节中我们来看看一位专业人士如何通过深入操作系统提升技能。
辛迪最初对操作系统的了解足以应对日常工作,但尚不深入。正是这种“略知一二”的状态,让她获得了Linux系统管理员的职位。在这个岗位上,她与一群极其出色的同事共事。
以下是辛迪同事的特点:
- 他们才华横溢,甚至拥有维基百科页面,记录着他们对Linux等开源项目的贡献。
- 他们不仅仅是在使用操作系统,更是在工程化地构建它。
- 他们的工作包括贡献代码、修复硬件与软件问题。
这种工作环境极大地提升了辛迪的Linux技能,因为她必须不断学习以跟上团队节奏。她通过阅读同事的错误报告和解决方案来学习。
大约一年后,辛迪已经能熟练使用命令行界面。她能够打包自己的工具、编写代码,并为开源项目贡献代码。这段经历让她大开眼界,彻底改变了她之前对操作系统认知的深度。
当你贡献的代码可能被成千上万甚至数百万人使用时,会产生一种难以置信的成就感。这正是参与开源社区工作所带来的独特感受。

辛迪对操作系统充满热情,因为通过它们可以做很多事情。你可以向像Ubuntu或Debian这样的操作系统贡献代码,并产生实际影响。虽然个人可能无法从头构建一个全新的中央处理器并让大众使用,但你可以通过贡献代码、修复错误来发挥作用。操作系统的可能性超乎想象。
本节课中我们一起学习了操作系统在专业领域的深层价值。通过辛迪的故事,我们了解到操作系统不仅是IT基础设施的核心,更是一个开放的、可供学习和贡献的生态。深入理解并参与其中,能够显著提升个人技能并带来巨大的职业成就感。
113:切尔西的转型之路 🚀
在本节课中,我们将通过切尔西的真实经历,了解如何利用职业培训项目实现人生转折,从困境走向科技行业。这个故事将展示决心、学习与外部支持如何共同作用,改变一个人的职业轨迹。
逆境中的榜样力量
作为母亲,最重要的事情是以身作则。当你一无所有时,你会怎么做?一年前,切尔西发现自己和女儿们无家可归。

整个庇护所的经历对她而言是巨大的挑战。为了孩子们,她不断告诉她们,她们只是在度假,等待房子准备好。这是她不得不做的最艰难的事情。切尔西在东纳什维尔的住房项目中长大,因此周围从未有人谈论过职业道路。她不知道该怎么办,也不知道该去哪里,但她不断提醒自己:孩子们在看着你如何处理这件事,你必须为这些女孩树立一个坚实的榜样。
发现机遇:善意与谷歌的合作项目

大多数人认为Goodwill只是一家零售商店,但它远不止于此。当切尔西住在庇护所时,她决定联系Goodwill的职业中心,并实际上得到了一份办公室助理的工作。一位同事告诉她,Goodwill和谷歌实际上有一个提供IT培训的项目。这个项目被称为IT支持专业证书课程。

当切尔西得知她可以通过Goodwill获得奖学金时,这改变了她的人生。
切尔西正是Goodwill旨在支持的那类人。因此,多亏了Google.org的援助,他们启动了Goodwill数字职业加速器。利用Grow with Google的工具和资源,Goodwill数字职业加速器专注于连接超过一百万人,为他们提供在数字职业中晋升所需的技能。谷歌IT支持专业证书为此提供了一个绝佳的基石。
刻苦学习与主动出击
切尔西加入了“凌晨4点俱乐部”。她会在女儿们睡觉时起床做功课。在学习期间,她得知一位谷歌代表将来到Goodwill做一次演讲,她必须参加。在Goodwill的活动上见到切尔西时,她真的脱颖而出。她提出了一些非常有趣的问题,热情是切实可感的,因此鼓励她给我发一份简历。
克服自我怀疑,赢得机会

当切尔西得到面试机会时,她非常紧张,不确定自己是否足够优秀。在面试过程中,切尔西不仅展示了她所掌握的基础技术知识,还展现了她的主动性,而这正是我们在数据中心工作人员中所需要的。因此,我们录用她加入了团队。
切尔西绝对热爱她的工作。当她第一次得到这份工作时,她的女儿说:“妈妈,你得到了这份工作,这意味着我们将永远有一个家了。”在与Google.org合作的一年里,我们已经看到超过25万人提升了他们的数字技能,近3万人走上了工作岗位。
展望未来
一年前,切尔西不确定自己的生活将走向何方,她以为一切都分崩离析。现在,她对未来充满希望。她希望女儿们知道,她们可以实现为自己设定的任何目标。切尔西的目标是成为一名开发人员,这就是她想做的事。她已经走了这么远,她计划走向星辰大海。
切尔西的名字是切尔西·鲁尔,她是谷歌的一名数据中心技术员。

本节课中我们一起学习了切尔西如何从无家可归的困境中,通过Goodwill与谷歌合作的IT支持专业证书项目,抓住学习机会,凭借主动性和刻苦努力,最终成功转型为一名谷歌数据中心技术员的故事。她的经历证明了教育、社区支持和个人决心在职业转型中的强大力量。
114:在Windows中显示文件内容 📄
在本节课中,我们将学习如何在Windows系统中查看和编辑文件的内容。我们将从图形用户界面(GUI)的基本操作开始,然后深入探讨在PowerShell中使用命令行工具来高效地查看文件。
概述
上一节我们介绍了文件和目录导航的基础知识。本节中,我们将学习如何查看文件内容、搜索文本,以及使用不同的工具来满足不同的查看需求。
在Windows GUI中查看文件
如果我们想打开一个文件并查看其内容,只需双击该文件即可。根据文件类型,Windows会使用默认的应用程序将其打开。例如,文本文件默认会在名为“记事本”(Notepad)的应用程序中打开。
我们可以根据需要更改默认的应用程序。以下是更改默认应用程序的步骤:
- 右键点击目标文件。
- 在弹出的菜单中选择“属性”。
- 在“属性”窗口中,找到“打开方式”选项。
- 点击“更改”按钮,选择另一个文本编辑器,例如“写字板”(Wordpad)。
本课程中我们将处理的大多数文件都是文本文件和配置文件,因此我们将重点讨论这些文件,而非图像、音乐文件等。
在PowerShell中使用命令行查看文件

在PowerShell中查看文件内容非常简单,我们可以使用 cat 命令,它代表“连接”(concatenate)。让我们来尝试一下。
cat .\sample.txt
这个命令会将文件的内容全部输出到我们的Shell窗口中。然而,对于较长的文件,这并不是最佳解决方案,因为它会持续输出内容直到整个文件显示完毕。

如果我们希望一次只查看一页文件内容,可以使用 more 命令。
more .\sample.txt
more 命令会获取文件内容,但一旦填满终端窗口就会暂停。现在,我们可以按照自己的节奏来浏览文本。
当我们运行 more 命令时,会进入一个独立于Shell的程序。这意味着我们需要使用不同的按键来与 more 程序交互。
以下是 more 命令的常用交互按键:
- 回车键(Enter):将文件内容向下推进一行。如果你想缓慢地浏览文件,可以使用此键。
- 空格键(Space):将文件内容向下推进一页。这里的“一页”取决于你的终端窗口大小,
more会输出足够填满终端窗口的内容。 - Q键:允许你退出
more程序并返回到Shell。
如果我们想离开 more 命令并返回Shell,只需按下 Q 键即可。

查看文件的部分内容
如果我们只想查看文件的一部分内容呢?例如,我们想快速查看一个文本文件的前几行,而不想打开整个文件,只是想大致了解文档内容。这被称为查看文件的“头部”(head)。
为此,我们可以使用 cat 命令并加上 -head 参数。
cat .\sample.txt -Head 10
这将显示文件的前10行。
那么,如果我们想查看文件的最后几行,即文件的“尾部”(tail)呢?我猜你已经知道我们要做什么了。
cat .\sample.txt -Tail 10
默认情况下,这将显示文件的最后10行。

目前,这两个命令可能看起来对你没有立即可见的用处。但在接下来的课程中,当我们处理日志文件时,就会看到它们的巨大优势。
总结

本节课中,我们一起学习了在Windows系统中查看文件内容的多种方法。我们首先了解了如何在图形界面中通过双击打开文件,并可以更改默认的打开程序。接着,我们重点学习了在PowerShell中使用命令行工具:cat 命令用于显示整个文件,more 命令用于分页浏览,而 cat -Head 和 cat -Tail 则用于快速查看文件的开头或结尾部分。掌握这些方法将帮助你在未来的IT支持工作中更高效地处理文本和配置文件。
115:查看文件内容

在本节课中,我们将学习在Linux系统中查看文件内容的几种常用命令。我们将重点介绍cat、less、head和tail命令,并了解它们各自的适用场景和操作方法。
使用cat命令查看文件

cat命令是Linux中用于查看文件内容的基础工具。它的功能类似于Windows系统中的type命令。
cat命令的语法非常简单:
cat 文件名
例如,要查看名为important_document.txt的文件,可以输入:
cat important_document.txt
然而,cat命令在处理大型文件时表现不佳,因为它会一次性将整个文件内容输出到终端,导致内容滚动过快,难以阅读。
使用less命令浏览文件
为了更有效地查看大型文件,我们通常使用less命令。less的功能类似于Windows系统中的more命令,但提供了更多功能。
有趣的是,Linux中确实存在一个名为more的命令,但它正逐渐被功能更强大的less命令所取代。这正应了那句“少即是多”。
与more类似,使用less命令会进入一个交互式界面。以下是less工具中最常用的一些导航按键:

- 上下方向键:逐行滚动浏览文件。
- Page Up / Page Down键:向上或向下翻页。
- g键:跳转到文件的开头。
- G键(大写):跳转到文件的末尾。
- /键:在文件中搜索。按下
/键后,输入要查找的单词或短语,即可在文件中搜索匹配的内容。 - q键:退出
less界面,返回到命令行终端。
less命令因其强大的功能(如文件内搜索)而成为查看任意大小文件的优秀工具。作为一名IT支持专家,你无疑会经常使用这个命令。
使用head和tail命令查看文件首尾
除了查看整个文件,有时我们只需要查看文件的开头或结尾部分。
在Linux中,我们可以使用head命令来查看文件的开头,默认情况下它会显示文件的前10行。这与Windows系统中type命令配合head参数的功能类似。
如果我们想查看文件的最后几行,可以使用tail命令。默认情况下,tail命令会显示文件的最后10行。

本节课中我们一起学习了在Linux中查看文件内容的四种主要方法:使用cat快速查看小文件,使用less交互式浏览大文件,以及使用head和tail分别查看文件的开头和结尾部分。掌握这些命令将帮助你更高效地管理和排查系统文件。
IT支持:第2课:Windows修改文本文件 🖥️
在本节课中,我们将学习如何在Windows操作系统中编辑文本文件。我们将介绍图形界面和命令行界面两种编辑方式,并了解一个功能强大的文本编辑器——Notepad++。
之前我们已经讨论了如何读取和修改文件,但尚未涉及如何编辑文件内容。接下来,你将学习如何编辑基于文本的文件。
我们之前使用Notepad查看文本文件。Notepad适合基础编辑,但在修改配置文件、脚本或其他复杂文本文件时,你可能需要功能更丰富的工具。
以下是Windows图形界面中一些优秀的编辑器。本次演示我们将使用Notepad++。
Notepad++(可通过补充阅读材料获取)是一款优秀的开源文本编辑器,支持多种文件类型。Notepad++可以打开多个文件和标签页,并为已知文件类型提供语法高亮功能,还具备一系列高级文本编辑特性。
语法高亮是许多文本编辑器提供的功能,它通过不同颜色和字体显示文本,帮助你区分不同类别的内容。
我们已在机器上安装Notepad++,你可以访问其官网进行相同操作。现在,你可以通过右键点击文件并选择“使用Notepad++编辑”来编辑任何文件。
😊

如果你想从命令行界面编辑文件呢?遗憾的是,PowerShell终端中没有默认的优秀编辑器,但我们可以从命令行启动Notepad++文本编辑器,并以此方式开始修改文本。


因此,启动Notepad++的命令是:
start notepad++



然后只需加上文件名。如你所见,它打开了Notepad++并询问是否要创建此文件。如果你想了解专门在命令行界面中使用的文本编辑器,请查看关于高级文本编辑器VIm的补充阅读材料。


本节课中,我们一起学习了在Windows中编辑文本文件的两种方法:使用图形界面的Notepad++和从命令行启动编辑器。掌握这些技能将帮助你更高效地处理配置文件、脚本等文本任务。
117:使用Nano编辑器修改文本文件

在本节课中,我们将学习如何在Linux系统中使用一个名为Nano的文本编辑器来修改文件内容。Nano是一个轻量级且广泛可用的工具,非常适合初学者快速上手。
为什么选择Nano?
Linux系统中有许多流行的文本编辑器可供选择。由于时间有限,我们无法逐一介绍。因此,我们将重点介绍一个几乎在所有Linux发行版中都能找到的编辑器:Nano。
Nano是一个极其轻量级但非常有用的文本编辑器。我们已在本视频的补充阅读材料中包含了它的详细信息,建议课后查阅。
启动与编辑文件
要使用Nano编辑文件,只需在终端中输入 nano 命令,后跟文件名。
以下是启动Nano编辑一个名为 example.txt 文件的命令:
nano example.txt
执行此命令后,系统将启动Nano程序并打开指定文件。从这里开始,您可以像使用其他任何文本编辑器一样开始编辑内容。
界面与基本操作
在Nano编辑器屏幕的底部,您会注意到一些选项提示,例如 ^G 和 ^K。这里的 ^ 符号代表键盘上的 Ctrl 键,所以 ^G 即表示按下 Ctrl+G。
我们不会讨论所有选项,但有几个可能非常有用:
Ctrl+G:打开帮助页面。Ctrl+X:当您想保存工作或退出Nano时使用。
实战:编辑并保存文件
现在,让我们实际操作一下,编辑一个文件并保存更改。
- 使用
nano命令打开您想要编辑的文件。 - 在编辑器中进行所需的修改。
- 完成编辑后,按下
Ctrl+X准备退出。
此时,Nano会询问您是否要保存文件,或者退出并放弃更改。因为我想保存更改,所以按 Y 键确认保存。按下 Y 后,系统会退出Nano编辑器,返回到终端命令行。

验证更改
退出Nano后,我们可以验证文件是否已被成功修改。使用 cat 命令查看文件内容:
cat example.txt
如果文件内容显示了您刚才所做的修改,则说明操作成功。
总结与进阶
本节课中,我们一起学习了如何使用Nano编辑器在Linux中快速修改文本文件。Nano是一个超级有用的工具,尤其当您需要在Linux中快速使用一个文本编辑器时。
但是,如果您想成为一名真正的操作系统高级用户,我建议您阅读我提供的补充材料,以了解更多在业界广泛使用的文本编辑器,例如 Vim 或 Emacs。掌握这些工具将极大地提升您在命令行环境下的工作效率。
118:Windows PowerShell 命令详解 🖥️

在本节课中,我们将深入学习 Windows PowerShell 中的命令类型、别名机制以及如何获取命令帮助。我们将探讨 PowerShell 命令、命令别名以及传统的 Command.EXE 命令之间的区别与联系。
命令别名与实际 PowerShell 命令 🔄
到目前为止,我们在课程中一直使用 PowerShell 中的命令别名。
PowerShell 是一种复杂且功能强大的命令语言,同时也非常健壮。我们能够使用与 Linux 对应命令完全相同的常见别名。
但从现在开始,我们需要部署一些高级命令行功能,因此我们需要了解真正的 PowerShell 命令。
你已经见过一个真正的 PowerShell 命令示例:Get-Help。该命令用于查看关于命令的更多信息。
探索别名背后的真实命令 🔍
我们可以使用另一个 PowerShell 命令来查看我们一直在使用的别名(例如 LS 或 List directory)背后实际执行的 PowerShell 命令是什么。
我们可以使用 PowerShell 命令 Get-Alias。
有趣的是,当我们调用 LS 时,我们实际上是在调用 PowerShell 命令 Get-ChildItem。该命令获取或列出给定项(item)的子项(children),即文件和子目录。
让我们实际运行这个 Get-ChildItem 命令,参数为 C:\。
Get-ChildItem C:\

你会看到这与运行 LS C:\ 的输出相同。
PowerShell 命令的特点 ✨
很好,PowerShell 命令非常长且具有描述性,这使得它们更容易理解。但这意味着在 CLI 交互式工作时需要大量额外的输入。对于常用命令,别名是在 PowerShell 中更快工作的好方法。
到目前为止,我们一直在使用别名,以帮助我们在命令行中快速上手。
Windows 中的命令执行方式 🛠️
在 Windows 中,你基本上有三种不同的方式来执行命令:
- 使用真正的 PowerShell 命令。
- 使用相关的别名名称。
- 使用 Command.EXE 命令。
另一种我们提到过但尚未详细讨论的方法是 Command.EXE 命令。Command.EXE 命令来自 Windows 旧的 MS-DOS 时代,但由于向后兼容性,它们仍然可以运行。请记住,它们不如 PowerShell 命令强大。
Command.EXE 命令的一个例子是 DIR,巧合的是,它也指向 PowerShell 命令 Get-ChildItem,这也是我们的 LS 别名指向的地方。
获取命令帮助 📚
记住 PowerShell 命令 Get-Help。或者,你可以使用 /? 参数来获取 Command.EXE 命令的帮助。
请记住它们之间的区别:
Get-Help用于 PowerShell 命令,例如Get-Help LS。/?用于其他命令,例如DIR /?。
如果我尝试使用 LS /?,它将不返回任何内容,因为 LS 作为别名的那个 PowerShell 命令不知道如何处理参数 /?,反之亦然。
课程中的命令使用建议 💡
你可以自由使用任何你感觉舒适的命令,但在本课程中,我们将使用常见的别名和 PowerShell 命令。
总结 📝
本节课中,我们一起学习了 Windows PowerShell 中命令的多样性。我们了解了:
- PowerShell 命令(如
Get-ChildItem)是功能强大且描述性的原生命令。 - 命令别名(如
LS对应Get-ChildItem)是提高输入效率的快捷方式。 - Command.EXE 命令(如
DIR)是遗留命令,功能相对有限。 - 获取帮助的两种主要方式:对 PowerShell 命令使用
Get-Help,对 Command.EXE 命令使用/?参数。

理解这些命令类型及其适用场景,将帮助你在 IT 支持工作中更高效地使用 Windows 命令行环境。
119:在文件中搜索 🔍
在本节课中,我们将学习如何在Windows操作系统中搜索文件内的文本内容。我们将探讨图形界面和命令行两种方法,并了解Windows搜索服务的工作原理。
概述
搜索文档中的特定词语是常见的操作需求。无论是查找替换词语还是其他目的,掌握高效的搜索方法都至关重要。大多数文本编辑器使用相同的方式进行文档内搜索,但跨文件搜索则需要不同的工具和技巧。本节将介绍Windows搜索服务、Notepad++编辑器以及PowerShell命令行工具,帮助你掌握在单个或多个文件中搜索文本的技能。
Windows搜索服务
上一节我们提到了常见的文档内搜索,本节中我们来看看如何跨多个文件进行搜索。Windows提供了一项名为“Windows搜索服务”的功能。该服务会按计划扫描计算机上的文件并为其建立索引。随后,它将找到的文件名称和属性编译成一个数据库。这是一个耗时且消耗资源的过程。因此,在许多Windows服务器上,该服务默认未安装或被禁用。在Windows 8和Windows 10桌面电脑上,该服务通常对用户主目录中的文件启用,但不会对整个硬盘驱动器启用。
默认情况下,Windows搜索服务允许你根据文件名、路径、最后修改时间、大小或其他详细信息来查找文件。但默认情况下,你无法搜索文件内部的内容。Windows搜索服务可以配置为搜索文件内容及其属性。这会增加索引器的工作时间。这有点像计算机提前执行了你可能想要进行的所有搜索,而你只需查看结果。
以下是配置该服务以索引文件内容的步骤:
- 打开“开始”菜单,输入“索引”。
- 在搜索结果中点击“索引选项”。
- 选择包含所有主目录的“用户”文件夹。
- 点击“高级”按钮。
- 在“文件类型”选项卡中,选择“索引属性和文件内容”。
- 点击“确定”并关闭索引选项。
完成此操作后,Windows搜索服务将根据新设置开始重建索引。这个过程可能很快,也可能需要一段时间,具体取决于文件的数量和大小。索引重建完成后,你便可以在主目录中使用Windows资源管理器来查找包含特定词语的文件。
使用Notepad++搜索
如果你不想使用Windows搜索服务,我们也可以使用Notepad++。这是我们之前课程中安装的编辑器。从Notepad++中,按 Ctrl+Shift+F 打开“在文件中查找”对话框。从这里,你可以指定要查找的内容以及要搜索的文件范围。你可以将搜索限制在特定目录、特定文件扩展名,甚至可以在此处选择用另一个词替换找到的词。

使用PowerShell搜索
如果我们无法或不想使用图形界面,可以从命令行搜索文件中的词语。在PowerShell中,我们将使用 Select-String 命令(或其别名 sls)来查找文件中的词语或其他字符序列。你可以将字符串理解为计算机表示文本的一种方式。Select-String 命令允许你搜索与你提供的模式匹配的文本。这可以是一个词、词的一部分、一个短语,或者使用称为正则表达式的模式匹配语言描述的更复杂的模式。请记住,我们只是浅尝辄止,这是一项非常强大的功能。
以下是在主目录中搜索文件中词语的示例。让我们再次搜索词语“cow”:
Select-String -Path "C:\Users\YourUsername\*" -Pattern "cow"
你会看到 Select-String 找到了“cow”,并告诉你它所在的文件和行号。
如果你想搜索目录中的多个文件,可以使用模式匹配来选择它们。记住通配符星号 * 用于选择所有文件,我们也可以在这里使用它:
Select-String -Path "C:\Users\YourUsername\*.txt" -Pattern "cow"
现在我们可以看到它找到了“farm animals”和“ranch animals”文件。Select-String 还可以做很多其他事情,我们将在后续课程中有机会看到。

总结

本节课中我们一起学习了在Windows系统中搜索文件内文本的多种方法。我们了解了Windows搜索服务的索引机制及其配置方法,掌握了使用Notepad++图形界面进行跨文件搜索的技巧,并初步实践了使用PowerShell的 Select-String 命令从命令行执行搜索。能够在文件或一组文件中查找字符串,将是本课程以及你未来IT支持工作中的一项关键技能。它也是一个重要的工具,我们将学习将其与其他工具结合使用,以便从命令行执行真正强大的操作。
120:在目录中搜索文件

在本节课中,我们将学习如何在Windows命令行中,使用特定的参数来搜索目录中的文件,特别是如何过滤出特定类型的文件。
上一节我们介绍了基本的目录列表命令,本节中我们来看看如何对列表结果进行筛选。
使用 -Filter 参数进行搜索
如果我们想在目录内搜索特定内容,例如,只想查找同一目录中的可执行文件,这时就需要用到 -Filter 命令参数。

我将输入命令 ls 来列出“我的程序”文件夹中的文件。结合使用 -Recurse 和 -Filter 参数,并指定搜索 *.exe。
ls -Recurse -Filter *.exe
执行后,命令行会返回大量 .exe 文件的结果。
-Filter 参数的作用是筛选出文件名符合特定模式的结果。在这个例子中:
*(星号)是一个通配符,表示匹配任意字符。.exe是Windows系统中可执行文件的扩展名。

因此,*.exe 这个模式意味着“匹配所有以 .exe 结尾的文件名”。所以,我们得到的结果将仅仅是那些以 .exe 结尾的文件。
本节课中我们一起学习了如何在Windows命令行中使用 ls -Filter 命令来搜索并筛选特定类型的文件。通过结合通配符 * 和文件扩展名(如 .exe),我们可以快速定位目录中的可执行文件或其他目标文件。
121:在文件中搜索 🔍
在本节课中,我们将要学习如何在Linux的Bash环境中,使用grep命令在文件中搜索特定的文本或模式。这是系统管理和日常工作中一个极其重要的技能。

使用grep命令搜索文件内容
上一节我们介绍了基本的文件操作,本节中我们来看看如何查找文件中的特定信息。在Bash中,我们可以使用grep命令来搜索文件中匹配特定模式的单词。这类似于PowerShell中的Select-String命令。
命令基本语法:
grep [选项] ‘搜索模式’ 文件名
如果你想确认某个文件是否存在于目录中,或者某个单词是否存在于文件中,grep命令是你的得力工具。
基础搜索示例
让我们通过一个简单的例子开始。假设我们想在名为farm_animals.txt的文件中搜索单词“cow”。
执行命令:
grep ‘cow’ farm_animals.txt
执行后,你会看到grep在文本文件farm_animals.txt中找到了包含“cow”的行。
在多个文件中进行搜索
grep命令的强大之处在于它能轻松地在多个文件中进行搜索。我们可以使用通配符(如星号*)来指定一组文件。
以下是使用星号通配符进行搜索的步骤:
- 首先,确保你位于包含目标文件的目录中。
- 使用通配符
*来匹配所有文件(或特定模式的文件)。
执行命令:
grep ‘cow’ *

运行此命令后,你可以看到grep在farm_animals.txt和ranch_animals.txt等多个文件中都找到了包含“cow”的行,并将结果按文件分别列出。
命令的重要性与总结
grep是一个核心的Linux命令行工具。在本课程以及后续的课程中,你将会频繁地使用到它,因此记住这个命令至关重要。
本节课中我们一起学习了grep命令的基础用法,包括在单个文件中搜索特定单词,以及使用通配符在多个文件中进行批量搜索。掌握grep能帮助你高效地在海量文本信息中定位所需内容。
122:Windows输入输出与管道 📖

在本节课中,我们将学习如何组合使用PowerShell中的强大工具。我们将重点探讨输入输出流的概念,以及如何通过重定向操作符和管道来连接不同的命令,从而执行更复杂的任务。
上一节我们介绍了一些独立的PowerShell命令。本节中,我们来看看如何将这些工具组合起来,使其功能更加强大。
首先,我们在桌面目录中运行以下命令,然后逐步分析其工作原理。
cd ~/Desktop
echo wolf > dog.txt
运行 ls 命令检查桌面,现在可以看到一个名为 dog.txt 的文件。查看该文件内容,里面应该是单词 “wolf”。
这里发生了什么?让我们仔细看看 echo wolf 命令。在PowerShell中,echo 实际上是 Write-Output 的别名。这提示了我们其工作原理。我们知道 echo 命令会将键盘输入的内容打印到屏幕上,但这是如何实现的呢?
每个Windows进程和每个PowerShell命令都可以接收输入并产生输出。这是通过一种称为 IO流 或 输入输出流 的机制实现的。
Windows中的每个进程都有三个不同的流:
- 标准输入
- 标准输出
- 标准错误
可以将这些流想象成河流中的水流。你通过向标准输入流添加内容来为进程提供输入,这些内容会“流入”进程。当进程创建输出时,它会将数据添加到标准输出流,这些数据从进程“流出”。
你通过键盘提供的输入会进入你正在交互的进程(无论是PowerShell、文本编辑器还是其他任何程序)的标准输入流。然后,该进程通过将数据放入标准输出流来与你通信,命令行界面会将这些数据显示在你正在查看的屏幕上。
那么,如果我们不想在屏幕上看到命令的输出,而是想将其保存到文件中,该怎么办呢?
> 符号是一个我们称之为 重定向操作符 的工具,它允许我们改变标准输出的去向。
我们可以将标准输出发送到一个文件,而不是发送到屏幕。如果文件已存在,它会覆盖该文件;如果文件不存在,则会创建一个新文件。
如果我们不想覆盖现有文件,可以使用另一个重定向操作符来追加信息:>>。
让我们看看它的实际效果。
echo wolf >> dog.txt
现在再次查看 dog.txt 文件,可以看到 “wolf” 被再次添加到了文件中。
如果我们想将一个命令的输出发送给另一个命令作为输入,该怎么办呢?为此,我们将使用 管道操作符 |。
首先,让我们看看这个文件里有什么。
cat words.txt
这是一个单词列表。现在,如果我们只想列出包含字符串 “st” 的单词,可以像以前一样直接对文件使用 Select-String 或 sls。但这次,让我们使用管道将 cat 的输出传递给 Select-String 的输入。
以下是具体操作:
cat words.txt | Select-String st
现在,我们可以看到包含字符串 “st” 的单词列表。
为了整合所学内容,我们可以使用输出重定向将新列表放入一个文件中。
cat words.txt | Select-String st > st_words.txt
现在,如果我查看 st_words.txt 文件,新列表就在那里了。这只是一个非常基础的例子,展示了如何将几个简单的工具组合在一起来执行复杂的任务。
现在,我们将学习最后一个IO重定向:标准错误。
还记得之前我们尝试删除一个受保护的系统文件时,收到了“拒绝访问”的错误吗?让我们再回顾一次。这次我将尝试删除另一个受保护的文件。
rm secure_file
我们看到了预期的错误。但是,如果我们不想看到这些错误呢?原来,我们可以将错误消息的输出重定向到另一个称为 标准错误 的输出流。
重定向操作符可用于重定向任何输出流,但我们必须告诉它要重定向哪个流。

让我们输入以下命令:
rm secure_file 2> errors.txt
如果我查看 errors.txt 文件,可以看到刚刚得到的错误消息。
那么,2 是什么意思呢?所有的输出流都有编号:
- 1 代表标准输出(你通常看到的输出)。
- 2 代表标准错误(错误消息)。
请注意,PowerShell实际上还有更多我们本节课不会用到的流,但它们可以用同样的方式重定向。你可以在本视频后的补充阅读材料中了解更多信息。

因此,当我们使用 2> 时,我们是在告诉PowerShell将标准错误流重定向到文件,而不是标准输出。
如果我们不关心错误消息,但又不想把它们放到文件里呢?利用我们新学的重定向操作符,我们实际上可以过滤掉这些错误消息。
在PowerShell中,我们可以通过将标准错误重定向到 $null 来实现这一点。
$null 是什么?它就是“空无一物”。真的,它是一个包含“无”定义的特殊变量。出于重定向的目的,你可以把它想象成一个黑洞。
所以,这次让我们将错误消息重定向到 $null。
rm secure_file 2> $null

现在,我们的输出中就没有错误消息了。
如果你感兴趣,还有很多可以学习的内容。可以尝试在PowerShell中运行 Get-Help about_Redirection 查看更多细节。
掌握重定向操作符的使用可能需要一些时间,别担心,这完全正常。一旦你开始习惯使用它们,你会发现你的命令行技能水平提升了,工作也变得更轻松一些。
本节课中,我们一起学习了Windows PowerShell中的输入输出流、重定向操作符和管道。我们了解了如何将命令的输出保存到文件、如何将多个命令连接起来处理数据,以及如何管理和过滤错误消息。这些技能是组合使用命令行工具、实现自动化任务的基础。
123:输入输出与管道

概述
在本节课中,我们将要学习Linux系统中的输入输出流概念,以及如何通过重定向和管道操作符来控制数据的流向。这些工具能帮助我们更高效地处理命令的输出和输入。
输入输出流
与Windows系统类似,Linux也有三种不同的输入输出流:标准输出、标准输入和标准错误。上一节我们介绍了标准输出的概念,本节中我们来看看这些概念在Linux中的具体应用。
标准输出重定向
我们使用echo命令输出文本“woof”,但默认情况下不将其显示在屏幕上,而是使用标准输出重定向操作符>将其输出重定向到一个文件中。
命令示例:
echo woof > dog.txt
我们可以验证文件内容。
命令示例:
cat dog.txt
结果显示文件dog.txt的内容为“woof”。此操作会覆盖任何名为dog.txt的文件内容。
如果我们不想覆盖现有文件,可以使用追加操作符>>。
命令示例:
echo woof >> dog.txt
我们可以验证内容已被追加。
标准输入重定向
在Windows课程中我们讨论过但未展示标准输入重定向操作符的例子。标准输入重定向由小于号<表示。我们可以从文件而不是键盘获取输入。
命令示例:
cat < file_input.txt
此命令与cat file_input.txt效果完全相同。区别在于我们不再使用键盘输入,而是使用文件作为标准输入。
标准错误重定向
最后,与Windows类似,我们将讨论标准错误重定向操作符。标准错误用于显示错误消息,你可以使用2>重定向操作符来捕获它们。
数字2用于表示标准错误。因此,要仅重定向某些输出中的错误消息,可以这样做:
命令示例:
ls fake_directory 2> error_output.txt
现在如果我查看这个新文档,就能看到错误消息保存在error_output.txt中。
还记得在Windows中我们使用$null变量将不需要的输出丢弃到“黑洞”吗?Linux中也有类似的东西。Linux中有一个特殊的文件叫/dev/null。
假设我们想过滤掉文件中的错误消息,只查看标准输出消息,我们可以这样做:
命令示例:
ls fake_directory 2> /dev/null
现在我们的输出就过滤掉了错误消息。
管道
还记得我们讨论过如何使用Windows的管道将一个命令的输出作为另一个命令的输入吗?Linux中也存在同样的功能。|管道命令允许我们做到这一点。

假设我们想查看/etc目录下的哪些子目录包含“bluetooth”这个词。我们可以这样做:
命令示例:
ls -la /etc | grep bluetooth
或者使用管道重定向操作符,将ls -la /etc的输出通过管道发送给grep命令。现在,我们甚至无需浏览目录就能快速查看“bluetooth”目录是否在其中。
总结
本节课中我们一起学习了Linux的输入输出流、重定向操作符(>、>>、<、2>)以及强大的管道(|)工具。你已经窥见了重定向的强大功能,随着你深入Linux世界,你将经常使用它们。它们是工具箱中非常有价值的工具,现在它们也成为了你技能的一部分。
124:Windows与Linux高级导航

在本节课中,我们将学习高级命令行导航技术,包括正则表达式和PowerShell的深入学习。这些工具能帮助你更高效地处理复杂的文件搜索和系统管理任务。
概述
你已经学习了许多命令和工具,为IT支持工作打下了坚实的基础。还有许多其他命令你尚未接触,这很正常。随着职业生涯的发展,你会逐步接触到它们。你甚至可能会发现,当前使用的工具和命令在功能或效率上已无法满足需求。例如,你可能希望使用更复杂的模式来搜索文件。为此,你需要了解正则表达式这类工具。
正则表达式:高级模式匹配

上一节我们介绍了基础命令,本节中我们来看看如何使用正则表达式进行高级模式匹配。正则表达式用于帮助你执行基于模式的高级选择。
以下是正则表达式的核心概念:
- 模式定义:使用特殊字符序列定义搜索模式。例如,
^abc匹配以“abc”开头的行。 - 字符类:使用方括号
[]匹配一组字符中的任意一个。例如,[aeiou]匹配任意一个元音字母。 - 量词:指定模式出现的次数。例如,
a{2,4}匹配连续出现2到4次的字母“a”。 - 分组:使用圆括号
()对模式进行分组,以便应用量词或进行捕获。例如,(abc)+匹配一次或多次重复的“abc”。
深入PowerShell
除了正则表达式,PowerShell还有更多强大的功能。有许多优秀的视频和文章可以引导你从目前学到的基础步骤,逐步成为Windows命令行界面的大师。如果这听起来很有趣,我们强烈建议你在观看本视频后立即查阅补充阅读材料。请注意,在这些课程中,我们不会就这些材料的知识对你进行评分。但这些知识在IT支持领域可能对你非常有用。
总结与回顾
你已经完成了一些非常出色的工作。我们在本课中涵盖了大量信息。也许这是你第一次接触Linux或Windows。如果是这样,你已经在学习旅程中跨越了一个重要的里程碑。能够凭记忆使用在这里学到的命令至关重要。希望你在观看本课程视频时,已将它们记在了笔记中。
接下来,我们将对你新学的Bash和Windows CLI命令进行测试。如果你想在开始前复习一下,请务必重看视频并练习相关操作。当你准备好后,我们下节课再见。😊
125:我的第一份技术工作


在本节课中,我们将回顾一位技术专家的早期职业经历,了解他如何在没有正式经验的情况下获得第一份技术工作,并从中汲取对初学者有益的启示。
回顾过去,我认为自己非常幸运。我的技术之路始于青少年时期之前,那时我甚至在无法直接接触计算机的情况下自学相关知识。
上一节我们提到了自学的起点,本节中我们来看看这个起点如何转化为实际机会。在我十几岁初期,恰逢那个时代的尾声,我说服了一位书店老板,让他相信他需要购买一台电脑,并且我可以为他编程,以实现其教材业务的自动化。
当时我从未真正做过这样的事情。我从未亲手操作过那种类型的计算机,也从未编写过那样的程序。然而,这位老板相信了我。他采纳了我的建议,雇佣了我。
以下是这份工作带来的具体影响:
- 这份兼职工作实际上一直伴随我到二十五六岁,持续了大约11年。
- 在这期间,我负责自动化这家社区书店的教材业务。
更令人惊叹且我至今心怀感激的是,这位老板对我倾注了如此大的信心和信任。而更让我惊讶的是,这件事最终取得了成功。我花费了那些年的时间来完成这项工作,它帮助了他们的业务。这是一次宝贵的经历,也是我作为职业程序员早期职业生涯的一个绝佳开端。
本节课中我们一起学习了一段真实的职业起步故事。它告诉我们,信心、抓住机会的勇气以及将自学付诸实践的决心,往往能在技术职业生涯中发挥关键作用。即使缺乏直接经验,展示学习能力和解决问题的意愿也能开启第一扇门。
126:用户、管理员与组 👥

欢迎回来。在学习了如何在Windows和Linux操作系统中导航之后,现在让我们开始为其他人使用来设置我们的计算机。作为一名IT支持专家,您将负责其他人的机器。人们将依赖您来帮助设置他们的机器、排查问题等。
在本节课中,您将学习如何管理一台机器上的多个账户。您还将了解不同的权限和访问类型、如何添加和移除用户,以及在管理多个用户时应遵循的最佳实践。
概述
一台计算机拥有多个用户是很常见的。在您的家用电脑上,可能有您的父母、兄弟姐妹或孩子使用同一台电脑。您所在城镇的图书馆、学校或其他公共场所的电脑也可能有多个用户。
尽管这些机器上有多个用户账户,但计算机上的所有用户彼此是隔离的。这意味着凯文无法看到维克托的文件和文件夹,反之亦然。
用户类型

用户主要分为两种类型:标准用户和管理员。


- 标准用户:拥有使用机器的权限,但在安装软件或更改某些设置等操作上受到限制。
- 管理员:对机器拥有完全控制权的用户。他们可以查看任何人的账户、更改或移除计算机上的任何用户,并查看每一个文件。
一台机器上也可以有多个管理员。在您的个人机器上,您是默认的管理员,因为这使您对系统拥有完全的控制权。毕竟,这是您的机器。但在公共计算机上,管理员通常是实际运行和维护机器的人,例如IT支持专家。他们可以为其他用户授予访问权限、安装软件、更改受限制的系统设置以及执行他们认为合适的其他操作。
试想一下,如果任何使用公共计算机的人都可以随意安装软件,那将多么糟糕。计算机会变得臃肿不堪,各种东西会杂乱无章,最糟糕的是,它们可能会感染恶意软件。
用户组
用户根据访问级别和权限被分组,以执行特定任务。这些任务取决于计算机管理员认为什么是合适的。
管理员可以根据用户所在的组类型,授予不同的访问权限和设置。假设您是家用电脑的管理员,家里每个人都使用它。您可以将父母放入一个名为“父母”的组,将孩子放入一个名为“儿童”的组。您可能不希望他们中的任何一方能够安装软件,但同时您希望对“儿童”组添加儿童安全限制。作为管理员,您能够为这两个组指定不同的权限。

如何查看用户和组信息
那么,如何区分您在Windows和Linux上是哪种类型的用户,以及您属于哪些组呢?如果您是计算机的管理员,希望您会知道这一点。但如果您不知道,计算机会很好地告诉您。

在接下来的几节课中,我们将看到如何在Windows和Linux中查看用户和组信息。
总结
本节课中,我们一起学习了计算机用户管理的基础概念。我们了解了标准用户和管理员之间的核心区别,认识了通过用户组来批量管理权限的方法,并明白了用户隔离对于系统安全和秩序的重要性。这些知识是您作为IT支持专家管理多用户环境的第一步。
127:Windows查看用户与组信息

在本节课中,我们将学习如何在Windows操作系统中查看用户与组信息。我们将通过图形用户界面和命令行界面两种方式来完成这项任务,这是系统管理员日常工作中的一项基本技能。

🖥️ 使用计算机管理工具
要查看Windows中的用户和组信息,我们将使用“计算机管理”工具。在应用程序搜索中搜索“计算机管理”并打开它,我们会看到一个包含大量信息的窗口。
在本课程中,我们将频繁使用这个应用程序。因此,让我们花些时间了解一下它。在侧边栏的顶部,你会看到“计算机管理(本地)”。这意味着我们正在本地管理一台单独的计算机。
在企业环境中,你可以在称为“域”的环境中管理多台计算机。一个Windows域是一个由计算机、用户、文件等组成的网络,它们都被添加到一个中央数据库中。如果你是那个域的管理员,你可以从域中的任何一台机器上查看这些账户和计算机。我们将在下一门关于系统管理和IT基础设施服务的课程中了解更多关于域以及如何管理它们的知识。
在这个菜单下方,我们有“系统工具”。让我们逐一介绍这些子菜单。
以下是“系统工具”下的主要功能:
- 任务计划程序:允许你安排程序或任务在特定时间运行,例如每晚11点自动关闭计算机。
- 事件查看器:这是系统存储其系统日志的地方。我们将在后续课程中深入探讨这个工具。
- 共享文件夹:显示计算机上不同用户之间共享的文件夹。还记得我们说过其他用户无法查看任何人的文件吗?这并不完全正确。如果用户将文件存储在共享文件夹中,任何有权访问该文件夹的人都可以查看它。
- 本地用户和组:这是我们进行用户和组管理的地方。
- 性能:显示计算机资源(如CPU和RAM)的监控信息。
- 设备管理器:这是我们管理连接到计算机的设备的地方,例如网卡、声卡、显示器等。
在“存储”菜单下,有一个“磁盘管理”子菜单。我们将在后面的课程中讨论磁盘时使用它。
最后,“服务和应用程序”菜单显示系统上可用的程序和服务。我们可以选择启用或禁用服务,例如这里的DNS服务。
作为管理员需要更改的所有基本设置都可以在计算机管理工具中找到。如果你是一个高级用户,使用这个工具比通过默认的“设置”应用程序更高效。
好的,让我们回到手头的任务。让我们看看我们拥有哪种类型的用户账户以及我们属于哪些组。
让我们回到“本地用户和组”。在“用户”下,我们可以看到一些Windows内置账户,例如“Guest”和“Administrator”。
本地管理员账户允许你使用管理员用户名和计算机上的管理员密码登录。此账户默认是禁用的,因为该账户在计算机上拥有不受限制的访问权限,始终登录该账户可能很危险。
现在,让我们看看我登录的账户“Cindy”。双击它以查看更多信息。
在“常规”选项卡下,我们可以看到一些关于用户的基本信息以及一些选项。
以下是“常规”选项卡下的关键选项:
- 用户下次登录时须更改密码:由于我是管理员,我可以强制其他用户更改密码。如果我正在管理某人的账户并且他们的密码已泄露,这很有用。我们不希望其他人登录他们的账户,因此我们强制他们更改密码。
- 用户不能更改密码:限制用户自行修改密码。
- 密码永不过期:设置密码没有有效期限制。
- 账户已禁用:启用或禁用账户意味着使其处于活动或非活动状态。
- 账户已锁定:这意味着用户账户将无法登录。也许一个心怀不满的员工想要进行恶意操作,我们可以设置使其无法登录计算机。
在“隶属于”选项卡下,我们可以看到我们属于哪些组。我可以看到我属于“Administrators”组。
请注意,与其一直登录到本地管理员账户,你可以登录到自己的账户,并在需要时使用管理员权限。这要归功于UAC(用户账户控制)的帮助。这是Windows中的一项功能,可防止对系统进行未经授权的更改;这些更改必须由管理员批准。由于我是管理员,我只需要输入密码来确认我想要进行更改。
最后,在“配置文件”选项卡上,你可以更改用户配置文件的相关设置,例如你希望主文件夹的位置。这对于本地账户来说不是特别重要,但当你在域中管理许多用户时,它会派上用场。
现在,如果我们转到侧边栏中的“组”菜单,它看起来应该很熟悉。就像“隶属于”选项卡一样,我们可以查看哪些组可用以及它们的成员是谁。
这就是你如何使用Windows图形界面查看用户和组信息。
⌨️ 使用Windows命令行界面
上一节我们介绍了如何使用图形界面查看用户和组信息,本节中我们来看看如何使用命令行界面完成同样的任务。
要使用命令行查看用户和组信息,我们需要打开命令提示符或PowerShell。以下是几个常用的命令。
以下是用于查看用户和组信息的核心命令:
-
查看本地用户列表:
net user此命令会列出计算机上的所有本地用户账户。
-
查看特定用户的详细信息:
net user [用户名]例如,
net user Cindy将显示用户“Cindy”的详细信息,包括其所属的组。 -
查看本地组列表:
net localgroup此命令会列出计算机上的所有本地组。
-
查看特定组的成员:
net localgroup [组名]例如,
net localgroup Administrators将显示“Administrators”组的所有成员。
使用命令行界面进行管理通常更快捷,尤其是在需要编写脚本或远程管理多台计算机时。这些net命令是Windows中管理本地用户和组的基础工具。
📝 总结

本节课中我们一起学习了在Windows操作系统中查看用户和组信息的两种方法。我们首先通过“计算机管理”工具的图形界面,详细了解了用户属性、组隶属关系以及相关管理选项。接着,我们探索了如何使用命令行工具,如net user和net localgroup命令,来高效地获取相同的信息。掌握这两种方法对于进行有效的系统管理和故障排除至关重要。
128:使用CLI查看Windows用户与组信息
概述
在本节课中,我们将学习如何使用命令行界面(CLI)快速查看Windows系统中的本地用户与组信息。我们将重点介绍几个PowerShell命令,帮助您高效完成系统管理任务。
上一模块中,我们深入探讨了CI的使用方法。我们了解到,在修改文件和文件夹时,CI可以显著加快测试速度。现在,我们将开始使用命令来协助完成系统上的其他任务。
设想您在一家公司担任IT支持专员。您的上司要求您检查10台计算机上的所有用户信息,以确保本地管理员账户未被启用。当然,您可以在搜索栏中搜索“计算机管理”,点击“计算机管理(本地)”,在“系统工具”下查找,点击“本地用户和组”,然后双击计算机的用户名来确认本地管理员账户是否启用。现在,您只需要再重复九次这个过程。
实际上,有一种更快捷的方法。您可以直接使用CI,通过命令 Get-LocalUser 快速查看计算机上的用户列表。

如图所示,该命令列出了我的用户账户、其他几个用户以及Windows系统内置的一些默认账户。在这里,您可以看到我的本地管理员账户未被启用。这种方法简便得多。

那么,组信息呢?您或许能猜到,查看组的命令是 Get-LocalGroup。

此命令会列出本地计算机上的所有组。虽然组别众多,但请放心,这些都是系统内置组。每个组都很重要,但我们通常不会对其中大多数进行修改。

我们将频繁修改的一个组是“Administrators”组。请记住,此组控制着谁拥有对计算机的管理员访问权限。了解该组中有哪些成员至关重要,因为组内的任何人都可以对计算机进行任意更改。
我们刚才在输出中看到,我本人属于这个组。但我想知道还有谁在组内。
以下是查看特定组成员的方法:
我们可以使用 Get-LocalGroupMember 命令来查看该组中有哪些成员。我想检查的是“Administrators”组。
Get-LocalGroupMember -Group "Administrators"
执行后,我们可以看到Administrator用户和我的用户都在Administrators组中,没有其他成员。这看起来没问题。
最后请注意,这些本地用户和组的PowerShell命令要求您运行PowerShell 5.1或更高版本。您可能注意到,我一直强调“本地账户”和“本地用户”。
如果您的组织拥有大量Windows计算机,通常使用Active Directory在中央目录服务中管理用户账户。我们将在下一门关于系统管理和IT基础设施服务的课程中了解更多关于Active Directory账户的知识。
但现在,让我们继续专注于本地账户。
总结
本节课中,我们一起学习了如何使用PowerShell命令行高效管理Windows本地用户和组。我们掌握了 Get-LocalUser、Get-LocalGroup 和 Get-LocalGroupMember 这三个核心命令,它们能帮助您快速查看系统账户信息,从而简化IT支持任务,特别是在需要批量检查多台计算机时。请记住,这些命令适用于管理当前计算机的本地账户。
129:Linux用户、超级用户及其他 👨💻
在本节课中,我们将要学习Linux操作系统中的用户管理机制。我们将了解不同类型的用户、他们的权限,以及如何查看和管理用户与组信息。
用户管理与权限
Linux的用户管理和访问控制机制与Windows类似。不同类型的用户拥有不同的权限,并且可以按不同的访问级别进行分组。
然而,Linux在标识方式上存在一些差异。
用户类型
Linux系统中存在几种用户类型。
- 标准用户:拥有有限的权限,通常用于日常操作。
- 管理员用户:拥有比标准用户更高的权限,可以执行系统管理任务。
- 根用户:这是一个特殊的用户,请不要与根目录(
/)混淆。根用户是在安装Linux操作系统时自动创建的第一个用户。
超级用户(根用户)
根用户拥有操作系统上的所有权限,因此也被称为超级用户。

从技术上讲,系统中只有一个超级用户或根账户。但是,任何被授予根用户权限的人也可以被称为超级用户。
访问受限制的文件
现在,让我们尝试查看一个受根用户限制的文件内容。文件路径是 /etc/sudoers。
cat /etc/sudoers
我们收到了一个错误:“Permission denied”。/etc/sudoers 是一个受保护的文件,只能由根用户读取。
我们可以以根用户身份登录,然后运行这个命令,这不会有问题。但是,始终以根用户身份操作非常危险。因为根用户就像Windows上的本地管理员账户,对机器拥有无限制的访问权限。即使犯一个小错误,也可能删除或修改重要的东西,这很不好。
使用 sudo 命令
因此,与其以根用户身份登录,我们可以告诉shell,我们希望以根用户身份运行这一个命令。这听起来类似于Windows的UAC功能,事实也确实如此。
在Linux上,我们可以使用 sudo 命令(即“super user do”)来实现。
sudo cat /etc/sudoers
现在,我们就能看到这个文件的内容了。
使用 su 命令
如果你不想每次运行需要根权限的命令时都输入 sudo,你可以使用 su 命令(即“substitute user”)。这个命令允许你切换到另一个用户。如果不指定用户,它默认切换到根用户。
su
现在,你可以看到我的提示符变成了 root@cindy-NYC。再次强调,始终保持以根用户身份登录通常不是一个好习惯。有许多关键服务和文件可能会被误改。如果需要以根用户身份登录,可以,但务必小心。
我现在就退出根用户,回到我的普通用户。
exit
查看用户组
你可以通过查看 /etc/group 文件来了解谁有权运行 sudo。这也是你查看所有组成员的方式。
cat /etc/group
这看起来与Windows的图形界面有些不同,但你可以看到它与Windows命令行界面有一些相似之处。即使你现在还不是Bash专家,阅读这个文件实际上也相当简单。
解析组文件
文件的每一行代表一个不同的组。让我们看一下 sudo 这一行。
sudo:x:27:cindy,alice
这里有四个由冒号分隔的字段。
- 第一个字段是组名。在这个例子中是
sudo。 - 第二个字段是组密码。我们通常不需要指定组密码,因此它默认为根密码。这里的
x表示密码已被加密并存储在一个单独的文件中,我们将在后续课程中讨论。 - 第三个字段是组的ID(GID)。当操作系统运行涉及组的任务时,它使用组ID而不是组名。
- 最后一个字段是组内的用户列表。
查看系统用户
如果我们想查看机器上的用户,你认为存储这些信息的文件会是哪个?
不幸的是,它不是 /etc/user。包含用户信息的文件是 /etc/passwd。
cat /etc/passwd
这里的信息要多得多,用户也更多。这些账户中的大多数实际上并不是使用计算机的人。我们的计算机上有一堆进程在持续运行,我们需要将这些进程与用户关联起来。因此,我们的系统有许多具有不同权限的用户,这些权限是运行这些进程所必需的。
解析用户文件
让我们看看第一行,这是一个我们可以登录的实际用户:root。
root:x:0:0:root:/root:/bin/bash
我们不会讨论所有字段,因为并非所有字段都重要,但前三个是相关的。
- 第一个字段是用户名。
- 第二个字段是用户密码。密码实际上并不存储在这个文件中。它被加密并存储在一个不同的文件中,就像我们的组ID密码一样。
- 第三个字段是用户ID(UID)。与组ID类似,用户ID是我们的系统识别用户的方式,而不是通过用户名。
根用户的UID是0。

总结
本节课中我们一起学习了Linux用户管理的基础知识。我们了解了标准用户、管理员和根用户(超级用户) 的区别,知道了始终以根用户操作的风险。我们学会了使用 sudo 命令临时获取根权限来执行特定命令,以及使用 su 命令切换用户。最后,我们探索了 /etc/group 和 /etc/passwd 文件的结构,学会了如何查看系统中的组和用户信息,包括组名(GID)、用户名(UID)等关键字段。这基本上就是你在Linux中查看用户和组的方式。
130:Windows密码管理 🔑
在本节课中,我们将学习如何在Windows系统中管理用户密码。密码是保护用户账户和计算机安全的重要部分,它确保只有账户所有者本人才能访问其账户和数据。我们将介绍通过图形用户界面(GUI)和命令行(PowerShell)两种方式来设置和重置密码。
密码的重要性与基本原则
上一节我们介绍了用户账户管理的基础,本节中我们来看看如何通过密码来增强账户的安全性。
密码为我们的用户账户和计算机增加了安全层。它确保只有马蒂本人知道访问她账户的“魔法秘密”,而其他任何人,甚至是计算机的管理员,都无法知晓。
设置密码时,必须确保只有你自己知道这个密码。请记住,如果你正在管理一台计算机上其他人的账户,你不应该知道他们的密码是什么。相反,你应该让用户自己输入密码。
通过图形界面(GUI)管理密码
接下来,我们将学习如何使用图形化工具来重置用户密码。
要重置图形用户界面中的密码,让我们回到计算机管理工具。在“本地用户和组”下,右键单击一个用户名,例如这个名为“Sarah”的账户。点击“属性”。
然后,在这里,我们只需勾选这个名为“用户下次登录时须更改密码”的复选框。我将点击“应用”并确定。这样,当用户登录该账户时,他们将被强制更改密码。
如果用户忘记了密码,你可以选择通过右键单击并选择“设置密码”来手动为他们设置一个新密码。不过,这种方法有一些注意事项,例如可能会失去对某些凭据的访问权限。你可以在本视频后的补充阅读材料中了解更多关于此选项的信息。
通过PowerShell命令行管理密码
上一节我们介绍了图形界面的操作方法,本节中我们来看看如何使用更高效的命令行工具。
要在PowerShell中更改本地密码,我们将使用DOS风格的net命令。虽然有一个原生的PowerShell命令可以用来设置密码,但它使用起来稍微复杂一些,需要一些简单的脚本知识。目前,我们将坚持使用更简单(尽管功能稍弱)的net命令。
net命令可以做许多不同的事情,更改本地用户密码只是其中之一。如果你想了解更多关于net命令的功能,可以查看补充阅读材料中的命令文档。由于这是一个旧的DOS风格命令,你也可以在命令行界面中使用/?参数来获取命令帮助。
以下是更改用户密码的命令格式:
net user [用户名] [密码]

使用此命令的最佳方式是使用星号*,而不是在命令行中直接写出密码。如果你使用星号,net命令会暂停并提示你输入密码,像这样:
net user Sarah *
为什么这种方法更好?想象一下,你正在更改密码,就在那一刻,有人走到你身后瞥了一眼你的屏幕。你的密码就不再是秘密了。
你还应该知道,在许多环境中,用户在机器上运行的命令通常会被记录在日志文件中,并发送到中央日志服务。因此,最好避免任何类型的密码以这种方式被记录。
不过,你是否注意到星号方法存在一个问题?没错,如果我使用此命令为其他人更改密码,我就会知道他们的密码,这并不好。
强制用户在下次登录时更改密码
因此,我们将采取在图形界面中相同的做法:强制用户在下次登录时更改默认密码。这需要使用/logonpasswordchg:yes参数。
所以,我将强制维克托在下次登录时更改他的密码,命令如下:
net user Victor /logonpasswordchg:yes

/logonpasswordchg:yes参数意味着下次维克托登录这台计算机时,他将必须更改他的密码。抱歉了,维克托。
总结

本节课中我们一起学习了Windows系统中的密码管理。我们了解了密码安全的基本原则,掌握了通过图形用户界面(GUI)重置密码和强制用户下次登录时更改密码的方法。同时,我们也学习了如何使用PowerShell中的net命令来执行相同的操作,并强调了在命令行中使用星号*输入密码以增强安全性的最佳实践。记住,作为管理员,保护用户密码的私密性是至关重要的。
131:用户密码管理 🔑
在本节课中,我们将学习如何在Linux系统中管理用户密码,包括如何修改密码、了解密码的存储机制以及如何强制用户更改密码。

修改用户密码
在Linux系统中修改密码,只需运行passwd命令即可。让我们尝试修改当前用户的密码。
passwd
执行此命令后,系统会提示您输入当前密码,然后输入并确认新密码。
密码存储机制
当您设置密码时,系统会对其进行安全加密,然后存储在一个名为/etc/shadow的特权文件中。此文件仅允许root用户读取,以防止他人窥探。
# 查看 /etc/shadow 文件(需要root权限)
sudo cat /etc/shadow
即使您获得了该文件的访问权限,也无法解密其中存储的密码,因为它们经过了单向哈希处理。
强制用户更改密码
如果您是计算机管理员,并希望强制某个标准用户更改其密码(类似于我们在Windows系统中的操作),可以使用passwd命令配合-e或--expire标志。
以下是具体操作步骤:

# 强制用户“username”在下次登录时更改密码
sudo passwd -e username
此命令将立即使指定用户的密码过期,并强制他们在下次登录时设置新密码。
总结
本节课中,我们一起学习了Linux系统中的用户密码管理。我们掌握了使用passwd命令修改密码的方法,了解了密码在/etc/shadow文件中的安全存储机制,并学会了如何使用passwd -e命令强制用户更新密码,这些都是系统管理员日常维护工作中的重要技能。
132:Windows添加和删除用户 👥
在本节课中,我们将要学习如何在Windows操作系统中添加和删除本地用户账户。我们将涵盖使用图形界面(GUI)和命令行界面(CLI)两种方法来完成这些任务。
使用图形界面管理用户
上一节我们介绍了如何查看用户信息及其权限层级,本节中我们来看看如何通过图形界面添加和移除用户。
要添加一个新用户,我们需要打开计算机管理工具。在“本地用户和组”选项下,右键点击并选择“新用户”。随后,系统会要求我们设置用户名、全名和密码。遵循良好的密码设置实践,我们应设置一个默认密码,并强制用户在首次登录时更改它。因此,我们需要勾选“用户下次登录时须更改密码”的选项,然后点击“创建”。
以下是使用图形界面添加用户的步骤:
- 打开“计算机管理”工具。
- 导航至“本地用户和组” -> “用户”。
- 在右侧窗格右键点击,选择“新用户”。
- 填写用户名、全名和初始密码。
- 勾选“用户下次登录时须更改密码”。
- 点击“创建”按钮。

要删除一个用户,操作同样简单。只需在用户列表中找到目标账户,右键点击并选择“删除”。系统会显示一个警告信息,提示用户名是唯一的,即使删除后重新创建同名账户,新账户也无法访问原账户的资源。确认后即可删除。
使用命令行界面管理用户
现在,让我们转向命令行界面。通过CLI添加和删除本地用户账户,将使用我们之前修改密码时用到的 net 命令,只是参数不同。与之前类似,PowerShell也有一个原生命令 New-LocalUser,但使用它需要一些脚本知识。如果你想了解 New-LocalUser,可以查阅补充阅读材料。现在我们回到 net 命令。
要添加一个新本地用户,我们只需使用 /add 参数。将这个参数附加到我们之前用过的命令上,就能指示 net 创建账户。我们仍然可以使用星号 * 作为密码参数,以便在命令行中安全地输入密码。
让我们测试一下,为“Andrea”创建一个新账户。命令是:net user Andrea * /add。创建完成后,我们可以运行 Get-LocalUser 命令来列出所有用户账户,以确认操作成功。
这里存在一个小问题,正如之前在密码课程中提到的:这个账户是为Andrea创建的,但我们知道密码。我们不希望知道她的密码,因为这意味着我们可以用她的身份登录。我们需要确保Andrea将密码更改为一个我们不知道的密码。为此,我们将使用 /logonpasswordchg:yes 参数来标记她的账户,要求其在首次登录时更改密码。命令是:net user Andrea /logonpasswordchg:yes。
实际上,我们可以将创建账户和强制更改密码的命令合并执行。让我们为“Caesar”创建一个账户:net user caesar * /add /logonpasswordchg:yes。现在,当我们再次运行 Get-LocalUser 时,应该能看到两个新创建的账户。
接下来,让我们删除刚刚创建的这些账户。我将向你展示如何使用 net 命令和 Remove-LocalUser 命令来完成删除,这两个命令的效果完全相同。
以下是使用命令行删除用户的步骤:
- 使用
net命令删除用户:net user [用户名] /delete - 使用 PowerShell 的
Remove-LocalUser命令删除用户:Remove-LocalUser -Name [用户名]
例如,要删除Andrea的账户,可以运行:net user Andrea /delete。要删除Caesar的账户,可以运行:Remove-LocalUser -Name Caesar。执行后,账户就被移除了。

请注意这些命令遵循的模式。net user 的例子看起来和创建新用户时很像,只是将“添加”操作换成了“删除”操作。在第二个例子中,Remove-LocalUser 命令则对应着 Get-LocalUser 或 New-LocalUser。随着你学习更多CLI命令,你会开始注意到这类模式。能够识别这些模式将帮助你发现可以执行的新操作,并记住那些很久没做过的任务。
课程总结
本节课中我们一起学习了在Windows系统中管理本地用户账户的两种核心方法。我们掌握了通过图形界面(计算机管理工具)和命令行界面(net user 及 Remove-LocalUser 命令)来添加和删除用户。关键点在于创建用户时应遵循安全实践,强制用户在首次登录时更改默认密码。理解命令行中参数的模式(如 /add 与 /delete)对于高效使用CLI工具至关重要。
133:Linux用户管理
在本节课中,我们将学习如何在Linux系统中添加和删除用户。这是系统管理的基础操作,对于维护系统安全和组织用户至关重要。

添加新用户
上一节我们介绍了Linux系统的基本概念,本节中我们来看看如何创建一个新用户。
在Linux中添加新用户,可以使用 useradd 命令。其基本语法是:
sudo useradd [用户名]
例如,要添加一个名为 user1 的用户,命令如下:
sudo useradd user1
此命令会为用户设置基本配置并创建一个家目录。
我们可以通过检查 /etc/passwd 文件或使用 id 命令来验证用户是否创建成功。
id user1
为了增强安全性,我们通常希望新用户在首次登录时更改密码。这可以通过将 useradd 命令与 passwd 命令结合使用来实现。以下是具体步骤:
首先,为用户设置一个初始密码:
sudo passwd user1
然后,强制用户在下次登录时修改密码:
sudo passwd --expire user1
删除用户
了解了如何添加用户后,接下来我们学习如何删除一个不再需要的用户账户。
要删除一个用户,可以使用 userdel 命令。其基本语法是:
sudo userdel [用户名]
例如,要删除用户 user1,命令如下:
sudo userdel user1
执行此命令后,该用户将从系统用户列表中移除。我们可以再次使用 id user1 命令来验证,系统会提示用户不存在。
默认情况下,userdel 命令不会删除用户的家目录和邮件池。如果需要同时删除这些文件,可以添加 -r 选项:
sudo userdel -r user1

总结
本节课中我们一起学习了Linux用户管理的基础操作。我们掌握了使用 useradd 命令添加新用户,并使用 passwd 命令管理用户密码策略。同时,我们也学会了使用 userdel 命令来删除用户账户,并了解了删除用户文件的相关选项。
这些命令是每位IT支持专业人员工具箱中的必备工具,熟练掌握它们有助于有效管理系统访问权限和维护安全。
接下来,我们将深入探索Linux文件权限的奇妙世界。敬请期待。😊
134:移动用户与账户管理 🧑💻

在本节课中,我们将学习移动操作系统如何处理用户账户,了解其与桌面操作系统的区别,并探讨保护移动设备数据安全的基本方法。
移动设备账户管理的特殊性
上一节我们介绍了传统操作系统的用户账户。本节中我们来看看移动设备有何不同。
由于大多数移动设备由单个人使用,其操作系统处理用户账户的方式与我们讨论过的其他操作系统略有不同。以车载GPS设备为例,你可能完全不需要输入用户名或向GPS设备分配账户。运行GPS设备的操作系统中仍然存在用户账户,但你永远不需要看到或处理它们。
另一方面,考虑运行iOS或Android的智能手机或平板电脑。这些设备在初始设置时会要求你输入一次用户名和密码。但之后每次使用设备时,你可能不需要重新输入该密码。
主账户与用户配置文件
在设置过程中使用的初始账户称为主账户。此账户用于在设备上创建你的用户配置文件。用户配置文件类似于移动设备中的用户账户,它包含你的所有账户、偏好设置和应用程序。
在iOS和Android中,主账户可用于将设置和数据同步到云端。当你更换设备或使用以前用过的主账户设置新移动设备时,如果之前有数据备份到云端,你将可以选择恢复数据和应用程序。不过暂时不用担心这一点,我们将在后续视频中详细讨论同步和备份。
此外,在iOS和Android中,用户配置文件可以登录到其他附加账户。这些可以是额外的电子邮件账户、社交媒体账户或其他类型的账户。如果获得许可,移动设备上的应用程序可以使用这些账户进行单点登录。
这意味着,这些应用程序不会要求你输入另一个用户名和密码,而是允许你使用已登录的账户进行身份验证。这些应用程序无法访问你的凭据,但你可以授权它们使用这些凭据。请查看安全课程以了解更多关于SSO的工作原理。
IT支持中的账户设置实践
作为IT支持专家,你可能会帮助最终用户在其移动设备上设置这些账户。但切勿向他人索要密码。务必让最终用户自己输入密码。如果有人向你透露了密码,应鼓励他们更改该密码。
大多数移动设备仅支持一个用户配置文件,并且设计为供单个人使用。一些Android设备确实支持多个用户配置文件,具体工作原理请查看补充阅读材料。
移动设备的安全考量
回想一下使用台式机、笔记本电脑或服务器等较大设备时,默认情况下必须输入用户名和密码才能访问。大多数移动操作系统不会要求你每次使用设备时都重新输入主账户密码。这虽然方便,但也意味着任何拿起该设备的人都能访问你所有的个人和工作数据。
即使设备上没有私人数据,该设备也可能有权访问机密或特权系统,这同样会造成严重后果。移动操作系统通常有多种保护数据的方法。
以下是几种常见的设备访问控制方式:
- 你可以为设备设置密码、PIN码或解锁图案。
- 一些智能手机使用指纹传感器、面部识别或其他类型的生物识别数据来授予设备访问权限。
- 生物识别数据是指你独有的特征,如指纹、声音或面部。

我们将在安全课程中进一步讨论生物识别数据。为了保护业务数据,一些组织使用移动设备管理策略来要求移动设备必须被锁定。移动设备管理系统用于应用和执行有关设备必须如何配置和使用的规则。我们将在未来的视频中详细讨论MDM。
总结
本节课中我们一起学习了移动操作系统用户账户管理的独特方式,包括主账户、用户配置文件以及单点登录的概念。我们还了解了作为IT支持人员在协助设置账户时应遵循的安全实践,并探讨了保护移动设备数据的多种方法,如密码、PIN、图案和生物识别技术,最后简要提及了企业环境中可能用到的移动设备管理策略。
135:首席信息官的生活 🧑💼

在本节课中,我们将跟随谷歌首席信息官本·弗里德的视角,了解他作为技术团队领导者的日常工作、核心职责以及面对挑战时的应对之道。


我是本·弗里德,是谷歌的首席信息官,同时也是公司的副总裁。

我领导一个团队,负责为谷歌员工提供完成工作所需的技术支持。
核心职责与日常工作
上一节我们介绍了本·弗里德的职位,本节中我们来看看他的具体工作内容。他的职责范围非常广泛。
以下是其团队负责的主要技术领域:
- 硬件设备:例如员工使用的笔记本电脑和手机。
- 通信与协作工具:例如会议室使用的视频会议系统或办公桌上的电话。
- 日常办公软件:谷歌员工在日常工作中使用的所有软件。
他的时间主要分配在以下几个方面:
- 团队内部会议:花费大量时间与团队成员开会,了解他们的工作进展,并思考作为领导者如何提供帮助。
- 内部客户沟通:同样花费大量时间与公司内部的其他部门(即“客户”)沟通,以理解团队的需求并优化工作方式。
面对挑战的领导心得
了解了日常工作后,我们来看看本·弗里德在职业生涯中遇到的一个关键挑战及其应对策略。当他刚加入谷歌并接手团队时,团队急需帮助,这对他而言是一个巨大的挑战。
他需要找出作为领导者应该做什么来帮助团队。他回忆道,在某一时刻他意识到,只要他坚持出现,坚持每天付出努力,无论多么困难,最终都能渡过难关。
尽管他有时下班时会觉得不知道如何解决某个具体问题,但最终,“坚持出现”这个策略奏效了。他将成功归因于在极具挑战性的情境下,自己的“过分固执”和“不知何时放弃”。
本节课总结:本节课我们一起学习了首席信息官(CIO)的核心职责,包括管理支撑企业运营的技术体系(硬件、软件、通信工具),以及通过内部沟通来驱动团队和满足业务需求。同时,本·弗里德的经历也向我们展示了一个重要的领导力原则:在面对复杂挑战时,持之以恒的努力和坚定的决心往往是取得成功的关键。
136:Windows文件权限 🔐
在本节课中,我们将要学习Windows操作系统中的文件权限。文件权限是计算机安全中的一个重要概念,它确保只有需要访问特定文件和目录的用户才能获得相应的权限。
概述
文件权限是计算机安全的重要组成部分。我们只希望将特定文件和目录的访问权限授予需要它的用户。在思考用户应如何访问文件和文件夹的同时,我们也应考虑权限概念如何延伸到生活的其他领域。例如,您可能将社交媒体帖子的查看权限限制在您信任的人,或者将家门钥匙的副本交给亲戚以备紧急情况。您将在本课程的最后一课中了解更多安全原则。现在,我们将专注于一个基础构建模块:文件权限。
Windows中的访问控制列表
在Windows中,文件和目录权限通过访问控制列表(ACLs)进行分配。具体来说,我们将使用自主访问控制列表(DACLs)。Windows文件和文件夹也可以分配系统访问控制(SACLs)。SACLs用于告诉Windows,每次有人访问文件或文件夹时,都应使用事件日志进行记录。这是一个更高级的主题,您可以在下一篇补充阅读中详细了解。
您可以将DACL视为一份关于谁可以使用文件以及他们被允许对该文件执行哪些操作的说明。每个文件或文件夹都有一个所有者和一个或多个DACL。
查看文件权限
让我们在Windows资源管理器中查看一个示例。我已打开我的主目录。如果我们右键单击“桌面”并选择“属性”,可以看到桌面目录的属性对话框。然后,如果我们转到“安全”选项卡,可以在此处看到权限窗口。顶部框包含用户和组的列表,底部框则列出了分配给每个用户或组的权限。
这些权限各自有什么作用?根据权限是分配给文件还是目录,其作用会略有不同。别担心,很快您就会明白。让我们逐一介绍这些权限。
以下是每个权限的详细说明:
- 读取:读取权限允许您查看文件是否存在,并允许您读取其内容。它还允许您读取目录中的文件和目录。
- 读取和执行:读取和执行权限允许您读取文件,并且如果文件是可执行的,您可以运行该文件。读取和执行权限包含读取权限,因此如果您选择“读取和执行”,“读取”将自动被选中。
- 列出文件夹内容:“列出文件夹内容”是目录上“读取和执行”权限的别名。选中其中一个将同时选中另一个。这意味着您可以读取和执行该目录中的文件。
- 写入:写入权限允许您对文件进行更改。您可能会感到惊讶,但您可以在没有文件读取权限的情况下拥有文件的写入权限。写入权限还允许您在目录中创建子目录并向文件写入内容。
- 修改:修改权限是一个总括性权限,包括读取、执行和写入。
- 完全控制:拥有完全控制权限的用户或组可以对文件执行任何操作。它包括修改权限的所有权限,并增加了获取文件所有权和更改其ACL的能力。
现在,当我们单击我的用户名时,可以看到Cindy的权限,这表明我被允许拥有所有这些访问权限。
使用Icacls工具
如果我们想查看分配给文件的ACL,可以使用一个名为icacls(或“改进的更改ACL”)的实用程序来查看和更改ACL。

让我们先看看我的桌面。所以,输入命令:
icacls Desktop
这看起来很有用,但它是什么意思?我可以看到有权访问我桌面的用户账户,并且可以看到我的账户是其中之一,但其余这些内容呢?
这些字母代表我们之前讨论过的每个权限。
让我们看看icacls的帮助信息,我敢打赌这会解释清楚。所以输入:
icacls /?
好的,这里描述了每个字母的含义。F显示我对我的桌面文件夹拥有完全控制权。icacls将此称为完全访问,我们之前在图形用户界面中将其视为“完全控制”。这些是相同的权限。
这些其他字母是什么意思?正如我们从icacls帮助中看到的,NTFS权限可以被继承。OI表示对象继承,CI表示容器继承。如果我在我的桌面文件夹内创建新的文件或对象,它们将继承此DACL。如果我在桌面中创建新的目录或容器,它们也将继承此DACL。
如果您想了解更多关于NTFS中ACL继承的信息,请查看下一篇补充阅读。
总结

在本节课中,我们一起学习了Windows文件权限的基础知识。我们了解了访问控制列表(ACL)和自主访问控制列表(DACL)的概念,并通过图形界面和icacls命令行工具查看了具体的权限设置。我们还详细解释了读取、写入、修改、完全控制等核心权限的含义,以及权限继承(OI/CI)的概念。理解并正确设置文件权限是管理计算机安全和数据访问控制的关键一步。
137:Linux文件权限详解 🔐
在本节课中,我们将要学习Linux系统中的文件权限机制。理解权限是管理Linux系统安全的基础,它决定了谁可以读取、写入或执行系统中的文件和目录。
概述
正如我们已经了解到的,Linux中的文件和文件夹拥有不同的权限设置,以防止未经授权的用户查看或修改它们。Linux权限系统灵活而强大,允许我们根据用户角色(如文件所有者、所属组成员或其他所有用户)来设置特定的访问权限。

Linux的三种基本权限
Linux系统为每个文件和目录定义了三种基本权限。以下是这三种权限的详细说明:
- 读取:允许用户读取文件的内容或列出目录中的内容。
- 写入:允许用户向文件中写入信息,或在目录中创建、删除文件。
- 执行:允许用户将文件作为程序来运行,或进入某个目录。
使用 ls -l 命令查看权限
上一节我们介绍了三种基本权限,本节中我们来看看如何查看一个文件的具体权限设置。我们可以使用 ls 命令并加上 -l(长格式)标志来查看文件的详细信息,包括其权限。
ls -l example_file.txt
执行上述命令后,你可能会看到类似这样的输出:
-rwxrw-r-- 1 cindy cool 0 Jan 1 12:34 example_file.txt
输出结果的第一部分(如 -rwxrw-r--)就代表了文件的类型和权限。这里总共有10个字符。
第一个字符表示文件类型。在这个例子中,- 表示我们查看的是一个普通文件。有时你可能会看到 d,这代表一个目录。
随后的九个字符是我们的实际权限位。它们被分为三组,每组三个字符。
权限位的分组与含义
理解了权限的表示方法后,我们来详细解读这三组权限分别代表什么。每组三个字符(一个“三元组”)对应一类用户的权限。
- 第一个三元组(第2-4位)代表文件所有者的权限。
- 第二个三元组(第5-7位)代表文件所属用户组的权限。
- 第三个三元组(第8-10位)代表其他所有用户的权限。
在每个三元组中:
r代表可读。w代表可写。x代表可执行。
类似于二进制,如果一个权限位被设置(即不是 -),我们就说该权限是启用的。如果该位是 -,则表示该权限被禁用。
权限示例详解
让我们结合之前的例子 -rwxrw-r-- 来具体分析一下。

- 所有者权限 (
rwx):第一个三元组是rwx。这指的是文件所有者(在此例中是cindy,你可以在ls -l输出的“所有者”字段看到)的权限。这意味着所有者cindy可以读、写和执行这个文件。 - 组权限 (
rw-):第二个三元组是rw-。这是文件所属组(此例中是cool组)的权限。这意味着cool组内的成员可以读和写这个文件,但不能执行它。 - 其他用户权限 (
r--):第三个三元组是r--。这是所有其他用户和组的权限。这意味着既不是所有者cindy也不属于cool组的用户,只能读这个文件,不能写入或执行。
总结
本节课中我们一起学习了Linux文件权限的核心概念。我们了解到权限分为读、写、执行三种,并通过 ls -l 命令的输出,学会了如何解读代表文件类型和权限的10个字符。关键在于理解这九个权限位被分为三组,分别对应所有者、所属组和其他用户的权限。虽然初看可能有些复杂,但随着练习,你会逐渐熟练掌握。如果需要复习,随时可以回顾本节课的内容。
138:Windows修改权限 🛠️
在本节课中,我们将学习如何在Windows操作系统中修改文件和文件夹的权限。我们已经了解了如何查看权限,现在将进一步学习如何更改这些权限,以控制不同用户对资源的访问。
从图形界面修改权限
上一节我们介绍了如何查看权限,本节中我们来看看如何通过图形用户界面(GUI)修改权限。
假设我想允许家庭中的另一位成员查看电脑上存放家庭照片的文件夹。具体操作如下:
在我的本地磁盘C上,有一个名为“Vacation Pictures”的文件夹,我想与机器上的另一个用户Devin共享。
以下是操作步骤:
- 右键点击目标文件夹。
- 选择“属性”。
- 切换到“安全”选项卡。
- 点击“编辑”按钮来修改文件权限。
此时,我可以看到添加组或用户名的选项。点击“添加”按钮。
系统会要求输入要添加的用户名。我输入“Devin”,然后点击“检查名称”以验证输入是否正确。
验证通过后,点击“确定”。将Devin添加到访问控制列表(ACL)后,我可以点击他的用户名,然后勾选希望授予他的权限对应的“允许”复选框。

例如,我们可以给Devin“修改”权限,这样他也能向此文件夹添加图片。
我们一直忽略了这个“拒绝”复选框。你可能已经猜到,“拒绝”意味着不允许某项权限。它的特殊之处在于,其优先级通常高于“允许”权限。
假设Devin所在的组拥有访问此文件夹的权限。如果我们明确勾选了Devin用户名下的“拒绝”框,那么即使他所在的组有访问权限,Devin本人也无法访问。如果你想了解更多关于权限优先级的信息,可以查阅补充阅读材料。
使用命令行界面修改权限
在图形界面中修改权限非常直观,现在让我们看看如何在命令行界面(CLI)中完成同样的操作。
我们将回到 icacls 命令。在接下来的示例中,我们将在PowerShell中运行 icacls。icacls 命令是为PowerShell之前的命令提示符设计的,其参数使用的特殊字符可能会让PowerShell产生混淆。
通过用单引号包围 icacls 的参数,我是在告诉PowerShell不要尝试将这些参数解释为代码。如果你在 cmd.exe 中运行这些命令,则需要移除单引号才能正常工作。
让我们对比一下在PowerShell和 cmd.exe 中的命令格式。

在PowerShell中,命令如下:
icacls ‘C:\Vacation Pictures’ /grant Everyone:(OI)(CI)R
在命令提示符(cmd.exe)中,命令如下:
icacls “C:\Vacation Pictures” /grant Everyone:(OI)(CI)R

在PowerShell示例中,我们添加单引号是为了让PowerShell忽略括号,并且因为路径中包含空格。在 cmd.exe 示例中,路径必须使用双引号,并且不再需要单引号来隐藏括号。
理解了命令格式的差异后,现在让我们看看刚才用 icacls 命令授予Devin的权限。

很好,我看到Vacation Pictures目录为Devin添加了一个新的访问控制项(ACE),赋予了他修改权限。我们可以看到,在Vacation Pictures中创建的任何新文件或文件夹都将继承此权限。

应用实例:调整组权限
掌握了基本命令后,让我们通过一个实际场景来应用它。
假设我们希望任何有权使用此计算机的人都能看到这些图片,但不希望他们添加或删除照片。我们应该授予他们什么权限?
是的,我们希望授予他们对Vacation Pictures文件夹的“读取”权限。让我们使用特殊的“Everyone”组来授予目录读取权限。
命令如下:
icacls ‘C:\Vacation Pictures’ /grant Everyone:(OI)(CI)R
“Everyone”组确实包含了所有人,包括像Cindy和Devin这样的本地用户账户、访客用户(这是一种允许无需密码使用计算机的特殊用户类型,默认情况下是禁用的,你可能只在非常特定的情况下启用它)。

现在,任何可以使用这台计算机的人都能浏览Devin和我整理的照片了。

实际上,我可能并不真的希望所有人都能看到我的度假照片,也许我只希望那些在计算机上设有密码的人才能查看。
在这种情况下,我想使用“Authenticated Users”组。该组不包括访客用户。所以,首先让我们添加一个新的访问控制项。
命令如下:
icacls ‘C:\Vacation Pictures’ /grant “Authenticated Users”:(OI)(CI)R
现在,移除“Everyone”组的权限。
icacls ‘C:\Vacation Pictures’ /remove Everyone
最后,使用 icacls 验证权限是否按我们的意图设置。
icacls ‘C:\Vacation Pictures’
很好。我们可以看到“Authenticated Users”已被添加,而“Everyone”已被移除。

总结
本节课中我们一起学习了在Windows中修改权限的两种主要方法。我们首先通过图形界面逐步完成了添加用户和设置权限的过程,理解了“允许”和“拒绝”权限的优先级。接着,我们深入命令行,学习了如何在PowerShell和命令提示符中使用 icacls 命令来授予和移除权限,并通过实际例子演示了如何为“Everyone”组和“Authenticated Users”组配置不同的访问级别。这些技能是管理文件安全和共享资源的基础。接下来,让我们看看如何在Linux系统中修改权限。
Linux权限管理:第2课:修改文件权限与所有权
在本节课中,我们将学习如何在Linux系统中修改文件和目录的权限与所有权。这是系统管理和安全配置的基础技能。
在Linux中,我们使用 chmod(change mode)命令来修改权限。首先,需要选择你想要更改的权限集合:文件所有者(用 u 表示)、文件所属组(用 g 表示)或其他用户(用 o 表示)。要添加或移除权限,只需使用加号(+)或减号(-)符号,后面跟上权限标识。
以下是使用符号格式修改权限的示例:


执行命令 chmod u+x my_cool_file。这条命令表示,我们要修改 my_cool_file 的权限,给文件所有者(u)添加执行(x)权限。
如果你想移除权限,操作类似。执行命令 chmod u-x my_cool_file。这里只是将加号(+)换成了减号(-),非常简单。
如果你想为一个文件同时添加多个权限,可以这样做:
chmod u+rx my_cool_file
这条命令表示,我们要为文件所有者(u)添加读取(r)和执行(x)权限。
你也可以同时对多个权限集合进行操作。执行命令:
chmod ugo+r my_cool_file

这条命令表示,我们要为文件所有者(u)、所属组(g)以及其他所有用户(o)添加读取(r)权限。

上面这种使用 r、w、x 和 u、g、o 来表示权限和用户的 chmod 格式,被称为符号格式。
我们还可以使用数字格式来修改权限,这种方法通常更快、更简洁,尤其适合一次性修改所有权限。数字格式中,读取(r)的数值是 4,写入(w)是 2,执行(x)是 1。要设置权限,我们将目标权限集合所需的数值相加。
让我们来看一个例子:


命令 chmod 754 my_cool_file 中的第一个数字 7 代表所有者的权限,第二个数字 5 代表所属组的权限,第三个数字 4 代表其他用户的权限。
那么,7 和 5 这些数字是怎么来的呢?记住,你需要将权限数值相加。4(读) + 2(写) + 1(执行) = 7,这代表 rwx 权限。因此,文件所有者可以读、写和执行这个文件。
你能猜出 5 代表什么吗?没错,4(读) + 1(执行) = 5,代表 r-x 权限,即可读和可执行。
现在你可以看到,数字格式比符号格式更快捷。相比于运行一长串符号命令,我们只需运行 chmod 754 my_cool_file 即可一次性更新所有权限。
无论使用符号格式还是数字格式,你都可以修改权限,选择你觉得最方便的一种即可。
除了权限,你还可以更改文件的所有者和所属组。chown(change owner)命令允许你更改文件的所有者。
让我们将文件的所有者改为 devon:
chown devon my_cool_file
很好,现在 devon 是这个文件的所有者了。
要更改文件所属的组,可以使用 chgrp(change group)命令。
chgrp bestgroup my_cool_file

很好,现在 bestgroup 是这个文件的所属组了。

熟练掌握权限的查看和修改可能需要一些时间。你可以在一些文件上练习修改权限,直到完全掌握。权限管理是计算机安全的重要基石,在你作为IT支持专家的整个职业生涯中都会频繁使用到它。
在本节课中,我们一起学习了如何使用 chmod 命令的符号格式和数字格式来修改Linux文件权限,以及如何使用 chown 和 chgrp 命令来更改文件的所有者和所属组。这些是进行系统管理和维护安全访问控制的核心操作。
Windows权限管理:第2课:特殊权限详解
在本节课中,我们将学习Windows NTFS文件系统中的特殊权限。我们将了解特殊权限与基本权限的关系,并通过一个实际案例来掌握如何配置复杂的访问控制。
您可能已经注意到,之前在图形界面中查看权限时,权限列表里有一个“特殊权限”的复选框。
我们目前查看和设置的权限被称为基本权限。
实际上,基本权限是特殊权限或特定权限的集合。例如,当您为文件设置“读取”权限时,您实际上是在设置多个特殊权限。
接下来,让我们看看有哪些可用的特殊权限。
以下是查看特殊权限列表的方法:
我将点击权限设置下的“高级”选项卡。
当我点击一个用户名,然后进入“高级权限设置”时,我可以看到该文件上启用的所有特殊权限列表。
当我们选择“读取”这样的基本权限时,我们实际上启用了以下特殊权限:列出文件夹/读取数据、读取属性、读取扩展属性、读取权限和同步。这些只是经过微调的权限。您可以像修改其他基本权限一样修改这些特殊权限。
您可以在本视频后的补充阅读材料中,了解更多关于不同类型特殊权限的信息。
在大多数情况下,基本权限已能满足您的需求。

但有时,您需要创建一个不完全遵循简单模式的文件或文件夹。让我们来看一个命令行界面中的例子。
要在CLI中查看文件的特殊权限,我们将像之前一样使用 icacls 命令。
让我们看一个比我的桌面文件夹更有趣的例子。执行命令:
icacls C:\Windows\Temp
这个目录用于存放系统中所有用户的临时文件。
我们希望系统上的每个人都能在此处创建文件和文件夹。
您可能认为我们应该为此使用“修改”或“完全控制”权限,但我们不希望用户能够删除彼此的文件。
首先,让我们查看分配给此文件夹的一些DACL(自主访问控制列表),并弄清楚如何实现这一点。
本地管理员和操作系统的计算机帐户对此文件夹及其内的所有文件和文件夹拥有完全权限。
我们看到一个新的描述符 (OI),这表示此DACL条目仅继承。这意味着它将被继承,但不应用于此容器(即 C:\Windows\Temp 本身)。
“Users”组包含本地计算机上的所有用户帐户。

我们将授予用户以下特殊权限:
WD:创建文件/写入数据AD:创建文件夹/追加数据S:同步

您可以在接下来的补充阅读中看到,这些特殊权限包含在“修改”基本权限中。
与“修改”基本权限不同,我们没有授予用户删除文件或文件夹的能力。
但我们确实希望用户能够删除他们自己的文件和文件夹,那么该如何实现呢?
请注意“创建者所有者”条目。“创建者所有者”是一个特殊的用户,它代表DACL条目所应用到的任何文件的所有者。
在此目录及所有子目录中,任何文件或文件夹的所有者都对其拥有完全控制权。这很好。
现在,我将在 C:\Windows\Temp 中创建一个文件夹和文件,看看应用了哪些DACL条目。
让我们运用所学的输出重定向知识,将 icacls 命令的输出记录到一个文件中。
执行命令:
mkdir C:\Windows\Temp\Example
icacls C:\Windows\Temp\Example > permissions.txt
现在,让我们查看创建的文件,以观察 icacls 的输出。
很好。我创建了文件,因此我对它们拥有完全控制权。
并且我们在 C:\Windows\Temp 中看到的所有其他DACL条目都已被继承。

总结
本节课中,我们一起学习了Windows NTFS文件系统的特殊权限。我们了解到基本权限是特殊权限的集合,并通过 C:\Windows\Temp 目录的案例,实践了如何组合特殊权限来实现精细的访问控制(如允许用户创建文件但禁止删除他人文件)。您可以看到,使用NTFS DACL中的特殊权限可能很复杂,但它也能让您创建真正强大、完全符合您确切需求的权限集。
141:特殊权限位详解 🔐

在本节课中,我们将要学习Linux系统中的特殊权限位。这些权限位允许我们实现一些常规权限无法完成的精细控制,例如让普通用户能够执行需要更高权限的任务,而无需直接授予他们这些权限。
概述
Linux的标准权限(读、写、执行)有时不足以满足所有需求。例如,某些命令需要修改由root用户拥有的文件,但我们又不希望将root权限授予普通用户。为了解决这类问题,Linux引入了三种特殊权限位:setuid、setgid和粘滞位。
上一节我们介绍了标准文件权限,本节中我们来看看这些特殊权限位如何扩展权限控制的能力。
Setuid(设置用户ID)权限
setuid权限允许用户以文件所有者的权限来执行该文件,而不是以执行者的权限。一个典型的例子是passwd命令。
当用户需要更改自己的密码时,会运行passwd命令。该命令需要将加密后的密码写入/etc/shadow文件,而此文件归root所有,普通用户通常没有写入权限。setuid权限解决了这个问题。
我们可以通过ls -l命令查看/usr/bin/passwd的权限:
ls -l /usr/bin/passwd
输出中,权限字段的“用户执行位”位置显示为s(而不是x),这表示setuid位已启用。
-rwsr-xr-x 1 root root 68208 May 28 2023 /usr/bin/passwd
这意味着当任何用户执行passwd命令时,该进程实际上是以文件所有者(root)的权限运行的,因此能够写入/etc/shadow文件。
如何设置Setuid位
设置setuid位有两种方式:符号法和数字法。
以下是设置方法:
- 符号法:使用
u+schmod u+s filename - 数字法:在标准的三位权限数字前加上
4。例如,设置权限为4755(rwsr-xr-x)。chmod 4755 filename
Setgid(设置组ID)权限
与setuid类似,setgid权限允许用户以文件所属组的权限来执行文件。这对于需要共享组权限的程序非常有用。
例如,查看wall命令(用于向所有终端发送消息)的权限:
ls -l /usr/bin/wall
你可能会看到类似以下的输出,其中组权限的执行位是s:
-rwxr-sr-x 1 root tty 35000 May 28 2023 /usr/bin/wall
这里的s表示setgid位已启用。当任何用户运行wall命令时,它将以tty组的权限执行,从而能够向所有终端设备写入消息。
如何设置Setgid位
设置setgid位的方法与setuid类似。
以下是设置方法:
- 符号法:使用
g+schmod g+s filename - 数字法:在标准的三位权限数字前加上
2。例如,设置权限为2755(rwxr-sr-x)。chmod 2755 filename
粘滞位(Sticky Bit)
粘滞位主要用于目录。它为目录设置了一个特殊的保护:任何用户都可以在目录中创建和修改文件,但只有文件的所有者或root用户才能删除该目录下的文件。这常用于共享临时目录,如系统的/tmp目录。
查看/tmp目录的权限:
ls -ld /tmp

你会注意到权限字段的末尾有一个t:
drwxrwxrwt 15 root root 4096 Jan 1 12:00 /tmp
这个t表示粘滞位已启用。因此,所有用户都可以在/tmp中创建文件,但无法删除其他用户创建的文件。
如何设置粘滞位
设置粘滞位同样有符号法和数字法。
以下是设置方法:
- 符号法:使用
+tchmod +t directory_name - 数字法:在标准的三位权限数字前加上
1。例如,设置目录权限为1777(drwxrwxrwt)。chmod 1777 directory_name
总结
本节课中我们一起学习了Linux的三种特殊权限位:
setuid:允许用户以文件所有者的身份执行程序。数字表示为4。setgid:允许用户以文件所属组的身份执行程序(对目录而言,可使在其中创建的文件继承目录的组)。数字表示为2。- 粘滞位:用于目录,确保用户只能删除自己拥有的文件。数字表示为
1。
这些权限位虽然不常在日常操作中使用,但对于理解系统如何安全地管理用户权限、实现共享目录以及允许特定命令提升权限至关重要。用户访问控制、组权限和文件权限是计算机安全的核心概念。目前,你是在单机尺度上学习权限管理。在后续关于系统管理和IT基础设施服务的课程中,你将学习跨网络的多用户访问控制等更深入的内容。
现在,恭喜你!你已经为构建计算机安全知识体系迈出了坚实的第一步。在下一个模块,我们将转换话题,探讨操作系统如何管理软件。
接下来,你将完成两个关于Windows和Bash权限的评估。完成后,建议你在进入下一个模块前稍作休息。
142:软件包管理模块介绍 🎯

在本模块中,我们将学习如何在Windows和Linux操作系统中管理软件包。软件包的安装与维护是IT支持工作中几乎每天都会遇到的任务,因此掌握其工作原理至关重要。

概述 📋
恭喜你,你已经完成了本课程一半的内容。在此之前,你已经学习了如何在Windows和Linux文件系统中进行导航,也掌握了用户与组的管理,以及权限与访问控制的基础知识。做得很好。
接下来,我们将学习软件包的概念,以及Windows和Linux系统上主要的软件包管理器。在IT支持岗位上,安装和维护软件包是你几乎每天都要进行的工作。因此,你需要熟悉这些操作在Windows和Linux操作系统上是如何进行的。让我们开始吧。
核心概念 💡
软件包管理器是用于自动化软件安装、升级、配置和移除的工具。它们极大地简化了系统管理。
- 软件包:通常是一个包含了程序文件、元数据(如版本、依赖关系)和安装脚本的压缩文件。
- 包管理器:一个用于与软件包仓库交互、解决依赖关系并执行安装或卸载操作的程序。
总结 ✨
本节课我们一起回顾了已学的知识,并介绍了即将学习的核心主题——软件包管理。理解并熟练使用Windows和Linux各自的包管理器,是成为一名高效IT支持专家的关键技能。在接下来的课程中,我们将深入探讨具体的操作与实践。
143:Windows软件包安装与管理
在本节课中,我们将学习软件包的基本概念,并重点探讨在Windows操作系统中软件是如何被打包和安装的。我们将了解不同的软件包格式及其应用场景,并学习如何通过图形界面和命令行两种方式进行安装。
你是否曾想过,我们是如何从应用商店或互联网获取软件包并将其安装到设备上的?不必再疑惑。开发者和制作我们所用软件的组织通常会为我们精心打包好软件。在大多数情况下,我们只需点击“安装”,软件包便会自动完成安装。
软件包的形式多种多样,就像为他人包装礼物一样。你可以将其放入盒子或袋子中,但真正重要的是里面的内容。开发者使用软件编译工具以不同方式打包软件,但最终结果都是一个软件包。在接下来的内容中,我们将讨论在IT支持工作中会遇到的一些最常见软件包类型。
Windows中的软件包格式
在Windows系统中,软件通常被打包为 .EXE 或可执行文件。可执行文件包含计算机运行时要执行的指令,例如“将文件从这里复制到那里”、“安装此程序”,或更泛泛地“执行此操作”。可执行文件的概念并非Windows独有,但Windows有其特殊的实现形式,即EXE文件。
它们是根据微软的可移植可执行格式创建的。虽然我们不会深入探讨PE格式的细节,但需要知道的是,EXE文件不仅包含计算机要执行的指令,还可能包含程序可能使用的文本、计算机代码、图像,以及一种称为MSI文件的东西。

一个微软安装包用于指导名为“Windows安装程序”的程序在Windows操作系统上执行程序的安装、维护和移除工作。

除了使用图形用户界面安装向导引导用户安装程序外,Windows安装程序还使用MSI文件来创建说明,以便在用户想要卸载程序时知道如何移除它。
Windows可执行文件通常用作启动Windows安装程序的引导程序。在这种情况下,它们可能只包含一个MSI文件和一些启动Windows安装程序并读取它的指令。或者,可执行文件也可以用作独立的自定义安装程序,不包含MSI文件或不使用Windows安装程序。如果以这种方式打包,EXE文件将需要包含操作系统安装程序所需的所有指令。
选择安装方式:MSI与自定义安装程序
那么,何时使用MSI文件和Windows安装程序,何时使用包含类似setup.exe的自定义安装程序的可执行文件呢?这是很好的问题。
如果你希望对Windows安装软件时采取的操作进行精确、细粒度的控制,你可能会选择自定义安装程序路线。然而,这可能会很棘手,尤其是在管理代码依赖项时。另一方面,使用由MSI文件引导的Windows安装程序会为你处理许多簿记和设置工作,但它对软件的安装方式有一些相当严格的规则。
从Windows 8开始,微软引入了一个名为Windows应用商店的平台来分发程序。Windows应用商店是一个应用程序仓库,你可以从中下载和安装通用Windows平台应用。这些是可以在任何兼容的Windows设备上运行的应用程序。这些程序使用一种称为APPX的格式来打包其内容,并充当分发单元。我们不会详细讨论APPX包,但知道它们的存在为你提供了另一种打包软件的选择是很好的。
安装软件包:图形界面与命令行
我们在之前的课程中学习了如何安装EXE包。要通过图形用户界面安装EXE,我们只需双击可执行文件,然后按照提供的安装过程进行操作,这个过程可能由可执行文件本身或Windows安装程序引导。这相当简单。
但是,如何从命令行安装软件呢?首先,为什么需要这样做呢?准备好,因为你即将发现,在IT支持的许多场景中,从命令行安装可执行文件非常方便,包括自动安装。你可能希望编写脚本或使用配置管理工具自动安装某些软件,而无需人工在安装向导中点击按钮。
那么,如何从命令行安装可执行文件呢?答案是:视情况而定。
我知道这个答案不太令人满意。从命令行运行EXE文件相当简单:你打开命令提示符或PowerShell,切换到可执行文件所在的目录,然后输入其名称。你也可以直接从文件系统中的任何位置键入EXE的绝对路径,例如:
C:\Users\Cindy\Desktop\Hello.EXE
从命令行运行安装程序与此类似,但根据安装程序的不同,可能会有更多的安装选项。你可能会有用于静默安装的标志(屏幕上不显示任何内容,软件包安静地安装),或者获得一个参数让计算机在安装包后自动重启。


你可以查看使用Microsoft自解压程序创建的软件包的选项,以更好地理解我们所讨论的内容。一个给定的安装程序可能有这些用于从命令行安装的选项,但它们因供应商而异。微软软件包的可用选项可能与Mozilla软件包的选项不同。
专业提示:尝试在从命令行运行软件包时使用 /? 参数,以查看该软件包可能支持哪些类型的子命令。如果软件包没有任何与帮助相关的选项,你最好的选择是查看供应商的文档,了解他们的软件包支持哪些类型的安装。
总结
本节课中,我们一起学习了软件包在Windows系统中的核心概念。我们了解了.EXE可执行文件和MSI安装包的区别与用途,知道了Windows安装程序的作用。我们还探讨了从Windows 8引入的APPX打包格式。最后,我们比较了通过图形界面和命令行安装软件的方法,并学习了如何使用命令行参数(如静默安装/S和帮助/?)来更灵活地控制安装过程。理解这些知识将帮助你在IT支持工作中更有效地管理和部署软件。
144:Linux软件包管理
在本节课中,我们将要学习Linux系统中的软件包管理。我们将了解不同Linux发行版使用的软件包类型,并重点学习如何安装、移除和查询Debian格式的软件包。
Linux软件包类型概述
Linux系统拥有众多不同的发行版,每个发行版可能使用不同类型的软件包。
例如,在Red Hat Linux发行版中,使用的软件包是RPM(Red Hat Package Manager)格式。我们不会在本课程中详细讲解如何操作RPM包,但你需要知道,当你在不同的Linux发行版上工作时,软件包类型可能会发生变化。
如果你有兴趣了解更多关于RPM包的信息,我已在视频后的补充阅读材料中提供了一个链接。
聚焦Debian软件包

在本课程中,我们将使用Debian软件包,这也是Ubuntu系统所使用的格式。
一个Debian软件包被打包为一个以 .deb 结尾的文件。
你已经在前期的“技术支持基础”课程中,学习了如何使用包管理器的帮助来安装Linux软件包。我们将在后续视频中更深入地探讨包管理器,但现在,让我们专注于如何安装一个独立的Debian软件包。
在某些情况下,你必须处理独立的Debian软件包,特别是当开发者将他们的软件打包并发布在不同的网站上时。
安装与移除独立Debian包
要安装一个Debian软件包,你需要使用 dpkg(Debian package)命令。
这里有一个开源文本编辑器Atom的独立安装包。让我们使用 dpkg 命令来安装它。我们必须使用 -i 标志来表示安装(install)。
dpkg -i package_name.deb
安装完成。现在它已经安装在这台电脑上了。
如果我们想要移除一个软件包,该怎么做呢?为此,我们使用 -r 或移除(remove)标志。
dpkg -r package_name
以上就是你安装和移除独立Debian软件包的方法,相当简单,对吧?

查询已安装的软件包
你也可以使用 dpkg -l 命令来列出机器上已安装的Debian软件包。这里的 -l 代表列表(list)。
输出的列表上有很多程序,看起来有些杂乱。
你能想到我们之前学过的哪个命令可以帮助我们搜索某个特定的软件包是否已安装吗?
没错,就是 grep 命令。假设我们想搜索刚刚安装的atom包(请注意,我刚刚卸载了它,所以我会快速地重新安装一下)。
现在,让我们运行 dpkg -l | grep atom。
dpkg -l | grep atom
这里,我们将 dpkg -l 命令的输出通过管道(|)传递给了 grep。请记住,管道命令会获取一个命令的标准输出(在这里是 dpkg -l 的输出),然后将其发送到它连接到的下一个命令的标准输入(在这里是 grep)。
运行这个命令后,它显示Atom确实在已安装的软件包列表中。只需记住,在使用 grep 时,它会列出名称中包含搜索词的所有其他结果。
课程总结
本节课中,我们一起学习了如何在Linux中管理Debian格式的软件包。我们了解了不同发行版的包类型差异,并掌握了使用 dpkg 命令进行安装(-i)、移除(-r)和查询(-l 结合 grep)独立软件包的核心操作。通过结合管道命令,我们能更高效地筛选和管理已安装的软件。
145:软件与移动操作系统

概述
在本节课中,我们将要学习移动操作系统中的软件,特别是应用程序(App)的获取、安装与管理方式。我们将以iOS和Android系统为例,介绍应用商店、企业应用管理以及侧载等核心概念,并了解如何对移动应用进行基础故障排除。
现在,我们来讨论软件和移动操作系统。
我们将主要使用iOS和Android系统的例子,但其他移动操作系统的工作方式也类似。如果你的移动设备使用的是专用操作系统,你可以在该设备的文档中找到关于其软件工作原理的信息。
移动操作系统中的软件以移动应用程序(或称App)的形式分发。应用程序必须来自移动设备已配置为信任的来源。在大多数操作系统上,你不能随意从一个网站下载应用并安装。相反,移动操作系统使用应用商店。
应用商店是一个中心化的、受管理的市场,供应用开发者发布和销售移动应用。应用商店应用本身就像一个包管理器,而应用商店服务则像一个软件包仓库。人们通过一个统一的界面,从中心化来源获取免费或付费的应用程序。
通过应用商店发布的应用通常已经过安全审查,并获得了商店所有者的批准。这些应用由开发者进行签名。操作系统被配置为只信任由其认可的发布者签名的代码。我们将在未来的模块中更详细地讨论代码签名。现在,你可以把它想象成在一封信上签名,开发者是在声明“这是我编写的”。不过,代码签名与信件签名有一个不同之处:如果有人修改了代码,签名就会失效。这让操作系统能够知道代码是否被篡改过。
中心化的应用商店对于向公众开放的应用来说非常有效。但是,如果你的组织需要运行某种定制应用呢?这时你就需要使用企业应用管理。
上一节我们介绍了面向公众的应用商店,本节中我们来看看企业内部的应用分发。
企业应用管理允许组织分发定制的移动应用。这些应用由组织开发或为组织开发,并不对公众开放。企业应用使用企业证书进行签名,安装这些应用的设备必须信任该证书。作为IT支持专家,你可能会通过移动设备管理服务来协助管理企业应用的安装,我们将在未来的视频中学习相关内容。
除了应用商店和企业分发,还有另一种在移动操作系统上安装应用的方式,称为侧载。
侧载是指不通过应用商店,直接安装移动应用。侧载安装软件包比通过应用商店安装风险更高,通常只有应用开发者才会这样做。
移动应用是独立的软件包,因此它们包含了运行所需的所有依赖项。当你安装一个应用时,它已经内置了运行所需的一切。移动应用会被分配一个特定的存储位置来存放其数据。在使用移动应用时,任何由该应用更改或创建的内容最终都会存储在该应用被分配的存储位置或缓存中。
因此,将移动应用重置到首次安装时的状态非常简单,只需删除或清除其缓存即可。在你的IT支持角色中,你可能会帮助他人排查移动应用问题。清除缓存将移除所有对设置的更改,并注销应用内登录的任何账户。这可能不是你处理问题应用时首先尝试的方法,但当应用出现严重故障时,这是一个非常有效的技巧。请查看补充阅读材料,获取如何执行此操作的具体指南。

移动设备通常会被配置为定期检查应用更新。在IT支持工作中,你可能需要确保应用已更新。你可以在补充阅读材料中找到关于如何检查应用更新的详细信息。
总结
本节课中,我们一起学习了移动操作系统软件管理的核心知识。我们了解了通过官方应用商店获取和安装应用的标准流程,探讨了用于内部软件分发的企业应用管理,并认识了风险较高的侧载安装方式。我们还学习了移动应用的数据存储机制,以及通过清除缓存来重置应用这一实用的故障排除技巧。掌握这些概念,将帮助你更好地支持和管理移动设备上的软件。
015:剖析以太网帧 🔍
在本节课中,我们将通过剖析以太网帧来完善你对网络基础知识的理解。掌握这些基础知识是构建坚实的网络知识体系的第一步,这对于IT支持工作至关重要。
概述
数据包是一个总括性术语,代表通过网络链路发送的任何一组二进制数据。这个术语不绑定于任何特定的方式或技术,它只代表一个概念:一组从A点发送到B点的数据。在以太网层面,数据包被称为以太网帧。
以太网帧的结构
一个以太网帧是一个高度结构化的信息集合,以特定的顺序呈现。这样,物理层的网络接口可以将链路上传输的比特流转换为有意义的数据,反之亦然。以太网帧的几乎所有部分都是必需的,并且大多数部分具有固定的大小。
前导码
以太网帧的第一部分称为前导码。前导码长8字节(64位),本身可以分为两个部分。
以下是前导码的组成部分:
- 前7个字节:一系列交替的1和0。这部分作用包括作为帧之间的缓冲区,以及供网络接口用来同步其内部时钟,以调节发送数据的速度。
- 最后1个字节:称为SFD,即帧起始定界符。它向接收设备发出信号,表示前导码结束,实际的帧内容即将开始。
地址与类型字段
紧接在帧起始定界符之后的是目标MAC地址。这是预期接收者的硬件地址,随后是源MAC地址,即帧的起源地址。请记住,每个MAC地址长48位(6字节)。
以太网帧的下一部分称为以太类型字段。它长16位,用于描述帧内容的协议。我们稍后会深入探讨这些协议是什么。
值得注意的是,在以太类型字段的位置,你也可能发现一个VLAN头部。它表明该帧本身是一个VLAN帧。如果存在VLAN头部,以太类型字段则跟在它后面。
VLAN代表虚拟局域网。这是一种技术,允许你在同一物理设备上运行多个逻辑局域网。任何带有VLAN标签的帧,只会从配置为转发该特定标签的交换机接口发出。这样,你可以拥有一个像多个局域网一样运行的单一物理网络。VLAN通常用于隔离不同类型的流量,例如,你可能会看到公司的IP电话在一个VLAN上运行,而所有桌面电脑在另一个VLAN上运行。
数据载荷与帧校验序列
在此之后,你会找到以太网帧的数据载荷。在网络术语中,载荷是指被传输的实际数据,即所有非头部的部分。传统以太网帧的数据载荷长度可以在46到1500字节之间。它包含了来自更高层(如IP层、传输层和应用层)的所有实际被传输的数据。
在数据之后,我们有一个称为帧校验序列的部分。这是一个4字节(32位)的数字,代表整个帧的校验和值。这个校验和值是通过对帧执行循环冗余校验计算得出的。
循环冗余校验是数据完整性的一个重要概念,广泛应用于计算领域,而不仅仅是网络传输。CRC本质上是一种数学变换,它使用多项式除法来创建一个代表更大数据集的数字。任何时候你对一组数据执行CRC,都应该得到相同的校验和数字。
将其包含在以太网帧中的原因,是让接收端的网络接口能够推断它接收到的数据是否完好无损。
数据发送与校验过程
上一节我们介绍了以太网帧的各个组成部分,本节中我们来看看数据发送和校验的实际过程。
当设备准备发送一个以太网帧时,它会收集我们刚刚介绍的所有信息,如目标和源MAC地址、数据载荷等。然后,它对这些数据执行CRC计算,并将得到的校验和数字作为帧校验序列附加在帧的末尾。

然后,这些数据通过链路发送并在另一端被接收。在这里,以太网帧的各个字段被收集起来,接收端现在对这些数据执行CRC计算。
如果接收端计算出的校验和与帧校验序列字段中的校验和不匹配,数据将被丢弃。这是因为在传输过程中,一定量的数据必定已经丢失或损坏。然后,由更高层的协议来决定是否应该重新传输该数据。以太网本身只报告数据完整性,不执行数据恢复。
总结

本节课中,我们一起学习了以太网帧的详细结构,包括前导码、地址字段、类型/标签字段、数据载荷以及至关重要的帧校验序列。我们了解了循环冗余校验如何确保数据在传输过程中的完整性。理解这些基础概念是掌握更复杂网络协议和进行故障排除的关键。
016:非传统背景入行指南 🚀

在本节课中,我们将探讨如何在没有传统计算机科学教育背景的情况下,成功进入并适应IT领域。我们将重点分析实践经验的价值,并提供具体的入门步骤。
概述
许多人对IT行业感兴趣,但可能因为没有计算机科学学位或相关学历而感到犹豫。本节内容旨在消除这种顾虑,并指出在像谷歌这样的公司里,许多成功的IT专业人士都来自非技术背景。关键在于掌握核心的解决问题的方法,并通过实践积累经验。
上一节我们介绍了IT行业的多样性,本节中我们来看看如何通过实际行动迈出第一步。
核心观点解析
背景的多样性
在谷歌,与我共事的IT人员中,有一半并不具备传统的IT教育背景。我的同事中曾有教师、戏剧专业毕业生、历史专业毕业生,甚至化学家。这证明,专业背景并非进入IT领域的决定性因素。
成功的关键能力
真正的关键在于两种核心能力:与人沟通的能力,以及分析问题的能力。具体而言,就是能够将一个复杂问题分解为多个易于单独解决的组成部分,直至整个问题被完全解决。这个过程可以抽象为以下公式:
解决问题 = 分解问题 + 逐个击破
学习具体的技术知识反而是相对容易的环节,任何人都可以通过努力掌握。
实践入门指南
对于有志进入IT领域的新手,最直接的行动建议就是动手实践。以下是你可以立即开始的步骤:
- 从身边环境开始:你家里很可能有无线网络等设备。可以尝试去了解、配置甚至故意“破坏”它的设置,然后再修复它。
- 利用虚拟环境:在电脑上设置一台虚拟机。这是一个安全的沙盒环境,你可以尝试用各种方法“破坏”它,然后再探索所有不同的修复方法。
# 例如,你可以使用VirtualBox或VMware创建一台虚拟机进行练习
这个过程能为你提供最直接的实践经验。同时,它也能帮助你测试自己是否真正享受发现问题、解决问题的过程,从而判断IT工作是否适合你。
总结
本节课中我们一起学习了非传统背景进入IT领域的可行性与方法。请勿因为认为自己缺乏技术背景而却步,因为技术背景恰恰是最不重要的环节。最重要的是你解决问题的思维、学习的意愿以及动手实践的勇气。通过主动“弄脏双手”去尝试和探索,你不仅能获得宝贵的经验,更能真正发现自己对技术的热情所在。
017:网络层介绍 🌐


在本节课中,我们将要学习网络层的基本概念。网络层是计算机网络的核心,它负责在不同网络之间传输数据,使得全球范围内的计算机能够相互通信。我们将从局域网通信的基础出发,逐步深入到跨网络通信的技术。
概述
上一节我们介绍了计算机如何在短距离或单一局域网内进行通信。本节中,我们来看看如何实现数据跨越多个网络进行远距离通信。这是互联网每天被数十亿人使用的关键技术基础。
计算机能够在近乎瞬间的速度下跨越巨大距离进行通信。这是一项非凡的技术进步,构成了数十亿人每天使用互联网的基础。
网络层的作用
网络层的主要职责是促进数据在不同网络之间的传输。它使得通信能够跨越很远的距离。
在接下来的课程中,我们将重点介绍允许数据跨越多个网络的技术。
本模块学习目标
在本模块结束时,你将能够描述IP寻址方案以及子网划分的工作原理。
以下是本模块将涵盖的核心内容:
- 你将学习如何进行基本的二进制运算,以便描述子网。
- 你还将能够演示封装的工作原理,以及像ARP这样的协议如何允许网络的不同层进行通信。
- 最后,你将初步理解路由协议的基础知识以及互联网的工作原理。
总结
本节课中,我们一起学习了网络层的引入及其在跨网络通信中的核心作用。我们明确了本模块的学习目标,包括IP寻址、子网划分、二进制运算、封装、ARP协议以及路由和互联网的基础知识。现在,请继续观看下一个视频,我们将正式开始深入学习。
018:网络层与IP协议

在本节课中,我们将学习网络层的作用,理解为何需要IP地址来替代MAC地址进行大规模网络通信,并详细介绍IP数据报的结构。
概述:从MAC地址到IP地址
在局域网中,节点可以通过其物理MAC地址进行通信。交换机能够快速学习连接到其端口的MAC地址,从而在小型网络中高效地转发数据。
然而,MAC地址的寻址方案扩展性不佳。全球每一个网络接口都有一个唯一的MAC地址,但这些地址并非按任何系统性的方式排列。我们无法知道某个MAC地址在地球上的具体位置,因此它不适合远距离通信。
此外,当我们稍后介绍ARP协议时,你会发现节点了解彼此物理地址的方式,除了在单个网段内,无法扩展到更广的范围。
显然,我们需要另一种解决方案。这就是网络层以及互联网协议。IP协议引入了IP地址,它能够在大规模网络中有效地定位设备。
IP数据报的封装
上一节我们了解了MAC地址的局限性,本节中我们来看看IP数据报是如何在网络中传输的。
IP数据报本身是网络层的数据包。为了在物理链路上传输,它需要被封装在数据链路层的帧中。具体来说,在以太网中,IP数据报被放置在以太网帧的载荷部分。
这个过程可以表示为:
以太网帧 = 帧头 + IP数据报(载荷) + 帧尾
通过这种封装方式,网络层的数据得以借助数据链路层的服务,跨越不同的物理网络进行传递。
IP数据报头详解
理解了封装过程后,现在我们来深入剖析IP数据报本身的结构。IP数据报的头部包含多个字段,这些字段共同决定了数据包的路由和处理方式。
以下是IP数据报头部的主要字段及其作用:
- 版本:指明使用的IP协议版本(如IPv4或IPv6)。
- 头部长度:指示IP头部的长度。
- 服务类型:用于指定数据包的服务质量要求。
- 总长度:定义整个IP数据报(头部+数据)的总长度。
- 标识、标志、片偏移:这三个字段共同用于处理数据报的分片与重组。当数据报大小超过网络链路的最大传输单元时,它会被分割成多个片段,这些字段确保接收方能正确地将它们重新组装起来。
- 生存时间:数据包在被丢弃前可以经过的最大路由器跳数。每经过一个路由器,该值减1,防止数据包在网络中无限循环。
- 协议:标识封装在IP数据报载荷中的是哪种高层协议的数据(例如,TCP或UDP)。
- 头部校验和:用于检测IP头部在传输过程中是否出现错误。
- 源IP地址:发送数据包的设备的IP地址。
- 目的IP地址:接收数据包的设备的IP地址。
- 选项:可选字段,用于安全、路由记录等特殊处理。
总结

本节课中,我们一起学习了网络层和IP协议的核心知识。我们首先认识到MAC地址在广域网通信中的局限性,从而引入了具有层次化结构的IP地址。接着,我们了解了IP数据报如何被封装在以太网帧中进行传输。最后,我们详细解析了IP数据报头部的各个关键字段,包括版本、地址、生存时间以及用于分片控制的标识、标志和片偏移等。掌握这些概念是理解互联网如何工作的基础。
019:IP地址详解 🖧

在本节课中,我们将要学习计算机网络中的一个核心概念:IP地址。我们将了解IP地址的构成、表示方法、分配方式以及动态与静态地址的区别。

IP地址的构成与表示
上一节我们介绍了网络通信的基本概念,本节中我们来看看IP地址的具体构成。

IP地址是32位长的数字,由四个八位组(octet)组成。每个八位组通常用十进制数表示。


八位数据(即一个八位组)可以表示从0到255的所有十进制数。例如,12.34.56.78 是一个有效的IP地址,而 123.456.789.100 则无效,因为它包含了无法用8位表示的数字(大于255)。这种表示格式被称为点分十进制记法。
其结构可以用以下公式表示:
IP地址 = 八位组1 . 八位组2 . 八位组3 . 八位组4
其中,每个八位组满足:0 ≤ 八位组值 ≤ 255
IP地址的层次化分配
了解了IP地址的格式后,我们来看看它是如何分配的。IP地址的分配方式与MAC地址不同,它具有层次结构。
IP地址以大的区块形式分配给各种组织和公司,而不是由硬件制造商决定。这意味着IP地址比物理地址(MAC地址)更具层次性,也更容易存储相关信息。
我们可以用一个高级别的例子来理解:IBM公司拥有所有以数字9作为第一个八位组的IP地址。这意味着,如果一个互联网路由器需要确定将目的地为 9.0.0.1 的数据包发送到哪里,它只需要知道将其发送到IBM的某个路由器即可。IBM的路由器会处理后续的投递过程。
IP地址属于网络,而非设备
一个关键概念是,IP地址属于网络,而非连接到该网络的设备。
因此,无论你在何处使用你的笔记本电脑,它的MAC地址始终相同。但是,当你在咖啡馆上网时,它被分配的IP地址会与在家时不同。咖啡馆的局域网或你家的局域网会各自负责在设备开机时为其分配一个IP地址。

动态与静态IP地址
在日常使用中,获取IP地址通常是一个不可见的过程。你将在后续课程中了解更多相关技术。目前,请记住,在许多现代网络中,你可以连接一个新设备,并通过一项称为动态主机配置协议的技术自动为其分配一个IP地址。
以下是对两种分配方式的介绍:
动态IP地址
通过DHCP自动分配的IP地址称为动态IP地址。这种方式方便快捷,适用于大多数客户端设备。
静态IP地址
与动态地址相反,静态IP地址必须在节点上手动配置。在大多数情况下,静态IP地址是为服务器和网络设备保留的,而动态IP地址则保留给客户端使用。
当然,也存在某些情况下这种分配方式不成立的特例。


总结
本节课中我们一起学习了IP地址的核心知识。我们了解到IP地址是一个32位的点分十进制数字,它属于网络而非设备,并且以层次化的方式进行分配。我们还区分了动态分配与静态配置的IP地址,前者通常用于客户端,后者则多用于服务器和网络基础设施。理解这些概念是掌握网络通信基础的关键一步。
020:IP数据报与封装 📦

在本节课中,我们将要学习网络层数据包的结构,即IP数据报。我们将详细拆解其各个字段的含义,并理解数据如何在网络的不同层之间进行封装。
正如以太网层的数据包有特定名称“以太网帧”一样,在IP协议下的网络层,数据包通常被称为IP数据报。与任何以太网帧类似,IP数据报是一系列结构严格定义的字段。


IP数据报的两个主要部分是报头和有效载荷。你会发现,IP数据报报头包含的数据比以太网帧报头多得多。
IP数据报报头结构 🔍


报头的第一个字段是版本字段,长度为4位,用于指示所使用的互联网协议版本。

最常见的IP版本是版本4,即IPv4。



版本6,即IPv6,正迅速得到更广泛的采用,但我们将在后续模块中介绍它。
在版本字段之后,是报头长度字段。这也是一个4位字段,用于声明整个报头的长度。


在处理IPv4时,这个长度几乎总是20字节。


实际上,20字节是IP报头的最小长度。你无法在更小的空间内容纳一个格式正确的IP报头所需的所有数据。

接下来,我们来看服务类型字段。



这8位可用于指定有关服务质量(QoS)技术的详细信息。关于QoS,重要的结论是,有些服务允许路由器判断哪些IP数据报可能比其他数据报更重要。

下一个字段是总长度字段,这是一个16位字段。

它的用途正如其名,用于指示它所附加的IP数据报的总长度。

数据报的分片与重组 🧩

标识字段是一个16位的数字,用于将消息分组。




IP数据报有最大尺寸。由于总长度字段是16位,并且该字段指示单个数据报的大小,你可能已经能推算出最大尺寸是多少。单个数据报的最大尺寸是可以用16位表示的最大数字:65,535。
如果需要发送的数据总量大于单个数据报所能容纳的量,IP层需要将这些数据分割成许多独立的数据包。当这种情况发生时,标识字段被使用,以便接收端理解该字段具有相同值的每个数据包都属于同一传输。
接下来,我们有两个密切相关的字段:标志字段和分片偏移字段。






标志字段用于指示数据报是否允许被分片,或者指示数据报已经被分片。分片是指将单个IP数据报分割成几个较小数据报的过程。虽然大多数网络在允许的IP数据报大小方面具有相似的设置,但有时配置可能不同。


如果一个数据报必须从一个允许较大数据报大小的网络穿越到一个允许较小数据报大小的网络,该数据报就必须被分片成更小的数据报。分片偏移字段包含接收端使用的值,用于获取分片数据包的所有部分,并按正确顺序将它们重新组合。
生存时间与协议字段 ⏳

让我们继续看生存时间字段,即TTL字段。





这是一个8位字段,指示数据报在被丢弃之前可以经过多少个路由器跳数。


每次数据到达一个新路由器,该路由器将TTL字段减1。一旦该值达到零,路由器就知道不必再转发该数据报。


该字段的主要目的是确保当路由配置错误导致无限循环时,数据报不会花费永恒的时间试图到达目的地。例如,当路由器A认为路由器B是下一跳,而路由器B认为路由器A是下一跳时,就会发生循环。剧透预警:在即将到来的模块中,你将了解到TTL字段具有宝贵的故障排除特性,但像这样的秘密只向那些坚持学习的人揭示。


在TTL字段之后,你会找到协议字段。这是另一个8位字段,包含有关正在使用的传输层协议的数据。最常见的传输层协议是TCP和UDP,我们将在接下来的几节课中详细介绍它们。



校验和与地址字段 🔢
接下来是报头校验和字段。


该字段是整个IP数据报报头内容的校验和。



它的功能非常类似于我们在上一个模块中讨论的以太网校验和字段。由于TTL字段必须在数据报接触的每个路由器上重新计算,校验和字段也必然随之改变。
在那之后,我们终于到了两个非常重要的字段:源IP地址和目的IP地址字段。记住,IP地址是一个32位的数字,所以这些字段各为32位长也就不足为奇了。
接下来是IP选项字段。

这是一个可选字段,用于为数据报设置特殊特性,主要用于测试目的。



IP选项字段后面通常跟着一个填充字段。由于IP选项字段既是可选的,长度又是可变的,填充字段只是一系列零,用于确保报头具有正确的总大小。

封装过程 📦

现在你了解了IP数据报的所有部分,你可能想知道这与我们目前所学的内容有何关联。你可能还记得,在我们分解以太网帧时,我们提到了一个我们描述为数据有效载荷的部分。这正是IP数据报的内容。这个过程被称为封装。
IP数据报的全部内容被封装为以太网帧的有效载荷。

你可能已经注意到,我们的IP数据报也有一个有效载荷部分。这个有效载荷的内容是TCP或UDP数据包的全部,我们将在后面介绍。


希望这能帮助你更好地理解为什么我们以层的方式来讨论网络。每一层都是其上一层所必需的。

本节课中我们一起学习了IP数据报的详细结构,包括其报头中的各个关键字段,如版本、长度、TTL、地址等。我们还理解了数据在网络层是如何通过封装过程,成为下层(如数据链路层)帧的有效载荷的。这为我们理解网络的分层模型和数据的端到端传输奠定了重要基础。
021:IP地址分类详解 🌐
在本节课中,我们将要学习IP地址的核心结构——地址分类系统。我们将了解IP地址如何被划分为网络部分和主机部分,以及A、B、C、D、E五类地址的具体定义和识别方法。理解这些概念是掌握网络通信和IP寻址的基础。
IP地址的基本结构
IP地址可以被划分为两个部分:网络ID和主机ID。
之前我们提到过,IBM公司拥有所有第一个点分十进制数值为9的IP地址。如果我们以IP地址9.100.100.100为例,那么网络ID就是第一个八位组(9),而主机ID则是第二、第三和第四个八位组(100.100.100)。
地址分类系统简介
地址分类系统是一种定义全球IP地址空间如何划分的方式。它决定了IP地址中哪一部分代表网络,哪一部分代表主机。

以下是三种主要的地址类别:
- A类地址:第一个八位组用于网络ID,后三个八位组用于主机ID。
- B类地址:前两个八位组用于网络ID,后两个八位组用于主机ID。
- C类地址:前三个八位组用于网络ID,只有最后一个八位组用于主机ID。

不同地址类的网络规模
每个地址类别代表着规模差异巨大的网络。

例如,一个A类网络拥有总共24位的主机ID空间。这换算出来是 2^24 即 16,777,216 个独立地址。

相比之下,一个C类网络只有8位的主机ID空间。这换算出来是 2^8 即 256 个地址。
如何识别地址类别

仅通过观察一个IP地址,你就能准确判断它属于哪个地址类别。判断依据是IP地址二进制形式的前几位。
以下是识别规则:
- 如果一个IP地址的第一位是
0,它属于A类网络。 - 如果IP地址的前两位是
10,它属于B类网络。 - 如果IP地址的前三位是
110,它属于C类网络。
点分十进制表示法中的识别
由于人类不擅长直接思考二进制,了解这些规则如何对应到我们熟悉的点分十进制表示法很有帮助。
每个八位组是8位,这意味着每个八位组的值在0到255之间。
- 如果第一位必须是
0(如A类地址),那么第一个八位组可能的十进制值范围是 0到127。因此,任何第一个点分十进制数在此范围内的IP地址都是A类地址。 - 类似地,B类地址被限制为第一个八位组值在 128到191 之间。
- C类地址的第一个八位组值在 192到223 之间。
其他地址类别
你可能会注意到,这并没有覆盖所有可能的IP地址。这是因为还有另外两个IP地址类别。

- D类地址:总是以二进制位
1110开头,用于多播。多播允许单个IP数据报同时发送给整个网络。这些地址的十进制值范围在 224到239 之间。 - E类地址:由所有剩余的IP地址组成,但它们是未分配的,仅用于测试目的。其第一个八位组值从240开始。
总结与展望
本节课中,我们一起学习了经典的IP地址分类系统。我们了解了A、B、C类地址如何划分网络ID和主机ID,以及如何通过二进制前缀或点分十进制范围来识别它们。我们还简要介绍了用于多播的D类地址和保留的E类地址。
在实际应用中,这个分类系统在很大程度上已被一种称为CIDR(无类别域间路由) 的系统所取代。但地址分类系统在许多方面仍然存在,对于任何寻求全面网络教育的人来说,理解它都非常重要。别担心,我们将在未来的课程中详细讲解CIDR。
022:地址解析协议(ARP)🔍

在本节课中,我们将要学习地址解析协议(ARP)。我们已经了解了MAC地址在数据链路层的作用以及IP地址在网络层的作用。现在,我们需要讨论这两种独立的地址类型如何相互关联。
ARP的作用

上一节我们介绍了网络层和数据链路层的不同地址。本节中我们来看看它们是如何协同工作的。ARP是一个协议,用于发现具有特定IP地址的节点的硬件地址。当一个IP数据报完全形成后,它需要被封装在一个以太网帧中。
这意味着发送设备需要一个目的MAC地址来完成以太网帧头。几乎所有连接到网络的设备都会维护一个本地ARP表。一个ARP表只是一个IP地址及其关联的MAC地址的列表。


ARP的工作流程

以下是ARP解析地址的基本过程:

- 检查ARP表:当一台设备(例如IP为
10.0.0.1)需要向目标IP地址(例如10.20.30.40)发送数据时,它首先会检查自己的本地ARP表。# 在命令行中查看ARP表的示例(Windows系统) arp -a

- 发送ARP广播请求:如果目标IP地址(
10.20.30.40)在ARP表中没有对应的条目,发送设备会向MAC广播地址(FF:FF:FF:FF:FF:FF)发送一个ARP广播请求。这种广播消息会被传递到本地网络上的所有计算机。

- 接收ARP响应:当被分配了IP地址
10.20.30.40的网络接口收到这个ARP广播时,它会发回一个ARP响应。这个响应消息将包含该网络接口的MAC地址。

- 完成封装并更新缓存:现在,发送计算机知道了在目的硬件地址字段中填入哪个MAC地址,以太网帧就可以准备发送了。它很可能还会将这个IP-MAC对应关系存储在其本地ARP表中,这样下次需要与该IP通信时就不必再发送ARP广播了,非常方便。
ARP表的管理
ARP表条目通常在一小段时间后就会过期,以确保网络中的变化能被及时反映。因此,不要期望ARP条目会永久保存,就像我期望你能坚持完成下一个未评分的测验一样。

本节课中我们一起学习了地址解析协议(ARP)的核心概念和工作流程。我们了解到,ARP通过广播请求和单播响应的方式,动态地将网络层的IP地址解析为数据链路层所需的MAC地址,从而实现了跨层通信。理解ARP是理解局域网内设备如何相互寻址的关键一步。
023:塞尔吉奥的职业故事

在本节课中,我们将通过谷歌网络工程师塞尔吉奥的职业故事,了解IT支持领域的职业发展路径、核心工作内容以及所需的关键技能与心态。
课程概述
塞尔吉奥分享了他从对技术产生兴趣,到成长为一名专业网络工程师的经历。他的故事涵盖了技术热情的起源、问题解决的乐趣、关键技能的发展,以及一次深刻的工作教训。这为初学者理解IT支持工作的实际面貌和职业成长提供了生动的范例。
从兴趣到职业
上一节我们了解了IT支持领域的概况,本节中我们来看看一个具体的职业成长故事。塞尔吉奥的职业生涯始于童年时期对拆卸和组装事物的热爱。
他最初喜欢螺丝刀、电钻等模拟工具。随着年龄增长,他将兴趣转向了电脑。打开电脑机箱后,内部的风扇、灯光和复杂电路虽然令他困惑,但也激发了他的好奇心。他意识到,只要以正确的方式组装回去,就能与电脑互动并运行游戏。这成为了他技术之旅的起点。
高中毕业后,塞尔吉奥决定将这份兴趣发展为真正的热情,并深入学习了相关技术的工作原理。
工作的核心乐趣:解决问题
从兴趣入门后,职业的核心价值逐渐显现。对塞尔吉奥而言,工作中最喜爱的部分是解决问题。
他非常享受看到数据从一台设备传输到另一台设备的过程,理解事物之间如何通信,并最终让客户享受到技术带来的便利。这种从技术原理到实际应用的全链条理解,带来了巨大的成就感。
技能发展与工具箱
在职业道路上,持续学习至关重要。塞尔吉奥在工作中积累了多种不同的工具和技能。
他感觉自己像一把“瑞士军刀”,能够灵活运用各种经验来解决当前面临的问题。这种能力的积累是IT支持专业人员价值的重要体现。
以下是IT专业人员需要发展的几类核心技能:
- 技术硬技能:如网络配置、系统排错、安全策略实施。
- 问题解决能力:分析复杂情况并找到根本原因。
- 沟通与协作:与团队和客户有效交流。
一次关键的职业教训
在职业生涯早期,一次项目经历给塞尔吉奥上了重要的一课。他刚开始担任初级网络技术员时,负责为一个警察部门升级防火墙。
防火墙是网络的关键安全设备和入口点。项目完成后,团队以为一切顺利,直到深夜接到电话告知系统出现故障。他们发现升级失败,导致电子邮件和警务通信中断。
这次经历让他深刻认识到,自己所从事的工作影响深远,可能关乎人们的生命安全,既能造成损害,也能带来益处。这对他而言是一次宝贵的、令人谦逊的成长经历。
关键概念:防火墙 是一种网络安全系统,它根据预设的安全规则监控并控制进出网络的数据流。其核心功能可以用一个简单的决策逻辑表示:
if (数据包符合安全规则) { 允许通过 } else { 拒绝或丢弃 }
课程总结

本节课我们一起学习了塞尔吉奥从技术爱好者成长为谷歌网络工程师的路径。他的故事揭示了IT支持工作的几个关键方面:始于对技术的内在兴趣,核心价值在于解决问题和创造连接,需要不断积累多样化的技能,并且肩负着重要的责任。这次失败的防火墙升级项目尤其提醒我们,IT工作具有真实世界的影响力,要求从业者具备高度的责任心和严谨的态度。
024:子网划分 🧩

在本节课中,我们将要学习子网划分。子网划分是将一个大型网络分割成多个独立小型子网的过程。通过学习,你将能够理解子网划分的必要性,并掌握其核心工作原理。
概述 📋

上一节我们介绍了IP地址类别,它们将全球IP地址空间划分为不同的网络。本节中我们来看看子网划分。子网划分解决了单一网络(尤其是A类网络)规模过大、难以管理的问题。通过子网划分,我们可以将一个庞大的网络分割成多个更小、更易于管理的子网络。
为什么需要子网划分? 🤔
你可能还记得上一课的内容,地址类别为我们提供了一种将全球IP空间划分为独立网络的方法。
例如,如果你想与IP地址 9.100.100.100 通信,互联网上的核心路由器知道这个IP属于 9.0.0.0 这个A类网络。
它们通过查看网络ID,将消息路由到负责该网络的网关路由器。网关路由器是特定网络的入口和出口路径,这与可能只与其他核心路由器对话的核心互联网路由器不同。
一旦你的数据包到达 9.0.0.0 这个A类网络的网关路由器,该路由器就负责通过查看主机ID将数据传送到正确的系统。

这一切都讲得通,直到你想起一个A类网络包含 16,777,216 个独立IP地址。让这么多设备连接到同一个路由器是根本不可能的。

这就是子网划分发挥作用的地方。通过子网划分,你可以将大型网络分割成许多更小的网络。这些独立的子网都将拥有自己的网关路由器,作为每个子网的入口和出口点。
子网掩码与CIDR表示法 🔧
为了进行子网划分,我们需要引入一个关键概念:子网掩码。子网掩码用于区分IP地址中的网络部分和主机部分。它是一串32位的二进制数,其中网络部分用连续的“1”表示,主机部分用连续的“0”表示。
传统的地址类别(A、B、C类)使用固定的子网掩码:
- A类:
255.0.0.0或/8 - B类:
255.255.0.0或/16 - C类:
255.255.255.0或/24


然而,固定的类别划分不够灵活。因此,我们使用CIDR(无类别域间路由) 表示法,它提供了比普通子网划分更大的灵活性。CIDR表示法在IP地址后加上一个斜杠和数字(例如 /24),这个数字代表子网掩码中“1”的个数,即网络前缀的长度。
公式:IP地址 / 网络前缀长度, 例如:192.168.1.0/24
通过改变网络前缀的长度,我们可以创建大小不同的子网,更高效地利用IP地址空间。
基础二进制计算 🧮


要深入理解子网划分和CIDR,掌握一些基础的二进制数学技巧很有帮助。子网掩码和IP地址的计算本质上是对应二进制位的“与”运算。
核心计算示例:
给定一个IP地址 192.168.1.100 和子网掩码 255.255.255.0(即 /24):
- 将两者转换为二进制。
- 对每一位进行逻辑“与”运算(1 AND 1 = 1, 其他情况为0)。
- 得到的结果就是该IP地址所在的网络地址。
IP地址: 11000000.10101000.00000001.01100100 (192.168.1.100)
子网掩码: 11111111.11111111.11111111.00000000 (255.255.255.0)
与运算结果: 11000000.10101000.00000001.00000000 (192.168.1.0) -> 网络地址
了解如何根据主机位的数量(子网掩码中“0”的个数)计算一个子网内可用的主机数量也很重要。
公式:可用主机数 = 2^(主机位数量) - 2
减去的2个地址分别是网络地址(主机位全0)和广播地址(主机位全1),这两个地址不能分配给具体设备。
总结 🎯


本节课中我们一起学习了子网划分的核心知识。我们首先回顾了IP地址类别的局限性,引出了子网划分的必要性——将大型网络分割为更易管理的小型子网。接着,我们探讨了实现子网划分的关键工具:子网掩码和更灵活的CIDR表示法。最后,我们介绍了理解这些概念所必需的基础二进制计算,包括如何使用子网掩码计算网络地址,以及如何计算一个子网内的可用主机数量。

作为IT支持专家,不正确的子网设置是一个常见问题,因此牢固理解其工作原理至关重要。掌握这些知识将帮助你更好地设计、管理和排查网络问题。
025:子网掩码详解 🧩

在本节课中,我们将要学习子网掩码的概念。子网掩码是IP网络中用于区分网络地址、子网地址和主机地址的关键工具。理解子网掩码的工作原理对于网络配置和故障排除至关重要。
概述
到目前为止,我们已经学习了网络ID(用于标识网络)和主机ID(用于标识单个主机)。如果我们希望进一步划分网络,就需要引入第三个概念:子网ID。
你可能还记得,IP地址只是一个32位的数字。在没有子网划分的世界里,这些位中的一部分用于网络ID,另一部分用于主机ID。在划分子网的世界里,原本属于主机ID的一部分位实际上被用于子网ID。
通过一个IP地址可以解析出这三个ID,我们现在拥有了一个单一的32位数字,它能够准确地跨越许多不同的网络进行传递。

在互联网层面,核心路由器只关心网络ID,并使用它来将数据报发送到该网络的相应网关路由器。然后,该网关路由器拥有一些额外的信息,可以用来将数据报发送到目标机器或路径上的下一个路由器。最后,主机ID由最后一个路由器用来将数据报传递给预期的接收机器。
子网掩码的计算
子网ID是通过所谓的子网掩码来计算的。就像IP地址一样,子网掩码也是32位数字,通常写成四个十进制八位组。
理解子网掩码工作原理的最简单方法是将其与IP地址进行比较。请注意,接下来的内容比较密集。我们将要深入一些复杂的材料,但正确理解子网掩码的工作原理至关重要,因为它们经常被误解。子网掩码常常被当作神奇的数字一带而过,人们只是记住一些常见的值,而没有完全理解背后的原理。在本课程中,我们确实希望确保你离开时能获得全面的网络教育,所以即使子网掩码起初看起来有些棘手,坚持下去,你很快就能掌握。要知道,在下一个视频中,我们将介绍二进制数学的一些额外基础知识,在复习完材料后,你可以自由地再看一遍这个视频。按照你自己的节奏学习,你会在合适的时间内掌握它。
让我们再次使用IP地址 9.100.100.100。你可能记得,IP地址的每一部分都是一个八位组,这意味着它由8位组成。数字9的二进制表示是 1001。但由于每个八位组需要8位,我们需要在前面填充一些零。就IP地址而言,第一个八位组为数字9实际上表示为 00001001。同样,数字100作为一个8位数是 01100100。因此,IP地址 9.100.100.100 的完整二进制表示是许多1和0的组合。
子网掩码的结构

子网掩码是一个二进制数,它有两个部分。开头部分是掩码本身,是一串1,之后全是0。子网掩码(即数字中全是1的部分)告诉我们在计算主机ID时可以忽略什么。全是0的部分告诉我们需要保留什么。
让我们使用常见的子网掩码 255.255.255.0。这将转换为 24个1 后面跟着 8个0。

掩码(即全是1的部分)的目的是告诉路由器IP地址的哪一部分是子网ID。
你可能还记得,我们已经知道如何获取IP地址 9.100.100.100 的网络ID。对于一个A类网络,我们知道这只是第一个八位组。这给我们留下了最后三个八位组。让我们取出剩下的八位组,并想象它们以二进制形式放在子网掩码旁边。在剩余八位组中,与子网掩码中对应的位为1的数字部分属于子网ID。在剩余八位组中,与子网掩码中对应的位为0的数字部分属于主机ID。

子网的大小
子网的大小完全由其子网掩码定义。例如,对于子网掩码 255.255.255.0,我们知道只有最后一个八位组可用于主机ID,无论网络和子网ID的大小是多少。

一个8位数可以表示256个不同的数字,更具体地说,是数字0到255。这里需要指出,一般来说,一个子网通常只能容纳比可用主机ID总数少两个的地址。

再次使用子网掩码 255.255.255.0,我们知道可用于主机ID的八位组可以包含数字0到255,但0通常不被使用,255通常保留为子网的广播地址。这意味着实际上只有数字1到254可以分配给主机。虽然这种“总数减二”的方法几乎总是正确的,但一般来说,你会将子网中可用的主机数量称为整个数字。所以,即使知道有两个地址不可用于分配,你仍然会说8位主机ID空间有256个可用地址,而不是254个。这是因为那些其他的IP仍然是IP地址,即使它们没有直接分配给该子网上的节点。
现在,让我们看一个子网掩码,它的边界不在整个八位组或8位地址上。子网掩码 255.255.255.224 将转换为 27个1 后面跟着 5个0。这意味着我们有5位主机ID空间,总共有32个地址。
子网掩码的简写表示法
这引出了子网掩码的一种简写方式。假设我们正在处理老朋友 9.100.100.100,子网掩码为 255.255.255.224。由于该子网掩码代表27个1后面跟着5个0,一种更快的引用方式是使用符号 /27。整个IP和子网掩码可以写成 9.100.100.100/27。


这两种表示法没有哪一种比另一种更常见,因此理解两者都很重要。
总结

本节课中我们一起学习了子网掩码的核心概念。我们了解到子网掩码是一个32位的二进制数,用于从IP地址中划分出网络部分和主机部分,并进一步定义了子网。关键点包括:
- 子网掩码通过 1的连续序列 标识网络和子网部分,通过 0的连续序列 标识主机部分。
- 子网大小由主机部分的位数决定,可用地址数通常为
2^n - 2(n为主机位数),但通常按2^n来描述地址块。 - 子网掩码有两种常见表示法:点分十进制(如
255.255.255.0)和CIDR前缀长度表示法(如/24)。
理解子网掩码是掌握IP寻址和网络规划的基础。如果觉得内容复杂,可以随时回顾本教程。在接下来的学习中,掌握二进制基础将有助于你更深入地理解这些概念。
026:基本二进制数学 🧮

在本节课中,我们将要学习二进制数学的基础知识。二进制是计算机理解世界的语言,虽然它看起来与日常使用的十进制不同,但其背后的计数和基本运算逻辑是相通的。理解二进制是理解计算机网络、IP地址和子网掩码等概念的关键。
概述
二进制数字初看可能令人望而生畏,因为它们与十进制数字看起来截然不同。但就基础而言,二进制数字的计数、加法或减法背后的数学原理与十进制数字完全相同。需要明确指出的是,数字本身没有不同种类,数字是普适的,只是表示它们的符号系统不同。
人类很可能因为我们大多数人都有10根手指和10个脚趾,所以决定使用一个包含10个独立数字的系统来表示所有数字。数字0、1、2、3、4、5、6、7、8和9可以组合起来表示任何存在的整数。因为在十进制系统中总共使用了10个数字,所以另一种称呼是“基数为10”。
由于处理器内部逻辑门工作方式的限制,计算机更容易仅用0和1来思考事物。这也被称为二进制或“基数为2”。你可以用二进制表示所有整数,就像用十进制一样,只是看起来有些不同。
二进制计数 🔢
上一节我们介绍了二进制的基本概念,本节中我们来看看如何用二进制计数。
当你用十进制计数时,你会遍历所有数字直到用完,然后添加一个具有更高位权的新列。让我们从0开始计数,直到9。一旦数到9,我们基本上就重新开始。我们在新列中添加一个1,然后在原始列中从0重新开始。我们一遍又一遍地重复这个过程来计数所有整数。
二进制计数完全一样。只是你只有两个数字可用。你从0开始,这与十进制的0相同。然后你增加一次。现在,你有了1,这与十进制中的1相同。既然我们已经用完了可用的数字,是时候添加一个新列了,所以现在我们有了数字10,这与十进制中的2相同。
以下是二进制与十进制计数的对应关系:
- 0(二进制) = 0(十进制)
- 1(二进制) = 1(十进制)
- 10(二进制) = 2(十进制)
- 11(二进制) = 3(十进制)
- 100(二进制) = 4(十进制)
- 101(二进制) = 5(十进制)
- 110(二进制) = 6(十进制)
- 111(二进制) = 7(十进制)
这与我们处理十进制的方式完全相同,只是我们可用的数字更少。
比特与表示范围 🧮

在接触各种计算技术时,你经常会遇到比特(bits)或1和0的概念。有一个简单的技巧可以计算出一定数量的比特可以表示多少个十进制数字。
如果你有一个8位数字,你可以直接计算 2^8。结果是256,这让你知道一个8位数字可以表示256个十进制数字,或者换句话说,可以表示0到255之间的数字。

以下是不同位数能表示的数字数量:
- 一个4位数字:2^4 = 16 个数字。
- 一个16位数字:2^16 = 65,536 个数字。
为了将这一点与你可能已经知道的知识联系起来,这个技巧不仅适用于二进制,它适用于任何数字系统,只是基数会改变。
你可能还记得,我们也可以称二进制为基数为2,十进制为基数为10。你需要做的就是用基数替换掉公式中被提升到列数次幂的那个数。
例如,我们取一个基数为10、有两列数字的数。这将转化为 10^2。10的2次方等于100,这正好是你可以用两列十进制数字表示的数字数量,即0到99之间的数字。

类似地,10^3 是1000,这正好是你可以用三列十进制数字表示的数字数量,即0到999之间的数字。

二进制加法 ➕
不仅在不同基数下的计数方式相同,像加法这样的简单算术运算也是如此。事实上,二进制加法比任何其他基数的加法都要简单,因为你只有四种可能的情况。
以下是二进制加法的四种基本规则:
- 0 + 0 = 0,就像十进制一样。
- 0 + 1 = 1。
- 1 + 0 = 1,这看起来也应该很熟悉。
- 1 + 1 = 10,这看起来有点不同,但仍然应该能理解。在做十进制加法时,一旦达到10,你就向下一列进位。在做二进制加法时,一旦达到2,你就向下一列进位。
逻辑运算符:OR 与 AND 🔧

加法被称为运算符,计算机使用许多运算符来进行计算。其中两个最重要的运算符是 OR(或)和 AND(与)。
在计算机逻辑中,1代表真(True),0代表假(False)。
OR 运算符的工作方式是查看每个数字。如果其中任何一个为真,则结果为真。基本公式是 X OR Y = Z,可以理解为:如果X或Y为真,则Z为真,否则为假。因此,1 OR 0 = 1,但 0 OR 0 = 0。
AND 运算符做它听起来做的事情,只有当两个值都为真时才返回真。因此,1 AND 1 = 1,但 1 AND 0 = 0,0 AND 0 = 0,依此类推。

子网掩码的实际应用 🌐
现在,你可能想知道我们为什么要介绍所有这些内容。这不是为了迷惑你,这一切都是为了帮助进一步解释子网掩码。
子网掩码是计算机使用 AND 运算符来确定一个IP地址是否存在于同一网络上的方法。这意味着主机ID部分也就知道了,因为它将是剩下的任何部分。
让我们使用我们最喜欢的IP地址 9.100.100.100 和我们最喜欢的子网掩码 255.255.255.0 的二进制表示。一旦你将一个放在另一个上面,并对每一列执行二进制 AND 运算,你会注意到结果是IP地址的网络ID和子网ID部分,即 9.100.100.0。

刚刚执行此操作的计算机现在可以将结果与其自己的网络ID进行比较,以确定该地址是在同一网络上还是在不同的网络上。

总结
本节课中我们一起学习了二进制数学的基础知识。我们了解到二进制(基数为2)和十进制(基数为10)只是表示相同数字的不同符号系统。我们学习了如何用二进制计数,以及如何计算一定比特数能表示的数字范围。我们还探讨了二进制加法和两个关键的逻辑运算符:OR 和 AND。最后,我们看到了这些概念如何应用于理解子网掩码的工作原理,即计算机通过 AND 运算来确定IP地址的网络部分。掌握这些基础知识是深入理解计算机网络和IT支持的关键一步。
027:无类别域间路由(CIDR)🚀

在本节课中,我们将要学习IP地址分配技术的一个重要演进:无类别域间路由(CIDR)。我们将了解传统地址分类和子网划分的局限性,以及CIDR如何通过更灵活的方式来组织和管理IP地址空间。
概述

IP地址分类是划分全球互联网IP空间的首次尝试。当人们发现地址分类本身不足以有效组织一切时,子网划分被引入。但随着互联网持续增长,传统的子网划分方法也无法跟上需求。
地址分类的局限性
上一节我们介绍了IP地址的基本结构,本节中我们来看看传统地址分类方法的具体问题。
在传统的子网划分和地址分类体系中,网络ID的长度是固定的:
- A类网络的网络ID总是8位。
- B类网络的网络ID总是16位。
- C类网络的网络ID总是24位。
这意味着全球可能只存在254个A类网络,但同时存在297,152个潜在的C类网络。这会导致路由表中存在大量条目。

更重要的是,这些网络的大小并不总是适合大多数企业的需求。一个C类网络的254个主机地址对许多用例来说太小,而一个B类网络可用的65,534个主机地址又往往太大。
许多公司最终需要多个相邻的C类网络来满足需求。这意味着路由表中会有一堆C类网络的条目,而这些网络实际上都被路由到同一个地方。
CIDR的引入
鉴于传统方法的僵化,一种更灵活的方案应运而生。这就是CIDR,即无类别域间路由。

CIDR是一种更灵活的描述IP地址块的方法。它通过使用子网掩码来划分网络,扩展了子网划分的概念。“划分”意味着设定边界。在讨论计算机网络时,你经常会听到“分界点”这个术语,用来描述一个网络或系统结束而另一个开始的地方。
在我们之前的模型中,我们依赖网络ID、子网ID和主机ID来将IP数据报传送到正确的位置。在CIDR中,网络ID和子网ID被合并为一个。
CIDR表示法与优势

CIDR为我们提供了之前子网划分视频中讨论过的简写斜线表示法。这种斜线表示法也被称为CIDR表示法。
CIDR基本上完全放弃了地址分类的概念,允许一个地址仅由两个独立的ID来定义。让我们以IP地址 9.100.100.100 和子网掩码 255.255.255.0 为例。记住,这也可以写成 9.100.100.100/24。
在一个我们不再关心此IP地址类别的世界里,我们只需要子网掩码告诉我们的信息来确定网络ID。在本例中,网络ID是 9.100.100。主机ID保持不变。
这种做法不仅简化了路由器和其他网络设备思考IP地址各部分的方式,还允许更任意的网络大小。以前,网络大小是静态的(只有A类、B类或C类),只有子网可以有不同的尺寸。CIDR允许网络本身具有不同的大小。
在此之前,如果一家公司需要的地址超过单个C类网络所能提供的,他们将需要整个第二个C类网络。有了CIDR,他们可以将该地址空间合并成一个连续的块,例如使用 /23 的网络掩码(即 255.255.254.0)。这意味着路由器现在只需要在其路由表中知道一个条目,就可以将流量传送到这些地址,而不是两个。
同样重要的是,这种做法还能获得额外的可用主机ID。请记住,每个网络总是会丢失两个主机ID。所以,如果一个 /24 网络有 2^8(256)个潜在主机,你实际上只有 256 - 2 = 254 个可分配的地址。如果你需要两个这种大小的网络,你总共有 254 + 254 = 508 个主机。而一个单独的 /23 网络,则是 2^9 = 512,512 - 2 = 510 个主机。
总结
在本节课中,我们一起学习了CIDR如何解决传统IP地址分类和子网划分的局限性。我们了解到CIDR通过合并网络ID和子网ID,并使用灵活的斜线表示法(如 /24),实现了对IP地址空间更高效、更灵活的管理。这使得路由表更精简,并能更好地适应不同规模组织的需求。

花点时间把这个记到脑子里。然后当你准备好后,在进入下一课的路由内容之前,我们有一个简短的非计分测验。
028:保持学习动力

在本节课中,我们将探讨在学习过程中,尤其是在面对困难时,如何保持动力并持续前进。我们将学习几种实用的策略,帮助你克服学习障碍,坚持完成课程。
概述
学习新知识,尤其是复杂的IT概念,有时会让人感到不知所措或陷入困境。本节内容旨在提供一些保持动力的方法,帮助你顺利度过这些挑战。
保持动力的核心策略
上一节我们介绍了学习可能遇到的普遍挑战,本节中我们来看看几种具体且有效的应对策略。
1. 认识到你并不孤单
当你被某个问题难住或在某个环节感到停滞不前时,请记住,总会有其他人正在经历同样的事情。这种认知本身就能减轻压力。
2. 克服自我怀疑
我曾多次因信息量过大或感觉无法理解而感到不知所措。我浪费了太多时间在自我怀疑上,而当时我本应听从朋友和家人的鼓励:“去做吧,你能做到的。”
3. 利用移动学习的便利性
帮助我重获动力的最有效方法之一,是课程在手机上的可访问性。我能够直接打开应用,随时随地观看几个视频进行学习。这种灵活性至关重要。
以下是利用碎片时间学习的代码示例:
# 伪代码:利用通勤时间学习
if 处于通勤途中或等待状态:
打开手机上的课程应用
观看一个短视频
完成随堂小测验
4. 建立支持网络
拥有一个能激励你的人际网络是根本性的。这个人可以是朋友或家人,他们能从一开始就支持你,像教练一样站在你这边。
5. 勇于寻求帮助
不要害怕向他人寻求帮助,无论是向同学、教练、朋友还是家人。总有人知道得更多,你可以从他们身上学习。
总结

本节课中我们一起学习了保持学习动力的几个关键方法:意识到挑战的普遍性、战胜自我怀疑、利用移动设备灵活学习、构建支持网络以及主动寻求帮助。记住,学习是一个旅程,遇到障碍是正常现象,运用这些策略将帮助你持续前进,最终达成目标。
029:基本路由概念

概述
在本节课中,我们将要学习路由的基本概念。路由是互联网能够将全球数百万个独立网络连接在一起,并允许数据在它们之间流动的核心技术。我们将了解路由器如何工作、路由表的作用、主要的网络协议,以及一些重要的网络地址概念。掌握这些知识对于IT支持专家诊断和解决网络问题至关重要。
互联网是一项令人印象深刻的技术成就。它将数百万个独立网络编织在一起,允许通信几乎在世界任何地方进行。现在,你可以从几乎任何其他地方访问数据,通常只需几分之一秒。实现这种跨网络通信,让你能访问地球另一端数据的方式,就是通过路由。
路由的基本原理
从非常高的层面来看,路由既非常简单又非常复杂。理解路由是什么以及路由器如何工作实际上相当简单,但在其表面之下,路由是一个非常复杂且技术先进的课题。关于这个主题已经出版了整本整本的书籍。如今,大多数复杂的路由问题几乎完全由互联网服务提供商和最大的公司处理。我们将为你提供路由的基本概述,为你提供全面的网络教育,因为无论从事什么工作,理解它都是一个重要的话题,但我们的介绍绝不会是详尽无遗的。
从一个非常基本的观点来看,路由器是一种根据流量的目标地址来转发流量的网络设备。

路由器是一种至少有两个网络接口的设备,因为它必须连接到两个网络才能完成其工作。
路由的基本步骤
以下是路由器处理数据包的基本步骤:

- 路由器在其一个接口上接收到一个数据包。
- 路由器检查该数据包的目标IP地址。
- 路由器在其路由表中查找该IP地址所属的目标网络。
- 路由器根据路由表中的附加信息,确定通往远程网络的最短路径,并通过相应的接口转发该数据包。

这些步骤会根据需要重复多次,直到流量到达其目的地。
路由示例:两个网络

让我们想象一个连接了两个网络的路由器。我们将第一个网络称为网络A,并为其分配地址空间 192.168.1.0/24。我们将第二个网络称为网络B,并为其分配地址空间 10.0.0.0/24。
路由器在每个网络上都有一个接口。在网络A上,它的IP地址是 192.168.1.1;在网络B上,它的IP地址是 10.0.0.254。请记住,IP地址属于网络,而不是网络上的单个节点。
网络A上一台IP地址为 192.168.1.100 的计算机向地址 10.0.0.10 发送一个数据包。这台计算机知道 10.0.0.10 不在其本地子网上,因此它将此数据包发送到其网关(即路由器)的MAC地址。

路由器在网络A上的接口接收到了这个数据包,因为它看到目标MAC地址属于自己。

接着,路由器剥离数据链路层的封装,留下网络层的内容,即IP数据报。


现在,路由器可以直接检查IP数据报头部中的目标IP字段。



它找到了目标IP 10.0.0.10。路由器查看其路由表,发现网络B(即 10.0.0.0/24 网络)是该目标IP的正确网络。它还看到这个网络只有一跳之遥。实际上,由于是直接连接的,路由器甚至在它的ARP表中存有这个IP的MAC地址。



接下来,路由器需要构建一个新的数据包以转发到网络B。它从第一个IP数据报中取出所有数据并进行复制。


但它将TTL字段减1,并计算一个新的校验和。然后,它将这个新的IP数据报封装在一个新的以太网帧内。这次,它将自己在网络B上的接口的MAC地址设置为源MAC地址。由于它在ARP表中有 10.0.0.10 的MAC地址,它将其设置为目标MAC地址。


最后,数据包从其网络B的接口发出,数据最终被传送到位于 10.0.0.10 的节点。
这是一个相当基础的路由工作原理示例。
路由示例:三个网络
现在,让我们让它稍微复杂一点,引入第三个网络。其他一切保持不变。我们拥有地址空间为 192.168.1.0/24 的网络A,以及地址空间为 10.0.0.0/24 的网络B。连接这两个网络的路由器在网络A上仍有IP 192.168.1.1,在网络B上仍有IP 10.0.0.254。


但让我们引入第三个网络,网络C,其地址空间为 172.16.1.0/23。有第二个路由器连接网络B和网络C。它在网络B上的接口IP为 10.0.0.1,在网络C上的接口IP为 172.16.1.1。
这一次,我们位于 192.168.1.100 的计算机想要发送一些数据到IP为 172.16.1.100 的计算机。我们将跳过数据链路层的细节,但要记住它当然仍在发生。
位于 192.168.1.100 的计算机知道 172.16.1.100 不在其本地网络上,因此它将数据包发送到其网关,即网络A和网络B之间的路由器。
同样,路由器检查此数据包的内容。它看到目标地址是 172.16.1.100,通过查询其路由表,它知道到达 172.16.1.0/23 网络的最快路径是通过IP为 10.0.0.1 的另一个路由器。
路由器将TTL字段减1,并将其发送给 10.0.0.1 的路由器。然后,这个路由器执行相同的操作,知道目标IP 172.16.1.100 是直接连接的,并将数据包转发到其最终目的地。
这就是路由的基础。


互联网路由的规模
我们的示例与互联网上的实际工作方式之间的唯一区别是规模。路由器通常连接到远不止两个网络。通常,你的流量在到达最终目的地之前可能需要穿越十几个路由器。
最后,为了防止中断,核心互联网路由器通常以网状结构连接,这意味着一个数据包可能有许多不同的路径可以选择。
尽管如此,概念都是相同的:路由器检查目标IP,查看其路由表以确定哪条路径最快,然后沿着该路径转发数据包。这个过程一遍又一遍地发生,构成了互联网上每时每刻的每一个数据包、每一比特流量。
总结
在本节课中,我们一起学习了路由的基本概念。我们了解到路由器是一种根据目标IP地址转发数据的设备,它通过查询路由表来决定数据包的最佳转发路径。我们通过两个和三个网络的例子,逐步分析了数据包从源到目的地的转发过程,包括检查目标IP、查询路由表、更新TTL和重新封装帧等关键步骤。最后,我们认识到互联网路由的核心原理与此相同,只是规模更大、路径更多样。理解这些基础知识是诊断更复杂网络问题的第一步。
030:路由表详解 🧭
在本节课中,我们将要学习路由表的核心概念。路由表是路由器用来决定数据包转发路径的关键数据结构。理解路由表是掌握网络路由工作原理的基础。
路由表简介
上一节我们介绍了路由的基本概念,本节中我们来看看路由表的具体构成。路由本身是一个简单的概念,路由表也并不复杂。
早期的路由器就是当时的普通计算机。它们拥有两个网络接口,用于桥接两个网络,并配有一个需要手动更新的路由表。事实上,当今所有主流操作系统在传输数据前,仍然会查询一个路由表。如果你有一台具备两个网络接口的计算机和一个手动更新的路由表,今天你仍然可以构建自己的路由器。

路由表的通用结构
路由表的具体形式因路由器的品牌和类别而异,但它们都有一些共同点。最基本的路由表包含四列。
以下是路由表的核心列及其功能:
- 目标网络:此列包含路由器已知的每一个网络对应的条目。这只是一个远程网络的定义,包括网络ID和子网掩码。它们可以存储在一列中(CIDR表示法),或者网络ID和子网掩码分列存储。无论如何,概念相同:路由器拥有一个网络的定义,因此知道哪些IP地址可能位于该网络上。
- 下一跳:这是数据在发往目标网络时应送达的下一个路由器的IP地址。或者,它可能直接声明网络是直连的,无需任何额外的跳转。
- 总跳数:这是理解路由以及路由表在像互联网这样的复杂网络上如何工作的关键部分。从点A到点B通常会有许多不同的路径。路由器总是试图选择最短的可能路径,以确保数据的及时交付。但到达目标网络的最短路径可能会随时间变化,有时变化很快。中间路由器可能宕机,链路可能断开,可能引入新路由器,流量拥塞可能导致某些路由变得太慢而无法使用。我们将在后续视频中了解路由器如何知道最短路径。目前,重要的是知道对于每个下一跳和每个目标网络,路由器都必须跟踪该目标当前的距离。
- 接口:路由器还必须知道应该通过它的哪个接口将匹配目标网络的流量转发出去。
路由表的工作流程与规模

在大多数情况下,路由表相当简单。真正令人印象深刻的是,许多核心互联网路由器的路由表拥有数百万行。路由器在将数据包转发到最终目的地的途中,必须为流经它的每一个数据包查询这些路由表。
同样令人印象深刻的是,你已经学习了这么多关于路由器、路由和路由表的知识。做得很好。
总结
本节课中我们一起学习了路由表。我们了解到路由表是存储网络路径信息的关键工具,它包含目标网络、下一跳地址、总跳数和出接口等核心列。无论是简单的家庭网络还是庞大的互联网核心,路由表都是数据能够准确、高效到达目的地的基石。
031:内部网关协议 🚦

在本节课中,我们将要学习路由器如何通过内部网关协议(IGP)来交换信息并动态更新路由表,以找到到达目标网络的最佳路径。我们将重点介绍距离向量协议和链路状态协议这两类主要的内部网关协议,并解释它们的工作原理与区别。
我们已经介绍了路由的基本工作原理以及路由表是如何构建的,这两个都是相当基础的概念。路由的真正魔力在于,路由表能够持续更新关于到达目标网络最快路径的新信息。本节视频中我们将学习的协议,将帮助你在支持的任何网络中识别路由问题。
为了了解周围网络世界的情况,路由器使用被称为路由协议的特定协议。这些是路由器之间相互通信以分享各自所掌握信息的特殊协议。正是通过这种方式,地球一端的路由器最终能够了解到到达地球另一端某个网络的最佳路径。


路由协议主要分为两大类:内部网关协议和外部网关协议。内部网关协议又进一步分为两类:链路状态路由协议和距离向量协议。
内部网关协议概述


上一节我们介绍了路由协议的分类,本节中我们来看看内部网关协议。内部网关协议被路由器用来在单个自治系统内部共享信息。用网络术语来说,一个自治系统是指所有网络都处于单一网络运营商控制之下的集合。

以下是两个典型的自治系统例子:
- 一个需要在众多办公室之间路由数据的大型企业,每个办公室可能都有自己的局域网。
- 互联网服务提供商部署的众多路由器,其覆盖范围通常是全国性的。
你可以将此与外部网关协议进行对比,后者用于在独立的自治系统之间交换信息。预告一下,我们将在后续的视频中介绍外部网关协议。

距离向量协议
内部网关协议的两种主要类型是链路状态路由协议和距离向量协议。它们的目标非常相似,但采用它们的路由器为了完成任务,会共享不同类型的数据。
距离向量协议是一种较旧的标准。使用距离向量协议的路由器基本上只是获取它的路由表(即它所知的每个网络及其以跳数计的距离的列表),然后将这个列表发送给每个邻居路由器(即每个直接连接到它的路由器)。在计算机科学中,列表被称为向量。这就是为什么一个只发送网络距离列表的协议被称为距离向量协议。
使用距离向量协议时,路由器对自治系统的整体状态了解并不多。它们只掌握一些关于其直接邻居的信息。
为了基本了解距离向量协议的工作原理,让我们看看两个路由器如何影响彼此的路由表。
假设路由器A的路由表中有一系列条目,其中一个条目是针对网络X(10.1.1.0/24)。路由器A认为到达网络X的最快路径是通过它自己的接口2(路由器C连接在此)。路由器A知道,通过接口2将目的地为网络X的数据发送给路由器C意味着需要4跳才能到达目的地。
与此同时,路由器B距离网络X只有2跳,这反映在它的路由表中。路由器B使用距离向量协议,将其路由表的基本内容发送给路由器A。路由器A看到网络X距离路由器B只有2跳。即使加上从路由器A到路由器B的额外一跳,这也意味着网络X距离路由器A只有3跳。掌握了这个新信息后,路由器A更新其路由表以反映这一点:为了以最快方式到达网络X,它应该通过自己的接口1将流量转发给路由器B。
现在,距离向量协议相当简单,但它们不允许路由器掌握太多关于其直接邻居之外网络状态的信息。因此,路由器对远离它的网络变化可能反应较慢。

链路状态协议
正因为距离向量协议的局限性,链路状态协议最终被发明出来。使用链路状态协议的路由器采用更复杂的方法来确定到达网络的最佳路径。

链路状态协议得名于每个路由器都会通告其每个接口的链路状态。这些接口可能连接到其他路由器,也可能是直接连接到网络的连接。关于每个路由器的信息会被传播到自治系统上的所有其他路由器。这意味着系统中的每个路由器都知道系统中所有其他路由器的每一个细节。
然后,每个路由器利用这个庞大得多的信息集,并对其运行复杂的算法,以确定到达任何目标网络的最佳路径可能是什么。

链路状态协议需要更多的内存来保存所有这些数据,同时也需要更强的处理能力。这是因为它必须对这些数据运行算法,以确定更新路由表的最快路径。随着多年来计算机硬件变得更强大、更便宜,链路状态协议已在很大程度上使距离向量协议过时了。
总结
本节课中我们一起学习了内部网关协议。我们了解到,路由器通过内部网关协议在自治系统内部共享信息。距离向量协议通过交换简单的距离列表(向量)来工作,但信息有限;而链路状态协议则通过传播详细的链路状态信息,使每个路由器都能构建完整的网络拓扑图,并通过算法计算出最优路径,虽然对资源要求更高,但更为先进和高效。下一节,我们将讨论外部网关协议。
032:外部网关协议 🌐
在本节课中,我们将学习外部网关协议(Exterior Gateway Protocols)的基本概念。外部网关协议是互联网能够正常运作的关键,它负责在不同组织管理的自治系统之间交换路由信息。我们将了解自治系统、自治系统编号以及核心互联网路由器如何利用这些信息来引导流量。
什么是外部网关协议?
外部网关协议用于在代表自治系统边缘的路由器之间通信数据。
由于使用内部网关协议共享数据的路由器都处于同一组织的控制之下,当路由器需要跨不同组织共享信息时,它们会使用外部网关协议。
外部网关协议是当今互联网如此运作的真正关键。
互联网与自治系统
互联网是一个由众多自治系统在最高层级上构成的巨大网状结构。核心互联网路由器需要了解各个自治系统,以便正确地转发流量。
由于自治系统是已知且定义明确的网络集合,将数据送达自治系统的边缘路由器是核心互联网路由器的首要目标。
自治系统编号(ASN)的管理

IANA(互联网号码分配局)是一个非营利组织,负责管理IP地址分配等事务。如果没有一个单一的权威机构来处理这类问题,互联网将无法正常运行,否则任何人都可能尝试使用他们想要的任何IP地址空间,这将导致网络彻底混乱。
除了管理IP地址分配,IANA还负责分配ASN(自治系统编号)。ASN是分配给各个自治系统的数字。

就像IP地址一样,ASN也是32位数字。但与IP地址不同的是,ASN通常只用一个十进制数字表示,而不是分成可读的字节段。这主要有两个原因:
- 网络与主机标识的需求:IP地址需要能够为每个数字表示网络ID部分和主机ID部分。通过将数字分成四个8位的部分更容易实现这一点,尤其是在地址类别主导网络的早期。
- 公式/概念:
IP地址 = 网络ID + 主机ID
- 公式/概念:
- 更新机制不同:ASN本身不需要为了表示更多网络或主机而改变。只需要更新核心互联网路由表,让其知道该ASN代表什么即可。
其次,ASN被人查看的频率远低于IP地址。因为查看IP地址(如 9.100.100.100)并知道 9.0.0.0/8 地址空间属于IBM可能很有用。而ASN代表整个自治系统,只需能查到ASN 19604属于IBM就足够了。
知识范围与重要性
除非有一天你在互联网服务提供商工作,否则对于IT领域的大多数人来说,深入了解外部网关协议的工作原理超出了必要的范围。
但是,掌握自治系统、ASN以及核心互联网路由器如何在它们之间路由流量的基础知识,对于理解互联网的一些基本构建模块非常重要。


本节课总结:本节课我们一起学习了外部网关协议的基础知识。我们了解到,外部网关协议用于在不同组织管理的自治系统之间交换路由信息,是互联网互联互通的核心。我们还认识了IANA在分配自治系统编号(ASN)中的角色,以及ASN与IP地址在表示和用途上的关键区别。理解这些概念有助于我们构建对互联网底层运作机制的基本认知。
033:不可路由的地址空间 🏠

在本节课中,我们将学习一个关键的网络概念:不可路由的地址空间。我们将了解它为何被创建,它解决了什么问题,以及它的具体地址范围是什么。
历史背景与IPv4的局限
上一节我们介绍了IP地址的基本概念。本节中,我们来看看IPv4地址耗尽的问题。

早在1996年,互联网的增长速度就已明显不可持续。最初定义IP协议时,IP地址被定义为一个32位的数字。
一个32位的数字可以表示 2^32 = 4,294,967,295 个唯一的地址。这听起来很多,但截至2017年,地球上有约75亿人口。这意味着IPv4标准甚至无法为地球上的每个人提供一个IP地址。它也无法满足大型科技公司运营所需的、拥有成千上万台计算机的数据中心的需求。
RFC 1918与不可路由地址空间
为了解决地址短缺问题,RFC 1918 在1996年发布。RFC代表“征求意见稿”,是互联网维护者们就标准规范达成共识的一种长期方式。
RFC 1918定义了一系列网络,这些网络被称为不可路由地址空间。顾名思义,这些地址范围是为任何人预留的,但核心路由器不会将发往这些地址的数据包路由到互联网上。
并非连接到互联网的每台计算机都需要与其他所有计算机通信。不可路由地址空间允许此类网络中的节点相互通信,但任何网关路由器都不会尝试将流量转发到这类网络。
不可路由地址的范围
这听起来限制很大,确实如此。在未来的模块中,我们将介绍一种称为NAT(网络地址转换) 的技术,它允许不可路由地址空间中的计算机与互联网上的其他设备通信。但现在,我们先单独讨论不可路由地址空间。
RFC 1918定义了三段永远不会被核心路由器路由的IP地址范围。这意味着它们不属于任何人,任何人都可以使用。事实上,由于它们与互联网流量传输的方式隔离,使用这些地址构建内部网络的人数没有限制。
以下是三个主要的不可路由地址空间范围:
- 10.0.0.0/8
- 172.16.0.0/12
- 192.168.0.0/16
这些范围可供任何人免费用于其内部网络。需要指出的是,内部网关协议会路由这些地址空间,因此它们适合在自治系统内部使用,但外部网关协议则不会。
总结
本节课中我们一起学习了不可路由的地址空间。我们了解到,由于IPv4地址即将耗尽,RFC 1918标准预留了特定的地址段(10.0.0.0/8, 172.16.0.0/12, 192.168.0.0/16)供内部网络使用,这些地址在公共互联网上不可路由,从而缓解了地址短缺压力,并为构建私有网络提供了基础。
本模块涵盖了大量内容,恭喜你坚持学习!接下来,我们将探讨传输层和应用层,但在此之前,还有一个小测验。你可以的!记住,你随时可以返回复习所需的内容。
034:操作系统与文件格式问题排查
在本节课中,我们将通过一个真实的IT支持案例,学习操作系统差异如何导致软件故障,以及如何排查和解决此类问题。我们将重点关注不同操作系统(如Windows和Linux)在文本文件格式上的细微差别。
案例背景
上一节我们介绍了IT支持的基本概念。本节中,我们来看看一个由操作系统间文件格式差异引发的具体问题。
我曾在一家托管服务提供商工作。这类公司主要为其他公司提供IT支持服务。当时,我们正在协助一位客户将其部分系统迁移到新版本。
问题现象
每次我尝试启动他们的某项服务时,服务都会报错并崩溃。屏幕上会显示核心转储信息。
我们无法找出原因。最终,我们联系了开发该软件的第三方厂商寻求支持。他们线上支持人员也无法解决问题。问题被层层上报。
排查过程
最终,我拿到了该公司一位副总裁的个人电话号码,他是最初编写这款软件的人。我和他花了几天时间尝试找出问题所在,但一无所获。
以下是我们在排查过程中尝试过的方法:
- 我们在不同的服务器上尝试运行该软件。
- 我们尝试了所有能想到的排查方法。
问题根源
直到我意识到,为了让软件正常工作而需要就位的许可证密钥,是从一台Windows机器复制到Linux机器上的。这意味着,用于标识一行结束并转到下一行的字符是不同的。
该软件无法识别这种不同的换行符,导致运行失败。
解决方案
我只需要运行一个命令,将文件格式转换为Linux格式,一切就恢复正常了。
这个问题的代价是浪费了我两周时间。具体耗时我就不细说了。

核心概念与命令
不同操作系统使用不同的字符表示行尾(换行):
- Windows:使用回车符和换行符两个字符的组合,通常表示为
\r\n。 - Linux/Unix/macOS:仅使用换行符一个字符,表示为
\n。
当在Linux系统上运行一个从Windows复制过来的文本文件(如脚本、配置文件、许可证文件)时,行尾的 \r 字符可能会被当作普通字符处理,从而导致语法错误或解析失败。
一个常用的转换工具是 dos2unix 命令。其基本用法如下:
dos2unix filename
这个命令会将文件中的Windows行尾格式(\r\n)转换为Unix/Linux格式(\n)。反向转换可以使用 unix2dos 命令。
总结

本节课中,我们一起学习了一个因操作系统间文本文件格式差异导致的软件故障案例。关键点在于:Windows和Linux系统使用不同的行结束符。在跨平台迁移文件时,如果不进行格式转换,就可能导致程序无法解析文件内容。解决此类问题的常用方法是使用 dos2unix 这类工具进行文件格式转换。这个案例提醒我们,在IT支持工作中,关注系统环境的细微差别至关重要。
035:传输层与应用层介绍 🚀

在本节课中,我们将要学习网络模型中至关重要的两个上层:传输层与应用层。我们将了解它们如何协同工作,使得运行在不同计算机上的应用程序能够相互通信。
我们网络模型的前三层帮助我们描述了网络上的单个节点如何与同一网络或其他网络上的节点通信。
但我们尚未讨论单个计算机程序之间如何相互通信。
现在,是时候深入探讨这个问题了,因为这正是计算机网络的根本目标。我们将计算机联网在一起,不仅仅是为了让它们能够互相发送数据,更是为了让运行在这些计算机上的程序能够互相发送数据。

这正是我们网络模型中的传输层和应用层发挥作用的地方。

简而言之,传输层允许网络流量被引导至特定的网络应用程序,而应用层则允许这些应用程序以它们能理解的方式进行通信。

在本模块结束时,你将能够描述TCP端口和套接字,并识别TCP报文头的不同组成部分。你还将能够说明面向连接和无连接协议之间的区别,并解释TCP如何用于确保数据的完整性。
你准备好进入下一课了吗?传输层即将登场,我们课堂上见。
总结
本节课中,我们一起学习了传输层与应用层在网络模型中的核心作用。传输层负责将数据准确地送达目标应用程序,而应用层则定义了应用程序间通信的规则。理解这两层是掌握计算机网络如何支持应用程序间通信的关键。
036:传输层详解 🚀
在本节课中,我们将学习计算机网络传输层的核心功能。传输层负责确保网络通信的可靠性,其关键职责包括多路复用与多路分解、建立持久连接以及通过错误检查与数据验证来保障数据完整性。通过本课,你将理解这些概念的工作原理及其在实际网络中的应用。
多路复用与多路分解 🔄
上一节我们介绍了传输层的基本职责,本节中我们来看看其核心功能之一:多路复用与多路分解。传输层通过这一能力,使其在网络协议栈中独树一帜。
多路复用 指网络节点能够将流量导向多个不同的接收服务。多路分解 是相同的概念,但发生在接收端,即将所有指向同一节点的流量分发到正确的接收服务中。
传输层通过 端口 来处理多路复用与多路分解。端口是一个16位数字,用于将流量引导至网络计算机上运行的特定服务。
以下是端口与寻址的关键点:
- 客户端与服务器:服务器或服务是运行在计算机上等待数据请求的程序。客户端是请求这些数据的程序。不同的网络服务在特定端口上监听传入的请求。
- 端口示例:例如,HTTP(未加密的网页流量)的传统端口是 80。如果我们想向IP地址为
10.1.1.100的计算机上的Web服务器请求网页,流量将被导向该计算机的 80 端口。 - 套接字地址:端口通常以冒号写在IP地址之后,例如
10.1.1.100:80。这种写法被称为 套接字地址 或套接字号。 - 多服务主机:同一台设备可能运行多个服务。例如,它可能同时运行FTP(文件传输协议)服务器,FTP传统上监听 21 端口。因此,连接到同一IP上的FTP服务器,地址为
10.1.1.100:21。
在企业IT环境中,单台服务器常通过多路复用技术托管多种业务应用(如内部网站、邮件服务器、文件服务器、打印服务器),这都得益于端口寻址机制。


传输控制协议与用户数据报协议 ⚖️
了解了寻址方式后,我们来看看传输层两种主要的通信协议:TCP和UDP。它们是数据传输方式的两种不同选择。
TCP(传输控制协议) 是一种面向连接的协议。它在数据传输前通过“三次握手”建立稳定连接,确保数据按序、可靠地送达,并提供错误检查和重传机制。TCP适用于要求高可靠性的应用,如网页浏览、电子邮件。
UDP(用户数据报协议) 是一种无连接的协议。它直接发送数据而不预先建立连接,不保证数据顺序或送达,但速度更快、开销更小。UDP适用于实时性要求高、可容忍少量数据丢失的应用,如视频流、在线游戏。
三次握手与TCP标志位 🤝
对于可靠的TCP连接,其建立过程的核心是“三次握手”。这个过程使用TCP报文头中的标志位来协调通信。
以下是三次握手的步骤:
- SYN:客户端向服务器发送一个设置了 SYN(同步)标志位的报文,发起连接。
- SYN-ACK:服务器收到后,回复一个同时设置了 SYN 和 ACK(确认)标志位的报文,表示同意建立连接。
- ACK:客户端最后发送一个 ACK 标志位报文进行确认。至此,双向连接建立成功,可以开始数据传输。
防火墙基础 🔥
最后,我们探讨一下防火墙如何利用传输层信息保护网络安全。防火墙是位于网络边界的安全系统,它根据预设规则检查进出网络的数据包,决定允许或阻止其通过。
防火墙可以检查数据包的多种信息,包括:
- 源IP地址与目标IP地址
- 源端口与目标端口
- 协议类型(如TCP或UDP)
通过分析这些传输层及网络层的信息,防火墙能有效控制网络访问,阻止恶意流量,是网络安全的重要基石。


本节课中我们一起学习了传输层的核心机制。我们理解了多路复用与多路分解如何通过端口(如 10.1.1.100:80)实现单台主机运行多项服务。我们比较了面向连接、可靠的 TCP 与无连接、高效的 UDP 之间的区别。我们详细分析了TCP建立连接的 三次握手 过程及其使用的 SYN、ACK 等标志位。最后,我们了解了防火墙如何利用IP地址、端口和协议类型来实施访问控制,保障网络安全。掌握这些概念是理解现代计算机网络通信的基础。
037:TCP段的剖析 🔍


在本节课中,我们将深入剖析TCP段的结构。在IT支持工作中,当网络流量未按用户预期运行时,你可能需要仔细分析它以进行故障排除。因此,准备好深入了解其内部工作原理。
概述 📋

正如以太网帧封装IP数据报一样,IP数据报也封装TCP段。理解TCP段的各个组成部分,对于诊断网络问题至关重要。

TCP段的结构

上一节我们介绍了端口的概念,本节中我们来看看构成TCP段的具体字段。
一个TCP段由TCP头部和一个数据部分组成。数据部分,正如你所猜测的,是应用层放置其数据的另一个有效载荷区域。


TCP头部本身被分割成许多包含大量信息的字段。


以下是TCP头部的主要字段:

- 源端口与目标端口字段
- 目标端口是流量预期到达的服务端口。
- 源端口是从称为临时端口的特殊端口范围中选择的一个高编号端口。源端口是必需的,用以区分大量出站连接。正如需要目标端口(例如端口80)来确保流量到达运行在特定IP上的Web服务器一样,源端口也是必需的,这样当Web服务器回复时,发出原始请求的计算机可以将这些数据发送给实际请求它的程序。通过这种方式,当Web服务器响应你查看网页的请求时,该响应会被你的Web浏览器接收,而不是你的文字处理器。

- 序列号字段
- 这是一个32位的数字,用于跟踪在TCP段序列中,当前段预期的位置。在协议栈的较低层,我们通过网络发送的数据总大小是有限制的。一个以太网帧的大小通常限制为1518字节。但我们通常需要发送的数据远多于此。在传输层,TCP将所有数据分割成许多段。头部中的序列号用于跟踪当前段是众多段中的哪一个。


- 确认号字段
- 确认号与序列号非常相似。确认号是下一个期望接收的段的编号。用非常简单的语言来说,序列号为1且确认号为2,可以理解为:“这是段1,下一个期望段2”。

- 数据偏移字段
- 这个字段是一个4位的数字,用于说明此段的TCP头部有多长。这样,接收端的网络设备就能知道实际的数据载荷从何处开始。

- 控制标志位
- 接着是6个保留位,用于6个TCP控制标志。我们将在下一个视频中详细介绍控制标志及其各自含义。


-
TCP窗口字段
- 下一个字段是一个16位的数字,称为TCP窗口。TCP窗口指定了在需要确认之前可以发送的序列号范围。正如我们稍后将详细讨论的,TCP是一个极度依赖确认的协议。这样做是为了确保所有预期的数据确实被接收,并且发送设备不会浪费时间发送未被接收的数据。
-
校验和字段
- 下一个字段是16位的校验和。它的工作原理与IP层和以太网层的校验和字段相同。一旦接收方接收了整个段,就会计算整个段的校验和,并与头部的校验和进行比较,以确保数据在传输过程中没有丢失或损坏。
-
紧急指针字段
- 紧急指针字段与其中一个TCP控制标志结合使用,用于指出某些可能比其他段更重要的特定段。这是TCP的一个功能,但并未真正得到广泛采用,你在现代网络中可能永远不会遇到它。即便如此,了解TCP头部的所有部分仍然很重要。


- 选项字段
- 接下来是选项字段。与紧急指针字段一样,这在现实世界中很少使用,但有时用于更复杂的流量控制协议。


- 填充字段
- 最后,我们有一些填充,它只是一串零,用于确保数据载荷部分从预期的位置开始。

总结 🎯


本节课中,我们一起学习了TCP段的详细结构。我们了解了TCP头部包含的关键字段,如源端口、目标端口、序列号、确认号、数据偏移、控制标志、窗口大小、校验和等。理解这些字段的功能,是分析网络流量和进行有效故障排除的基础。在下一节中,我们将深入探讨TCP控制标志的具体含义和作用。
038:TCP控制标志与三次握手 🖧


在本节课中,我们将学习TCP协议如何通过特定的控制标志来建立和终止连接。理解这个过程对于IT支持专家诊断网络流量异常至关重要。
TCP连接概述
TCP是一种协议,它建立连接以发送长链的数据段。这与网络模型中较低层的协议形成对比,例如IP和以太网协议,它们只发送独立的数据包。
上一节我们介绍了TCP的基本概念,本节中我们来看看TCP如何通过一系列控制标志来管理连接。


TCP控制标志详解
在探讨连接如何建立和关闭之前,我们首先需要定义TCP报文头中的六个控制标志。以下是这些标志的详细说明:

URG (Urgent)
- 该标志值为1时,表示当前数据段是紧急的,并且“紧急指针”字段包含更多相关信息。正如上一视频提到的,TCP的这个特性并未得到广泛应用,通常很少见到。

ACK (Acknowledge)
- 该标志值为1时,表示接收方应检查“确认号”字段。
PSH (Push)
- 该标志表示发送设备希望接收设备尽快将当前缓冲区的数据推送给接收端的应用程序。缓冲区是一种计算技术,数据在发送到别处之前会先暂存在某个地方。在TCP中,通过将一定量的数据保留在缓冲区中,可以更高效地发送大块数据。但在某些情况下,发送方可能需要监听程序立即响应少量信息,这时就会使用PSH标志。
RST (Reset)
- 该标志表示TCP连接中的一方无法从一系列丢失或格式错误的数据段中正常恢复。这相当于连接中的一方在说:“等等,我无法理解你的意思,让我们从头开始。”
SYN (Synchronize)
- 该标志在首次建立TCP连接时使用,确保接收端知道要检查“序列号”字段。
FIN (Finish)
- 当该标志设置为1时,表示发送计算机没有更多数据要发送,可以关闭连接。
TCP连接的建立:三次握手 🤝
了解了控制标志后,我们来看一个使用它们的经典例子:TCP连接的建立过程。假设计算机A是发送方,计算机B是接收方。
-
SYN
计算机A向计算机B发送一个设置了SYN标志的TCP段。这是计算机A在说:“让我们建立一个连接,请查看我的序列号字段,以便我们知道这次对话从哪里开始。” -
SYN-ACK
计算机B随后回复一个同时设置了SYN和ACK标志的TCP段。这是计算机B在说:“好的,让我们建立连接,并且我确认收到了你的序列号。” -
ACK
最后,计算机A再次回复一个仅设置了ACK标志的段,意思是:“我确认收到了你的确认,让我们开始发送数据吧。”
这个涉及SYN、SYN-ACK和ACK标志的交换过程,在任何地方建立TCP连接时都会发生,它非常著名,有一个昵称:三次握手。握手是两种设备确保它们使用相同协议并能相互理解的一种方式。

全双工通信与连接终止
一旦三次握手完成,TCP连接便正式建立。此时,计算机A可以自由地向计算机B发送任何数据,反之亦然。由于双方都已向对方发送了SYN-ACK对,处于此状态的TCP连接以全双工模式运行。任一方向发送的每个数据段,都应收到一个设置了ACK字段的TCP段作为响应,这样对方总能知道哪些数据已被接收。
当TCP连接中的一方准备关闭连接时,会发生所谓的四次握手。

- 准备关闭连接的计算机发送一个FIN标志。
- 另一台计算机用一个ACK标志进行确认。
- 如果另一台计算机也准备关闭连接(这几乎总是情况),它会发送一个FIN标志。
- 这个FIN标志会再次收到一个ACK标志作为响应。
理论上,TCP连接可以在单工模式下保持打开,即只有一方关闭连接,但这种情况在实践中并不常见。
总结

本节课中我们一起学习了TCP协议的核心控制机制。我们详细介绍了URG、ACK、PSH、RST、SYN和FIN这六个控制标志的含义。重点掌握了TCP通过三次握手(SYN -> SYN-ACK -> ACK) 建立可靠的全双工连接,以及通过四次握手来优雅地终止连接的过程。理解这些标志和握手流程是诊断网络连接问题的基础。
039:TCP套接字状态 🖧



在本节课中,我们将学习TCP套接字状态。理解这些状态对于诊断网络连接问题至关重要。我们将逐一介绍最常见的几种状态,并解释它们通常在连接的哪一端出现。
概述
套接字是TCP连接中端点的实例化。实例化是指将其他地方定义的东西实际实现出来。TCP套接字需要实际的程序来实例化。

这与端口形成对比,端口更像是一个虚拟的描述性概念。换句话说,你可以向任何端口发送流量,但只有当有程序在该端口上打开了套接字时,你才会收到响应。


TCP套接字可以存在于多种状态中。理解这些状态的含义将帮助你,作为一名IT支持专家,排查网络连接问题。下面我们将介绍最常见的几种状态。

常见TCP套接字状态

上一节我们介绍了套接字的基本概念,本节中我们来看看具体的TCP套接字状态。以下是几种最常见的状态及其含义:

- LISTEN(监听):这意味着一个TCP套接字已准备就绪,正在监听传入的连接。你只会在服务器端看到此状态。
- SYN-SENT(同步已发送):这意味着已发送同步请求,但连接尚未建立。你只会在客户端看到此状态。
- SYN-RECEIVED(同步已接收):这意味着先前处于监听状态的套接字已收到同步请求,并已发回SYN-ACK,但尚未收到客户端的最终ACK。你只会在服务器端看到此状态。
- ESTABLISHED(已建立):这意味着TCP连接工作正常,双方都可以自由地相互发送数据。你会在连接的客户端和服务器端都看到此状态。这一点也适用于后面所有的套接字状态,请记住。
- FIN-WAIT(结束等待):这意味着已发送FIN,但尚未收到另一端的相应ACK。
- CLOSE-WAIT(关闭等待):这意味着连接已在TCP层关闭,但打开套接字的应用程序尚未释放其对套接字的控制。
- CLOSED(已关闭):这意味着连接已完全终止,无法再进行任何通信。

注意事项与总结

除了上述状态外,还存在其他TCP套接字状态。此外,套接字状态及其名称可能因操作系统而异。这是因为它们存在于TCP本身定义的范围之外。
TCP作为一种协议,其使用方式是通用的,因为每个使用TCP协议的设备都必须以完全相同的方式进行通信才能成功。然而,在操作系统层面如何描述套接字的状态则没有那么统一。
本节课中我们一起学习了TCP套接字的各种状态,从监听、建立连接到最终关闭。当在TCP层进行故障排除时,请务必查阅你所使用系统的确切套接字状态定义。
040:面向连接与无连接协议 🔗

在本节课中,我们将要学习传输层中两种核心的通信方式:面向连接的协议和无连接的协议。我们将重点探讨TCP和UDP的工作原理、它们的优缺点以及各自适用的场景。

概述
到目前为止,我们的讨论主要集中在TCP协议上。TCP是一种面向连接的协议。面向连接的协议会先建立连接,并利用这个连接来确保所有数据都被正确传输。
面向连接协议的工作原理
上一节我们提到了TCP是面向连接的,本节中我们来看看这种连接具体意味着什么。
在传输层,一个“连接”意味着发送的每一个数据段都需要得到确认。通过这种方式,连接的两端始终能确切知道哪些数据已经成功送达对方,而哪些没有。
面向连接协议之所以重要,是因为互联网环境复杂且繁忙,数据从A点传输到B点的过程中可能出现各种问题。
以下是数据可能无法正确到达的一些原因:
- 线路错误:例如,物理层中同一电缆内相邻双绞线的串扰,就足以导致循环冗余校验失败,从而使整个数据帧被丢弃。
- 网络拥塞:纯粹的拥塞可能导致路由器为了转发更重要的流量而丢弃你的数据包。
- 意外中断:例如,施工公司切断了连接两个ISP的光缆。
像TCP这样的面向连接协议,通过建立连接和持续的确认流来防范这些问题。
TCP如何确保可靠性
我们的网络模型中较低层的协议(如IP和以太网)确实使用校验和来确保接收数据的正确性。但你是否注意到,我们从未讨论过重新发送未通过校验的数据?这是因为这完全由传输层协议决定。
在IP或以太网层面,如果校验失败,所有数据都会被直接丢弃。是否重发这些数据,则由TCP来决定。

由于TCP期望为它发送的每一位数据都收到确认(ACK),因此它最清楚哪些数据成功送达,并能在需要时决定重发一个数据段。
这也是序列号如此重要的另一个原因。虽然TCP通常会按顺序发送所有数据段,但它们到达时可能并不总是有序的。
如果某些数据段由于底层错误需要重发,那么它们即使稍微乱序到达也没关系。这是因为序列号允许将所有数据按照正确的顺序重新组装起来,这非常方便。

无连接协议的引入

现在,你可能已经意识到,像TCP这样的面向连接协议存在很多开销。你必须建立连接,必须发送持续的确认流,最后还必须拆除连接,所有这些都产生了大量的额外流量。
虽然这些流量很重要,但只有在你绝对必须确保数据到达目的地时,它才真正有用。
你可以将此与无连接协议进行对比。其中最常见的是UDP,即用户数据报协议。与TCP不同,UDP不依赖于连接,甚至不支持“确认”这个概念。
使用UDP时,你只需设置一个目标端口并发送数据包。
UDP的应用场景
这对于那些不是超级重要的消息非常有用。UDP的一个典型例子是流媒体视频。
我们可以想象每个UDP数据报就是视频的一帧。为了获得最佳观看体验,你可能希望每一帧都能送达观众,但即使中途丢失了几帧,视频仍然基本可看,除非丢失了大量帧。
通过摒弃TCP的所有开销,你实际上可能能够用UDP传输更高质量的视频。这是因为你可以将更多可用带宽节省下来用于实际的数据传输,而不是耗费在建立连接和确认已送达数据段的开销上。
总结
本节课中我们一起学习了传输层的两种核心协议。TCP作为一种面向连接的协议,通过建立连接、使用序列号和确认机制,提供了可靠的数据传输,但会引入额外开销。而UDP作为一种无连接的协议,不建立连接、不进行确认,传输速度更快、开销更小,适用于对实时性要求高、可容忍少量数据丢失的应用,如视频流媒体。理解两者的区别有助于我们在不同场景下选择合适的传输协议。
041:防火墙 🔥

在本节课中,我们将要学习网络安全中的一个核心设备——防火墙。我们将了解防火墙的基本概念、它在网络中的工作层次,以及它如何通过控制网络流量来保护我们的系统和数据安全。

你知道我们还没提到哪个你很可能非常熟悉的网络设备吗?那就是防火墙。防火墙是一种能够根据特定规则阻止网络流量的设备。
防火墙是保障网络安全的关键概念,因为它是阻止不想要的流量进入网络的主要手段。
防火墙的工作层次
上一节我们介绍了防火墙的基本定义,本节中我们来看看防火墙可以在哪些网络层次上工作。
防火墙实际上可以在网络的不同层次上运行。有些防火墙能够检查应用层流量,而有些则主要处理IP地址范围的封禁。
我们将防火墙放在这里讨论,是因为它们最常用于传输层。在传输层运行的防火墙通常具有一种配置,使其能够阻止发往某些端口的流量,同时允许发往其他端口的流量通过。


防火墙配置实例
为了理解防火墙如何工作,让我们设想一个简单的小型企业网络场景。这家公司可能有一台服务器,同时承载多项网络服务。

这台服务器可能既托管着公司的网站(作为Web服务器),又作为内部机密文档的文件服务器。

在这种情况下,部署在网络边界的防火墙可以这样配置:允许任何人向端口80发送流量以访问网页。
同时,它可以阻止所有外部IP地址访问任何其他端口。这样,局域网外的任何人都无法访问文件服务器。


防火墙的实现形式
了解了防火墙的基本配置后,我们来看看防火墙可以以哪些形式存在。

防火墙有时是独立的网络设备。但更好的理解方式是,将其视为一个可以在任何地方运行的程序。

对于许多公司和几乎所有的家庭用户来说,路由器和防火墙的功能是由同一个设备完成的。

此外,防火墙也可以运行在单个主机上,而不仅仅是作为网络设备存在。所有主流的现代操作系统都内置了防火墙功能。

这样一来,在主机层面也可以执行对特定端口(从而对特定服务)的流量阻止或允许操作。


本节课中我们一起学习了防火墙。我们了解到防火墙是一种根据规则过滤流量的安全设备,它最常用于传输层,通过控制端口访问来保护网络。防火墙既可以是独立设备,也可以集成在路由器中,或是作为软件运行在单个主机操作系统上。它是构建网络安全防线的基础工具。
042:应用层详解 🖥️
在本节课中,我们将要学习计算机网络模型的最后一层——应用层。我们将了解应用程序如何利用之前各层建立的基础设施来发送和接收数据。
概述
在前面的课程中,我们已经学习了网络模型的多个层面。在物理层,我们了解了计算机如何处理电信号或光信号,以便通过线缆进行通信。在数据链路层,我们探讨了单个计算机如何使用以太网协议相互寻址和发送数据。在网络层,我们讨论了计算机和路由器如何使用IP协议在不同网络间通信。在上节课中,我们学习了传输层如何确保数据被正确的应用程序接收和发送。
现在,我们终于可以讨论实际的应用程序如何利用应用层来发送和接收数据。
应用层数据载荷
与其他所有层一样,TCP数据段包含一个通用的数据部分。正如你可能猜到的,这个载荷(payload) 部分实际上是应用程序想要相互发送的任何数据的全部内容。
以下是几种常见的数据载荷类型:
- 如果网络浏览器正在连接网络服务器,这可以是一个网页的内容。
- 如果你的PlayStation上的Netflix应用正在连接Netflix服务器,这可以是流媒体视频内容。
- 这可以是你的文字处理软件发送给打印机的文档内容,以及许多其他类型的数据。
应用层协议多样性
应用层使用的协议非常多,且种类繁多。相比之下,在其他层,主流协议相对集中。
以下是各层主要协议的对比:
- 在数据链路层,最常见的协议是以太网(Ethernet)。需要指出的是,无线技术在该层确实使用其他协议,我们将在未来的模块中介绍。
- 在网络层,IP协议无处不在。
- 在传输层,TCP和UDP覆盖了大多数用例。

但在应用层,有太多不同的协议在使用,我们无法一一涵盖。
协议标准化的重要性
尽管如此,关于应用层协议,你可以记住一个核心概念:它们在不同类型的应用程序中仍然是标准化的。
让我们以网络服务器和网络浏览器为例进行更深入的探讨。有很多不同的网络浏览器,你可能在使用Chrome、Internet Explorer、Safari等等。它们都需要使用相同的协议进行通信。对于网络服务器也是如此。在这种情况下,网络浏览器是客户端(client),网络服务器是服务器(server)。
最流行的网络服务器有Microsoft IIS、Apache和Nginx,但它们也都需要遵循相同的协议。这样就能确保无论你使用哪种浏览器,仍然能够与任何服务器通信。对于网络流量,应用层协议被称为HTTP(超文本传输协议)。所有这些不同的网络浏览器和网络服务器都必须使用相同的HTTP协议规范进行通信,以确保互操作性。
对于大多数其他类别的应用程序也是如此。你可能有很多FTP客户端可供选择,但它们都需要以相同的方式使用FTP(文件传输协议) 协议。
总结

本节课中,我们一起学习了计算机网络模型的顶层——应用层。我们了解到,应用层承载着应用程序想要交换的实际数据(载荷),并且尽管存在大量不同的应用(如各种浏览器、服务器、客户端),但它们都通过遵循统一的标准协议(如HTTP、FTP)来实现互操作性。这确保了网络世界的多样性与连通性得以共存。
043:应用层与OSI模型 🧠

在本节课中,我们将要学习网络模型中的一个重要概念——OSI(开放系统互连)模型。我们将探讨它与我们一直使用的五层模型之间的关系,并理解为什么OSI模型在学术和认证领域如此重要。
网络模型的多样性
在开篇模块中,我们讨论了存在许多相互竞争的网络层模型。我们一直使用的是五层模型,但在你作为IT支持专家的职业生涯中,很可能会遇到各种其他模型。
以下是几种常见的模型变体:
- 有些模型可能将物理层和数据链路层合并为一层,只讨论四层。
- 但你可能还记得,我们在第一个模块的阅读材料中特别提到过一个特定的模型。
认识OSI七层模型 📊
这个模型就是OSI,即开放系统互连模型。理解这个模型对于掌握我们的五层模型至关重要,因为它是定义最严谨的模型。这意味着它经常被用于学术环境或各种网络认证机构。
OSI模型有七层,它在我们的传输层和应用层之间引入了两个额外的层。

会话层与表示层
上一节我们介绍了OSI模型的基本结构,本节中我们来看看新增的两个层具体负责什么。

OSI模型的第五层是会话层。 会话层的概念是,它负责促进实际应用程序和传输层之间的通信。它是操作系统的一部分,接收从下层解封装出来的应用层数据,并将其交给OSI模型中的下一层——表示层。

表示层 负责确保解封装后的应用层数据能够被目标应用程序真正理解。这是操作系统中处理数据加密或压缩的部分。
五层模型与七层模型的对比
虽然记住这些概念很重要,但你会注意到这里并没有发生任何新的封装过程。这就是为什么在我们的五层模型中,我们将所有这些功能都归入了应用层。

我们相信,对于理解网络日常运作而言,五层模型是最实用的。但七层OSI模型也同样普遍。

总结

本节课中我们一起学习了OSI七层模型及其与五层模型的区别。我们了解到OSI模型在会话层和表示层上做了更细致的划分,这有助于更精确地描述网络通信过程。掌握OSI模型的基础知识,是任何网络教育中不可或缺的一环。
044:各层协同工作详解 🧩


在本节课中,我们将通过一个具体的网络通信示例,详细拆解数据包在TCP/IP模型各层中的封装、传输和解封装过程。我们将看到客户端如何通过路由器与服务器建立TCP连接,以及每一层协议如何协同工作以完成数据传输。
概述

我们已经了解了网络模型中每一层的基本工作原理。现在,我们将通过一个练习,逐步分析数据在网络中传输时,每一步发生了什么。我们将构建一个包含三个网络、两个路由器和两台计算机的场景,并追踪一个TCP连接请求从发起、路由到最终被接收的全过程。

网络场景构建
首先,我们构建本次示例的网络拓扑。

以下是三个网络的配置:
- 网络A:地址空间为
10.1.1.0/24。 - 网络B:地址空间为
192.168.1.0/24。 - 网络C:地址空间为
172.16.1.0/24。
以下是路由器的配置:
- 路由器A:连接网络A和网络B。
- 在网络A上的接口IP为
10.1.1.1。 - 在网络B上的接口IP为
192.168.1.254。
- 在网络A上的接口IP为
- 路由器B:连接网络B和网络C。
- 在网络B上的接口IP为
192.168.1.1。 - 在网络C上的接口IP为
172.16.1.1。
- 在网络B上的接口IP为

以下是计算机的配置:
- 计算机1 (Comp1):作为客户端,位于网络A。
- IP地址为
10.1.1.100。
- IP地址为
- 计算机2 (Comp2):作为服务器,位于网络C。
- IP地址为
172.16.1.100。 - 运行一个监听端口80的Web服务器。
- IP地址为
通信过程逐步分析

现在,假设用户坐在Comp1前,在浏览器地址栏中输入 http://172.16.1.100 并按下回车。让我们看看会发生什么。
第一步:应用层与传输层初始化
Comp1上的网络浏览器接收到指令,需要从 172.16.1.100 获取网页。浏览器与操作系统中的网络协议栈通信,请求建立一个到目标地址端口80的TCP连接。

网络协议栈检查自身所在的子网(10.1.1.0/24),发现目标IP 172.16.1.100 位于另一个网络。因此,Comp1知道必须将数据发送到其网关进行路由。Comp1的网关配置为 10.1.1.1(即路由器A在网络A的接口)。

第二步:链路层地址解析 (ARP)


为了将数据发送给网关,Comp1需要知道网关 10.1.1.1 的MAC地址。它检查本地的ARP缓存表,但没有找到对应条目。

于是,Comp1构造一个ARP请求广播帧,询问“谁的IP是 10.1.1.1?”。这个广播帧被发送到本地网络的所有节点。

路由器A收到这个ARP请求,发现自己的一个接口IP正是 10.1.1.1,于是向Comp1回复一个ARP响应,告知自己的MAC地址(例如:00:11:22:33:44:55)。

Comp1收到响应,将网关的IP-MAC映射存入ARP缓存表。现在,它知道了下一跳的硬件地址,可以开始构造出站数据包。

第三步:构造传输层段 (TCP Segment)

网络协议栈为浏览器分配一个临时的源端口,例如 50000,并打开一个连接浏览器与此端口的套接字。

由于这是TCP连接,协议栈首先需要构造一个TCP段来发起连接(三次握手的第一步)。以下是构造过程:
- 填充TCP头部字段:源端口为
50000,目标端口为80。 - 选择一个初始序列号。
- 设置 SYN标志位 (S flag) 为1,表示发起连接。
- 计算该TCP段的校验和并填入头部。
构造好的TCP段将被传递给下一层——网络层。
第四步:构造网络层数据报 (IP Datagram)

网络层负责构造IP数据报。以下是构造过程:
- 填充IP头部字段:源IP为
10.1.1.100,目标IP为172.16.1.100。 - 设置 TTL(生存时间) 为
64(一个标准值)。 - 将上一步构造的TCP段作为IP数据报的数据载荷。
- 计算整个IP数据报的校验和。
现在,Comp1需要将这个IP数据报发送给它的网关(MAC地址已知)。


第五步:构造链路层帧 (Ethernet Frame) 并发送
链路层负责构造以太网帧。以下是构造过程:
- 填充以太网帧头部字段:源MAC地址为Comp1的MAC,目标MAC地址为网关路由器A的MAC (
00:11:22:33:44:55)。 - 将上一步构造的IP数据报作为以太网帧的数据载荷。
- 计算整个以太网帧的帧校验序列 (FCS)。


完整的以太网帧准备就绪,通过网络接口卡(NIC)转换成电信号,通过网线发送到连接的网络交换机。

第六步:数据在路由器间的路由与转发

交换机收到帧,查看目标MAC地址,并将其从连接路由器A的端口转发出去。

在路由器A上:
- 路由器A收到帧,识别目标MAC是自己,进行FCS校验,确认数据完整。
- 剥离以太网帧头部,得到IP数据报,并进行IP校验和验证。
- 查看IP数据报的目标IP地址 (
172.16.1.100)。 - 查询路由表,发现去往网络
172.16.1.0/24的下一跳是路由器B (192.168.1.1)。 - 将IP数据报的 TTL值减1(变为63),重新计算IP校验和。
- 需要将数据报发给路由器B (
192.168.1.1)。查询ARP表获得其MAC地址。 - 重新封装一个新的以太网帧:
- 源MAC:路由器A在网络B接口的MAC。
- 目标MAC:路由器B在网络B接口的MAC。
- 数据载荷:更新后的IP数据报。
- 计算新帧的FCS,并将其发送到网络B。

在路由器B上:
- 重复与路由器A类似的接收、校验和拆帧过程。
- 查询路由表,发现目标IP
172.16.1.100就在其直接连接的网络C上。 - 将IP数据报的TTL值再减1(变为62),重新计算IP校验和。
- 需要将数据报直接发给Comp2 (
172.16.1.100)。查询ARP表获得其MAC地址。 - 再次重新封装一个新的以太网帧:
- 源MAC:路由器B在网络C接口的MAC。
- 目标MAC:Comp2的MAC地址。
- 数据载荷:再次更新后的IP数据报。
- 计算FCS,通过交换机将帧发送到网络C。


第七步:数据在目标服务器的解封装与处理

Comp2收到以太网帧:
- 识别目标MAC是自己,进行FCS校验。
- 剥离以太网帧头部,得到IP数据报,进行IP校验和验证。
- 识别目标IP (
172.16.1.100) 是自己,剥离IP头部,得到TCP段。 - 进行TCP校验和验证。
- 查看目标端口为
80。协议栈检查发现端口80有一个处于监听 (LISTEN) 状态的套接字(由Apache Web服务器打开)。 - 发现TCP段的 SYN标志位为1,这是一个连接请求。
- Comp2记录下TCP段中的序列号,以便在构造响应(SYN-ACK段)时使用。

至此,一个仅包含SYN标志的TCP段成功从Comp1传输到了Comp2。

总结

本节课中,我们一起追踪了一个TCP连接请求(SYN段)穿越复杂网络到达服务器的完整旅程。我们看到了:
- 分层协作:数据从应用层发起请求,经过传输层(TCP)、网络层(IP)、链路层(以太网)的逐层封装,再在路径中的路由器和目标主机上逐层解封装和处理。
- 地址转换:全程涉及IP地址(网络层)和MAC地址(链路层)的协作与转换(通过ARP)。
- 路由决策:路由器根据路由表查询结果,决定数据包的下一跳。
- 数据封装与重封装:数据包在每一跳路由器上都会经历“拆帧 -> 处理IP -> 重新封装帧”的过程,其中TTL会递减,校验和会重新计算。
这个过程清晰地展示了计算机网络模型的精妙之处——每一层各司其职,通过标准的协议协同工作,最终实现了全球范围内可靠的数据通信。要完成整个TCP三次握手,上述复杂的过程还需要再重复两次(SYN-ACK和ACK),这更凸显了现代网络技术的可靠性。
希望这个详细的示例能帮助你巩固对网络各层如何协同工作的理解。现在,是时候将新知识应用到接下来的测验中了。
045:丹尼尔
概述
在本节中,我们将通过丹尼尔的故事,了解他如何在没有大学学位的情况下,通过在线课程成功转型进入IT支持领域。这个故事将展示自学、认证的价值以及职业发展的可能性。
故事内容
内布拉斯加州是一个美丽的州,它不仅风景优美,更代表了一种美好的心境。
我的未婚妻在内布拉斯加州的大岛市找到了她的第一份教学工作。我因此做出了从大学辍学并搬到大岛市的决定。
初到此地时,我发现没有大学学位很难找到工作。这个地区的许多人都会面临类似的困境。
最终,我在中央社区学院找到了一份夜间保安的工作。我感觉自己像是在进行一场艰苦的上坡战,仿佛无法在职业生涯中获得任何进展。
我一生都在与计算机打交道,这是我热爱的事情。
我的一位朋友当时正在参加一个IT培训项目,他建议我:“你应该搜索一下谷歌的IT支持专业课程。”

搜索关键词:Google IT Support Professional Certificate

看到这个课程后,我认为这是我可以做到的事情。
行动:注册并开始学习谷歌IT支持专业课程
我平均每周花费10到12小时学习,在五个月内完成了整个课程。完成课程的那一刻,我几乎热泪盈眶。
不久之后,我收到了一封关于中央社区学院IT团队职位空缺的电子邮件。当我们审阅丹尼尔的简历时,最引人注目的是他带来的谷歌认证资格。这确实使他在我们大多数其他候选人中脱颖而出。
我非常热爱我的新工作。我认为世界上最能证明自我价值的事情之一,就是意识到你帮助了别人。
令人难以置信的是,我可以说我正在做我热爱的事情,同时也有更多的时间与我爱的人在一起。
结果:成功获得IT支持职位,实现工作与生活的平衡

总结
本节课我们一起学习了丹尼尔的故事。他从没有学位的保安,通过在线学习获得谷歌IT支持认证,最终成功转型为IT支持专家。这个故事强调了持续学习、专业认证的重要性,以及它们如何为职业发展打开新的大门。
046:网络服务介绍 🖧
在本节课中,我们将要学习计算机网络中一些核心的网络服务与技术。这些服务是网络能够运行并为用户提供功能的基础。理解它们的工作原理,对于诊断和解决网络问题至关重要。

网络服务的核心作用

不可否认,计算机网络是一项涉及众多技术、层次和协议的复杂事务。归根结底,计算机网络的主要目的是让网络服务能够可用,以响应客户端对数据的请求。
可能构成网络服务的事物种类和数量繁多,无法全部涵盖。但有许多网络服务和技术被用来使计算机网络更加用户友好和安全。这些网络服务和技术直接关系到网络本身的事务,理解它们如何工作非常重要。
如果网络上的某些功能未按预期工作,您首先应该查看的就是我们将在这里介绍的服务。被要求修复未按预期工作的事物,将成为IT支持专家工作的主要部分。
本课学习目标
在本模块结束时,您将能够:
- 描述名称解析为何重要。
- 识别DNS查找涉及的多个步骤。
- 理解最常见的DNS记录类型。
- 解释DHCP如何使网络管理任务变得更简单。
- 演示NAT技术如何帮助保持网络安全并节省宝贵的IP地址空间。
- 描述VPN和代理如何帮助用户连接并保持安全。
如您所见,我们需要学习的内容很多,让我们开始吧。
名称解析与DNS 🌐
上一节我们介绍了网络服务的总体作用,本节中我们来看看一个让网络变得对用户友好的基础服务:域名系统。
计算机在网络中使用IP地址进行通信,但人们很难记住一串数字。名称解析服务的作用就是将人类可读的域名(如 www.google.com)转换为机器可读的IP地址(如 142.250.185.206)。这个过程称为DNS查询。
DNS查询步骤
以下是DNS查询通常涉及的步骤:
- 本地缓存查询:您的计算机首先检查本地DNS缓存,看是否最近解析过这个域名。
- 查询本地Hosts文件:如果缓存没有,系统会检查本地的
hosts文件。 - 查询递归解析器:如果上述步骤都没有结果,请求会被发送到您的ISP或配置的递归DNS服务器。
- 根域名服务器查询:递归解析器从根域名服务器(
.)开始查询,获取顶级域(如.com)的权威服务器地址。 - TLD服务器查询:接着查询
.com的权威服务器,获取管理google.com的域名服务器地址。 - 权威域名服务器查询:最后,查询
google.com的权威域名服务器,获得www.google.com对应的IP地址。 - 结果返回与缓存:递归解析器将IP地址返回给您的计算机,同时缓存该结果以备后续使用。
常见DNS记录类型
DNS使用不同类型的记录来存储信息。以下是最常见的几种:
- A记录:将域名映射到IPv4地址。
- 示例:
www.example.com->192.0.2.1
- 示例:
- AAAA记录:将域名映射到IPv6地址。
- CNAME记录:将一个域名别名指向另一个域名(规范名称)。
- 示例:
blog.example.com->www.example.com
- 示例:
- MX记录:指定负责接收该域电子邮件的邮件服务器。
- TXT记录:通常用于存放域名的验证信息或SPF记录(用于反垃圾邮件)。
动态主机配置协议(DHCP) 🔄
了解了如何将名称转换为地址后,我们来看看计算机是如何自动获得IP地址的。手动为网络中的每台设备配置IP地址非常繁琐。动态主机配置协议(DHCP)使这个过程自动化,极大地简化了网络管理。
DHCP的工作过程通常被称为“DORA”过程:
- 发现:客户端广播一条
DHCP Discover消息,寻找可用的DHCP服务器。 - 提供:DHCP服务器回应一条
DHCP Offer消息,提供一个可用的IP地址。 - 请求:客户端选择其中一个提供的地址,并广播
DHCP Request消息以请求使用该地址。 - 确认:DHCP服务器发送
DHCP Acknowledge消息,确认租约,并可能附带其他配置信息(如网关、DNS服务器)。
通过这个过程,客户端自动获得了IP地址、子网掩码、默认网关和DNS服务器地址,无需手动干预。
网络地址转换(NAT)与安全 🛡️
上一节我们学习了DHCP如何分配地址,本节我们探讨一个与IP地址密切相关的关键技术:网络地址转换。NAT主要解决两个问题:IPv4地址短缺和增加一层网络安全。
NAT通常部署在路由器上,它允许一个局域网内的多台设备共享一个对外的公网IP地址。局域网内部使用私有IP地址(如 192.168.1.x),当这些设备需要访问互联网时,NAT设备会将数据包的源IP地址从私有地址转换为公网地址,并在内部维护一个转换表。
核心概念:NAT转换表记录了内部私有IP和端口与外部公网IP和端口的映射关系。当外部数据返回时,NAT设备根据此表将数据包正确转发给内部对应的设备。
这种机制带来了两大好处:
- 节省公网IP地址:一个家庭或办公室只需要一个公网IP。
- 增强安全性:外部网络无法直接看到或访问到内部网络设备的真实私有IP,起到了隐藏内部网络结构的作用。
虚拟专用网络与代理 🌐➡️🔒
最后,我们来看看帮助用户安全连接远程资源的两种重要技术。当用户不在公司网络内部,又需要访问内部资源时,或者希望保护自己的上网隐私时,VPN和代理就派上了用场。
虚拟专用网络
VPN在公共网络(如互联网)上建立一个加密的“隧道”,将您的设备安全地连接到另一个网络(如公司网络)。所有进出您设备的数据都会在这个加密隧道中传输,防止被窃听或篡改。
效果:对于远程服务器而言,您的流量看起来像是从VPN服务器发出的,从而隐藏了您的真实IP地址,并让您可以访问受地域或网络限制的资源。
代理服务器
代理服务器充当您的设备和互联网之间的中间人。您将请求发送给代理服务器,由它代表您向目标服务器获取数据,然后将数据返回给您。
代理服务器的主要用途包括:
- 内容过滤与缓存:企业或学校可能使用代理来过滤网站或缓存常用内容以加快访问速度。
- 匿名与绕过限制:隐藏客户端真实IP,或访问因地理位置被屏蔽的内容。
与VPN的区别:代理通常只在应用层(如浏览器)工作,且不一定加密所有流量;而VPN在操作系统层面工作,会加密设备的所有网络流量,提供更全面的安全保护。
总结 📚
本节课中我们一起学习了支撑现代计算机网络运行的关键服务。
我们首先探讨了DNS如何通过名称解析,将人类友好的域名转换为IP地址。接着,我们了解了DHCP如何自动分配IP地址,简化网络管理。然后,我们分析了NAT技术如何在节省IP地址的同时增强网络安全性。最后,我们介绍了VPN和代理如何帮助用户建立安全连接并访问受限资源。
理解这些基础网络服务的工作原理,是诊断和解决常见网络问题的第一步,也是IT支持专家必备的核心知识。
047:为何需要DNS 🌐
在本节课中,我们将要学习域名系统(DNS)的基本概念及其重要性。DNS是互联网的核心技术之一,它帮助我们将易于记忆的域名转换为计算机能够理解的IP地址。
计算机使用数字进行通信
在底层,所有计算机真正理解的只有1和0。对人类而言,阅读二进制数字并不容易,因此大多数二进制数字会以多种不同的形式表示。
在计算机网络领域尤其如此。请记住,一个IP地址本质上只是一个32位二进制数。但为了方便人类阅读,它通常被写成四个十进制数(即点分十进制形式)。
人类更擅长记忆文字
虽然记住192.168.1.100比记住一长串的1和0要容易,但当你需要记住不止几个地址时,这仍然不够好。想象一下,需要记住你访问的每个网站的IP地址四组数字,这通常不是人脑所擅长的。
人类更擅长记忆单词。这正是域名系统(DNS)发挥作用的地方。
DNS:将域名解析为IP地址

DNS是一项全球性的、高度分布式的网络服务,它为你将字母组成的字符串解析成IP地址。
例如,你想查看一个天气预报网站。在浏览器中输入www.weather.com远比记住该网站的一个IP地址(例如184.29.131.121)要容易得多。
一个域名对应的IP地址可能因多种原因而随时改变。域名就是我们用来指代可以通过DNS解析的东西的术语。在我们刚才的例子中,www.weather.com就是域名,而它解析到的IP地址可能因各种因素而改变。
DNS带来的灵活性
假设weather.com正在将他们的网络服务器迁移到一个新的数据中心。通过使用DNS,组织只需更改域名解析到的IP地址,最终用户甚至不会察觉。
因此,DNS不仅让人类更容易记住如何访问网站,还允许在后台进行管理变更,而无需最终用户改变他们的行为。试想一个你必须记住每个网站IP地址的世界,如果地址变了还得记住新的,那我们整天都在记忆数字了。
DNS与全球网络性能
DNS对于当今互联网的运作至关重要,其重要性怎么强调都不为过。IP地址的解析结果可能因你所在的世界位置而异。
虽然大多数互联网通信以光速进行,但数据需要路由的距离越远,速度就会越慢。在几乎所有情况下,在地理位置相近的地点之间传输一定量的数据会更快。
如果你是一家全球性的网络公司,你会希望世界各地的人都能有良好的网站访问体验。因此,你不会将所有网络服务器放在一个地方,而是将它们分布在全球各地的数据中心。这样,在纽约访问网站的用户可能由靠近纽约的服务器提供服务,而在新德里的用户则由靠近新德里的服务器提供服务。
DNS再次帮助实现了这一功能。由于其全球性的结构,DNS允许组织根据用户所在区域进行决策:如果你在这个区域,就将域名解析到这个IP;如果你在另一个区域,就将域名解析到另一个IP。
DNS的作用总结


DNS服务于多种目的,并且可能是IT支持专家需要理解的最重要的技术之一,以便有效地排查网络问题。
在本节课中,我们一起学习了DNS如何作为人类记忆与计算机数字世界之间的桥梁。我们了解到,DNS通过将易于记忆的域名(如www.weather.com)转换为IP地址(如184.29.131.121),极大地简化了网络访问。同时,DNS的分布式和灵活性特点,使得网站管理变更和全球负载均衡成为可能,而用户无需感知这些复杂的过程。理解DNS是解决许多网络连接问题的关键。
048:域名解析的多个步骤 🌐

在本节课中,我们将要学习域名系统(DNS)如何将人类可读的域名转换为计算机使用的IP地址。我们将详细解析DNS查询的完整过程,并了解其中涉及的各种服务器类型及其作用。
DNS基础概念
DNS本质上是一个将域名转换为IP地址的系统。这是人类记忆和分类事物的方式与计算机处理事物的方式之间的桥梁。使用DNS将域名转换为IP地址的过程被称为名称解析。
网络节点的标准配置
上一节我们介绍了DNS的基本概念,本节中我们来看看计算机接入网络所需的配置。为了让计算机在现代网络中运行,必须配置若干项目。MAC地址是硬编码的,与特定硬件绑定。但除此之外,主机的IP地址、子网掩码和网关也必须专门配置。DNS服务器是现代标准网络配置的第四项,也是最后一项。这四项通常是主机按预期方式在网络中运行所必须配置的。

需要指出的是,即使没有配置DNS或DNS服务器,计算机也能正常运行。但正如上一课视频所述,这会给使用该计算机的人带来不便。


DNS服务器的五种主要类型

以下是DNS系统中涉及的五种主要服务器类型:
- 缓存名称服务器
- 递归名称服务器
- 根名称服务器
- 顶级域名(TLD)名称服务器
- 权威名称服务器
需要强调的是,任何给定的DNS服务器都可以同时承担其中多个角色。

缓存与递归名称服务器
缓存和递归名称服务器通常由互联网服务提供商(ISP)或您的本地网络提供。它们的作用是在一定时间内存储域名查询结果。
为了防止每次建立新的TCP连接时都执行完整的域名解析,您的ISP或本地网络通常会提供缓存名称服务器。大多数缓存名称服务器同时也是递归名称服务器。递归名称服务器负责执行完整的DNS解析请求。
在大多数情况下,您的本地名称服务器会同时承担这两种职责。但名称服务器也有可能只负责缓存或只负责递归查询。


解析过程示例

让我们通过一个例子来更好地解释其工作原理。假设您和您的朋友连接到同一个网络,并且都想访问 www.facebook.com。
您的朋友在浏览器中输入 www.facebook.com,这意味着他的计算机需要知道 www.facebook.com 的IP地址才能建立连接。由于你们的计算机在同一网络,它们通常配置了相同的名称服务器。
因此,您朋友的计算机向名称服务器询问 www.facebook.com 的IP地址,而名称服务器此时并不知道。于是,该名称服务器执行一次完整的递归解析来查找 www.facebook.com 的正确IP地址。这个过程涉及多个步骤,我们稍后会详细说明。


解析出的IP地址随后被发送给您朋友的计算机,并本地缓存在名称服务器中。

几分钟后,您也在浏览器中输入 www.facebook.com。同样,您的计算机需要知道该域名的IP地址。于是您的计算机询问它配置的本地名称服务器(与您朋友的计算机刚才询问的是同一个)。
由于域名 www.facebook.com 刚刚被查询过,本地名称服务器仍然缓存着解析出的IP地址,因此无需执行完整查询就能将该IP地址返回给您的计算机。这就是同一服务器如何充当缓存服务器的过程。
生存时间(TTL)
全球DNS系统中的所有域名都有一个TTL(生存时间)。这是一个以秒为单位的值,可由域名所有者配置,用于规定名称服务器在丢弃缓存条目并再次执行完整解析之前,允许缓存该条目的时间长度。
几年前,这些TTL值通常非常长,有时长达一整天或更久。这是因为当时互联网的总体可用带宽要少得多,网络管理员不希望因频繁执行完整的DNS查询而浪费宝贵的带宽。
随着互联网的发展和提速,大多数域名的TTL已缩短到几分钟到几小时不等。但需要注意的是,有时您仍会遇到TTL非常长的域名。这意味着DNS记录的更改可能需要长达整个TTL的时间才能被整个互联网知晓。


完整的递归解析过程
现在,让我们看看当您的本地递归服务器需要执行完整的递归解析时会发生什么。
第一步总是联系根名称服务器。全球共有13个根名称服务器,它们负责将查询引导至相应的TLD名称服务器。过去,这13个根服务器分布在特定的地理区域,但如今,它们主要通过任播技术在全球范围内分布。
任播是一种根据位置、拥塞或链路健康状况等因素,将流量路由到不同目的地的技术。使用任播时,计算机可以向特定IP发送数据报,但根据某些因素,该数据报可能被路由到多个不同实际目的地中的一个。这也说明,实际上早已不止13台物理根名称服务器,更好的理解是,它们是13个提供根名称查询服务的权威机构。

根服务器会用一个应被查询的TLD名称服务器的地址来响应DNS查询。TLD代表顶级域名,是分层DNS名称解析系统的顶层。TLD是任何域名的最后一部分。再次以 www.facebook.com 为例,.com 部分应被视为TLD。我们将在后续课程中更详细地介绍域名的不同组成部分。
对于每个存在的TLD,都有一个TLD名称服务器。但就像根服务器一样,这并不意味着每个TLD只有一台物理服务器。它很可能是负责每个TLD的、可通过任播访问的全球分布式服务器集群。
TLD名称服务器会再次以重定向响应,这次是告知执行名称查询的计算机应联系哪个权威名称服务器。
权威名称服务器负责域名的最后两部分,这是单个组织可能负责DNS查询的解析级别。以 www.weather.com 为例,TLD名称服务器会将查询指向 weather.com 的权威服务器,该服务器很可能由运营该网站的组织——天气频道本身控制。
最终,DNS查询被重定向到 weather.com 的权威服务器,该服务器最终会提供目标服务器的实际IP地址。


分层系统的重要性
这种严格的分层结构对互联网的稳定性至关重要。确保所有完整的DNS解析都经过严格监管和控制的一系列查询步骤以获得正确响应,是防止恶意方重定向流量的最佳方法。您的计算机会盲目地将流量发送到被告知的任何IP地址,因此,通过使用像DNS这样由受信任实体控制的分层系统,我们可以更好地确保DNS查询响应的准确性。
现在您已经了解了其中涉及的众多步骤,应该就能理解我们为何信任本地名称服务器来缓存DNS查询了。这是为了避免为每个TCP连接都执行完整的查询路径。事实上,从手机到台式机,您的本地计算机通常也有自己的临时DNS缓存,这样它甚至无需为每个TCP连接都去打扰其本地名称服务器。
总结
本节课中我们一起学习了域名系统(DNS)的核心工作原理。我们了解到,DNS通过一个包含缓存、递归、根、TLD和权威服务器的分层系统,将域名转换为IP地址。本地缓存和TTL机制极大地提高了查询效率,而严格的分层结构则保障了互联网的稳定与安全。理解这些步骤是掌握网络基础支持的关键。
049:DNS与UDP 🖥️🔍

在本节课中,我们将要学习域名系统(DNS)为何以及如何主要使用用户数据报协议(UDP)作为其传输层协议,而不是传输控制协议(TCP)。我们将通过对比两种协议在DNS查询过程中的数据包数量,来理解UDP在特定场景下的优势。
概述
DNS是应用层服务的一个典型例子,它使用UDP而非TCP作为传输层协议。这主要基于几个简单的原因。上一节我们介绍了TCP和UDP的基本区别,本节中我们来看看这些区别如何影响DNS的工作方式。
UDP与TCP的核心区别
TCP和UDP之间最大的区别在于,UDP是无连接的。这意味着通信前无需建立连接,通信后也无需断开连接。
公式表示:
UDP = 无连接
TCP = 面向连接(三次握手 + 四次挥手)
因此,总体需要传输的流量要少得多。一个单一的DNS请求及其响应通常可以放入一个UDP数据报中,这使其成为无连接协议的理想选择。
为何DNS使用UDP?
DNS可能会产生大量流量。虽然DNS条目会缓存在本地机器和缓存名称服务器上,但如果需要处理完整的域名解析过程,涉及的流量就会显著增加。
为了直观理解,让我们看看如果通过TCP进行完整的DNS查找会是怎样的情景。
以下是使用TCP进行完整递归DNS查询所需的步骤和数据包数量:
- 建立连接:请求主机向本地名称服务器(端口53)发送SYN包,服务器回复SYN-ACK,主机再回复ACK完成三次握手。(3个包)
- 发送请求:主机发送实际的DNS查询请求:“我需要
foo.com的IP地址”。(1个包) - 确认请求:名称服务器回复ACK确认收到请求。(1个包,累计5个)
- 查询根服务器:本地缓存服务器没有记录,需向根服务器查询
.com顶级域的负责服务器。这需要新一轮的三次握手、请求、确认、响应和确认。(11个包,累计16个) - 查询TLD服务器:递归名称服务器重复上述过程,向
.comTLD服务器查询权威名称服务器。(11个包,累计27个) - 查询权威服务器:递归名称服务器再次重复过程,向权威名称服务器查询
foo.com的实际IP地址。(11个包,累计38个) - 返回结果:本地名称服务器将IP地址返回给最初的主机,主机发送ACK确认。(2个包,累计40个)
- 关闭连接:通过四次挥手关闭TCP连接。(4个包,累计44个)
最终,通过TCP完成一次完整的递归DNS请求至少需要 44个数据包。

使用UDP的DNS查询过程
现在,让我们看看使用UDP进行同样的查询会是怎样的情况。预告一下:所需的数据包少得多。
以下是使用UDP进行DNS查询的步骤:
- 原始计算机向其本地名称服务器(端口53)发送一个UDP数据包,请求
foo.com的IP地址。(1个包) - 本地名称服务器作为递归服务器,向根服务器发送一个UDP数据包。
- 根服务器回复一个包含正确TLD名称服务器的响应。(累计3个包)
- 递归名称服务器向TLD服务器发送一个数据包。
- TLD服务器回复一个包含正确权威名称服务器的响应。(累计5个包)
- 递归名称服务器向权威名称服务器发送最终请求。
- 权威名称服务器回复一个包含
foo.comIP地址的响应。(累计7个包) - 最后,本地名称服务器将
foo.com的IP地址回复给最初发出请求的DNS解析器。(累计8个包)
最终,通过UDP完成同样的查询仅需要 8个数据包,数量远少于TCP。
错误恢复机制
你可能会想,UDP本身没有错误恢复机制,这该如何处理?答案很简单:如果DNS解析器没有收到响应,它就直接再次询问。

基本上,TCP在传输层提供的功能,由DNS在应用层以最简单的方式实现了。DNS服务器只需要关心响应传入的查询,而DNS解析器只需要执行查询,并在失败时重复操作。这充分展示了DNS和UDP的简洁性。
例外情况:DNS over TCP
需要指出的是,DNS over TCP 确实存在,并且也在广泛使用。
随着网络变得越来越复杂,并非所有DNS查询响应都能放入单个UDP数据报中。在这种情况下,DNS名称服务器会回复一个数据包,说明响应太大。然后,DNS客户端将建立TCP连接来执行查询。
总结
本节课中我们一起学习了DNS主要使用UDP协议的原因。通过对比可以看到,TCP的连接管理(握手和挥手)带来了巨大的开销,而对于DNS这样简单、频繁的查询-响应服务,这种开销是不必要的。UDP的无连接特性使其成为DNS的理想选择,极大地减少了完成查询所需的数据包数量,提升了效率。同时,我们也了解到在响应数据过大等特殊情况下,DNS也会使用TCP作为后备方案。这完美地解释了为什么在拥有TCP这样可靠的协议之外,我们还需要UDP这样的协议。
050:IT职业路径与核心技能

在本节课中,我们将探讨IT支持领域的工作内容、所需的核心心态与技能,以及进入该行业的多种路径。我们将了解IT工作的本质,并打破关于从事技术行业需要高智商或特定学历的迷思。
IT工作的本质与挑战
上一节我们介绍了IT领域的广泛性,本节中我们来看看IT工作的具体内容。IT专业人员需要与多种不同的系统协同工作。
以下是IT工作中可能涉及的主要系统类型:
- 服务器
- 数据库
- 各种版本的操作系统
作为一名网络工程师,必须理解所有这些组件如何协同工作。这更像是一个需要热情和驱动力的领域,而非单纯依赖天赋。
打破迷思:热情胜过天赋
许多人认为从事计算机、编程或网络工作需要是天才,或者擅长数学和科学。但关键在于,这并非关乎智力水平,而更多地取决于你的热情和学习的驱动力。
你不需要是天才,你只需要具备自我驱动力,能够自学并提升自我。一位导师给出的最佳建议是:最大化你的潜力。这个原则适用于生活的各个领域,尤其是在IT和技术行业,因为你很可能永远不会是房间里最聪明的人。
多元化的入行路径
关于IT行业的另一个常见担忧是学历。我认为,对于IT职位而言,正规教育并非必需。进入这个领域有许多路径,不同的人选择了不同的道路。
如果有人因为自己没有四年制大学学位或特定证书而感到紧张,这没关系。IT是一个看重知识与基础的领域。只要掌握信息并打好基础,你就能实现想要的职业成功。
技术的力量与个人满足感
当我们审视技术在日常生活中的作用时,选择IT行业是顺理成章的。就个人而言,我热爱解决问题,喜欢接受挑战,而技术恰恰提供了所有这些待解决的挑战和谜题。
IT作为职业生涯的基石
因此,我常告诉人们,将IT作为起点,是迈向任何你下一步想从事的事业的基础。它是一个技术 umbrella,你可以尝试许多不同的事物,然后,如果你愿意,再逐渐转向更专业化的领域。
本节课中我们一起学习了IT工作的核心是整合多种系统,成功的关键在于热情与自我驱动力而非高智商,进入IT行业存在多元化路径且正规学历非绝对必需,以及IT技能是未来职业发展的强大基石。记住,最大化你的潜力,打好基础,你就能在IT领域找到属于自己的成功道路。
051:DNS资源记录类型详解 🧩

在本节课中,我们将要学习DNS(域名系统)中几种核心的资源记录类型。DNS是IT支持专家排查网络问题时必须掌握的关键技术之一。理解不同的资源记录类型,有助于我们了解域名如何解析到IP地址、如何实现负载均衡以及如何为特定服务(如邮件)进行定向。
上一节我们介绍了DNS的基本工作原理,本节中我们来看看DNS在实际操作中依赖的各种资源记录类型。
核心资源记录类型
DNS通过一系列已定义的资源记录类型来运作,这些类型允许进行不同种类的DNS解析。虽然存在数十种不同的记录类型,但许多仅用于非常特殊的目的。以下我们将介绍最基础的几种。
A记录
最常见的资源记录称为A记录。A记录用于将某个域名指向一个特定的IPv4 IP地址。
在之前对DNS的讨论中,我们假设DNS解析器请求的是域名的A记录。在最基本的用法中,一个域名可以配置一个A记录。但一个域名也可以拥有多个A记录。
这允许使用一种称为DNS轮询的技术,以便在多个IP地址之间平衡流量。轮询是一种按顺序逐个遍历列表中项目的概念,目的是确保列表中被选中的每个条目获得大致相等的平衡。
以下是DNS轮询的工作流程示例:
- 假设我们负责域名
www.microsoft.com。为了在多个服务器间平衡流量,我们可以在权威名称服务器上为该域名配置4个A记录,对应IP地址:10.1.1.1、10.1.1.2、10.1.1.3和10.1.1.4。 - 当DNS解析器首次查找
www.microsoft.com时,它会按配置顺序收到全部四个IP地址:首先是10.1.1.1,然后是10.1.1.2,接着是10.1.1.3,最后是10.1.1.4。解析计算机会尝试使用第一个条目10.1.1.1,但也知道其他三个地址,以防连接失败。 - 下一台计算机执行相同的DNS查找时,同样会收到全部四个IP地址,但顺序会发生变化:第一个条目变为
10.1.1.2,然后是10.1.1.3、10.1.1.4,最后是10.1.1.1。 - 这种模式会在每次DNS解析尝试中持续,循环遍历所有已配置的A记录,从而在这些IP地址之间平衡流量。

这就是DNS轮询逻辑的基本工作原理。
AAAA记录
另一种越来越流行的资源记录类型是AAAA记录(四A记录)。AAAA记录与A记录非常相似,区别在于它返回的是IPv6地址,而不是IPv4地址。我们将在未来的模块中详细介绍IPv6。
CNAME记录
CNAME记录也非常常见。CNAME记录用于将流量从一个域名重定向到另一个域名。
例如,假设微软的Web服务器运行在 www.microsoft.com。他们希望确保用户直接在浏览器中输入 microsoft.com 也能被正确重定向。通过为 microsoft.com 配置一个解析到 www.microsoft.com 的CNAME记录,解析客户端就会知道需要再次尝试解析 www.microsoft.com,然后使用第二次解析返回的IP地址。
CNAME记录非常有用,因为它确保你只需在一个地方更改服务器的规范IP地址。实际上,CNAME就是“规范名称”的缩写。
对比两种实现方式:
- 方式一(使用A记录):为
microsoft.com和www.microsoft.com分别设置相同的A记录。这可以工作,但如果底层IP地址发生变化,就需要在两个地方(两个域名的A记录)进行修改。 - 方式二(使用CNAME记录):设置一个CNAME记录,将
microsoft.com指向www.microsoft.com。这样,你只需更改www.microsoft.com的A记录,就能确保指向这两个域名的客户端都能获得新的IP地址。
对于只有两条记录的情况,这可能看起来区别不大,但对于在网络上拥有复杂存在的大型公司,可能会有数十个此类重定向。始终只有一个“真相来源”会更容易管理。
MX记录
另一个重要的资源记录类型是MX记录。MX代表“邮件交换”,该记录用于将电子邮件传递到正确的服务器。
许多公司在不同的机器上运行其Web服务器和邮件服务器,这些机器拥有不同的IP地址。因此,MX记录可以轻松确保电子邮件被递送到公司的邮件服务器,而其他流量(如Web流量)则被递送到其Web服务器。
SRV记录
与MX记录非常相似的一种记录类型是SRV记录。SRV代表“服务记录”,用于定义各种特定服务的位置。
它的用途与MX资源记录类型完全相同,但有一个区别:MX记录仅用于邮件服务,而SRV记录可以定义为返回许多不同服务类型的详细信息。例如,SRV记录通常用于返回像CalDAV(日历和日程安排服务)这类服务的记录。
TXT记录
TXT记录类型很有趣。TXT代表“文本”,最初设计仅用于将一些描述性文本与域名关联,供人类阅读。其想法是,你可以留下便条或消息,让人们发现和阅读,以了解更多关于你网络的任意细节。
但随着互联网及其上运行的服务变得越来越复杂,TXT记录越来越多地用于传递供其他计算机处理的额外数据。由于TXT记录有一个完全自由格式的字段,聪明的工程师已经找到了利用它来传递DNS等系统原本未打算传递的数据的方法。这非常巧妙,对吧?
TXT记录通常用于向你委托其他组织处理的域名服务传达配置偏好。例如,TXT记录通常用于向“电子邮件即服务”提供商(即为你处理电子邮件递送的公司)传递额外信息。
其他记录类型
还有许多其他常用的DNS资源记录类型,例如NS记录或SOA记录,它们用于定义关于DNS区域的权威信息。我们将在未来的视频中更详细地介绍DNS区域,敬请关注。
本节课中我们一起学习了DNS的核心资源记录类型,包括用于IPv4地址解析的A记录、用于IPv6的AAAA记录、用于域名重定向的CNAME记录、用于邮件路由的MX记录、用于定义通用服务位置的SRV记录,以及用途灵活的TXT记录。理解这些记录类型是掌握DNS管理和网络故障排除的基础。
052:域名的结构 🌐

在本节课中,我们将要学习域名系统(DNS)中域名的基本结构。域名是互联网上定位网站的关键,理解其组成部分对于IT支持工作至关重要。我们将详细拆解一个域名的三个主要部分,并解释它们各自的作用。

任何给定的域名都包含三个主要部分,每个部分都服务于特定的目的。

我们以域名 www.google.com 为例。这三个部分很容易识别,因为它们之间都用句点分隔。它们分别是 www、google 和 com。
顶级域名(TLD)🏷️
上一节我们介绍了域名的整体结构,本节中我们来看看域名的最后一部分。
域名的最后一部分被称为顶级域名或TLD。在我们的例子中,它就是域名中的 .com 部分。
可用的顶级域名数量是有限制的,尽管近年来这个数量增长了很多。

以下是常见的顶级域名类型:
- 通用顶级域名:你可能已经很熟悉了,例如
.com、.net、.edu等。 - 国家和地区顶级域名:你可能也见过一些特定国家或地区的顶级域名,例如代表德国的
.de或代表中国的.cn。
由于互联网的发展,许多最初定义的顶级域名已经变得非常拥挤。因此,如今出现了许多个性化的顶级域名,从 .museum 到 .pizza 应有尽有。
顶级域名的管理和定义由一个名为 ICANN 的非营利组织负责,全称是互联网名称与数字地址分配机构。ICANN 是 IANA 的姊妹组织,它们共同帮助定义和控制全球 IP 地址空间以及全球 DNS 系统。
二级域名(域名)🔑
了解了顶级域名后,我们接下来看看域名的核心部分。
域名通常用来指代域名的第二部分,在我们的例子中就是 google。域名用于划分控制权从 TLD 名称服务器转移到权威名称服务器的界限。这通常由 ICANN 之外的独立组织或个人控制。


以下是关于二级域名的关键点:
- 任何个人或公司都可以注册和选择域名。
- 但它们都必须以预定义的某个顶级域名结尾。
子域名(主机名)🏠
最后,我们来探讨域名的第三部分。
www 这部分被称为子域名。如果它被分配给单一的主机,有时也被称为主机名。
当你把所有部分组合在一起时,就得到了所谓的完全限定域名或 FQDN。虽然向注册商正式注册域名需要付费,但任何控制着这样一个已注册域名的人都可以自由选择和分配子域名。


注册商只是一家与 ICANN 有协议、可以销售未注册域名的公司。我们将在未来的模块中更多地讨论如何处理注册商。
从技术上讲,你可以拥有很多子域名。例如,host.sub.sub.subdomain.domain.com 可能是完全有效的,尽管你很少看到有这么多层级的完全限定域名。DNS 在技术上最多支持一个完全限定域名有 127 个层级。
域名规范限制 ⚠️
除了层级限制,域名在指定方式上还有其他一些限制。

以下是主要的规范限制:
- 每个独立的部分(如
www、google)长度不能超过 63 个字符。 - 一个完整的 FQDN 总长度被限制在 255 个字符以内。
本节课中我们一起学习了域名的完整结构。我们了解到一个完全限定域名由顶级域名、二级域名和子域名三部分组成,并认识了管理它们的组织 ICANN 以及相关的长度与层级限制。理解这些是掌握 DNS 工作原理和进行网络故障排查的基础。
053:DNS区域 🌐

在本节课中,我们将要学习DNS区域的概念。DNS区域是DNS层次结构中的一个重要部分,它允许网络管理员更轻松地管理域名下的多个层级和资源记录。我们将探讨DNS区域的定义、作用、配置方式以及相关的资源记录类型。
上一节我们介绍了权威名称服务器负责响应特定域名的解析请求。本节中我们来看看DNS区域的具体概念和作用。
权威名称服务器不仅负责响应域名解析请求,还负责管理一个特定的DNS区域。DNS区域是一个层次化的概念。我们之前介绍的根名称服务器负责根区域。每个顶级域名服务器负责其特定TLD的区域。而我们所说的权威名称服务器则负责其下更细粒度的区域。根名称服务器和TLD名称服务器实际上也是权威名称服务器,只是它们负责的区域是特殊情况。
需要指出的是,区域之间不重叠。例如,负责 .co 顶级域名的TLD名称服务器的管理权限并不涵盖 google.com 域名。相反,其权限止于负责 google.com 的权威服务器。

DNS区域的目的是允许更轻松地控制域名的多个层级。
随着单个域中资源记录数量的增加,管理所有记录会变得更加麻烦。网络管理员可以通过将其配置拆分为多个区域来缓解这个问题。
让我们想象一家拥有 largecompany.com 域名的大型公司。这家公司在洛杉矶、巴黎和上海设有办事处。假设每个办事处大约有200人,每人都有自己的台式电脑。如果全部配置为单个区域,则需要跟踪600条A记录。

该公司可以采取的做法是将每个办事处置于自己的区域中。这样,我们可以有 la.largecompany.com、pa.largecompany.com 和 sh.largecompany.com 作为子域,每个子域都有自己的DNS区域。现在,这个设置总共需要四个权威名称服务器:一个用于 largecompany.com,另外三个分别用于每个子域。

区域通过所谓的区域文件进行配置。区域文件是简单的配置文件,用于声明特定区域的所有资源记录。


以下是区域文件必须包含的内容:
- 一个SOA(起始授权机构)资源记录声明。此SOA记录声明了区域以及对其具有权威性的名称服务器的名称。
除了SOA记录,您通常还会找到NS记录。NS记录指示可能也负责此区域的其他名称服务器。
为了简单起见,我们在讨论负责某个区域的服务器时,一直使用单数形式。但实际上,无论是在根级别、TLD级别还是域级别,通常都会涉及多台具有自己FQDN和IP地址的物理服务器。对于DNS这样重要的服务,部署多台服务器是很常见的。原因在于,如果一台服务器出现问题或遭受硬件故障,您始终可以依赖其他服务器来处理DNS流量。
除了SOA和NS记录,您还会找到我们已经介绍过的其他部分或全部资源记录类型,例如A记录、AAAA记录和CNAME记录,以及该区域所提供记录的默认TTL值等配置。
就像子域可以深入很多层一样,区域也可以配置为多层结构。但就像子域一样,很少看到超过几层的区域。
有时您还会看到所谓的反向查找区域文件。这些文件允许DNS解析器查询一个IP地址,并获取与之关联的FQDN。这些文件与区域文件相同,区别在于,您会发现其中主要是PTR(指针)资源记录声明,而不是将名称解析为IP的A记录和AAAA记录。正如您可能猜到的,PTR记录将IP地址解析为名称。


本节课中我们一起学习了DNS区域。我们了解到DNS区域是DNS层次化管理的关键,它通过将大型域划分为更小的、更易管理的部分来简化网络管理。区域文件是配置这些区域的核心,其中包含SOA、NS、A、PTR等各种资源记录。理解区域的概念对于管理复杂的网络环境和确保DNS服务的可靠性至关重要。
054:DHCP概述 🖧

在本节课中,我们将学习动态主机配置协议(DHCP)。DHCP是网络管理中一个至关重要的协议,它能自动为网络上的设备分配IP地址和其他网络配置信息,从而极大地简化了网络管理员的工作。
网络配置的挑战
管理网络上的主机可能是一项艰巨且耗时的任务。在现代基于TCP/IP的网络中,每台计算机至少需要配置四样东西:一个IP地址、本地网络的子网掩码、一个主网关和一个名称服务器。单独来看,这四样东西似乎不多,但当您需要在数百台机器上配置它们时,就会变得非常繁琐。
在这四样东西中,有三样在网络上的每个节点上很可能都是相同的:子网掩码、主网关和DNS服务器。但最后一项——IP地址,在网络上的每个节点上都必须不同。这可能需要大量复杂的配置工作。
DHCP的引入
这正是DHCP(动态主机配置协议)发挥作用的地方。DHCP是IT支持专家在排除网络故障时必须了解的关键知识。



DHCP是一个应用层协议,它自动化了网络上主机的配置过程。有了DHCP,计算机在连接到网络时可以向DHCP服务器查询,并一次性接收所有网络配置信息。
DHCP不仅减少了在单个网络上配置大量网络设备的管理开销,还有助于解决必须为哪台机器分配哪个IP地址的问题。
静态IP与动态IP
网络上的每台计算机都需要一个IP地址来进行通信,但其中很少有计算机需要一个众所周知的IP地址。
对于网络上的服务器或网络设备(如您的网关路由器),一个静态且已知的IP地址非常重要。例如,网络上的设备需要始终知道其网关的IP地址。如果本地DNS服务器出现故障,网络管理员仍然需要通过其IP地址连接到其中一些设备。如果没有为DNS服务器配置静态IP,就很难连接到它以诊断任何故障问题。
但对于一堆客户端设备,如台式机、笔记本电脑甚至手机,真正重要的是它们拥有正确网络上的一个IP地址,具体是哪个IP地址则不那么重要。
DHCP的运作方式
使用DHCP,您可以配置一个为这些客户端设备预留的IP地址范围。这确保了这些设备中的任何一个都可以在需要时获得一个IP地址,同时解决了必须维护网络上每个节点及其对应IP地址列表的问题。


以下是DHCP可以运作的几种标准方式:
动态分配

DHCP动态分配是最常见的方式,其运作方式正如我们刚才所描述的:为客户端设备预留一个IP地址范围,当这些设备请求时,将其中一个IP地址分配给它们。
在动态分配下,计算机的IP地址几乎每次连接到网络时都可能不同。
自动分配


自动分配与动态分配非常相似,也是预留一个IP地址范围用于分配。主要区别在于,DHCP服务器被要求记录过去它曾将哪些IP地址分配给了哪些设备。


利用这些信息,DHCP服务器在可能的情况下,每次都会将相同的IP地址分配给同一台机器。

固定分配
最后,还有一种称为固定分配的方式。固定分配需要一个手动指定的MAC地址及其对应IP的列表。
当计算机请求IP时,DHCP服务器会在表中查找其MAC地址,并分配与该MAC地址对应的IP。如果未找到MAC地址,DHCP服务器可能会回退到自动或动态分配,或者可能完全拒绝分配IP。这可以作为一种安全措施,确保只有那些MAC地址已在DHCP服务器上专门配置过的设备才能获得IP并在网络上通信。

DHCP的扩展功能
值得注意的是,DHCP发现可用于配置我们在此处提及的更多内容。除了IP地址和主网关等,您还可以使用DHCP来分配诸如NTP服务器之类的东西。NTP代表网络时间协议,用于保持网络上所有计算机的时间同步。我们将在后续课程中更详细地介绍,但现在只需知道DHCP可以用于比IP、子网掩码、网关和DNS服务器更多的东西。

总结
本节课中,我们一起学习了动态主机配置协议(DHCP)。我们了解了手动配置网络设备的挑战,以及DHCP如何通过自动分配IP地址、子网掩码、网关和DNS服务器信息来简化这一过程。我们还探讨了DHCP的三种主要分配方式:动态分配、自动分配和固定分配,并简要提及了DHCP的其他功能,如分配NTP服务器。掌握DHCP对于有效管理和排除网络故障至关重要。
055:DHCP实战详解 🌐

在本节课中,我们将深入探讨DHCP(动态主机配置协议)的实际工作流程。DHCP是一种应用层协议,这意味着它依赖于传输层、网络层、数据链路层和物理层来运行。但你可能已经注意到,DHCP的核心目的正是帮助配置网络层本身。本节将详细解析DHCP如何在网络层配置尚未就绪的情况下完成通信。
DHCP发现过程概述

DHCP发现过程是客户端获取网络配置信息的关键步骤。整个过程包含四个主要阶段,我们将逐一进行解析。
以下是DHCP发现过程的四个步骤:
- 服务器发现:DHCP客户端向网络发送DHCP发现消息。
- IP地址提供:DHCP服务器响应,提供一个可用的IP地址。
- IP地址请求:客户端接受提供的IP地址,并向服务器发送请求。
- 请求确认:服务器确认请求,完成IP地址分配。
第一步:服务器发现
上一节我们概述了DHCP的四个步骤,本节中我们来看看第一步——服务器发现的具体细节。

由于客户端机器没有IP地址,也不知道DHCP服务器的IP地址,因此它会构造一个特殊的广播消息,即DHCP发现消息。DHCP协议在UDP端口67上监听,而DHCP发现消息总是从UDP端口68发出。
因此,DHCP发现消息被封装在一个目标端口为67、源端口为68的UDP数据报中。这个UDP数据报又被封装在一个目标IP为255.255.255.255(广播地址)、源IP为0.0.0.0的IP数据报内。这条广播消息会被发送到局域网上的每一个节点,如果存在DHCP服务器,它就会收到这条消息。
第二步:IP地址提供


在服务器发现之后,DHCP服务器会检查自身的配置,并决定向客户端提供哪个IP地址(如果有的话)。这个决定取决于服务器是配置为动态分配、自动分配还是固定地址分配。
服务器的响应会以DHCP提供消息的形式发送。该消息的目标端口是68,源端口是67,目标IP是广播地址255.255.255.255,源IP则是DHCP服务器自身的实际IP地址。
由于DHCP提供消息也是广播,它会到达网络上的每一台机器。原始客户端会识别出这条消息是发给自己的,因为DHCP提供消息中包含一个指定了发送DHCP发现消息的客户端MAC地址的字段。客户端机器随后会处理这条DHCP提供消息,查看服务器提供了哪个IP地址。
第三步:IP地址请求

在收到IP地址提供后,客户端通常会接受这个提议。从技术上讲,DHCP客户端可以拒绝这个提议。例如,同一网络上可能运行着多个DHCP服务器,客户端可能被配置为只接受特定范围内的IP地址,但这种情况比较少见。
更常见的情况是,DHCP客户端会用一条DHCP请求消息来回应DHCP提供消息。这条消息本质上是在说:“是的,我想接受你提供给我的IP地址。”由于IP地址尚未被正式分配,这条消息的源IP仍然是0.0.0.0,目标IP仍然是广播地址255.255.255.255。
第四步:请求确认
最后,DHCP服务器收到DHCP请求消息,并用一条DHCP确认消息进行响应。这条消息同样发送到广播IP255.255.255.255,源IP对应DHCP服务器的实际IP地址。
同样,客户端会通过消息字段中包含的自身MAC地址来识别这条消息是发给自己的。此时,客户端计算机的网络协议栈就可以使用DHCP服务器提供的配置信息来设置自己的网络层配置了。

DHCP租约与生命周期
至此,作为DHCP客户端的计算机应该已经获得了在其所连接网络上完全运行所需的所有信息。所有这些配置被称为DHCP租约,因为它包含一个过期时间。
一个DHCP租约可能持续数天,也可能只有很短的时间。一旦租约到期,DHCP客户端就需要通过重新执行整个DHCP发现过程来协商一个新的租约。客户端也可以向DHCP服务器释放其租约,这通常在它断开网络连接时进行。这将允许DHCP服务器将分配出去的IP地址返回到其可用IP地址池中。
总结
本节课中,我们一起学习了DHCP协议的实际工作流程。我们详细解析了DHCP发现的四个步骤:服务器发现、IP地址提供、IP地址请求和请求确认。我们还了解了DHCP租约的概念及其生命周期管理。掌握DHCP的工作原理,对于理解和维护网络自动配置至关重要。
056:NAT基础 🧭

在本节课中,我们将要学习网络地址转换(NAT)的基本概念和工作原理。NAT是一种重要的网络技术,它不仅能帮助节约IP地址资源,还能为内部网络提供一层安全保护。我们将通过简单的例子,了解NAT如何运作,以及它在实际网络环境中的应用。
什么是NAT? 🔄
上一节我们介绍了DHCP和DNS等协议,本节中我们来看看NAT。与DNS和DHCP这类定义明确的标准协议不同,网络地址转换(NAT)更像是一种技术,而非一个严格的标准。
这意味着,我们本节课讨论的内容可能比其他主题更偏向于高层概念。不同的操作系统和网络硬件厂商对NAT的具体实现方式各不相同,但其达成的目标概念是基本一致的。
网络地址转换,顾名思义,就是将一个IP地址转换成另一个IP地址。
为何需要NAT? 🛡️
以下是实施NAT的几个主要原因:
- 安全防护:NAT可以隐藏内部网络设备的真实IP地址。
- 节约IPv4地址空间:NAT有助于缓解有限的公共IPv4地址资源紧张的问题。我们将在本节课稍后部分讨论NAT与IPv4地址空间的关系。

现在,让我们先聚焦于NAT本身的工作原理,以及它如何为网络提供额外的安全措施。
NAT如何工作? ⚙️
在最基本的层面上,NAT是一种允许网关(通常是路由器或防火墙)重写出站IP数据报源IP地址的技术。网关会保留原始IP地址,以便在收到响应时能正确地将数据重写并转发回原始设备。
为了更好地解释这一点,我们来看一个简单的NAT示例。
假设我们有两个网络:
- 网络A:使用
10.1.1.0/24地址空间。 - 网络B:使用
192.168.1.0/24地址空间。
在这两个网络之间有一台路由器,它在网络A的接口IP是 10.1.1.1,在网络B的接口IP是 192.168.1.1。
现在,我们在这些网络上放置两台计算机:
- 计算机1 在网络A上,IP地址为
10.1.1.100。 - 计算机2 在网络B上,IP地址为
192.168.1.100。

计算机1希望与计算机2上的一个Web服务器通信,因此它在所有网络层构建了适当的数据包,并将其发送到它的主网关,即位于两个网络之间的路由器。
NAT的处理过程 📦
到目前为止,这很像我们之前的许多示例。但在本例中,路由器被配置为对所有出站数据包执行NAT。
通常情况下,路由器会检查IP数据报的内容,将生存时间(TTL)减1,重新计算校验和,然后在网络层转发其余数据而不做改动。

但是,在启用NAT的情况下,路由器还会重写源IP地址。在本例中,源IP地址被改写为路由器在网络B上的IP地址,即 192.168.1.1。
当数据报到达计算机2时,看起来它像是源自路由器,而不是计算机1。
现在,计算机2构建其响应数据包并将其发送回路由器。路由器知道这个流量实际上是发送给计算机1的,因此在转发之前,它会重写目的IP字段。

IP伪装与安全 🎭
在这个例子中,NAT所做的是向计算机2隐藏计算机1的IP地址。这被称为 IP伪装。
IP伪装是一个重要的安全概念。这里最基本的概念是:如果外部设备不知道你计算机的IP地址,它们就无法与之建立连接。
通过使用我们刚刚描述的方式,我们实际上可以在网络A上拥有数百台计算机。对于外部世界(网络B)来说,它们所有的IP地址都被路由器转换成了路由器自己的IP地址。整个网络A的地址空间都受到了保护并且不可见。这被称为 一对多NAT。如今,你在许多局域网中都能看到它的应用。
本节课中我们一起学习了网络地址转换(NAT)的基础知识。我们了解到NAT是一种将私有IP地址转换为公共IP地址(或反之)的技术,它不仅能有效节约宝贵的IPv4地址资源,还能通过IP伪装为内部网络设备提供一层重要的安全屏障。理解NAT是掌握现代网络,尤其是局域网与互联网如何交互的关键一步。
057:NAT与传输层
在本节课中,我们将要学习网络地址转换在传输层的工作原理。我们将探讨当数据包从内部网络发往外部网络时,路由器如何管理复杂的连接映射,特别是当多个内部设备共享一个外部IP地址时。我们将重点介绍两种关键技术:端口保持和端口转发。
概述
网络层的NAT相对容易理解,一个IP地址通过一个设备(通常是路由器)被转换为另一个IP地址。但在传输层,情况会变得更加复杂,需要运用多种额外技术来确保一切正常工作。
端口保持技术
上一节我们介绍了网络层NAT的基本概念,本节中我们来看看传输层如何处理多对一的连接映射。我们曾讨论过成百上千台计算机如何通过NAT将其出站流量转换为单个IP地址。当流量是出站时,这很容易理解,但一旦涉及返回流量,情况就变得复杂一些。
我们现在可能有数百个响应都指向同一个IP地址,而位于该IP地址的路由器需要弄清楚哪些响应应该发送给哪台计算机。
以下是实现这一点的最简单方法——端口保持:
- 原理:端口保持是一种技术,即客户端选择的源端口与路由器使用的端口保持一致。
- 端口选择:请记住,出站连接会从临时端口(即49152到65535范围内的端口)中随机选择一个源端口。
- 工作流程:在最简单的设置中,配置了NAT出站流量的路由器会记录这个源端口是什么,并用它将流量引导回正确的计算机。
让我们通过一个例子来理解这个过程:
- 假设一台IP地址为
10.1.1.100的设备想要建立一个出站连接,操作系统的网络协议栈为此连接选择了端口51300。 - 当这个出站连接到达路由器时,路由器执行网络地址转换,将其自身的IP地址放入IP数据报的源地址字段。
- 但是,它保持TCP数据报中的源端口不变,并将此数据(内部IP与端口号的映射)存储在内部的一个表中。
- 现在,当流量返回到路由器的
51300端口时,它就知道这些流量需要被转发回IP地址10.1.1.100。
尽管临时端口的范围很大,但网络上的两台不同计算机仍有可能在同一时间选择相同的源端口。当这种情况发生时,路由器通常会随机选择一个未使用的端口来代替。
端口转发技术
关于NAT和传输层的另一个重要概念是端口转发。端口转发是一种可以配置特定目标端口,使其流量总是被传递到特定内部节点的技术。这种技术允许完全的IP伪装,同时仍能让服务响应传入的流量。
让我们再次使用我们的网络10.1.1.0/24来演示这一点。
假设有一台配置了IP地址为10.1.1.5的Web服务器。通过端口转发,外界甚至无需知道这个内部IP。潜在的Web客户端只需要知道路由器的外部IP,假设是192.168.1.1。
任何指向192.168.1.1的80端口的流量都会自动被转发到10.1.1.5。响应流量中的源IP会被重写,看起来像是路由器的外部IP。
这种技术不仅允许IP伪装,还简化了外部用户与同一组织运行的众多服务交互的方式。
让我们设想一家公司,它同时拥有一台Web服务器和一台邮件服务器,都需要对外界可访问,但它们运行在不同IP地址的不同服务器上。假设Web服务器的IP是10.1.1.5,邮件服务器的IP是10.1.1.6。
通过端口转发,访问这两种服务的流量都可以指向同一个外部IP(以及同一个DNS域名),但由于目标端口不同(例如Web用80,邮件用25或587),流量会被传递到完全不同的内部服务器。
总结


本节课中我们一起学习了NAT在传输层的运作机制。我们了解到,当多台内部设备共享一个外部IP时,路由器通过端口保持技术跟踪内部设备的源端口,以正确地将返回流量定向。同时,通过端口转发技术,路由器可以根据目标端口号,将外部对单一IP的访问请求精确地分发到内部不同的服务器上。这两种技术共同确保了在IP地址转换和共享的情况下,网络通信依然能够准确、高效地进行。
058:NAT、不可路由地址空间与IPv4的局限 🌐

在本节课中,我们将要学习IPv4地址耗尽这一重大挑战,以及网络地址转换(NAT)和不可路由地址空间如何作为关键的临时解决方案。我们将了解全球IP地址的分配机制,并探讨IPv4的局限性。
全球IP地址的分配与耗尽

自1988年以来,互联网号码分配机构(IANA)一直负责分配IP地址。在此期间,互联网以惊人的速度扩张。长久以来,人们预测42亿个可能的IPv4地址将被耗尽,而如今这一情况几乎已成现实。
一段时间以来,IANA的主要职责是向五个区域互联网注册管理机构(RIRs)分配地址块。这五个RIR分别是:
- AFRINIC:服务于非洲大陆。
- ARIN:服务于美国、加拿大和部分加勒比地区。
- APNIC:负责亚洲大部分地区、澳大利亚、新西兰和太平洋岛国。
- LACNIC:覆盖中美洲、南美洲以及ARIN未覆盖的加勒比地区。
- RIPE NCC:服务于欧洲、俄罗斯、中东和中亚部分地区。


这五个RIR负责向其地理区域内的组织分配IP地址块,而其中大多数RIR的地址已经耗尽。2011年2月3日,IANA将最后未分配的/8网络块分配给了各个RIR。

以下是各RIR地址耗尽的时间线:
- 2011年4月,APNIC的地址耗尽。
- 2012年9月,RIPE NCC紧随其后。
- 2014年6月,LACNIC的分配地址耗尽。
- 2015年9月,ARIN也宣告地址耗尽。
- 只有AFRINIC尚存部分地址,但预计也将在2018年耗尽。

维基百科有一篇关于IPv4地址耗尽及其时间线的优秀文章,视频后的阅读材料中附有其链接。

IPv4的局限与临时解决方案


这无疑是互联网面临的一场重大危机。IPv6最终将解决这些问题,我们将在本课程后续部分详细讨论。但在全球范围内实施IPv6尚需时日。目前,我们希望互联网继续发展,希望更多人和设备能够接入,但在没有IP地址可分配的情况下,需要一个变通方案。
好消息是,你已经了解了这个变通方案的主要组成部分:NAT和不可路由地址空间。
上一节我们看到了IPv4地址的枯竭,本节中我们来看看如何利用现有资源维持网络增长。
不可路由地址空间在RFC 1918中定义,包含几个任何人都可以使用的IP地址范围。由于互联网路由器不会将流量转发到这些地址,因此内部网络可以无限量地使用不可路由地址空间。这意味着当人们使用这些地址空间时,永远不会发生全局性的IP地址冲突。
以下是RFC 1918定义的私有地址范围:
10.0.0.0-10.255.255.255(10.0.0.0/8)172.16.0.0-172.31.255.255(172.16.0.0/12)192.168.0.0-192.168.255.255(192.168.0.0/16)
如今,不可路由地址空间之所以能广泛使用,主要得益于NAT等技术。通过NAT,你可以让成百上千台设备使用不可路由地址空间,却只需一个公共IP地址。所有这些计算机仍然可以向互联网发送和接收流量。
你只需要一个IPv4地址,通过NAT,拥有该IP地址的路由器就可以代表其背后的大量计算机。其核心原理是地址转换。当内网设备(使用私有IP,如192.168.1.10)访问外网时,NAT路由器会将其私有IP和端口号替换为路由器的公共IP和一个新的端口号,并将这个映射关系记录在NAT转换表中。当外部响应返回时,路由器再根据转换表将数据包转发回正确的内网设备。
这不是一个完美的解决方案,但在IPv6更广泛可用之前,不可路由地址空间和NAT技术必须承担起支撑互联网继续发展的重任。

总结

本节课中我们一起学习了IPv4地址的分配与耗尽危机,了解了全球五大区域互联网注册管理机构的角色及其地址耗尽的时间线。面对这一局限,我们深入探讨了关键的临时解决方案:不可路由地址空间(RFC 1918) 和网络地址转换(NAT)。正是这两项技术,使得我们能够在公共IPv4地址极度稀缺的情况下,继续连接海量的设备到互联网,为向IPv6的最终过渡赢得了宝贵时间。
059:虚拟专用网络(VPN)🔒

在本节课中,我们将要学习虚拟专用网络(VPN)。VPN是一种允许远程用户或网络安全地访问私有网络资源的技术。我们将了解VPN的工作原理、常见用途以及它如何通过加密隧道保障数据传输的安全。
企业出于多种原因需要保障其网络安全。为此,它们会使用我们已经讨论过的一些技术,例如防火墙、网络地址转换(NAT)以及不可路由的地址空间等。组织通常拥有需要保密的专有信息、仅供员工访问的网络服务以及其他资源。
保障网络安全最直接的方法之一是使用各种安全技术,确保只有物理连接到其局域网的设备才能访问这些资源。然而,员工并非总在办公室。他们可能在家办公或出差,但仍需要访问这些资源来完成工作。
这正是VPN发挥作用的地方。虚拟专用网络(VPN) 是一种技术,它允许将私有或本地网络扩展到可能不在同一本地网络上的主机。

VPN有多种类型,可实现多种不同功能,但其最常见的用途是让员工在办公室外时能够访问其公司的网络。VPN是一种隧道协议,这意味着它能提供对本地不可用资源的访问。在建立VPN连接时,你也可以说建立了一条VPN隧道。
让我们回到员工需要在办公室外访问公司资源的例子。员工可以使用VPN客户端,建立一条通往其公司网络的VPN隧道。

这将为他们的计算机配置一个虚拟接口,该接口的IP地址与其建立VPN连接的网络地址空间相匹配。通过从这个虚拟接口发送数据,计算机可以访问内部资源,就像它物理连接到该私有网络一样。

大多数VPN的工作原理是:利用传输层数据包的载荷部分,来承载一个加密的载荷。这个加密载荷实际上包含了完整的一套第二组数据包——即打算穿越远程网络的数据包的网络层、传输层和应用层信息。

本质上,这个载荷被传送到VPN的端点。在那里,所有其他层(封装层)被剥离并丢弃。然后,载荷被解密,留下VPN服务器处理新数据包的上三层(网络、传输、应用层)。接着,这些层被封装上正确的数据链路层信息,并通过网络发送出去。相反方向的数据传输也以类似但逆向的过程完成。
VPN通常需要严格的身份验证程序,以确保只有经过授权的计算机和用户才能连接。事实上,VPN是最早广泛应用双因素认证的技术之一。双因素认证是一种要求提供不仅仅是用户名和密码的认证技术,通常用户还需要通过专门的硬件或软件生成一个短期有效的数字令牌。
VPN也可用于建立站点到站点的连接。
从概念上讲,这与我们之前讨论的远程员工场景的工作原理没有太大区别。区别在于,是一个网络上的路由器(有时是专门的VPN设备)与另一个网络上的路由器或VPN设备建立VPN隧道。


这样,两个物理上分离的办公室就可以像一个网络一样运作,并通过隧道访问对方的网络资源。


需要明确指出的是,就像NAT一样,VPN是一个通用的技术概念,而非严格定义的单一协议。VPN有许多独特的实现方式,其具体工作原理的细节可能千差万别。

最重要的结论是:VPN是一种利用加密隧道技术,使得远程计算机或网络能够表现得如同它物理连接到了某个实际并未连接的网络一样的技术。
本节课中,我们一起学习了虚拟专用网络(VPN)。我们了解到VPN通过创建加密隧道,使远程用户和网络能够安全地访问私有资源。我们探讨了VPN的两种主要应用场景:远程访问和站点到站点连接,并理解了其核心在于利用加密载荷在公共网络上安全地传输私有网络数据。
060:代理服务详解 🖥️
在本节课中,我们将要学习计算机网络中的一个重要概念——代理服务。代理服务是一种在网络通信中扮演中间人角色的服务器,它在客户端和其他服务器之间工作,提供多种功能。
什么是代理服务?
代理服务是一台代表客户端去访问其他服务的服务器。代理位于客户端和其他服务器之间,它能提供一些额外的好处,例如匿名性、安全性、内容过滤和性能提升等。
如果这些描述听起来有些熟悉,那很好。我们之前已经介绍过一些代理的具体例子,比如网关路由器。虽然通常不这么称呼它,但网关完全符合代理的定义和工作原理。
代理的概念本身只是一个概念或抽象,它并不特指某种具体的实现。代理几乎存在于我们网络模型的每一层。在你的职业生涯中,可能会遇到数十种代理的例子,但这里我们只介绍几种最常见的。
常见的代理类型:Web代理
最常听到的“代理”一词,通常指的是Web代理。顾名思义,这是专门为Web流量设计的代理。Web代理可以服务于多种目的。
许多年前,当大多数互联网连接速度比今天慢得多的时候,许多组织使用Web代理来提升性能。通过使用Web代理,组织会将所有Web流量导向它,让代理服务器本身从互联网上获取网页数据。然后,代理会缓存这些数据。这样,如果其他人请求同一个网页,代理就可以直接返回缓存的数据,而不必每次都重新获取一份新的副本。
这种代理已经相当古老,如今不常使用了。原因之一是,现在大多数组织的网络连接速度足够快,缓存单个网页带来的好处不大。此外,网络也变得更加动态。访问 www.twitter.com 对于每个拥有自己Twitter账户的人来说,看到的内容都是不同的,因此缓存这些数据没有太大意义。
如今,Web代理更常见的用途可能是完全阻止某人访问像Twitter这样的网站。公司可能认为在工作时间访问Twitter会降低工作效率。通过使用Web代理,他们可以将所有Web流量导向代理,允许代理检查正在请求的数据,然后根据正在访问的网站来允许或拒绝该请求。
以下是Web代理的两种主要用途:
- 性能缓存(历史用途):
代理 -> 缓存网页 -> 返回给后续相同请求 - 内容过滤(现代用途):
代理 -> 检查请求(如www.twitter.com) -> 根据规则允许/拒绝
反向代理:负载均衡与解密
代理的另一个例子是反向代理。反向代理是一种服务,对于外部客户端来说,它看起来像是一台单一的服务器,但实际上它背后代表着多台服务器。
一个很好的例子是当今许多流行网站的架构。像Twitter这样非常受欢迎的网站,接收的流量如此之大,单台Web服务器根本不可能处理所有请求。如此受欢迎的网站可能需要很多很多台Web服务器,才能跟上处理所有传入请求的速度。
在这种情况下,反向代理可以作为其背后多台Web服务器的单一前端。从客户端的角度来看,他们似乎都连接到了同一台服务器。但在幕后,这台反向代理服务器实际上正在将这些传入的请求分发到许多不同的物理服务器上。这很像DNS轮询的概念,是一种负载均衡的形式。
反向代理被流行网站普遍使用的另一种方式是处理解密。现在,超过一半的网络流量都是加密的,而加密和解密数据是一个可能消耗大量处理能力的过程。你将在本项目的另一门课程中了解更多关于加密及其工作原理的知识。
现在部署反向代理,是为了使用专门为密码学构建的硬件来执行加密和解密工作,从而使Web服务器可以专注于提供内容。其过程可以概括为:
客户端 <--加密连接--> 反向代理(处理加/解密) <--内部网络--> 多台Web服务器(提供内容)

总结与回顾
本节课中我们一起学习了代理服务的核心概念。代理有多种形式,我们无法在这里全部涵盖,但最重要的要点是:代理是任何在客户端和另一台服务器之间充当中间人的服务器。

我们涵盖了很多内容,做得很好。在继续我们为你准备的测验和项目之前,请稍作休息。完成这些之后,再休息一下,然后回到这里学习下一个模块,我们将介绍互联网连接的历史。
061:连接互联网介绍 🌐

在本节课中,我们将要学习互联网连接的基本概念,了解连接互联网的各种设备与技术,并掌握广域网、无线网络及蜂窝网络的基础知识。
互联网是一个广阔且多样化的空间。它不仅规模巨大,连接到互联网的不同设备数量也同样惊人。如果我们尝试描述所有这些设备,它们的功能几乎是无穷无尽的。
连接到互联网的设备可以分为几个熟悉的类别。例如,台式机和笔记本电脑、服务器和数据中心、用于引导网络流量的路由器和交换机等。但这个列表还包括平板电脑和手机、自动取款机、工业设备、医疗设备,甚至一些汽车现在也连接到互联网。这个列表还在不断扩展。
上一节我们介绍了连接到互联网的各类设备,本节中我们来看看连接技术本身。


用由Cat5或Cat6电缆组成的基本物理层和完全由以太网组成的数据链路层来讨论一切,既简洁又简单。但这并不是设备实际连接到互联网时的工作方式。
用于连接人和设备的技术,与人和设备本身一样多样化。在本模块结束时,你将能够描述各种互联网连接技术。
以下是本模块结束时你将掌握的核心技能:
- 描述各种互联网连接技术。
- 定义广域网的组成部分。
- 概述无线和蜂窝网络的基础知识。
这些技能对于IT支持专家来说非常重要,因为你工作的一个重要部分就是确保人们能够上网。
在本节课中,我们一起学习了互联网连接的多样性,了解了连接设备的不同类别,并明确了后续将学习的核心技能:互联网连接技术、广域网以及无线与蜂窝网络的基础知识。这些是确保用户顺利联网的关键。
062:拨号调制解调器与点对点协议 📞
在本节课中,我们将要学习计算机网络发展早期的一种重要技术:拨号连接。我们将了解它如何利用电话网络进行数据传输,以及其核心设备——调制解调器的工作原理。
随着计算机在20世纪的使用日益增长,将计算机相互连接以共享数据的需求变得显而易见。在以太网、TCP或IP协议被发明之前的许多年里,计算机网络就已经由比我们讨论的模型更为原始的技术构成。
这些早期的网络技术主要专注于连接物理位置相近的设备。到了20世纪70年代末,杜克大学的两位研究生试图找到一种更好的方法来连接距离更远的计算机,他们希望共享类似于电子公告板的内容。这时,一个灵感闪现:他们意识到实现这一目标的基础设施已经存在,那就是公共电话网络。
公共电话网络,也称为公共交换电话网或POTS,到20世纪70年代末,即电话发明一百多年后,已经成为一个相当全球化和强大的系统。这两位研究生并非第一个想到使用电话线传输数据的人,但他们是第一个以某种永久性方式实现它的人,为后来的拨号网络奠定了基础。
拨号连接与Usenet系统
上一节我们提到了利用电话网络的初步构想,本节中我们来看看其具体实现。他们建立的系统被称为Usenet,其某种形式至今仍在使用。当时,像大学这样的不同地点使用一种非常原始的拨号连接形式来相互交换一系列消息。
拨号连接使用POTS进行数据传输,其名称来源于连接是通过实际拨打一个电话号码来建立的。如果你在过去使用过拨号上网,可能会对下面这种声音很熟悉。对一些人来说,在等待连接到互联网时,这声音就像粉笔划过黑板一样刺耳。
通过拨号连接传输数据是通过称为调制解调器的设备完成的。调制解调器将计算机能够理解的数据转换成可以通过POTS传输的音频波长。毕竟,电话系统最初就是为了将语音信息或声音从一个地方传输到另一个地方而开发的。这个概念类似于线路编码如何将1和0转换成以太网电缆上的调制电荷。

调制解调器与比特率
了解了拨号连接的基本原理后,我们来深入探讨其性能指标。早期调制解调器的比特率非常低。比特率是衡量每秒可以通过电话线传输多少比特数据的指标。
以下是调制解调器比特率的发展历程:
- 到20世纪50年代末,计算机通常只能以每秒约110比特的速度通过电话线相互发送数据。
- 到Usenet正在开发时,这个速率已提高到每秒约300比特。
- 到20世纪90年代初,拨号上网成为家庭普及商品时,速率已提高到每秒14.4千比特。
虽然技术持续改进,但我们在下一课将讨论的宽带技术的广泛采用,取代了许多这些改进。如今,拨号互联网连接已相当罕见,但并未完全消失。在一些农村地区,它可能仍然是唯一可用的选择。在你的IT职业生涯中,可能永远不会遇到拨号互联网连接,但了解这项技术在数十年间代表了计算机远距离通信的主要方式仍然很重要。

本节课中我们一起学习了计算机网络早期的拨号技术。我们了解了拨号连接如何利用现有的电话网络,认识了调制解调器的作用及其将数字信号转换为模拟信号的过程,并回顾了其比特率从每秒110比特到14.4千比特的发展历程。尽管这项技术已被更快的宽带所取代,但它是理解现代网络演进的重要基石。接下来,让我们深入探索宽带的世界。
063:什么是宽带 🌐

在本节课中,我们将要学习“宽带”这一核心概念。我们将了解其定义、它如何改变了互联网的使用方式,以及它为何比早期的拨号连接更优越。
概述
“宽带”一词有多种定义。在互联网连接的语境下,它指的是任何非拨号连接的互联网接入技术。宽带互联网几乎总是比最快的拨号连接快得多,并且指的是始终在线的连接。这意味着它们是持久的连接,无需在每次使用时重新建立。本质上,它们是始终存在的链路。
宽带塑造了当今世界。虽然互联网本身是一项了不起的发明,但直到宽带技术出现后,其对于商业和家庭用户的真正潜力才得以实现。
宽带的发展历程
上一节我们介绍了宽带的定义,本节中我们来看看它的发展背景。
在人们在家中拥有宽带连接之前很久,企业就已经投入大量资源使用宽带,这通常是出于必要。如果一个办公室有超过几名员工,单个拨号连接提供的带宽很快就会被少数用户耗尽。

到了20世纪90年代中期,对于需要为员工提供互联网接入的企业来说,使用各种T载波技术已变得相当普遍。
T载波技术简介

T载波技术最初由AT&T发明,目的是在单条链路上传输多个电话呼叫。最终,它们也成为常见的数据传输系统,其速度远超任何拨号连接所能处理。
我们将在后续课程中详细介绍T载波技术。
宽带对家庭用户的影响
在企业涉足宽带领域后,随着互联网的不同方面(如万维网)变得更加复杂,家庭使用也变得更加普遍。这些应用也需要不断提高的数据传输速率。
在拨号上网的时代,即使网页上的一张图片也可能需要很多秒才能下载和显示。如今用手机就能拍摄的高分辨率照片,在当时需要很长时间下载,并且考验用户的耐心。
以下是当时下载一张图片所需时间的估算:
- 如今智能手机拍摄的一张照片很容易达到几兆字节(MB)的大小。
- 2 MB相当于
2 * 1024 * 1024 = 2097152字节。 - 在14.4 kbps(千比特每秒)的拨号速率下,下载这么多数据需要近20分钟。
如果没有宽带互联网连接技术,我们今天所知的互联网将不复存在。我们将无法流式播放音乐或电影,也无法轻松分享照片。你也肯定无法像现在这样参加在线课程。
常见的宽带解决方案
T载波技术需要专用线路,这使其成本更高。因此,通常只在企业中看到它们的使用。但也存在其他面向企业和消费者的宽带解决方案。

在接下来的几个视频中,我们将深入探讨当今四种最常见的宽带解决方案:
- T载波技术
- 数字用户线路(DSL)
- 电缆宽带
- 光纤连接

你准备好了吗?让我们开始吧。
总结
本节课中我们一起学习了“宽带”的概念。我们了解到宽带是一种高速、始终在线的互联网连接技术,它从根本上推动了互联网的普及和应用发展,从企业必备逐渐走入千家万户,并催生了流媒体、高清内容共享等现代互联网体验。我们还简要了解了其发展历程和几种主要类型,为后续深入学习具体技术奠定了基础。
计算机网络与操作系统:第2课:T载波技术

在本节课中,我们将学习T载波技术。这是一种早期用于在单条线路上传输多路电话信号的技术,后来被广泛应用于数据传输,是现代宽带技术发展的重要基础。
T1技术的起源与原理
上一节我们介绍了早期通信的背景,本节中我们来看看T1技术是如何解决线路复用问题的。
T载波技术最初由AT&T公司发明,旨在构建一个系统,允许大量电话呼叫通过单条电缆传输。
在T1规范出现之前,每个独立的电话呼叫都需要通过独立的铜线对进行。

通过首个T载波规范(简称T1),AT&T发明了一种方法,可以在单条双绞铜线上承载多达24路同时进行的电话呼叫。

从语音到数据的应用演进
了解了T1的基本原理后,我们来看看这项技术是如何从语音通信扩展到数据领域的。
多年以后,这项技术被重新用于数据传输。
原来的24个电话信道中的每一个,都能够以每秒64千比特的速率传输数据。
这使得一条T1线路能够以每秒1.544兆比特的总速率传输数据。其总带宽计算公式为:
总带宽 = 24 信道 × 64 kbit/s = 1.536 Mbit/s (加上额外的控制开销后,标准速率为 1.544 Mbit/s)。
随着时间的推移,“T1”这个术语逐渐泛指任何能够达到1.544 Mbit/s速率的双绞铜线连接,即使它并未严格遵循最初的T1规范。



T1与T3线路的商业应用与发展
在数据传输领域,对更高带宽的需求催生了更强大的技术。以下是T载波技术的主要应用和发展阶段。
最初,T1技术仅用于连接不同电信公司的站点,以及将这些公司与其他电信公司互联。
但随着互联网在20世纪90年代成为有用的商业工具,越来越多的企业开始付费在其办公室安装T1线路,以获得更快的互联网连接。
通过对T1线路的进一步改进,开发出了将多条T1线路捆绑为单一链路的方法。
因此,一条T3线路由28条T1线路复用而成,实现了每秒44.736兆比特的总吞吐速度。其带宽计算公式为:
T3带宽 = 28 × T1带宽 = 28 × 1.544 Mbit/s ≈ 44.736 Mbit/s


技术现状与更替
尽管T载波技术曾广泛应用,但技术始终在进步。本节我们来看看它目前的地位。
如今你仍然能看到T载波技术在使用,但对于小型企业办公室而言,它通常已被其他宽带技术超越。
在内部ISP通信中,不同的光纤技术已经完全取代了旧的基于铜缆的技术。由于运营成本低得多,电缆宽带或光纤连接现在要常见得多。
总结
本节课中我们一起学习了T载波技术。我们了解了T1技术如何通过复用技术在单条铜线上传输多路信号,以及它如何从语音通信演进到数据传输。我们还探讨了更高速的T3线路的形成,并认识到随着成本更低、性能更高的光纤等技术的普及,T载波技术已逐渐被取代。理解这些基础技术有助于我们把握网络技术发展的脉络。
065:数字用户线路 (DSL) 🚀

在本节课中,我们将要学习数字用户线路技术。这是一种利用现有电话网络基础设施,实现更高速互联网接入的技术。我们将了解它的工作原理、主要类型以及它与传统拨号连接的区别。

概述
公共电话网络因其无处不在的基础设施,曾是连接人们上网的绝佳选择。在很长一段时间里,拨号连接是人们从家中接入互联网的主要方式。
然而,试图将数据作为本质上只是音频信号来传输存在某些限制。随着人们对更快互联网访问速度的需求日益增长,电话公司开始思考是否能以不同的方式利用相同的基础设施。
DSL 技术的诞生

上一节我们提到了拨号连接的局限性,本节中我们来看看电话公司如何突破这些限制。
研究表明,现代电话线使用的双绞铜线能够传输的数据量远超语音通话所需。通过在一个不干扰正常电话通话的频率范围内运行,一种被称为数字用户线路或 DSL 的技术,能够比传统拨号技术在线上传输多得多的数据。
更棒的是,这允许正常的语音通话和数据传输在同一线路上同时进行。
DSL 的工作原理
类似于拨号使用调制解调器,DSL 技术也使用自己的调制解调器。但更准确地说,它们被称为 DSLAM 或 数字用户线路接入复用器。
就像拨号调制解调器一样,这些设备通过电话线建立数据连接。但与拨号连接不同的是,DSL 连接通常是长期保持的。这意味着连接通常在 DSLAM 开机时建立,并在 DSLAM 关机前不会中断。
DSL 的主要类型
市面上有多种不同类型的 DSL,但它们之间的差异相当微小。在很长一段时间里,两种最常见的 DSL 类型是 ADSL 和 SDSL。
以下是这两种主要类型的详细介绍:


-
ADSL
- 全称:Asymmetric Digital Subscriber Line
- 特点:ADSL 连接的上行和下行数据速度不同。通常这意味着更快的下载速度和较慢的上传速度。
- 适用场景:家庭用户很少需要上传与下载一样多的数据,因为家庭用户主要是客户端。例如,当你在网页浏览器中打开一个网页时,上传或出站数据非常小(你只是向网络服务器请求某个网页)。下载或入站数据往往要大得多,因为它包含整个网页,包括所有图像和其他媒体。因此,对于典型的家庭用户来说,非对称线路通常能以更低的成本提供相似的用户体验。
-
SDSL
- 全称:Symmetric Digital Subscriber Line
- 特点:SDSL 技术与 ADSL 基本相同,只是上传和下载速度相同。
- 发展:曾经,SDSL 主要用于托管需要向客户端发送数据的服务器的企业。随着互联网整体可用带宽的扩展,以及多年来运营成本的下降,SDSL 现在对企业和家庭用户都更为常见。
其他 DSL 变体
大多数 SDSL 技术的上限为 1.544 Mbit/s,与 T1 线路相同。DSL 技术的进一步发展产生了诸如 HDSL 或高比特率数字用户线路等技术。这些是提供高于每秒 1.544 兆比特速度的 DSL 技术。
市面上还有许多其他微小的 DSL 技术变体,提供不同的带宽选项和传输距离。这些变体数量繁多且差异细微,在此尝试全面覆盖并不实际。如果你需要了解特定 DSL 线路的更多信息,应联系提供该服务的 ISP 以获取更多细节。
总结
本节课中我们一起学习了数字用户线路技术。我们了解到,DSL 通过利用电话线中未用于语音通话的更高频率带宽,实现了比传统拨号更快的互联网连接,并且允许语音和数据同时传输。我们区分了非对称的 ADSL(下载快、上传慢,适合家庭用户)和对称的 SDSL(上下行速度相同,适合企业),并简要提及了更高速的 HDSL 等其他变体。DSL 是宽带技术发展中的重要一步,它基于现有电话网络,为更高速的互联网接入铺平了道路。
066:电缆宽带 📡

在本节课中,我们将要学习电缆宽带技术的发展历史、工作原理及其与DSL等其他宽带技术的核心区别。我们将从电视广播的无线起源开始,探讨有线电视如何演变为提供互联网接入的重要基础设施。
从无线到有线:电视广播的演变 📺
电话和计算机网络的历史都始于有线通信,但最近的趋势是越来越多的通信流量转向无线。电视的历史则遵循了相反的道路。


最初,所有电视广播都是无线传输,由巨大的电视塔发出信号,再由人们家中的小型天线接收。这意味着你必须位于这些电视塔的信号覆盖范围内才能看电视,就像今天你必须位于手机信号塔的覆盖范围内才能使用手机一样。
有线电视的兴起与发展 🏗️
从20世纪40年代末开始,美国开发了第一批有线电视技术。当时,它们主要是为了向偏远城镇和农村家庭提供电视接入,因为这些地方超出了当时电视塔的信号覆盖能力。
有线电视在随后的几十年里缓慢扩张。但在1984年,《有线通信政策法案》获得通过。这项法案解除了对美国有线电视业务的管制,引发了巨大的增长和普及热潮。全球其他国家也很快效仿。
到20世纪90年代初,美国的有线电视基础设施规模已与公共电话系统相当。不久之后,有线电视提供商开始尝试加入当时正在发生的互联网增长大潮。

电缆宽带技术的原理 🛠️
与DSL技术的发展类似,有线电视公司很快意识到,通常用于将有线电视信号送入家庭的同轴电缆能够传输比电视观看所需多得多的数据。通过使用不干扰电视广播的频率,基于电缆的互联网接入技术能够通过这些相同的电缆提供高速互联网接入。这就是我们所说的电缆宽带技术。
电缆互联网接入与其他宽带解决方案的一个主要区别在于,电缆通常被称为共享带宽技术。
在使用DSL甚至拨号等技术时,从家庭或企业到所谓的中心局的连接是点对点的。中心局是处理这些连接功能的自动化硬件节点。
共享带宽模型与中心局模型的对比 ⚖️
以下是两种模型的对比:
- 中心局模型:如DSL。连接是点对点的,可以保证该连接上可用的特定带宽。
- 共享带宽模型:如电缆互联网。在此模型下,许多用户共享一定量的带宽,直到传输到达ISP的核心网络。共享范围可能从一个城市街区到整个郊区,具体取决于该区域最初的有线电视布线方式。
如今,大多数有线电视运营商已尝试升级其网络,以使终端用户可能不会总是注意到这种共享带宽。但在使用高峰期,例如同一地区的许多人在同一时间使用互联网连接时,电缆互联网连接速度减慢的情况仍然很常见。
电缆宽带的关键设备:调制解调器与终端系统 🔌
电缆互联网连接通常由所谓的电缆调制解调器管理。这是一个位于用户网络边缘的设备,将其连接到电缆调制解调器终端系统。
电缆调制解调器终端系统负责将许多不同的电缆连接连接到ISP的核心网络。

本节课中我们一起学习了电缆宽带的历史,了解了它如何从有线电视技术演变而来。我们探讨了其共享带宽的核心工作原理,并将其与DSL的点对点模型进行了对比。最后,我们认识了实现电缆宽带连接的关键设备:电缆调制解调器和电缆调制解调器终端系统。
067:光纤连接 🌐

在本节课中,我们将要学习光纤连接技术。光纤是互联网骨干网络的核心传输介质,它正越来越多地被用于将数据传输到离终端用户更近的地方。我们将了解光纤的基本原理、优势以及几种常见的光纤到户部署模式。
互联网的核心网络长期使用光纤进行连接。这既是因为光纤能提供更高的速度,也是因为光纤允许信号在远距离传输时不会显著衰减。
回忆一下,光纤连接使用光进行数据传输,而非电流。电信号在铜缆中传输的最大距离在数千英尺后就会因衰减过多而需要中继器。但某些光纤连接的实现方案,其信号在传输许多英里后才会衰减。
生产和铺设光纤比使用铜缆昂贵得多。因此长期以来,光纤技术主要见于互联网服务提供商(ISP)的核心网络内部,或者可能用于数据中心内部。但近年来,使用光纤将数据传输到越来越接近终端用户的做法变得流行起来。
光纤具体铺设到离终端用户多近的距离,在不同的实施方案中差异很大。因此,业界发展出了“FTTX”这个短语。
FTTX:光纤到X 🚀
FTTX代表“光纤到X”,其中“X”可以是多种场景之一。以下是几种常见的可能性。
光纤到邻里(FTTN)
你可能会听到的第一个术语是FTTN,意为“光纤到邻里”。这意味着光纤技术被用于将数据传输到一个服务特定区域人口的物理机柜。从这个机柜开始,最后一段距离可能使用双绞线铜缆或同轴电缆。
光纤到楼宇(FTTB)

下一个你可能遇到的版本是FTTB。它代表“光纤到楼宇”、“光纤到企业”或“光纤到地下室”(因为电缆通常从这里物理接入建筑物)。FTTB是一种部署方案,其中光纤技术用于将数据传输到单个建筑物。之后,通常使用双绞线铜缆来连接建筑物内的用户。
光纤到户(FTTH)与光纤到驻地(FTTP)

你可能听到的第三个版本是FTTH,代表“光纤到户”。这用于光纤实际铺设到邻里或公寓楼中每个独立住宅的情况。FTTH和FTTB有时也可能统称为FTTP,即“光纤到驻地”。

光纤网络的终端设备 🔌
与调制解调器不同,光纤技术的分界点被称为光网络终端或ONT。ONT将数据从光纤网络能够理解的协议,转换为更传统的双绞线铜缆网络能够理解的协议。


本节课中我们一起学习了光纤连接技术。我们了解到光纤因其高速和远距离低衰减的特性,成为互联网骨干网的核心。虽然成本较高,但它正逐渐向终端用户延伸。我们介绍了FTTX系列概念,包括FTTN(光纤到邻里)、FTTB(光纤到楼宇)和FTTH/FTTP(光纤到户/驻地)。最后,我们认识了光纤网络的终端设备——光网络终端(ONT),它负责在不同网络介质间进行协议转换。
068:广域网技术


在本节课中,我们将学习广域网(WAN)的基本概念、应用场景及其工作原理。我们将从一个公司网络从小到大的发展过程入手,理解局域网(LAN)如何扩展为广域网,并介绍相关的核心技术和协议。
小型公司网络的初始搭建
假设你是一家小型公司的唯一IT支持专家,负责管理网络。
最初,公司只有几名员工,在一个办公室里有几台电脑。

你决定为内部IP地址使用不可路由的地址空间,因为IP地址稀缺且昂贵。
你设置了一台路由器,并将其配置为执行网络地址转换(NAT)。

你配置了一台本地DNS服务器和一台DHCP服务器,以简化网络配置。
当然,为了让这一切真正运作起来,你需要与一家互联网服务提供商(ISP)签订合同,为该办公室提供互联网接入链路,以便你的用户可以访问网络。
公司发展带来的网络扩展
现在,想象一下公司发展了。你正在为内部IP使用不可路由的地址空间。
因此,你拥有充足的扩展空间。也许一些销售人员在外出时需要连接到你所设置的局域网资源。
为此,你可以设置一台VPN服务器,并通过端口转发确保VPN服务器可被访问。


现在,你可以让来自世界各地的员工连接到办公室的局域网。
业务进展顺利,公司持续发展。CEO决定是时候在全国另一个城市开设一个新办公室了。
突然间,不再只是少数销售人员需要远程访问你的网络资源,而是整个第二个办公室都需要这种访问。
广域网技术的引入
这正是广域网(WAN)技术发挥作用的地方。
与局域网(LAN)不同,WAN代表广域网。
广域网就像一个单一的网络,但跨越多个物理位置。


广域网技术通常要求你与ISP签订合同,通过互联网建立一条链路。
这家ISP负责将你的数据从一个站点发送到另一个站点。
因此,感觉就像你所有的计算机都在同一个物理位置一样。
广域网的典型架构
一个典型的广域网设置包含几个部分。想象一下,国家一端有一个计算机网络,另一端有另一个计算机网络。
每个网络都在一个分界点结束,这是ISP网络开始接管的地方。
每个分界点和ISP实际核心网络之间的区域称为本地环路。
这个本地环路可能是像T载波线路或高速光纤连接到提供商本地区域办公室的链路。
从那里,它将连接到ISP的核心网络以及整个互联网。
广域网的工作原理
广域网通过在数据链路层使用一系列不同的协议,将你的数据从一个站点传输到另一个站点。
事实上,这些相同的协议有时也工作在互联网的核心部分,而不是我们更熟悉的以太网协议。

详细介绍所有这些协议超出了本课程的范围。

但在接下来的课程中,我们将为你提供一些最流行的广域网协议的链接。
总结
本节课中,我们一起学习了广域网技术。我们从一个小型办公室网络的搭建开始,看到了随着公司发展,网络需求如何从简单的局域网扩展到需要连接多个物理位置的广域网。我们了解了广域网的基本概念、典型架构(包括分界点和本地环路),以及它如何通过数据链路层协议在ISP的帮助下实现跨地域连接。广域网技术是支撑现代企业分布式运营的关键基础设施。
069:点对点VPN详解 🌐
在本节课中,我们将学习广域网技术的一种流行替代方案——点对点VPN。我们将探讨其产生背景、工作原理、与广域网技术的对比,以及它在现代云计算环境中的应用。
概述
广域网技术适用于需要在多个站点间传输大量数据的场景,因为其设计初衷就是实现超高速传输。然而,广域网技术的成本可能非常高昂。相比之下,商业电缆或DSL线路可能便宜得多,但在某些情况下无法满足所需的负载要求。
点对点VPN的兴起
近年来,越来越多的公司将其内部服务迁移到云端。这意味着公司可以将全部或部分基础设施外包给其他公司进行管理。我们以电子邮件为例进行说明。
过去,公司若想拥有电子邮件服务,必须自行运行电子邮件服务器。如今,公司可以选择云托管提供商来为其托管电子邮件服务器。公司甚至可以更进一步,使用“电子邮件即服务”提供商。这样,公司就完全不需要拥有电子邮件服务器,只需付费让另一家公司处理电子邮件服务的一切事宜。
随着此类云解决方案的普及,许多企业不再需要其站点间具备极高的连接速度。这使得昂贵的广域网技术变得完全没有必要。取而代之,公司可以使用点对点VPN来确保其不同站点之间仍能相互通信。
点对点VPN的工作原理
点对点VPN,也称为站点到站点VPN,它在两个站点之间建立一条VPN隧道。
其运作方式与传统VPN设置让单个用户表现得如同连接到了目标网络非常相似。不同之处在于,VPN隧道逻辑由两端的网络设备处理,因此用户无需各自建立自己的连接。
以下是点对点VPN的核心逻辑示意:
站点A [网络设备] <--- VPN隧道 ---> [网络设备] 站点B
| |
(处理隧道逻辑) (处理隧道逻辑)
| |
内部用户 内部用户

总结

本节课我们一起学习了点对点VPN。我们了解到,在云计算时代,企业对于站点间超高速连接的需求降低,使得成本较低的点对点VPN成为一种理想的广域网替代方案。点对点VPN通过在两个站点的网络设备间建立隧道,实现了站点间安全、高效的通信,而无需终端用户进行复杂的配置。
070:无线网络技术介绍 🛰️

在本节课中,我们将要学习无线网络技术的基础知识。随着笔记本电脑、平板电脑和智能手机等便携式计算设备的普及,无线网络变得越来越重要。通过本节内容,你将能够描述无线通信的基本工作原理,区分基础设施网络和自组织网络,解释无线信道如何帮助无线网络运行,并理解无线安全协议的基础知识。这些技能对于IT支持专家来说非常宝贵,因为无线网络在工作场所中正变得越来越普遍。
无线网络标准与频率
无线网络设备通过无线电波进行通信。最常见的无线网络通信规范由IEEE 802.11标准定义。这套规范也被称为802.11系列,构成了我们称之为Wi-Fi的技术集合。
不同的802.11标准通常使用相同的基本协议,但可能在不同的频段上运行。频段是无线电频谱中特定的一部分,被约定用于特定的通信。在北美,FM无线电传输在88至108 MHz之间运行,这个特定的频段被称为FM广播频段。
Wi-Fi网络在几个不同的频段上运行,最常见的是2.4 GHz和5 GHz频段。存在许多802.11规范,包括一些仅用于实验或测试的规范。你可能遇到的最常见规范包括802.11b、802.11a、802.11g、802.11n和802.11ac。我们目前不会详细讨论每一个,只需知道我们按它们被采用的顺序列出了这些规范。每个较新版本的802.11规范通常都有一些改进,无论是更高的接入速度还是更多设备能够同时使用网络的能力。
在网络模型中,你应该将802.11协议视为定义了我们在物理层和数据链路层的操作方式。
802.11帧结构


802.11帧包含多个字段。第一个字段称为帧控制字段。这个字段长16位,包含许多子字段,用于描述帧本身应如何处理。这包括诸如使用了哪个版本的802.11等信息。
下一个字段称为持续时间字段。它指定了总帧的长度,因此接收方知道它需要监听传输的时间长度。在此之后,是四个地址字段。让我们花点时间讨论为什么有四个地址字段,而不是通常的两个。我们将在本课后面更详细地讨论不同类型的无线网络架构,但最常见的设置包括称为接入点的设备。
无线接入点是桥接网络无线和有线部分的设备。一个无线网络可能有多个不同的接入点来覆盖大面积区域。无线网络上的设备将与某个接入点关联。这通常是它们物理上最接近的那个,但也可以由许多其他因素决定,例如总体信号强度和无线干扰。
关联不仅对于无线设备与特定接入点通信很重要,它还允许发送到无线设备的传入传输由正确的接入点发送。有四个地址字段是因为需要空间来指示哪个无线接入点应处理该帧。因此,我们有正常的源地址字段,它代表发送设备的MAC地址,但我们也有网络上的预期目的地,以及接收地址和发送器地址。

接收地址应该是接收帧的接入点的MAC地址,发送器地址是刚刚发送帧的设备的MAC地址。在许多情况下,目的地和接收地址可能相同。通常,源地址和发送器地址也相同。但根据特定无线网络的具体架构方式,情况并非总是如此。有时无线接入点会相互中继这些帧。由于802.11帧中的所有地址都是MAC地址,这四个字段中的每一个都是6字节长。
在第三和第四地址字段之间,你会发现序列控制字段。序列控制字段长16位,主要包含一个用于跟踪帧顺序的序列号。在此之后是数据有效载荷部分,它包含协议栈上层所有协议的数据。
最后,我们有一个帧检查序列字段,它包含一个用于循环冗余校验的校验和,就像以太网所做的那样。
无线网络架构类型



上一节我们介绍了802.11帧的结构,本节中我们来看看无线网络的两种主要架构类型:基础设施网络和自组织网络。


基础设施网络是最常见的无线网络设置。在这种架构中,无线设备通过一个中央接入点(AP)进行通信,该接入点连接到有线网络。接入点充当无线设备和有线网络之间的桥梁。设备必须与接入点关联才能访问网络资源。这种设置提供了更好的管理和安全性控制。

自组织网络是一种点对点网络,设备直接相互通信,无需中央接入点。这种网络设置简单快捷,适用于临时连接,如文件共享或多人游戏。然而,它的覆盖范围有限,并且缺乏基础设施网络中的集中管理功能。
无线信道与操作
无线信道是无线网络运行的基本单位。它们帮助无线网络在共享的频段内避免干扰并提高效率。
以下是无线信道的一些关键点:
- 信道划分:2.4 GHz和5 GHz频段被进一步划分为多个信道。每个信道是一个特定频率范围的子带。
- 避免干扰:通过使用不同的信道,相邻的无线网络可以减少相互干扰。例如,在密集的办公环境中,为不同的接入点分配非重叠的信道可以显著提高网络性能。
- 信道绑定:一些较新的802.11标准(如802.11n和802.11ac)支持信道绑定,即将多个信道组合在一起使用,以提供更高的数据传输速率。
无线安全协议基础
无线网络的安全性至关重要,因为无线电波可以在物理空间内传播,可能被未经授权的设备接收。为了保护无线通信,发展了几种安全协议。
以下是主要的无线安全协议:

- WEP:有线等效保密是最早的安全协议,但已被证明存在严重漏洞,不再安全,不应使用。
- WPA:Wi-Fi保护访问是为了替代WEP而开发的。它比WEP更安全,但仍存在一些弱点。
- WPA2:这是目前最广泛使用的安全协议。它使用AES加密算法,提供了强大的安全性。对于大多数家庭和企业网络,WPA2是推荐的选择。
- WPA3:这是最新的安全协议,进一步增强了安全性,特别是针对离线字典攻击提供了更好的保护。随着新设备的普及,WPA3正逐渐成为新的标准。

配置无线网络时,务必使用强密码(或预共享密钥)并启用最新的可用安全协议(如WPA2或WPA3)。

总结


本节课中我们一起学习了无线网络技术的基础知识。我们了解了定义Wi-Fi的IEEE 802.11标准系列,以及无线网络使用的2.4 GHz和5 GHz频段。我们详细剖析了802.11帧的结构,包括其各个字段的作用。我们区分了需要中央接入点的基础设施网络和设备直接通信的自组织网络。我们还探讨了无线信道如何帮助网络避免干扰,并概述了从WEP、WPA到WPA2和WPA3的无线安全协议演进。掌握这些概念对于在现代工作环境中提供有效的IT支持至关重要。
071:无线网络配置 🛜
在本节课中,我们将学习无线网络的几种主要配置方式。理解这些不同的网络类型,有助于我们根据实际需求选择和搭建合适的无线环境。
无线网络主要有三种配置方式:自组织网络、无线局域网和网状网络。每种方式都有其独特的结构和应用场景。
自组织网络 (Ad Hoc Networks)
上一节我们介绍了无线网络的三种主要类型,本节中我们首先来看看最简单的一种:自组织网络。
在自组织网络中,没有中心化的网络基础设施支持。网络中的每个设备都在通信范围内直接与其他设备对话,并且所有节点都协助传递消息。
尽管自组织网络结构最简单,但它并非最常见的无线网络类型。不过,它在某些场景下具有实际应用价值。
以下是自组织网络的一些应用实例:
- 一些智能手机可以与区域内的其他手机建立自组织网络,以便人们交换照片、视频或联系人信息。
- 在工业或仓库环境中,有时会使用自组织网络,让单个设备之间相互通信,而不需要与其他网络连接。
- 在灾难情况下,自组织网络可以成为强大的工具。如果地震或飓风等自然灾害摧毁了某个区域的所有现有基础设施,救灾专业人员可以利用自组织网络在执行搜救任务时相互通信。
无线局域网 (Wireless LANs / WLANs)
了解了自组织网络后,我们来看看在商业领域中最常见的类型:无线局域网。
无线局域网由一个或多个接入点组成,这些接入点充当无线网络和有线网络之间的桥梁。有线网络部分像我们之前讨论过的类型一样,作为一个普通的局域网运行。
为了访问无线局域网之外的资源,有线局域网中包含出站的互联网链路。无线设备会与接入点通信,接入点随后将流量转发到网关路由器,之后的过程就和普通网络一样了。
网状网络 (Mesh Networks)
最后,我们来看看所谓的网状网络。网状网络在某种程度上类似于自组织网络,因为许多设备之间通过无线方式相互通信。
如果你为所有节点之间的所有链路画线,它们会形成一个网状结构。你遇到的大多数网状网络仅由无线接入点组成,并且仍然会连接到有线网络。
这种网络允许你向网状结构中部署更多接入点,而无需为每个接入点单独铺设网线。通过这种设置,你可以显著提高无线网络的性能和覆盖范围。
以下是网状网络的拓扑示意图,展示了节点间多路径连接的特点:

作为对比,下图展示了传统无线局域网的星型拓扑结构,其中所有设备都通过一个中心接入点连接:



本节课中我们一起学习了无线网络的三种主要配置方式:自组织网络、无线局域网和网状网络。我们了解了每种网络的基本原理、结构特点以及典型的应用场景,这为我们设计和维护不同的无线网络环境打下了基础。
072:无线信道 📡

在本节课中,我们将要学习无线网络中的一个核心概念:信道。理解信道对于掌握无线通信的工作原理至关重要,它能帮助我们解决网络拥堵和信号干扰等问题。

概述
信道是无线网络所使用的整个频段中,划分出的一个个独立且较小的部分。理解信道如何工作,是解决无线网络性能问题的关键。

信道的重要性
上一节我们介绍了无线网络的基本概念,本节中我们来看看信道为何如此重要。信道主要用来解决一个古老的网络问题:冲突域。
你可能还记得,冲突域是指一个网络段中,一台计算机的传输可能中断另一台计算机的传输。当两个或多个传输同时发生时,接收端无法正确理解这些重叠的信号,这种情况被称为冲突。发生冲突时,所有相关设备都必须停止传输。
无线网络中的冲突域
在有线网络中,交换机这类设备已经极大地减少了冲突域问题。交换机记录了哪台计算机连接在哪个物理接口上,因此数据只会发送给目标节点。然而,无线网络没有线缆,也就没有供无线设备连接的物理接口。这意味着我们无法拥有类似“无线交换机”的设备,无线设备注定会互相干扰。
信道在一定程度上帮助解决了这个问题。
频段与信道详解
当我们讨论频段概念时,曾提到北美的FM广播电台工作在88 MHz到108 MHz之间。但讨论Wi-Fi使用的频段时,我们只提到了2.4 GHz和5 GHz。这是因为这仅仅是这些频段实际起点的简写。
对于工作在2.4 GHz频段的无线网络,其实际工作频段大约是从2.4 GHz到2.5 GHz。在这两个频率之间,存在着许多信道,每个信道都有特定的宽度(例如以兆赫MHz为单位)。由于不同国家和地区对无线电频率的使用有不同的监管规定,因此可用信道的具体数量取决于你所在的位置。
以下是关于信道的一个具体例子:
- 以802.11b网络为例,信道1的中心频率是2412 MHz。
- 但由于信道宽度是22 MHz,信号实际占用的频率范围是2401 MHz到2423 MHz。



这是因为无线电波本身并不精确,所以需要在传输可能到达的确切频率周围留有一些缓冲空间。
信道的重叠与隔离
有些信道会相互重叠,但有些信道间隔足够远,完全不会相互干扰。让我们再次以运行在2.4 GHz频段的802.11b网络为例,因为它最简单,其概念也适用于所有其他802.11规范。


在22 MHz的信道宽度下,中心频率为2412 MHz的信道1与中心频率为2437 MHz的信道6是完全隔离的。


对于802.11b网络,这意味着信道1、6和11是仅有的几个完全互不重叠的信道。

信道选择与拥堵
然而,这并非事情的全部。如今,大多数无线网络设备都内置了自动感知功能,以判断哪些信道最拥堵。

以下是常见的信道选择策略:
- 有些接入点仅在启动时执行一次信道分析。
- 有些则会根据需要动态地更改信道。
- 此外,用户也可以手动指定信道。
即便如此,你仍可能遇到信道严重拥堵的情况。这在无线网络密集的都市区域尤其常见。
对IT支持的意义
那么,为什么理解这些对IT支持工作很重要呢?理解所有802.11规范中信道如何重叠,是帮助你排查无线连接故障或网络速度变慢问题的一种方法。你应该尽可能地避免冲突域。
需要指出的是,记住我们讨论过的所有具体数字并不重要。重点在于理解冲突域是所有无线网络必然存在的问题,以及你如何运用这方面的知识来优化无线网络部署。你需要确保你自己的接入点以及邻近商业机构的接入点,所使用的信道尽可能少地重叠。
总结

本节课中我们一起学习了无线网络中的信道概念。我们了解到信道是频段的细分,用于减少信号冲突(冲突域)。关键点在于,某些信道(如2.4 GHz频段中的1、6、11信道)互不重叠,选择这些信道可以优化网络性能、减少干扰。对于IT支持人员来说,理解信道原理是诊断和改善无线网络连接质量的重要工具。
073:无线安全 🔐

在本节课中,我们将要学习无线网络面临的安全挑战,以及用于保护无线数据传输的几种主要技术。我们将探讨WEP、WPA、WPA2等加密协议的原理与差异,并了解MAC地址过滤这一附加安全措施。
有线与无线通信的隐私差异
当您通过有线链路发送数据时,您的通信具有一定程度的固有隐私性。真正知道正在传输什么数据的设备,只有链路两端的两个节点。恰好处于近距离的某人或某个设备无法直接读取数据。
然而,对于无线网络而言,情况并非如此。因为无线网络没有电缆,只有通过空气广播的无线电传输。理论上,任何在信号范围内的人都可以拦截传输,无论这些传输是否意图发送给他们。
为了解决这个问题,WEP被发明出来。
WEP:有线等效隐私
WEP代表有线等效隐私。它是一种提供非常低级别隐私的加密技术。实际上,从其名称即可看出:Wired Equivalent Privacy。使用WEP可以稍微保护您的数据,但它实际上只应被视为与在有线连接上发送未加密数据一样安全。

WEP标准是一种非常弱的加密算法。恶意行为者不需要很长时间就能破解这种加密并读取您的数据。您将在后续课程中了解更多关于密钥长度和加密的知识。但现在,重要的是要知道加密密钥中的位数与其安全性相对应。密钥中的位数越多,某人破解加密所需的时间就越长。
WEP仅使用40位作为其加密密钥。以现代计算机的速度,通常只需几分钟即可破解。
因此,WEP在大多数地方很快被WPA所取代。
WPA与WPA2:Wi-Fi保护访问
WPA,即Wi-Fi保护访问,默认使用128位密钥,这使得它比WEP难破解得多。
如今,无线网络最常用的加密算法是WPA2,这是对原始WPA的更新。WPA2使用256位密钥,使其更加难以破解。
除了加密协议,还有另一种常见的方法来帮助保护无线网络。
MAC地址过滤
这种方法是通过MAC过滤来实现的。通过MAC过滤,您可以将接入点配置为仅允许来自一组特定MAC地址的连接,这些地址属于您信任的设备。


MAC过滤本身并不能为通过空气发送的无线流量提供额外的加密帮助,但它确实提供了一个额外的屏障,防止未经授权的设备连接到无线网络本身。
总结
本节课中,我们一起学习了无线安全的基础知识。我们了解到,与有线连接不同,无线传输容易被拦截,因此需要加密保护。我们介绍了从脆弱的WEP(40位密钥)到更安全的WPA(128位密钥),再到目前主流的WPA2(256位密钥)的演进过程。此外,我们还探讨了MAC地址过滤作为一种补充性的访问控制手段。理解这些安全措施是管理和保护无线网络的重要基础。
074:蜂窝网络 📶

在本节课中,我们将要学习一种非常流行的无线网络形式——蜂窝网络。我们将了解它的基本工作原理、与Wi-Fi网络的异同,以及它在现代设备中的应用。
另一种极其流行的无线网络形式是蜂窝网络,也称为移动网络。如今,蜂窝网络在世界各地都很普遍。在某些地区,使用蜂窝网络接入互联网是最常见的连接方式。
从宏观层面看,蜂窝网络与我们之前讨论过的802.11网络有许多共同之处。
正如存在许多不同的802.11规范一样,也存在许多不同的蜂窝网络规范。与Wi-Fi类似,蜂窝网络也通过无线电波运行,并且有专门为蜂窝传输保留的特定频段。


最大的区别之一是,这些频率的信号能够更容易地进行长距离传输,通常可达数公里或数英里。
上一节我们介绍了蜂窝网络的基本概念,本节中我们来看看它的核心架构。
蜂窝网络是围绕“蜂窝”的概念构建的。每个蜂窝被分配一个特定的频段供其使用。相邻的蜂窝被设置为使用互不重叠的频段,这类似于我们讨论的具有多个接入点的无线局域网(WLAN)的最佳设置方式。
实际上,广播和接收蜂窝传输信号的基站塔可以被视为类似于接入点,只是其覆盖范围要大得多。


了解了蜂窝网络的架构后,我们来看看它的应用。
如今,许多设备使用蜂窝网络进行通信。不仅仅是手机,平板电脑和一些笔记本电脑也配备了蜂窝天线。高端汽车内置蜂窝接入模块也变得越来越普遍。
本节课中我们一起学习了蜂窝网络。我们了解到,蜂窝网络是一种基于“蜂窝”架构的移动网络,它使用特定的无线电频段,能够实现远距离通信。它与Wi-Fi有相似之处,但覆盖范围更广。这种技术不仅应用于手机,也广泛集成于平板电脑、笔记本电脑甚至汽车等多种现代设备中。
075:移动设备网络 📱

在本节课中,我们将学习移动设备如何利用不同类型的无线网络进行通信,以及作为IT支持专家,如何诊断和解决常见的网络连接问题。
移动设备使用无线网络与互联网及其他设备通信。根据设备的不同,它可能使用蜂窝网络、Wi-Fi、蓝牙和/或多种物联网(IoT)网络协议中的一种。
作为IT支持专家,您经常需要帮助终端用户排查网络或连接问题。您需要确定设备应连接到哪个网络,并确保设备已正确配置以实现连接。
网络连接的管理与切换 🔄
上一节我们介绍了移动设备使用的网络类型,本节中我们来看看如何管理这些连接。移动设备通常具备开启或关闭单个组件和系统的功能,这有时会让终端用户感到困惑。
电池续航至关重要,人们会关闭这些网络无线电以节省电量。如果有人因为设备无法连接到无线网络而向您求助,您应首先检查无线无线电是否已被禁用。是的,解决方案有时就是这么简单。
您可以在设备的设置中开启或关闭Wi-Fi、蓝牙和蜂窝网络。许多移动设备还设有“飞行模式”,可一次性禁用所有无线网络。
同时,移动设备同时保持多个网络连接的情况也很常见,例如同时连接Wi-Fi和蜂窝数据。移动设备会尝试使用可用连接中最可靠且成本最低的方式接入互联网。没错,我说的是“成本最低”。
许多移动操作系统理解“计量连接”的概念。如果您的手机套餐对每月数据使用量有限制,或根据数据使用量收费,那么通过该手机套餐建立的连接就是计量连接。移动设备会优先使用其他非计量连接(如Wi-Fi),以避免耗尽您有限的数据套餐。
以下是您作为IT支持专家可能提供帮助的另一个例子:假设您有一位远程员工有时在咖啡店工作,但咖啡店的Wi-Fi网络限制访问某些网站。该员工可能会选择断开Wi-Fi连接,转而使用蜂窝网络(即使可能更昂贵),以便访问所需网站。通过切换Wi-Fi和蜂窝数据连接,您可以强制设备使用您希望使用的网络连接。
无线信号与故障排除 📶

如果您正在排查一个不稳定的无线网络连接,请记住,无线网络通过两个天线之间发送无线电信号来工作。您可能看不到天线,但您的设备确实有一个。它可能印刷在电路板上,也可能是一根贯穿设备的导线或排线。
无线电信号传输距离越远,信号就越弱,尤其是在信号需要穿透或在两个天线之间的物体上反射时。移动设备可能会被带到距离过远或干扰过强导致无线信号不可靠的地方。甚至手持或佩戴移动设备的方式也会影响信号强度。
因此,Wi-Fi和蜂窝数据网络用于将您的移动设备连接到互联网。
短距离无线网络与蓝牙配对 🎧
但还有一种无线网络需要讨论。移动设备使用短距离无线网络连接其外围设备。最常见的短距离无线网络称为蓝牙。您可能以前使用过蓝牙耳机、键盘或鼠标。
当您将无线外围设备连接到移动设备时,我们称之为“配对”设备。两个设备会交换信息,有时包括PIN码或密码,以便此后能记住彼此。当两个设备都开机且在有效范围内时,它们会自动连接。
像这样的设备配对有时可能会失败,您可能需要让您的设备“忘记”该外围设备,以便重新进行配对。请查阅下一篇补充阅读材料,了解如何在iOS和Android系统中进行此操作。请记住,蓝牙可以非常容易地被关闭。在排查蓝牙外围设备故障时,务必确保蓝牙已开启。
总结 ✨
本节课中我们一起学习了移动设备网络的基础知识。我们了解了移动设备使用的各种无线网络类型(蜂窝网络、Wi-Fi、蓝牙),学习了如何管理和切换这些连接以优化电池使用和数据成本。我们还探讨了无线信号强度的影响因素,并掌握了诊断常见连接问题(如检查无线电开关状态、处理计量连接、进行蓝牙配对)的基本步骤。作为IT支持专家,理解这些概念对于有效帮助用户解决连接问题至关重要。
076:故障排除与网络未来介绍 🛠️

在本节课中,我们将学习计算机网络中故障排除的基本概念、常用工具与技术,并初步了解影响网络未来的重要技术,如云计算与IPv6。
概述
正如你所见,计算机网络可能极其复杂。其中涉及众多层次、协议和设备,这有时意味着事情无法正常运行。这并不令人意外。
我们已介绍的许多协议和设备都内置了功能,以帮助防范其中一些问题。这些功能被称为错误检测与错误恢复。
错误检测与错误恢复

上一节我们提到了网络问题的普遍性,本节中我们来看看网络协议如何应对这些问题。

- 错误检测是指协议或程序能够确定出现了问题。
- 错误恢复是指协议或程序能够尝试修复该问题。
例如,你可能记得,多个网络层都使用循环冗余校验来确保接收端收到了正确的数据。


CRC校验公式(概念性描述):
发送方:对数据执行特定计算,生成CRC值,附加在数据后一同发送。
接收方:对收到的数据执行相同计算,将结果与附带的CRC值比较。
如果CRC值与数据载荷不匹配,数据将被丢弃。此时,传输层将决定是否需要重新发送数据。
故障排除的必要性与学习目标
然而,即使有所有这些防护措施,错误仍会出现。错误配置会发生,硬件会损坏,系统不兼容性也会显现。
在本模块中,你将学习作为IT支持专家在排除网络故障时最常用的技术和工具。到本模块结束时,你将能够使用三种最常见操作系统(Microsoft Windows、Mac和Linux)上的可用工具,来检测和修复许多常见的网络连接问题。
网络未来展望
最后,在本模块的结尾,我们将介绍一些对网络未来至关重要的概念:云计算与IPv6。
总结
本节课中我们一起学习了网络故障排除的核心概念——错误检测与错误恢复,明确了本模块的学习目标,即掌握跨平台的网络问题诊断与修复技能,并预告了即将探讨的、塑造网络未来的云计算与IPv6技术。
077:Ping与互联网控制消息协议 (ICMP) 🛠️
在本节课中,我们将要学习网络故障诊断的基础知识。当网络连接出现问题时,掌握有效的诊断工具至关重要。我们将重点介绍一个核心协议——互联网控制消息协议(ICMP),以及一个基于它的、最常用的网络连通性测试工具——Ping。
网络连通性问题概述
网络问题出现时,最常见的情况是无法与目标建立连接。这可能表现为完全无法访问某个服务器、网站无法加载,或者只能在局域网内访问资源而无法连接互联网。无论具体问题是什么,能够诊断连通性问题是网络故障排除的重要环节。学完本课后,你将能够使用多个重要的故障排除工具来帮助解决这些问题。
错误信息的传递:ICMP协议
当网络发生错误时,检测到错误的设备需要某种方式将此信息告知问题流量的源头。例如,路由器可能不知道如何路由到目的地,或者某个端口无法访问,甚至可能是IP数据报的生存时间(TTL)到期,导致不再尝试路由跳转。对于所有这些情况以及更多其他情况,都会使用互联网控制消息协议(ICMP)来传递这些错误信息。
ICMP主要由路由器或远程主机使用,目的是将传输失败的原因回传给传输的发起方。
ICMP数据包结构
ICMP数据包的构成相当简单,它包含一个有几个字段的头部和一个数据部分,主机利用数据部分来查明是哪次传输引发了错误。
以下是ICMP数据包的主要字段:
- 类型字段:8位长,指定所传递消息的类型。例如,“目的地不可达”或“超时”。
- 代码字段:紧接在类型字段之后,用于提供比类型更具体的消息原因。例如,对于“目的地不可达”类型,有单独的代码表示“目的网络不可达”和“目的端口不可达”。
- 校验和字段:16位,其功能与我们目前介绍过的所有其他校验和字段相同。
- Rest of Header字段:一个32位的字段,某些特定的类型和代码会可选地使用此字段来发送更多数据。
- 数据载荷:ICMP数据包的数据载荷完全是为了让消息接收方知道是他们的哪次传输导致了所报告的错误。它包含整个IP头部以及问题数据包数据载荷部分的前8个字节。
面向用户的ICMP工具:Ping
ICMP的初衷并非供人类直接交互,而是为了让这类错误信息能在联网计算机之间自动传递。但是,存在一个特定的工具和两种消息类型对人类操作员非常有用,这个工具就是Ping。
Ping几乎存在于所有操作系统中,并且历史悠久。它是一个非常简单的程序,无论你使用哪种操作系统,其基本原理都是相同的。
Ping允许你发送一种特殊的ICMP消息,称为回显请求。ICMP回显请求本质上就是询问目的地:“你好,你在吗?”如果目的地处于运行状态且能够在网络上通信,它将发回一个ICMP回显应答消息。
如何使用Ping命令

你可以在任何现代操作系统的命令行中调用ping命令。其最基本的用法是键入ping加上一个目标IP地址或完全限定域名。
不同操作系统的ping命令输出非常相似。输出的每一行通常会显示发送ICMP回显应答的地址以及往返通信所花费的时间。它还会显示剩余的TTL值以及ICMP消息的大小(以字节为单位)。命令结束后,还会显示一些统计信息,例如发送和接收的数据包百分比、平均往返时间等。
不同操作系统下Ping命令的默认行为略有不同:
- 在Linux和Mac OS上,
ping命令会持续运行,直到终端用户发送中断事件(通常通过同时按下Control键和C键)来停止它。 - 在Windows上,
ping命令默认只发送4个回显请求。

Ping的高级选项

在所有环境中,ping都支持许多命令行标志(参数)来改变其行为,例如要发送的回显请求数量、数据包大小以及发送速度。你可以查阅所用操作系统的文档以了解更多信息。

课程总结
本节课中,我们一起学习了网络故障诊断的基础。我们了解了当网络通信失败时,ICMP协议如何负责在设备间传递错误信息。我们详细剖析了ICMP数据包的结构,包括类型、代码、校验和等字段。更重要的是,我们掌握了最实用的网络连通性测试工具——Ping。我们学习了它的工作原理(发送ICMP回显请求/应答),如何在命令行中使用它进行基本的连通性测试,以及不同操作系统下其默认行为的差异。理解并熟练使用Ping是每位IT支持人员诊断网络问题的第一步。
计算机网络基础:第2课:Traceroute 命令详解 🕵️♂️
在本节课中,我们将学习一个强大的网络诊断工具——Traceroute。它不仅能帮助我们确认两台计算机之间是否连通,还能揭示数据包在网络中传输的完整路径,并定位路径上可能出现问题的节点。
上一节我们介绍了 ping 命令,它可以测试网络连通性和延迟。本节中我们来看看 traceroute 如何提供更深入的路径信息。
Traceroute 的工作原理
traceroute 的核心原理在于巧妙地操纵 IP 数据包中的 TTL(生存时间) 字段。我们之前学过,数据包每经过一个路由器,其 TTL 值就会减 1。当 TTL 值减至 0 时,该数据包会被丢弃,同时路由器会向源主机发送一个 ICMP 超时 消息。
traceroute 正是利用了这一机制。它首先发送一个 TTL 设为 1 的数据包。这个数据包到达第一个路由器后,TTL 减为 0 并被丢弃,同时第一个路由器会返回 ICMP 超时消息。接着,traceroute 发送 TTL 设为 2 的数据包,它会到达第二个路由器后才被丢弃并返回消息。以此类推,TTL 值逐步增加。
数据包1: TTL=1 -> 到达第1跳路由器 -> 返回ICMP超时
数据包2: TTL=2 -> 到达第2跳路由器 -> 返回ICMP超时
数据包3: TTL=3 -> 到达第3跳路由器 -> 返回ICMP超时
...
这个过程会持续进行,直到数据包最终到达目标主机。对于路径上的每一跳(hop),traceroute 通常会发送三个相同的数据包,以获取更稳定的往返时间(RTT)数据。
解读 Traceroute 输出结果
traceroute 命令的输出格式清晰易懂。以下是输出的关键部分:
- 跳数:表示这是路径上的第几个路由器。
- 往返时间:显示三个数据包到达该路由器并返回的耗时(通常以毫秒为单位)。如果出现星号
*,表示在该次探测中没有收到响应。 - 设备信息:显示该跳路由器的 IP 地址。如果
traceroute能解析出其主机名,也会一并显示。

例如,一行输出可能看起来像这样:
3 10.0.0.1 (10.0.0.1) 5.123 ms 5.456 ms 5.789 ms
不同操作系统下的命令差异
需要注意的是,traceroute 命令在不同操作系统上存在一些差异:
- Linux 和 macOS:命令为
traceroute,默认发送 UDP 数据包到高端口号。 - Windows:命令为
tracert(注意缩写),默认使用 ICMP Echo Request(即ping使用的协议)数据包。

所有平台上的 traceroute 工具都支持通过命令行参数来指定更多选项。
进阶工具:MTR 与 PathPing

除了标准的 traceroute,还有两个功能更强大的类似工具:
- MTR:常用于 Linux 和 macOS。它将
ping和traceroute的功能结合,并实时持续运行,不断更新到每一跳的统计信息(如丢包率、延迟变化),便于观察网络状况随时间的变化。 - PathPing:Windows 系统下的工具。它首先运行一个类似
traceroute的路径发现,然后针对路径上的每个节点进行一段时间的统计分析(默认约50秒),最后一次性输出包含丢包率和延迟的聚合数据报告。
你可以将 MTR 理解为实时监控仪表盘,而 PathPing 则是一份详细的阶段性诊断报告。
总结
本节课中我们一起学习了 traceroute 命令。我们了解了它如何通过操纵 TTL 字段来探测网络路径,学会了解读其输出结果中的跳数、延迟和节点信息。我们还比较了它在不同操作系统(traceroute/tracert)上的区别,并介绍了更强大的长期路径监控工具 MTR 和 PathPing。掌握这些工具,将极大地提升你诊断和排查网络路径问题的能力。
079:测试端口连通性 🖧

在本节课中,我们将学习如何测试传输层的连通性。之前我们已经介绍了在网络层测试机器间连通性的多种方法,本节中我们来看看如何检查特定端口是否开放并可访问。
传输层连通性测试工具概述
有时,你需要知道网络连接在传输层是否正常工作。为此,你可以使用两个功能强大的工具:在Linux和Mac OS上的Netcat,以及在Windows上的Test-NetConnection。
使用Netcat测试端口
Netcat工具可以通过命令 nc 运行,它需要两个必需参数:主机和端口。
以下是Netcat的基本用法:
nc google.com 80
此命令会尝试在端口80上连接到google.com。如果连接失败,命令将退出;如果成功,你将看到一个闪烁的光标,等待你从键盘输入更多数据。这实际上是一种让你向监听服务发送应用层数据的方式。
如果你只关心某个端口的状态,可以使用 -z 标志(代表零输入/输出模式)和 -v 标志(代表详细输出)来执行命令。详细输出使命令的输出对人类更友好,而非详细输出则更适合在脚本中使用。
以下是带标志的命令示例:
nc -zv google.com 80
通过使用 -z 和 -v 标志,命令的输出将简单地告诉你是否可以连接到指定的端口。
在Windows上使用Test-NetConnection
在Windows系统上,Test-NetConnection 命令提供了一些类似的功能。

如果你只指定主机来运行 Test-NetConnection,它将默认使用ICMP Echo请求,类似于 ping 程序,但会显示更多的数据,包括所使用的数据链路层协议。
当你使用 -Port 标志执行 Test-NetConnection 时,可以要求它测试到特定端口的连通性。
以下是测试特定端口的命令示例:
Test-NetConnection google.com -Port 80

工具的强大功能与深入学习
需要指出的是,Netcat和Test-NetConnection的功能远比我们这里介绍的简单端口连通性测试示例要强大得多。事实上,它们是如此复杂的工具,要在一个视频中涵盖其所有功能是不现实的。
你应该阅读相关资料,了解这些超级强大的工具还能做些什么。我们在补充阅读材料中提供了一些链接。在你阅读完这些材料后,我们将进行一个小测验。
总结
本节课中我们一起学习了如何测试传输层的端口连通性。我们介绍了在Linux/Mac上使用Netcat(nc)命令,以及在Windows上使用Test-NetConnection命令来检查特定端口是否开放。这两个工具的功能非常丰富,建议你通过补充材料进一步探索。
080:域名解析工具 🔍

在本节课中,我们将学习域名解析的基本概念,并重点介绍一个名为 nslookup 的命令行工具。域名解析是互联网工作的核心环节之一,理解其原理和掌握相关工具对于IT支持专家至关重要。
域名解析概述
域名解析是互联网运行的重要组成部分。大多数时候,您的操作系统会为您处理所有查询。但作为一名IT支持专家,有时亲自运行这些查询会很有用,这样您就能确切地看到幕后发生的情况。
幸运的是,有许多不同的命令行工具可以帮助您完成这项任务。
常用工具:nslookup
最常见的工具是 nslookup,它在我们讨论过的三种操作系统(Linux、Mac 和 Windows)上均可使用。
nslookup 的基本用法非常简单:执行 nslookup 命令,后跟主机名。输出将显示用于执行请求的服务器以及解析结果。
例如,如果您需要知道 twitter.com 的 IP 地址,只需输入:
nslookup twitter.com
系统将返回对应的 A 记录。
交互模式
nslookup 的功能远不止于此。它包含一个交互模式,允许您设置额外选项并连续运行多个查询。
要启动交互式 nslookup 会话,只需输入 nslookup 命令,后面不跟任何主机名。您应该会看到一个尖括号 > 作为提示符。
在交互模式下,您可以连续发出多个请求,还可以进行一些额外配置,以帮助进行更深入的故障排除。
以下是交互模式下的一些关键操作:
- 指定查询服务器:在交互模式下,如果您输入
server后跟一个地址,那么所有后续的域名解析查询都将尝试使用该服务器,而不是默认的域名服务器。 - 设置查询记录类型:您也可以输入
set type=,后跟一个资源记录类型。默认情况下,nslookup会返回 A 记录,但此命令允许您明确请求与主机关联的 AAAA、MX 甚至 TXT 记录。
调试模式

如果您真想确切地了解发生了什么,可以输入 set debug。这将允许工具显示完整的响应数据包,包括任何中间请求及其全部内容。
警告:这会输出大量数据,可能包含诸如缓存响应的剩余 TTL(生存时间),乃至请求所针对的区域文件的序列号等详细信息。
总结
本节课中,我们一起学习了域名解析的重要性,并深入探讨了 nslookup 这一强大工具。我们了解了其基本用法、如何进入交互模式以进行连续查询和配置,以及如何使用调试模式来获取最详细的解析过程信息。掌握这些技能将帮助您更好地诊断和解决网络连接问题。
081:公共DNS服务器 🖧

在本节课中,我们将要学习公共DNS服务器的概念、用途以及如何安全地使用它们。DNS是网络功能正常的重要组成部分,了解其替代方案对于故障排除和网络建设至关重要。

功能正常的DNS的重要性
拥有功能正常的DNS是网络正常运行的重要部分。互联网服务提供商(ISP)几乎总是会为您提供递归域名服务器作为其服务的一部分。在大多数情况下,这些域名服务器是您的计算机与互联网上其他设备通信所需的全部。

企业内部的DNS需求


上一节我们介绍了ISP提供的DNS,本节中我们来看看企业内部的DNS需求。大多数企业也会运行自己的DNS服务器。至少,这需要用于解析内部主机的名称。从为笔记本电脑命名到能够通过名称而非IP地址来引用打印机,任何操作都需要您自己的域名服务器。
第三方DNS服务提供商
除了ISP和企业自建,第三种选择是使用DNS服务提供商,这种方式正变得越来越流行。别担心,我们将在后续课程中更详细地介绍这个概念。
测试DNS功能与备用方案
无论您的网络上使用哪种DNS服务模式,在怀疑DNS工作不正常时,有一种测试DNS功能的方法都是非常有用的。在您自己的DNS出现问题时,拥有一个备用DNS选项也极其有用。您甚至可能处于构建新网络的早期阶段,即使您计划最终拥有自己的域名服务器,它也可能尚未准备就绪。

以下是使用备用DNS的几种情况:
- 测试DNS功能是否正常。
- 作为主DNS故障时的备用方案。
- 在新网络建设初期,自建DNS服务器尚未就绪时。
公共DNS服务器简介
一些互联网组织运行所谓的公共DNS服务器,这些是专门设置的域名服务器,任何人都可以免费使用。
公共DNS服务器的用途与历史
使用这些公共DNS服务器是排除您可能遇到的任何名称解析问题的便捷技术。有些人甚至将所有解析需求都依赖于这些域名服务器。长期以来,公共DNS服务器是一种在系统管理员之间口口相传的“部落知识”。
在系统管理员传说中,多年来最常用的公共DNS服务器是由Level 3 Communications运行的,它是世界上最大的ISP之一。事实上,Level 3规模如此之大,其主要业务是向其他直接面向消费者的ISP销售其网络连接,而不是自己处理最终用户。
Level 3公共DNS服务器的IP地址是 4.2.2.1 到 4.2.2.6。这些IP地址很容易记住,但它们一直笼罩在神秘之中。虽然它们已向公众开放使用了近20年,但这并不是Level 3官方承认或宣传的服务。原因我们可能永远无法知晓,这是我们古老系统管理员传说中的一个巨大谜团。
其他知名的公共DNS选项
另一个容易记住的选择是谷歌公共DNS的IP地址。谷歌在IP地址 8.8.8.8 和 8.8.4.4 上运营公共域名服务器。与Level 3的IP地址不同,这些是谷歌官方承认并记录在案的,可供任何人免费使用。大多数公共DNS服务器都通过任播在全球范围内可用。许多其他组织也提供公共DNS服务器,但很少有像这两个选项那样容易记住的。😊
使用公共DNS的安全注意事项

在将您的任何设备配置为使用此类域名服务器之前,请务必做好研究。通过错误的响应劫持出站DNS请求,是重定向您的用户到恶意网站的简单方法。
选择与使用建议

务必确保域名服务器由信誉良好的公司运营,并且在非故障排除场景下,尽量使用您的ISP提供的域名服务器。大多数公共DNS服务器也会响应ICMP Echo请求,因此它们是使用 ping 命令测试一般互联网连接的绝佳选择。😊
总结


本节课中我们一起学习了公共DNS服务器。我们了解了它们作为ISP和企业自建DNS的补充或替代方案的角色,探讨了它们在故障排除、备用方案和网络建设初期的用途。我们介绍了历史上著名的Level 3 DNS和目前广泛使用的Google Public DNS,并重点强调了在选择和使用公共DNS时,必须注意安全风险,优先选择信誉良好的服务商。记住,在常规情况下,使用ISP提供的DNS通常是更安全、更可靠的选择。
082:DNS注册与过期 🏷️

在本节课中,我们将要学习域名系统(DNS)中关于域名注册与过期的核心知识。我们将了解域名如何在全球范围内被唯一分配、注册商的作用、域名转移的流程,以及域名所有权的时间限制。
域名系统的全球性与唯一性 🌐
上一节我们介绍了DNS的分层管理结构。本节中我们来看看域名如何在全球系统中保持唯一性。

DNS是一个全球性的系统,由ICANN在顶层进行分级管理。域名必须具有全球唯一性,这样的全球系统才能正常工作。不能让任何人随意决定使用任何域名,否则会导致混乱。
注册商的概念与演变 🏢
为了解决域名分配问题,引入了注册商的概念。
注册商是一个负责向其他组织或个人分配单个域名的机构。最初,只有少数几家注册商,其中最著名的是Network Solutions Inc.公司。它负责注册几乎所有非国家特定的域名。
随着互联网的普及,该领域最终产生了足够的市场需求以引入竞争。最终,美国政府与Network Solutions Inc.达成协议,允许其他公司也销售域名。如今,全球有数百家这样的公司。
如何注册域名 📝

以下是注册一个域名的基本步骤,这个过程相当简单。

- 在注册商处创建一个账户。
- 使用其网页界面搜索一个域名,以确定它是否仍可用。
- 商定支付价格和注册时长。
一旦你拥有了域名,你可以选择让注册商的名称服务器充当该域的权威名称服务器,也可以配置你自己的服务器作为权威服务器。

域名的转移流程 🔄
域名也可以由一方转移给另一方,或从一个注册商转移到另一个注册商。
以下是域名转移的典型工作流程。
- 接收方注册商会生成一个唯一的字符串,以证明你拥有该域名并且有权将其转移给他人。
- 你配置你的DNS设置,在一个特定的记录(通常是一个TXT记录)中包含这个字符串。
- 一旦此信息完成传播,就可以确认你既拥有该域名,也批准了其转移。
- 之后,所有权将转移到新的所有者或注册商。


域名注册的有效期与过期 ⏳
域名注册的一个重要部分是,这些注册只在一段固定的时间内有效。
你通常需要支付费用来注册域名一定的年限。密切关注你的域名可能何时过期非常重要,因为一旦过期,它们就会被释放,任何人都可以注册它们。
本节课中我们一起学习了域名注册与过期的全过程。我们了解了域名必须保持全球唯一性,注册商在其中扮演着分配和管理者的角色。我们掌握了注册、转移域名的具体步骤,并认识到域名所有权具有时效性,必须及时续费以维持所有权。理解这些概念对于管理和维护网络资产至关重要。
083:主机文件 📁

在本节课中,我们将要学习一个在DNS技术普及之前,用于将网络地址与易记名称关联起来的基础技术——主机文件。我们将了解它的工作原理、历史作用以及在现代计算环境中的遗留用途。
主机文件的起源

上一节我们介绍了计算机通信需要IP地址,但人类更擅长记忆单词。在DNS技术确立并全球可用之前很久,计算机操作员就清楚地认识到,他们需要一个基于语言的系统来指代网络设备。
人类更擅长记忆描述性词语,而数字则代表了计算机思考和通信的自然方式。将数字化的网络地址与词语关联起来的原始方法就是通过主机文件。

什么是主机文件?
主机文件是一个纯文本文件,其中每一行都包含一个网络地址,后跟可以指代该地址的主机名。
以下是一个主机文件条目的示例:
1.2.3.4 web_server
这意味着,在存放此主机文件的计算机上,用户可以使用 web_server 来指代IP地址 1.2.3.4。
主机文件由操作系统本身的网络协议栈进行评估。这意味着,只要在此处添加一个条目,就会在你可能引用网络地址的任何地方生效。沿用我们之前的例子,用户可以在网页浏览器的地址栏中输入 web_server,或者发出 ping web_server 命令,这两种情况它都会被解析为 1.2.3.4。
主机文件的现代存在与回环地址
主机文件可能是古老的技术,但它们一直沿用至今。所有现代操作系统,包括驱动我们手机和平板电脑的系统,仍然拥有主机文件。

其中一个原因涉及到一个我们尚未介绍的特殊IP地址:回环地址。
- 回环地址总是指向自身。因此,回环地址是一种将网络流量发送给自己的方式。
- 发送到回环地址的流量会绕过所有网络基础设施本身,此类流量永远不会离开本节点。
IPv4的回环IP是 127.0.0.1。时至今日,它仍然通过主机文件中的一个条目在每个现代操作系统中进行配置。几乎所有现存的主机文件至少都会包含这样一行:
127.0.0.1 localhost
其后很可能还跟着 ::1 localhost,其中 ::1 是IPv6的回环地址。

主机文件的当前用途与风险
既然DNS无处不在,主机文件已经不太常用了。但它们仍然存在,并且了解它们仍然很重要。有些软件甚至需要主机文件中有特定的条目才能正常运行,尽管这种做法可能看起来有些过时。
最后,主机文件是计算机病毒干扰和重定向用户流量的常用手段。如今使用主机文件并不是一个好主意,但它们在IT支持中确实有一些有用的故障排除用途。

在几乎所有主流操作系统上,都会在尝试DNS解析之前先检查主机文件。这允许你强制让单台计算机认为某个域名始终指向一个特定的IP。
课程总结
本节课中我们一起学习了主机文件。我们了解到,在DNS出现之前,主机文件是映射主机名和IP地址的关键工具。它通过纯文本文件实现映射,由操作系统直接读取。虽然现在主要被DNS取代,但主机文件仍然存在,主要用于定义本地回环地址(127.0.0.1 指向 localhost),进行本地测试、软件配置或临时的网络故障排除。同时,我们也认识到它可能被恶意软件利用,因此需要谨慎对待。
我们已经涵盖了很多内容,如果需要,请花时间回顾,确保理解我们所讨论的概念。接下来是一个小测验。
084:什么是云 ☁️

在本节课中,我们将要学习“云”这一核心概念。云是当今IT领域的热门话题,理解它的本质对于IT支持专家至关重要。我们将从基本定义出发,逐步探讨其背后的技术原理、不同类型以及实际应用场景。
什么是云?
你可能越来越多地听到人们谈论“云”。有公有云、私有云、混合云,甚至还有雨云(不过后者与此无关)。你还会听到云客户端、云存储和云服务器等术语。报纸头条和电视广告中也常提及云。人们说云是未来,IT支持专家确实需要跟上最新的技术创新以提供支持。
但云究竟是什么?事实上,云并非单一的技术、发明或任何有形之物。它只是一个概念,套用另一个关于云的玩笑话来说,这个概念本身也相当模糊。“云”这个术语被用来指代如此难以定义的事物,这本身就很贴切。
云计算的核心概念
基本上,云计算是一种技术方法,它以便于共享的方式提供计算资源,让众多用户能在需要时获取所需资源。这种方法在很大程度上依赖于公司之间利用这些共享资源相互提供服务。
云计算的核心是一种被称为硬件虚拟化的技术。硬件虚拟化是理解云计算技术如何工作的核心概念。它允许物理机器和逻辑机器的概念彼此分离。通过虚拟化,一台被称为主机的物理机器可以运行多个独立的客户机虚拟实例。

操作系统期望能够以特定方式与底层硬件通信。硬件虚拟化平台使用一种名为管理程序的软件。管理程序是一种运行和管理虚拟机的软件,同时为这些客户机提供一个与真实硬件无异的虚拟操作平台。

公式/代码示例:
物理主机 (Host) -> 管理程序 (Hypervisor) -> 多个虚拟客户机 (Guest VMs)
虚拟化如何工作
通过虚拟化,一台物理计算机可以作为许多独立虚拟实例的主机。每个虚拟实例运行自己独立的操作系统,并且在许多方面与运行在物理硬件上的相同操作系统没有区别。
上一节我们介绍了虚拟化的基本概念,本节中我们来看看云如何在此基础上更进一步。
从虚拟化到云
云将这一概念又推进了一步。如果你构建一个由大量互连机器组成的庞大集群,这些机器都能作为许多虚拟客户机的主机,那么你就得到了一个可以在所有实例之间共享资源的系统。
让我们用一个更实际的方式来解释。假设你需要四台服务器。
- 首先,你需要一台电子邮件服务器。经过仔细分析,你预计这台机器需要8GB内存才能正常运行。
- 接下来,你需要一台域名服务器。这台域名服务器几乎不需要任何资源,因为它不需要执行任何真正的计算任务。但它不能和你的电子邮件服务器运行在同一台物理机器上,因为你的邮件服务器需要运行Windows,而域名服务器需要运行Linux。你的硬件供应商销售的最小服务器配置是8GB内存的机器,因此你不得不购买另一台相同规格的机器。
- 最后,你有一个财务数据库。这个数据库在平时相当安静,正常操作时不需要太多资源,但为了让你的月末结算流程能及时完成,你确定这台机器需要32GB内存。它必须运行在一个专为该数据库设计的特殊Linux版本上,因此域名服务器也不能运行在这台机器上。所以你订购了一台具有那么大内存的服务器,以及另一台相同规格的服务器作为备份。

为了以这种方式运营业务,你必须购买四台机器,内存总量高达80GB。这看起来相当不合理,因为很可能在同一时间只会用到其中总共40GB的内存。在大部分月份里,你使用的资源要少得多。这是将大量资金花在了你永远不会或很少会使用的资源上。
云解决方案的优势
所以,让我们忘掉那个模型。相反,想象一个由互连服务器组成的庞大集合,可以托管虚拟化服务器。运行在这个服务器集合上的虚拟实例可以根据需要获得底层内存的访问权限。

在这种模式下,运营这个服务器集合的公司可以向你收费,以托管你的服务器虚拟实例,而不是由你购买四台物理机器。而且其成本可能远低于你购买四台物理服务器的花费。云的好处显而易见。
但让我们更进一步。能够托管你虚拟化实例的云计算公司还提供数十种其他服务。因此,你无需担心建立自己的备份解决方案,只需使用他们的服务即可。这很简单。如果你需要负载均衡器,你也可以直接使用他们的解决方案。此外,如果任何底层硬件出现故障,他们会在你毫无察觉的情况下将你的虚拟实例迁移到另一台机器上。
最重要的是,由于这些都是虚拟服务器和服务,你无需等待订购的物理硬件送达。你只需要在网页浏览器中点击几下按钮。这是一笔相当不错的交易。
云的类型
在我们的类比中,我们使用了公有云的例子,即由另一家公司运营的大型机器集群。私有云采用相同的概念,但它完全由一家大型公司使用,并且通常物理托管在其自己的场所内。
你可能遇到的另一个术语是混合云,它并非一个独立的概念。这个术语只是用来描述一些情况,例如公司可能在私有云上运行其最敏感的专有技术,同时将不太敏感的服务器委托给公有云。

总结
本节课中我们一起学习了云的基础知识。它是一种新的计算模式,其中大型机器集群让我们能够以更好的方式利用可用资源总量。云让你能够在瞬间配置一台新服务器,并利用许多现有服务,而无需自己构建。总而言之,对于任何使用云的人来说,前景一片光明。
云计算基础:第2课:一切即服务

在本节课中,我们将深入探讨云计算的扩展概念,特别是“一切即服务”模型。我们将了解基础设施即服务、平台即服务和软件即服务之间的区别,以及它们如何共同构成了现代云计算的核心。
在上一个视频中,我们给出了云计算的基本定义。但如今,这个术语的含义已远不止托管虚拟机。
随着云计算的兴起,“X即服务”这个术语的使用越来越频繁。这里的“X”可以代表许多不同的事物。我们目前描述的云,最贴切的定义可能是基础设施即服务。

基础设施即服务背后的理念是,您无需操心构建自己的网络或服务器,只需付费让他人提供这些服务。

最近,云的定义已远远超出了基础设施即服务的范畴。其中最常见的是平台即服务和软件即服务。
平台即服务是云计算的一个子集,它为客户提供了一个运行其服务的平台。
这基本上意味着,平台为任何想要运行的软件提供了一个执行引擎。例如,编写新应用程序的Web开发人员并不真的需要一个配备复杂文件系统、专用资源等完整功能的服务器。无论这个服务器是虚拟的还是物理的,都不重要。他们真正需要的只是一个能让其Web应用程序运行的环境。这正是平台即服务所提供的。
软件即服务在此基础上更进一步。如果说基础设施即服务抽象了您所需的物理基础设施,平台即服务抽象了您所需的服务器实例,那么软件即服务本质上是一种向他人授权使用软件的方式,同时该软件仍由提供方集中托管和管理。


软件即服务在某些领域变得非常流行。一个很好的例子是电子邮件服务。例如,谷歌的Gmail for Business或微软的Office 365 Outlook,都是软件即服务的绝佳示例。使用这些服务意味着您信任谷歌或微软来处理您电子邮件服务的几乎所有方面。
软件即服务是一种获得巨大发展势头的模式。现代网页浏览器功能强大,许多过去需要独立软件才能完成的任务,现在都能在浏览器中良好运行。而如果某件事物能在浏览器中运行,它就成为了软件即服务的绝佳候选者。
如今,您可以在基于订阅的软件即服务模型下找到各种产品,从文字处理器到图形设计程序,再到人力资源管理解决方案。越来越多地,企业网络的核心目的仅仅是提供互联网连接,以访问云端不同的软件或数据。
总结
本节课我们一起学习了“一切即服务”模型。我们明确了基础设施即服务让您无需管理硬件,平台即服务进一步为您提供了应用程序运行环境,而软件即服务则让您通过订阅直接使用云端托管的完整软件。这些服务模型共同构成了现代云计算灵活、可扩展的基础。
086:云存储 📁


在本节课中,我们将要学习云存储技术。云存储是云计算的一种流行应用方式,它允许用户将数据存储在远程服务器上,并通过网络进行访问和管理。我们将探讨其工作原理、优势以及典型应用场景。
什么是云存储? ☁️
上一节我们介绍了云计算的基本概念,本节中我们来看看一种具体的云服务——云存储。
另一种使用云技术的流行方式是云存储系统。在云存储系统中,客户与云存储提供商签订合约,由提供商负责确保其数据的安全、可访问和可用性。这些数据可以是任何内容,从个人文档到大型数据库备份。
云存储的优势 🚀
了解了云存储的基本定义后,接下来我们分析它相较于传统存储机制的主要优势。
云存储相比传统存储机制有许多好处。
以下是云存储的几个关键优势:
- 无需硬件管理:没有云存储时,管理存储阵列通常很麻烦。硬盘是计算机系统中最常出现故障的组件之一。这意味着你必须仔细监控用于存储的设备,并在需要时更换部件。而使用云存储解决方案,维持底层物理硬件运行的责任在于提供商。
- 地理冗余与高可用性:云存储提供商通常在多个不同的地理区域运营。这让你可以轻松地在多个站点复制数据。许多提供商甚至是全球规模的,这使你的数据对世界各地的用户来说都更易于访问。这也提供了防止数据丢失的保护,因为如果一个存储区域出现问题,你仍然可能从另一个区域访问数据。
- 弹性扩展与成本管理:云存储解决方案能随你的需求增长。通常,你只需为你实际使用的存储量付费,而不是像本地存储那样拥有固定容量。虽然这并不总是意味着云存储必然更便宜,但它确实意味着你可以更好地管理实际的存储支出。
云存储的应用场景 📱
云存储不仅适用于替代大规模本地存储阵列,也是备份较小数据块的优秀解决方案。
以下是云存储的一个常见应用实例:
- 你的智能手机可能会自动将拍摄的每张照片上传到云存储解决方案。如果你的手机损坏、丢失或不小心删除了照片,它们仍然安全地保存在云端。这样,你就永远不会丢失你爱犬Taco的那些珍贵照片了。别担心,Taco,你那2000张照片都得到了充分保护。
总结 📝
本节课中我们一起学习了云存储。我们了解到,云存储是一种由服务商维护硬件、提供地理冗余备份、并按需弹性扩展的远程数据存储服务。它既能服务于企业级的大型数据存储与备份,也能方便地保护个人设备上的珍贵数据,例如手机照片的自动备份。
087:IPv6地址与子网划分 🧠

在本节课中,我们将要学习IPv6地址。我们将了解为何需要从IPv4过渡到IPv6,探索IPv6地址的庞大空间和独特格式,并学习如何简化表示它们。最后,我们还会了解IPv6中子网划分的基本概念。
IPv4的局限性与IPv6的诞生
上一节我们介绍了IPv4地址,本节中我们来看看它的局限性。IANA(互联网数字分配机构)已经耗尽了IPv4地址。
当IPv4最初被开发时,选择了一个32位的数字来代表网络上一个节点的地址。当时互联网尚处于起步阶段,没有人预料到它会像今天这样爆炸式地普及。虽然选择了32位,但对于世界上联网设备的数量来说,这个地址空间已经不够用了。
IPv6正是为了解决这个问题而开发的。到20世纪90年代中期,我们将在某个时间点耗尽IPv4地址空间这一点变得越来越明显。因此,一个新的互联网协议被开发出来,即互联网协议第6版,或称IPv6。
你可能会好奇版本5或IPv5发生了什么。这其实是一个有趣的冷知识。IPv5是一个引入了连接概念的实验性协议,它从未被广泛采用,并且连接状态后来由传输层和TCP更好地处理了。尽管IPv5基本上已成为历史遗迹,但在开始开发IPv6时,共识是不再重用IPv5这个名称。
IPv6地址的巨大规模

IPv4和IPv6之间最大的区别在于为地址保留的位数。IPv4地址是32位的,这意味着大约有42亿个独立地址。而IPv6地址的大小是128位。一旦你进行计算,这个尺寸差异是惊人的。
不用担心,我们不会让你算。2的128次方会产生一个39位长的数字。这个数字范围有一个你可能从未听说过的名字:undecillion(10的36次方)。undecillion不是一个你常听到的数字,因为它极其巨大。现实中几乎没有事物能达到这个规模。一些关于构成整个地球及其上一切事物的原子总数的猜测才进入这个数字范围。这应该能告诉你,我们谈论的是一个非常、非常大的数字。
如果我们能给地球上的每个原子分配一个自己的IP地址,那么在网络设备方面,我们很可能在很长一段时间内都不会有问题。只是为了好玩,我们来看看这个数字实际看起来是什么样子。它看起来像这样:
340,282,366,920,938,463,463,374,607,431,768,211,456
这很令人震惊,对吧?就像IPv4地址实际上只是一个32位二进制数一样,IPv6地址实际上也只是128位的二进制数。
IPv6地址的表示方法
IPv4地址被写成四个十进制数的八位组,只是为了让人更容易阅读。但对IPv6地址尝试做同样的事情就行不通了。相反,IPv6地址通常被写成八个由16位组成的组。这些组中的每一个又由四个十六进制数字组成。
一个完整的IPv6地址可能看起来像这样:
2001:0db8:0000:0000:0000:ff00:0042:8329
这仍然太长了,所以IPv6有一种表示法可以让我们进一步简化它。

说明IPv6地址数量之多的一个方法是看我们的示例IP。每一个以 2001:0db8 开头的IPv6地址都被保留用于文档和教育目的,就像本课程这样。这超过了18 quintillion(百亿亿) 个地址,比整个IPv4地址空间还要大得多,仅为此目的而保留。
简化IPv6地址的规则
以下是简化IPv6地址的两条规则:
- 移除前导零:你可以从任何一个组中移除任何前导零。
- 压缩连续的零组:任何由零组成的连续组可以用两个冒号
::替换。需要注意的是,对于任何特定地址,这只能进行一次。否则,你将无法确切知道双冒号替换了多少个零。

对于这个IP地址 2001:0db8:0000:0000:0000:ff00:0042:8329,我们可以应用第一条规则,移除每个组中的所有前导零。这将给我们留下:

2001:db8:0:0:0:ff00:42:8329
一旦我们应用第二条规则,即用双冒号替换仅包含零的连续部分,我们最终会得到:

2001:db8::ff00:42:8329

这仍然不如IPv4地址易读,但它是一个很好的系统,有助于稍微减少长度。

特殊IPv6地址
我们可以看到这种方法在IPv6环回地址上被用到了极致。你可能记得,对于IPv4,这个地址是 127.0.0.1。对于IPv6,环回地址是31个零后面跟着一个1,可以一直压缩到只剩 ::1。

IPv6地址空间还有其他几个保留的地址范围,不仅仅是用于文档目的或环回地址的范围。
例如,任何以 ff00:: 开头的地址都用于组播,这是一种同时向一组主机发送数据的方式。
同样需要知道的是,以 fe80:: 开头的地址用于链路本地单播地址。链路本地单播地址允许本地网段通信,并且是基于主机的MAC地址配置的。IPv6主机使用链路本地地址来接收其网络配置,这很像DHCP的工作方式。主机的MAC地址通过一个算法运行,将其从48位数转换为唯一的64位数,然后被插入到地址的主机ID部分。

IPv6子网划分
IPv6地址空间如此巨大,从一开始就没有必要像我们过去对IPv4那样考虑将其分割成地址类别。在IPv6中,网络ID和主机ID之间有一条非常简单的分界线:任何IPv6地址的前64位是网络ID,后64位是主机ID。这意味着任何一个给定的IPv6网络都有超过9 quintillion(九百亿亿)个主机的空间。
尽管如此,有时网络工程师可能出于管理目的想要分割他们的网络。IPv6子网划分使用你已经熟悉的CIDR(无类别域间路由)表示法。这用于针对IPv6地址的网络ID部分定义一个子网掩码。

本节课中我们一起学习了IPv6。我们了解了IPv6因IPv4地址耗尽而诞生,其128位的地址空间提供了近乎无限的地址。我们学习了IPv6地址的十六进制表示法以及简化它的两条重要规则。我们还认识了一些特殊的IPv6地址,如环回地址 ::1、组播地址和链路本地地址。最后,我们了解到IPv6采用固定的前64位作为网络ID,后64位作为主机ID,并使用CIDR表示法进行子网划分,使得地址管理在庞大空间下依然清晰简单。
088:IPv6头部详解 🧩

在本节课中,我们将要学习IPv6协议头部结构。与IPv4相比,IPv6不仅地址空间更大,其头部设计也进行了显著简化与优化,旨在提升网络性能。这对于追求高效网络的IT支持专家而言,是一个好消息。
上一节我们介绍了IPv6的开发背景,本节中我们来看看其头部的具体构成。

头部字段解析
IPv6头部比IPv4头部更为简洁。以下是其核心字段的详细说明:
以下是IPv6头部的主要字段及其功能:

- 版本字段
- 这是一个 4位 的字段,用于定义所使用的IP协议版本。IPv4头部也以相同的字段开始。



-
流量类别字段
- 这是一个 8位 的字段,用于定义IP数据报内所包含流量的类型。它允许不同类别的流量获得不同的优先级。
-
流标签字段
- 这是一个 20位 的字段,与流量类别字段结合使用,帮助路由器为特定数据报做出服务质量级别的决策。





- 有效载荷长度字段
- 这是一个 16位 的字段,用于定义数据报中数据载荷部分的长度。


- 下一个头部字段
- 这是IPv6独有的概念,需要额外解释。IPv6地址长度是IPv4地址的四倍,这意味着传输更多比特需要更长时间。为了减少IPv6地址给网络带来的额外数据负担,IPv6头部被设计得尽可能短。实现方法之一是将所有可选字段从IPv6头部本身抽象出去。
- 下一个头部字段定义了紧接在当前头部之后的是哪种类型的头部。这些附加头部是可选的,并非完整IPv6数据报的必需部分。每个附加的可选头部都包含自己的“下一个头部”字段,如果存在大量可选配置,可以形成一条头部链。



- 跳数限制字段
- 这是一个 8位 的字段,其作用和目的与IPv4头部中的TTL字段完全相同。


- 源地址与目标地址字段
- 这两个字段各占 128位,用于存储IPv6地址。
数据报组装


最后,如果“下一个头部”字段指定了另一个头部,那么该头部将在此处接续。如果没有指定,则接下来是数据载荷,其长度由“有效载荷长度”字段指定。


本节课中我们一起学习了IPv6头部的结构。关键点在于,IPv6头部通过固定长度和将可选功能移至扩展头部的方式,变得比IPv4头部更简单、更高效。理解这些字段,特别是“下一个头部”字段的链式设计,是掌握IPv6数据包如何封装和传输的基础。
089:IPv6与IPv4的和谐共存 🌉

在本节课中,我们将学习IPv6如何与当前广泛使用的IPv4协议共存。由于整个互联网无法一次性切换到IPv6,因此需要过渡技术来确保两种协议能够同时运行。我们将重点介绍两种关键机制:IPv4映射地址空间和IPv6隧道技术。
概述
整个互联网和所有连接的网络不可能一次性全部切换到IPv6。这需要大量的协调工作,并且存在许多可能完全无法识别IPv6但仍需连接的旧设备。因此,IPv6要普及的唯一途径,是开发一种让IPv6和IPv4流量能够同时共存的方法。这将允许各个组织在条件成熟时逐步完成过渡。
IPv4映射地址空间
上一节我们提到了IPv6普及的挑战,本节中我们来看看一种让IPv4流量在IPv6网络中传输的解决方案。
IPv6规范预留了一部分可以直接与IPv4地址关联的地址,这被称为IPv4映射地址空间。

以下是其工作原理:
- 任何以80个零开头,后跟16个1的IPv6地址,都被视为IPv4映射地址空间的一部分。
- 该IPv6地址中剩余的32位,就是它所代表的IPv4地址的32位。
这为IPv4流量在IPv6网络上传输提供了一种途径。其地址格式可以表示为:
::FFFF:<IPv4地址>
例如,IPv4地址 192.0.2.1 对应的IPv4映射IPv6地址是 ::FFFF:192.0.2.1。
IPv6隧道技术
虽然IPv4映射地址解决了部分问题,但更重要的是让IPv6流量能够在IPv4网络上传输。对于单个组织而言,迁移到IPv6比互联网核心网络迁移要容易。因此,在IPv6普及的过程中,它需要一种方法穿越互联网骨干网中遗留的IPv4网络。
当前实现这一目标的主要方式是通过IPv6隧道。
IPv6隧道在概念上相当简单。它由连接两端的IPv6隧道服务器组成。


以下是隧道的工作流程:
- 这些IPv6隧道服务器接收传入的IPv6流量。
- 将其封装在传统的IPv4数据报内。
- 封装后的数据通过IPv4互联网空间传输。
- 数据被另一端的IPv6隧道服务器接收。
- 该服务器执行解封装操作,并将IPv6流量继续传递到网络中。
隧道代理与协议

随着IPv6隧道技术的发展,IPv6隧道代理的概念也应运而生。
这些是为你提供IPv6隧道端点的公司。这样一来,你无需在自己的网络中引入额外的设备。
用于这类IPv6隧道的协议有很多,它们相互竞争。由于这仍是一个新兴且不断发展的领域,最终哪种协议会胜出尚不明确。在本视频之后,我为你留下了一些链接,你可以阅读关于主要竞争协议的信息。
不过,最终哪种隧道技术成为最普遍的解决方案并不重要。随着IPv6的全面普及,隧道技术本身可能也会逐渐消失。网络层的未来是采用IPv6作为主要协议,终有一天我们将不再需要任何隧道。未来是无限的,也是“无隧道”的,或者类似这样的愿景。
总结
本节课中我们一起学习了IPv6与IPv4共存的两种关键技术。我们了解了IPv4映射地址空间如何让IPv4地址在IPv6网络中表示和路由。接着,我们探讨了更重要的IPv6隧道技术,它通过封装和解封装的方式,让IPv6数据包能够穿越现有的IPv4骨干网进行传输。最后,我们提到了隧道代理服务和多样的隧道协议,并展望了未来全面转向IPv6后,这些过渡技术将完成其历史使命。
你已经出色地完成了所有这些内容的学习,花点时间为自己鼓鼓掌吧。你还需完成最后一次测验和一个最终项目,然后就可以将这门课程从你的待办清单中划掉了。你是否已经看到隧道尽头的曙光?😊
090:网络故障排查角色扮演 🎭


在本节课中,我们将通过一个模拟面试场景,学习如何在实际工作中排查网络连接问题。我们将跟随一位IT支持专家,看他如何引导用户、收集信息并最终解决一个看似“网络瘫痪”的故障。

场景概述
面试官扮演一位远程办公室的用户,他一大早惊慌地打电话求助,声称办公室的网络瘫痪了。作为IT支持人员,你的任务是冷静地引导用户,找出问题的真正根源。
排查过程
上一节我们介绍了场景背景,本节中我们来看看具体的排查步骤。
第一步:安抚用户与收集症状
首先,我会安抚用户,表示能够提供帮助,并开始收集故障的具体症状。
- 用户描述:用户尝试访问公司内部网站
intranet.companyX.com,但收到错误信息“页面无法显示”。 - 初步判断:我首先在自己的电脑上测试该内部网站,发现可以正常访问。这说明问题可能出在用户本地,而非整个网络。
- 扩大测试范围:我让用户尝试访问一个外部网站(如
google.com),用户同样收到“页面无法显示”的错误。这进一步将问题范围缩小到用户电脑的网络连接本身。
第二步:检查网络配置
既然问题指向用户电脑的网络连接,接下来我们需要检查其网络配置。以下是需要检查的关键信息。
我指导用户打开Windows命令提示符(CMD),并运行命令 ipconfig /all 来查看详细的网络配置信息。用户看到了IP地址、默认网关和DNS服务器地址。
用户很好奇这些术语的含义,我进行了如下解释:
- IP地址:分配给计算设备在互联网上与其他计算机通信的唯一数字地址。
- 默认网关:计算机用来向其他计算机或互联网发送信息的访问点,通常是一个路由器。
- DNS:域名系统,负责将域名(如
google.com)翻译成IP地址。
第三步:分析异常信息
用户提供了他的IP地址:192.168.x.x。然而,我已知公司网络只使用 172.x.x.x 范围的地址。这个差异是关键的线索。
这引出了一个问题:用户的电脑是如何获得IP地址的?我询问用户电脑是否使用DHCP。
- DHCP:动态主机配置协议。它能自动为计算设备分配IP地址,并发送其他网络配置信息。这很重要,因为如果IP地址是静态设置的,我们就需要手动更改它;而如果是自动分配的,问题可能出在分配过程本身。
那么,用户为什么会从DHCP获得错误的IP地址呢?可能的原因包括:
- DHCP服务器配置错误。
- 用户连接到了错误的网络。
第四步:定位并解决问题
我们从更简单的可能性开始排查:检查用户连接到了哪个网络。
我询问用户使用的是有线还是无线网络。用户回答使用的是笔记本电脑的无线网络。于是,我指导他检查系统右下角的Wi-Fi图标,进入网络偏好设置,查看实际连接的网络名称。
结果发现,用户连接的是街对面某个陌生的无线网络,而不是公司的企业Wi-Fi。当用户切换回正确的公司无线网络后,问题立即得到解决。所谓的“网络瘫痪”其实并不存在。
总结与要点回顾 🎯
本节课中我们一起学习了一个完整的网络故障排查案例。通过这个场景,我们看到了两个非常重要的面试和工作技能:
- 提出澄清性问题:用户最初报告“网络瘫痪”,但这个描述可能对应许多不同的问题。在开始尝试修复之前,必须通过提问弄清楚到底哪里出了错。
- 清晰解释技术术语:在面试或工作中,如果你使用了像DNS或DHCP这样的术语,你必须清楚它的含义以及它与当前场景的相关性,并能向非技术人员解释清楚。
本次模拟面试到此结束。我们将在下一门课程的结尾再次相见。
091:课程总结 🎉


在本节课中,我们将对已学习的计算机网络核心知识进行总结,回顾关键概念,并展望后续课程内容。
课程回顾与成就
你已成功完成本阶段学习。掌握全部内容是一项重大成就。
我们已涵盖相当技术性且复杂的知识,完成全部学习是真正的壮举。请花点时间思考你已掌握的知识量。
已掌握的核心知识
你现在已深入了解计算机之间如何通信,这是人与人之间通信方式的重要组成部分。计算机网络每天被数十亿人使用,构成了全球经济的支柱。
以下是本阶段学习的关键内容总结:
- 信号传输:你已学习信号如何通过电缆传输。
- 协议协同:你已学习多种不同协议如何协同工作,确保数据正确传输。
- 网络服务:你已学习各种网络服务,例如帮助人类使用计算机的 DNS(域名系统)。
知识的应用价值
这些知识非常重要。你将能把所有这些知识应用到你的IT支持职业生涯中。
你也可以用它来帮助你自己的家庭网络运行得更好。无论如何,恭喜你,你已为自己赢得了优势。
实践与思考
下次你访问社交媒体网站、流式传输视频,或仅仅是与朋友家人在线聊天时,请花点时间思考一下:互联网上传输的每一点数据都涉及如此多不同的网络设备、层和协议,这是多么神奇。
你也应该花点时间惊叹于你现在已理解所有这些是如何运作的。
下阶段课程预告
恭喜!在下一门课程 《操作系统》 中,你将学习如何成为一名高级用户。
我的朋友兼同事 Cindy Quach 将作为你的向导,带你探索 Windows 和 Linux 操作系统。
准备好享受乐趣并动手实践吧,Cindy 将教你如何成为一名命令行高手。
本节课中,我们一起回顾了计算机网络的核心原理,包括信号传输、协议协同及关键网络服务。你已为理解现代通信的基石奠定了坚实基础。接下来,我们将进入操作系统的世界,继续提升你的技术能力。
092:亚历克斯的职业路径 🚀

在本节课中,我们将跟随亚历克斯的分享,了解进入IT行业的真实路径,并打破关于技术工作的常见误解。我们将看到,IT技能是可以通过学习获得的,并且这个行业提供了稳定且多样化的职业发展机会。
很多人对IT或技术工作有一个很大的误解,认为它很复杂、很困难,或者只有一小部分人能够胜任这些任务。
这些看法都不正确。这些是非常具体的技能,你需要去学习掌握,这绝对是真的。也许大多数人的确不具备这些技能。
但这并不意味着人们无法学习。IT行业非常稳定。
你有机会获得非常好的生活。你的职业生涯可以有非常多的方向。我认识的很多人都是从桌面支持起步,现在成为了网络工程师、站点可靠性工程师或软件工程师。这是一个不会消失的行业。
它只会不断增长,机会总是存在的。
我大学主修哲学和历史,实际上还辅修了创意写作。
虽然其中一些技能确实发生了迁移,并帮助我在工作中表现出色,但我在大学期间完全没有学到任何技术方面的知识。
我从未上过学术性的计算机科学课程,也从未上过网络课程。
我从未以任何方式上过任何与计算机相关的课程。
教育很重要,但还有其他途径可以让你学到在IT和技术领域获得成功职业生涯所需的技能。
核心要点总结 💡
本节课中我们一起学习了亚历克斯的职业路径分享。我们了解到:
- 打破误解:IT工作并非天生复杂或只属于少数人,它是可以通过学习掌握的特定技能。
- 行业优势:IT行业稳定、薪酬优厚,并提供多样化的职业发展路径(例如从桌面支持到网络/软件工程师)。
- 学习路径多样:正规教育并非唯一途径。像亚历克斯这样拥有文科背景的人,通过其他方式学习技能,同样可以在IT领域取得成功。
关键在于保持学习的心态和意愿,技能是可以后天培养的。
093:课程总结与祝贺
在本节课中,我们将对已学习的计算机网络与操作系统核心知识进行回顾与总结,并对你完成的学习旅程表示祝贺。

概述
在之前的课程中,我们深入探讨了计算机网络与操作系统的基础概念。现在,让我们对这段学习历程进行总结。
课程回顾与祝贺
你此刻可能感到疲惫,但请接受祝贺。希望整个学习过程充满乐趣,并且你对未来的学习方向充满期待。再次祝贺你,这是出色的成果。
总结
本节课中,我们一起回顾了学习旅程,并对你取得的成就表示祝贺。坚实的基础已经打下,期待你在IT支持领域的进一步发展。
094:课程介绍 🖥️

在本节课中,我们将开始学习 Windows 和 Linux 操作系统的核心知识与实践技能。你已经掌握了计算基础,并完成了计算机网络中比特与字节的学习。现在,是时候深入探索 Windows 和 Linux 操作系统了。
讲师介绍 👩💻
在深入学习之前,请允许我介绍一下自己。我们在第一门课程中已经见过面,但如果你忘记了或跳过了那些课程,我叫 Cindy Quach,是谷歌的一名站点可靠性工程师。我所在的团队负责管理和支持谷歌整个内部的移动设备,包括 Android、I/O 和 Chrome 操作系统。
在专注于移动领域之前,我曾是 Linux 团队的系统管理员,更早之前,我是一名运维工程师。和许多你见过或将见到的谷歌员工一样,我的职业生涯始于 IT 支持专家。我从事 IT 工作已有七年。
我第一次接触计算机是在中学,当时老师将计算机带入课堂,让我们制作有趣的视频和多媒体项目。是我的哥哥将科技带入了我们家。我的父母是越南移民,我们成长过程中并不富裕。因此,如果想在家玩电脑,我们必须发挥创造力。
我记得曾和哥哥花了好几个小时组装一台电脑,而我总是问无数个问题。最终,我也想尝试自己组装一台电脑,于是我收集了一些旧零件,并攒钱购买了新组件。我根据记忆模仿哥哥的做法将所有零件组装起来,但失败了。原来我使用了一些不兼容的部件。但经过大量试错、故障排除以及在互联网上的长时间搜索,我终于让它成功运行了。
当我第一次听到自己组装的电脑启动的声音时,那种感觉非常奇妙。不知不觉中,我也迷上了计算机。我真的很享受 IT 工作所需的高度专注和问题解决过程,但那时我并未想过科技能成为我的职业。
进入大学后,我需要找一份工作来支付学费。那份工作就是校园 IT 支持专家。那时我才意识到,科技确实是我可以追求的职业道路。自我记事起,我就一直在与计算机打交道,我的许多 IT 知识都基于多年来自己解决问题的经验。
我自认为非常擅长操作系统故障排除,直到我成为谷歌 Linux 团队的系统管理员,我才意识到自己对操作系统的了解是多么有限。我身边都是才华横溢的队友,他们维护着大型开源操作系统项目的代码,有些人甚至拥有维基百科页面,因此有时难免会感到能力不足。
随着我更深地投入 Linux 学习,感觉就像重新学走路一样。我只是不习惯在命令行上工作,用它来排查突然出现的复杂问题让人感到不知所措。我必须不断查找命令,并弄清楚在哪里找到某些文件。
但我没有让困难压倒我。我一天天地坚持学习,在团队工作一年后,我意识到自己取得了惊人的进步。一年后,我能够构建和打包自己的工具,然后部署给所有人使用。我甚至开始直接为开源软件贡献代码。使用命令行已经变得像第二天性一样自然。
操作系统有太多东西需要学习,这也是我热衷于教授这门课程的原因之一。
课程目标与内容 🎯
学习 Linux 不必感到害怕。使用 Windows 命令并非不可能。入门也绝对不难。所以,让我们直接开始吧。
虽然本课程包含一些概念性学习,但我们将更侧重于操作系统的实践方面。
你不仅将学习如何使用 Windows 和 Linux 操作系统,我们还将教你如何通过命令行与这些操作系统交互。
请记住,命令行输入的是文本命令,而不是依赖图形用户界面。
如果你第一次为任何操作系统使用命令行,起初可能会觉得有点吓人,这完全正常。但到本课程结束时,你将顺利成为一名命令行高手。和往常一样,我们会全程指导你,如果你需要复习,也可以随时重看课程。所以,请慢慢来,你可以做到的。
我们不仅要教你如何在 Windows 和 Linux 中使用命令行。

你还将学习文件系统的工作原理,并能够分配不同的用户权限和角色,这在任何 IT 支持角色中都是一项超级重要的任务。
你将能够理解如何使用软件包管理器,并权衡 Windows 和 Linux 不同软件包管理器之间的利弊。
我们还将教你进程管理,以便你理解运行程序的细微差别。这可以在工作场所进行故障排除时为你节省宝贵时间。

我们还将更深入地探讨你已经使用过的远程连接工具,帮助你在远程工作时访问其他计算机。

最后,我们将教你操作系统部署,即如何一次性在多台机器上安装操作系统。
到本课程结束时,你将成为 Windows 和 Linux 操作系统真正的超级用户。这对于任何追求 IT 支持专家职业的人来说,都是一项非常宝贵的技能。毕竟,我们大部分时间都在操作系统中度过。

但请记住,你需要练习、练习、再练习,才能牢固掌握操作系统。就像任何技能一样,你需要真正投入才能精通。最终,操作操作系统对你来说会变得像第二天性一样自然。
我们强烈建议你在学习本课程时,使用一台安装了这些操作系统(至少一种)的计算机进行同步操作。在学习本课程的同时操作真实的操作系统,是学习这些概念更高效的方式。
如果你无法访问它们,那也完全没关系。你将在名为 Quicklabs 的应用程序中进行主动学习练习,以模拟使用 Windows 和 Linux 操作系统的体验。
我非常兴奋能教你关于 Windows 和 Linux 操作系统的知识,让我们开始吧。
总结 📝
本节课中,我们一起了解了本操作系统课程的讲师背景、学习目标以及核心内容框架。我们明确了本课程将重点从实践角度出发,教授 Windows 和 Linux 两大操作系统的使用,特别是命令行的操作、文件系统、用户权限、软件包管理、进程管理和远程连接等关键技能。记住,实践是掌握这些技能的关键,请准备好跟随课程一起动手操作。
095:课程概述与实践技巧 🖥️

在本节课中,我们将学习如何在Windows和Linux操作系统中执行常见的导航任务。我们将重点介绍Windows的图形用户界面和命令行界面,以及Linux的命令行界面。


课程内容概览
在第一门课程中,我们初步接触了Windows和Linux操作系统。现在,让我们深入学习如何在这两种操作系统中执行所有常见的导航任务。对于Windows,我们将学习如何使用图形用户界面和命令行解释器进行导航。对于Linux,我们将专注于学习命令行。

Linux的命令行解释器称为Shell,我们用来与Shell交互的语言称为Bash。值得注意的是,这两种操作系统非常相似。因此,即使您不知道如何使用Linux的图形用户界面,只要您了解如何导航Windows的图形用户界面,您就能将这些工具应用到Linux的图形用户界面中。
在工作场所,您可能只使用Windows的图形用户界面。即便如此,如果您学会使用Windows命令行,这将使您与其他IT支持专家区分开来。您很快会发现,在任何操作系统中使用命令行实际上可以帮助您更快、更高效地完成工作。
我们强烈建议您跟随课程并亲自执行我们在本课程中进行的任务。如果可能,请暂停视频,进行我们做的练习,或输入我们介绍的任何命令。这样,您将更容易理解它们。
我们还建议您记录我们展示的所有命令。您可以用传统的笔和纸笔记本写下它们,或在文档或文本编辑器中输入它们。如果您必须,甚至可以将它们刻在石头上。我们只是希望您将它们记录在某个地方。当我们第一次向您介绍这些命令时,您可能不会立即记住所有命令,但通过一些练习,输入命令将成为您的第二天性。
您还可以使用我们在本视频后的补充阅读中为您提供的官方Windows命令行和Bash文档作为参考。在本课程中,内容分为两个主题:第一个是基本的操作系统导航,如从一个目录导航到另一个目录、获取文件信息和删除文件及目录;第二个主题是文件和文本操作,如搜索目录以查找特定文件、复制和粘贴、链接命令等。
好了,闲话少说,让我们开始吧。
实践技巧与建议
为了帮助您更好地掌握本课程内容,以下是一些实用的学习建议:
- 动手实践:跟随视频中的示例,亲自在您的计算机上执行命令和操作。
- 记录命令:创建一个命令清单,记录下课程中介绍的所有重要命令及其用途。
- 查阅文档:充分利用提供的官方文档,当您忘记某个命令的具体用法时,可以快速查找。
- 循序渐进:从基本的导航命令开始练习,熟练掌握后再进行更复杂的文件和文本操作。

总结

本节课中,我们一起学习了本课程的总体目标和结构。我们了解到,课程将涵盖Windows和Linux操作系统的基本导航与文件操作,并强调了动手实践和记录命令的重要性。掌握这些技能,尤其是命令行操作,将显著提升您作为IT支持专业人员的工作效率。
096:在GUI中列出目录 📂
在本节课中,我们将学习操作系统如何组织文件和目录,并重点掌握如何在Windows图形用户界面中查看和管理它们。我们将了解路径的概念、如何查看隐藏文件以及如何获取文件的详细信息。
目录结构与路径
在操作系统中,文件和文件夹(或称目录)以层次化的目录树结构进行组织。你有一个主目录,它分支出去并包含其他目录和文件。我们称这些文件和目录的位置为路径。

大多数Windows路径看起来像这样:C:\Users\Cindy\Desktop。
在Windows中,文件系统被分配给驱动器盘符,例如C:、D:或X:。每个驱动器盘符代表一个文件系统。文件系统用于跟踪计算机上的文件。每个文件系统都有一个根目录,它是该文件系统中所有其他目录的父目录。
因此,C:盘的根目录写作C:\,X:盘的根目录写作X:\。子目录之间用反斜杠\分隔,这与使用正斜杠/的Linux系统不同。

路径公式:
[驱动器盘符]:\[目录1]\[目录2]\...\[文件名]
路径从驱动器的根目录开始,一直延伸到路径的末尾。
在GUI中导航
现在,让我们打开“此电脑”并导航到主目录。Windows系统中的主目录是存储文件系统的驱动器,在本例中,我们的文件系统存储在“本地磁盘(C:)”上。
以下是导航步骤:
- 打开“此电脑”。
- 双击进入“本地磁盘(C:)”。
- 进入“用户”文件夹。
- 进入用户文件夹“Cindy”。
- 最后,进入“桌面”文件夹。
在窗口顶部的地址栏,你可以看到当前所在的路径:C:\Users\Cindy\Desktop。

在我们的桌面目录中,可以看到一些文件夹和文件,例如“puppies pictures”文件夹、“Hawaii”文件夹和一个名为“My Super Cool File”的文件。

查看隐藏文件
桌面上还有一些你看不到的文件,我们称之为隐藏文件。隐藏文件有几个原因:一是我们不想让任何人看到或意外修改这些文件,它们可能是关键的系统文件或配置文件。

为了查看隐藏文件,请按照以下步骤操作:
- 点击窗口顶部的“查看”菜单。
- 勾选“隐藏的项目”复选框。
现在,我们可以看到系统上的所有隐藏文件了。例如,这里可能有一个名为“secret.txt”的文件。出于尊重隐私,我们不会查看其内容。查看完毕后,建议取消勾选“隐藏的项目”,以免意外更改其他设置。
查看文件属性
如果我们想查看文件的详细信息,可以右键点击文件并选择“属性”。让我们以“My Super Cool File”为例。
弹出的属性对话框显示了许多信息,我们来逐一分解:
- 常规选项卡:显示文件名、文件类型、用于打开它的应用程序以及文件的位置路径(例如
C:\Users\Cindy\Desktop)。 - 大小:这里会显示“大小”和“占用空间”。文件大小是它实际包含的数据量,而“占用空间”可能不同,这与文件系统如何分配存储空间有关。初学者暂时只需了解基本概念即可。
- 时间戳:显示文件的创建时间、上次修改时间和上次访问时间。
- 属性:可以为此文件启用的属性,例如“只读”和“隐藏”。如果勾选“隐藏”,文件将被隐藏,只有启用“显示隐藏项目”时才会可见。还有一些高级选项,我们目前暂不讨论。
- 其他选项卡:“安全”选项卡(我们将在后续课程中讨论)、“详细信息”选项卡(提供文件的元数据)和“以前的版本”选项卡(允许我们将文件还原到早期版本)。

总结与过渡
总结一下,在Windows GUI中列出目录:
- 我们可以在文件资源管理器中默认看到文件和文件夹的列表。
- 你可以使用图标、列表等不同方式更改查看它们的形式。
- 如果想获取文件的更多信息,可以查看其“属性”。

本节中,我们一起学习了如何在图形界面中浏览目录、理解路径、查看隐藏文件以及获取文件属性。下一节,我们将看看如何通过Windows命令行界面来查看所有这些信息。
097:Windows命令行界面基础 🖥️
在本节课中,我们将要学习如何在Windows操作系统中使用命令行界面来浏览和管理文件系统。我们将重点介绍两种主要的命令行工具,并学习一个用于列出文件和目录的核心命令。
Windows中的命令行界面
在Windows系统中,有两种主要的命令行界面可供使用。
第一种是命令提示符,其可执行文件为 cmd.exe。命令提示符已经存在了很长时间,它与早期MS-DOS系统中使用的命令提示符非常相似。
第二种是PowerShell,其可执行文件为 powershell.exe。由于PowerShell不仅支持命令提示符中的大多数命令,还提供了更多强大的功能,因此在本模块的练习中,我们将使用PowerShell。
需要指出的是,我们将要使用的许多PowerShell命令实际上是其他Shell中常见命令的别名。你可以将别名理解为命令的昵称或简称。
使用 ls 命令列出目录 📂
我们将要学习的第一个命令是用于列出文件和目录的 ls 命令。
让我们从列出C盘根目录下的目录开始。C盘是安装Windows操作系统的地方,对于许多用户来说,它可能是计算机中唯一的硬盘驱动器。

要打开PowerShell CLI,只需在应用程序列表中搜索“PowerShell”并启动该程序。
以下是启动PowerShell的界面示例:

我们将使用 ls(即“list directory”的缩写)命令,并为其指定我们想要查看的路径。路径本身并不是命令的一部分,而是一个命令参数。你可以将参数理解为与命令相关联的一个值。
要列出C盘根目录,我们输入以下命令:
ls C:\
现在,你可以看到C盘根目录下的所有目录。你可能只看到几个目录,也可能看到一大堆目录,这完全取决于你的计算机用途。

理解目录层级关系 👨👦

C盘根目录就是我们所说的父目录,而其内部的内容则被视为子目录。
随着你继续深入学习操作系统,会遇到一些起初可能觉得不太贴切的术语,但它们实际上非常有意义。“父”和“子”是操作系统中表示层级关系的常用术语。
例如,如果我有一个名为“dogs”的文件夹,其中嵌套了另一个名为“Corgi”的文件夹,那么“dogs”就是父目录,“Corgi”就是子目录。
以下是C盘根目录的示例,展示了父目录与子目录的关系:


探索常见的子目录
现在,让我们来看看这个文件夹中一些常见的子目录:
以下是C盘根目录下几个关键子目录及其作用的说明:
- Program Files (x86):这些目录包含了Windows中安装的大多数应用程序和其他程序。
- Users:此目录包含用户配置文件目录或主目录。每个登录此Windows机器的用户都会在这里拥有自己的目录。
- Windows:这是Windows操作系统安装的位置。
获取命令帮助
如果我们打开PowerShell并运行 Get-Help ls,将会看到描述 ls 命令参数的文本。这会给我们一个命令参数的简要摘要。
如果你想查看更详细的帮助信息,可以尝试 Get-Help ls -Full。现在,你可以看到每个参数的描述以及一些如何使用该命令的示例。
查看隐藏文件
如果我们想查看此目录中的所有隐藏文件该怎么办呢?我们可以使用 ls 命令的另一个有用参数:-Force。
-Force 参数将显示通常仅用 ls 命令不会列出的隐藏文件和系统文件。使用以下命令:
ls -Force
现在,你可以看到一些重要的文件和目录,例如:
$Recycle.Bin:这是回收站所在的位置。当你将文件移动到回收站时,它们会被移动到此目录,而不是立即被删除。- ProgramData:此目录包含许多不同的内容。通常,它用于存放安装在“Program Files”中的程序的数据。
以下是使用 -Force 参数后可能显示的隐藏文件示例:

总结

在本节课中,我们一起学习了Windows命令行界面的基础知识。我们认识了命令提示符和PowerShell两种工具,并重点掌握了使用 ls 命令及其参数(如 -Force)来列出文件和目录的方法。我们还理解了父目录与子目录的层级关系,并探索了C盘根目录下的一些关键文件夹。现在你已经知道如何在Windows文件系统中进行初步的浏览和查看了。
098:列出目录内容 📂

在本节课中,我们将要学习Linux系统中如何查看目录内容。我们会介绍ls命令的基本用法、如何指定路径、以及如何使用标志(flags)来获取更详细的信息。同时,我们也会初步了解Linux文件系统的几个关键目录。
根目录与路径
Linux系统中,所有其他目录都源于一个主目录,称为根目录。根目录的路径用一个斜杠 / 表示。
一个从根目录开始的Linux路径示例如下:/home/Cindy/desktop。
这类似于Windows中的路径:C:\Users\Cindy\desktop。
使用 ls 命令
要查看目录下的内容,我们使用 ls(list directory contents)命令。如果不提供路径参数,该命令默认会列出当前所在目录的内容。

例如,要查看根目录下的内容,可以运行:
ls /
运行后,我们可以看到根目录下列出的所有目录。这些目录各有不同的用途。

重要的系统目录
以下是几个关键目录的简要说明:
/bin:存储必需的二进制文件或程序。我们刚刚使用的ls命令程序就位于此文件夹中。它类似于Windows的“Program Files”目录。/etc:存储重要的系统配置文件。/home:用户的个人目录,存放用户文档、图片等。类似于Windows的“Users”目录。/proc:包含当前运行进程的信息。我们将在后续课程中详细讨论进程。/usr:用于存放用户安装的软件,而非用户个人文件。/var:存储系统日志以及任何经常变化的文件。
使用命令标志
ls 命令有几个非常有用的标志。标志类似于Windows命令的参数,用于为命令指定额外的选项。
通常,我们使用连字符 - 后跟标志选项来指定标志。例如:ls -l。每个命令可用的标志选项各不相同。
获取命令帮助
有两种主要方法可以查看命令的可用选项和帮助信息。
1. 使用 --help 标志
你可以通过添加 --help 标志来查看命令的可用选项。例如:
ls --help
输出的帮助信息顶部会说明命令的使用格式,并给出命令功能的描述。后面的大段文本则列出了所有可用的选项及其作用。--help 标志非常有用,即使是经验丰富的操作系统用户也经常查阅它。
2. 使用 man 命令
另一种方法是使用 man(manual)命令来查看Linux中的手册页(man pages)。使用方法如下:
man ls
这会显示比 --help 更详细的信息。
实用的 ls 命令标志
现在,让我们回到 ls 命令,看看如何让它输出更友好的信息。
1. -l 标志(长格式)
默认的 ls 输出可读性不强。使用 -l(long)标志可以以长列表格式显示文件和文件夹的详细信息,类似于Windows的“显示属性”。
ls -l /
现在我们可以看到关于目录及其内容的额外信息。让我们从左到右分解这个输出:
- 第一列:文件权限(我们将在后续课程中详细讲解)。
- 第二列:文件的链接数(同样会在后续课程中讨论)。
- 第三列:文件所有者。
- 第四列:文件所属的用户组(这是指定访问权限的另一种方式,我们将在另一节课中讨论)。
- 第五列:文件大小。
- 第六列:最后修改的时间戳。
- 第七列:文件或目录名。

2. -a 标志(显示所有)
-a(all)标志可以显示目录下的所有文件,包括隐藏文件。
ls -a
或者,你可以将多个标志组合使用:
ls -la
这等同于 ls -l -a。标志的顺序通常不影响结果。


使用 -a 标志后,你会看到一些之前未显示的文件出现了。在Linux中,可以通过在文件或目录名前加一个点 . 来将其隐藏。例如,名为 .iamhidden 的文件就是一个隐藏文件。

总结
本节课中我们一起学习了:
- 如何使用
ls命令查看目录内容。 - 理解了Linux的根目录
/和路径的概念。 - 认识了几个重要的Linux系统目录,如
/bin、/home、/etc等。 - 学会了使用命令标志,特别是
-l来获取详细列表,以及-a来显示隐藏文件。 - 掌握了两种获取命令帮助的方法:
--help标志和man命令。
如果你觉得任何部分讲得太快,可以重新观看视频。在下一节课中,我们将开始在命令行界面中学习如何切换目录。
099:在GUI中更改目录

在本节课中,我们将学习如何在图形用户界面中浏览和更改目录。了解目录的结构以及如何在它们之间移动,是有效管理计算机文件的基础。
目录结构与导航 🗂️
上一节我们介绍了目录的基本布局。本节中我们来看看如何在图形界面中从一个目录移动到另一个目录。

你可能经常在图形界面中更改目录,甚至没有意识到这一点。即便如此,我们仍将展示具体操作方法。知识就是力量。
路径的类型:绝对路径与相对路径 🧭
现在我们已经可以自由地在系统中的任何目录和路径之间移动了。需要指出的是,路径有两种不同的类型:绝对路径和相对路径。
- 绝对路径是从根目录(例如
C:\或/)开始的完整路径。 - 相对路径是从你当前所在目录开始的路径。

这两种路径的区别在图形界面操作中不那么重要,但在命令行界面中至关重要。接下来,让我们看看这在Windows命令行中是什么样子。
总结 📝
本节课中我们一起学习了如何在图形界面中浏览目录,并理解了绝对路径和相对路径的核心概念。掌握这些基础知识,将为后续学习命令行操作打下坚实的基础。
移动操作系统与软件:第2课:移动应用程序包管理

在本节课中,我们将学习移动操作系统(如iOS和Android)中软件的发布、安装与管理方式。我们将重点探讨应用程序商店、企业应用分发以及故障排除的基本概念。
现在,我们来讨论软件和移动操作系统。我们将主要使用iOS和Android的例子,但其他移动操作系统的工作方式也类似。如果你的移动设备使用专门的系统,你可以在设备文档中找到该软件如何工作的信息。
移动操作系统上的软件以移动应用程序(或称App)的形式分发。应用程序必须来自移动设备已配置为信任的来源。在大多数操作系统上,你不能随意从一个网站下载并安装应用。相反,移动操作系统使用应用商店。
应用商店是一个中心化的、受管理的市场,供应用开发者发布和销售移动应用。应用商店应用本身就像一个包管理器,而应用商店服务则像一个包仓库。人们通过一个统一的界面,从中心化来源获取免费或付费的应用程序。
通过应用商店发布的应用程序通常已经过安全审查,并获得了商店所有者的批准。这些应用由开发者进行签名。操作系统被配置为只信任由其认可的发布者签名的代码。我们将在未来的模块中更详细地讨论代码签名。现在,你可以把它想象成签署一封信,开发者是在声明“这是我编写的”。不过,代码签名与签署信件有一个不同点:如果有人修改了代码,签名就会失效。这让操作系统能够知道代码是否被篡改。
上一节我们介绍了面向公众的应用分发,本节中我们来看看组织内部的应用管理。
中心化的应用商店对于面向公众的应用非常有效。但如果你的组织需要运行某种定制应用呢?这时就需要使用企业应用管理,它允许组织分发定制的移动应用。这些应用由组织开发或为组织开发,并不对公众开放。
企业应用使用企业证书进行签名,安装这些应用的设备必须信任该证书。作为IT支持专家,你可能会通过移动设备管理服务来协助管理企业应用的安装,我们将在未来的视频中学习相关内容。
除了应用商店和企业分发,还有另一种安装应用的方式。
还有一种方式可以将应用安装到移动操作系统上,这被称为侧载。侧载是指你直接安装移动应用,而不使用应用商店。侧载安装包比通过应用商店安装风险更高,通常只有应用开发者才会这样做。
移动应用是独立的软件包,因此它们包含了所有依赖项。当你安装一个应用时,它已经内置了运行所需的一切。移动应用的数据被分配到一个特定的存储位置。当你使用一个移动应用时,任何由该应用更改或创建的内容最终都会存储在该应用分配的存储位置或缓存中。
因此,将移动应用重置到首次安装时的状态非常简单,只需删除或清除其缓存即可。在你的IT支持角色中,你可能会帮助人们排查移动应用问题。清除缓存将移除所有对设置的更改,并注销应用已登录的任何账户。
在处理难以控制的应用时,这可能不是你首先尝试的方法,但当问题确实很严重时,这是一个很好的技巧。请查看补充阅读材料,获取如何执行此操作的指南。

移动设备通常会被配置为定期检查应用更新。在IT支持中,你可能需要确保应用已更新。你可以在补充阅读材料中找到如何检查应用更新的详细信息。
本节课中,我们一起学习了移动应用程序的分发渠道(应用商店、企业分发、侧载)、代码签名的基本概念、应用数据的存储方式,以及通过清除缓存来重置应用状态的故障排除技巧。理解这些基础知识对于管理和支持移动设备至关重要。
146:软件包与归档文件
在本节课中,我们将要学习一种特殊的“软件包”——归档文件。我们将了解什么是归档文件,它与普通软件包的区别,以及如何在Windows系统中创建和解压归档文件。
什么是归档文件?📦
上一节我们介绍了软件包,本节中我们来看看一种特殊的“包”——归档文件。
归档文件本身并非真正的软件安装包。它是由一个或多个文件压缩而成的单个文件。软件包的归档文件通常包含软件的核心或源代码文件,这些文件被压缩成一个文件。当我们从源代码归档文件安装软件时,这个过程被称为“从源代码安装”。
以下是常见的归档文件类型:
- .tar
- .zip
- .rar
如何安装归档文件中的软件?🔧
要安装归档文件中的软件,首先需要提取归档文件的内容,以查看其中的文件。然后,根据软件编写所用的编程语言,使用特定的方法进行安装。由于安装方法因编程语言而异,本节课我们不会深入讨论如何从源代码安装,但会重点讲解如何提取归档文件的内容——这是IT支持专家经常需要进行的操作。
归档文件的用途与工具 🛠️
不仅仅是软件,任何文件(如图片或音乐文件)都可以被归档,你在IT支持工作中会经常见到它们。复杂之处在于,不同类型的归档文件有多种不同的提取方式。
幸运的是,Windows中有一个非常流行的工具,可以用于归档和解压不同文件类型(如.rar、.zip),这就是开源工具 7-Zip。它已经安装在我的电脑上。如果你想自己下载,我已在补充阅读材料中提供了链接。
实践:解压与创建归档文件 💻
我的桌面上有一个名为 colors.zip 的归档文件。让我们解压它,看看里面有什么文件。我只需右键点击文件,选择 7-Zip -> 提取到当前文件夹。看起来这个归档文件里有一堆文件。
除了解压文件,你也可以创建归档文件。我可以新建一个文件夹,命名为 new_colors。然后,我将把 new_blue.txt 文件和旧的 colors 文件夹放入其中。接着,我将使用7-Zip将其归档:右键点击 new_colors 文件夹,选择 7-Zip -> 添加到归档...,点击确定。

这很实用。如果你想通过电子邮件发送一堆文件,无需逐个发送,可以将它们全部合并到一个归档文件中,只发送这一个文件。

使用命令行管理归档文件 ⌨️
如果你使用的是 PowerShell 5.0 或更高版本,你甚至可以直接在命令行中提取和压缩归档文件。
假设你的桌面上有一个名为 cool_files 的文件夹,里面有一堆文件,你想将它们添加到一个新的zip文件中。打开PowerShell命令行界面后,你可以输入以下命令:
Compress-Archive -Path .\Desktop\cool_files\* -DestinationPath .\Desktop\cool_archive.zip
现在检查你的桌面,你应该能看到 cool_archive.zip。这个命令会将桌面 cool_files 目录中的所有内容压缩到这个zip文件中。

总结 📝

本节课中我们一起学习了归档文件的概念。我们了解到归档文件是压缩后的文件集合,常用于打包和传输多个文件。我们实践了如何使用图形化工具7-Zip来解压和创建归档文件,并介绍了在PowerShell中使用 Compress-Archive 命令进行压缩的基本方法。掌握这些技能对于高效管理文件至关重要。
147:Linux存档与解压工具 🗜️
在本节课中,我们将学习如何在Linux系统中使用7-Zip工具来解压文件,并简要介绍其他常见的存档工具。
概述
我们已经安装了Linux版本的7-Zip软件包,其名称为p7zip-full。接下来,我们将学习如何使用这个工具来解压文件。

使用7-Zip解压文件
要使用7-Zip解压文件,我们需要在终端中使用7z命令,并配合e标志(代表解压),然后指定要解压的文件名。

命令格式如下:
7z e 文件名
例如,假设我们想要解压家目录中的一个名为example.tar的文件。
操作步骤如下:
- 打开终端。
- 导航到文件所在的目录(例如家目录)。
- 输入命令:
7z e example.tar。
执行命令后,文件的内容就会被提取到当前目录中。
其他存档工具简介
除了7-Zip,还有许多其他用于存档和解压文件的工具。其中一个非常流行且预装在大多数Linux发行版中的工具是tar命令。
虽然本节课不深入讲解tar命令的具体用法,但如果您想了解更多信息,可以参考接下来的补充阅读材料。
关于不同存档类型的说明
在Windows和Linux系统中工作时,您会遇到许多不同类型的存档文件(如.zip、.tar、.gz、.rar等)。请记住,不同类型的存档文件可能需要使用不同的命令或工具来解压。
总结
本节课中,我们一起学习了在Linux系统上使用7-Zip解压文件的基本方法,了解了其命令格式为7z e 文件名。同时,我们也认识到存在多种存档工具和文件格式,在实际操作中需要根据文件类型选择合适的解压方式。
148:Windows包依赖管理 🧩
在本节课中,我们将要学习软件包依赖的概念,了解Windows操作系统如何管理这些依赖,并初步探索如何使用PowerShell包管理器来查找和安装软件及其依赖项。
概述
软件包通常需要依赖其他代码片段才能正常工作。理解和管理这些依赖关系是IT支持工作中的一项重要技能。本节将解释依赖关系的基本概念,介绍Windows的动态链接库和并排程序集机制,并演示如何使用命令行工具来管理包依赖。
什么是软件依赖?🔗
软件包为了运行,通常需要依赖其他代码片段。
例如,假设你正在Windows电脑上安装一款游戏。该程序可能需要执行一些计算来实现游戏中的物理效果,并将结果以图形形式渲染到屏幕上。为了完成这些任务,游戏可能依赖一个物理引擎来进行计算,同时依赖一个渲染库来在屏幕上显示精美的图形。为了让游戏正常工作,你必须确保所有这些软件都对游戏可用。

这种依赖其他软件片段来使应用程序工作的方式,就称为拥有依赖关系。因为一段代码需要依赖另一段代码才能运行。在我们的例子中,游戏依赖物理引擎和渲染库才能运行。
动态链接库(DLL)📚
那么,当我们提到“库”时,指的是什么呢?你可以将库视为一种打包他人编写的、有用代码集合的方式。这些代码被捆绑成一个单一的单元。需要其功能的程序可以在需要时调用它。在Windows中,这些共享库被称为动态链接库,简称 DLL。
你可以在接下来的阅读材料中找到关于动态链接库的更多细节。
DLL的一个非常有用的特性是,同一个DLL可以被许多不同的程序使用。这意味着所有共享代码无需为每个想使用它的应用程序单独加载到内存中,从而总体上减少了内存使用量。
Windows安装包与依赖管理 📦
Windows应用程序通常有许多依赖项,它们与一个名为MSI文件的东西一起,位于同一个安装包中。MSI文件会告诉Windows安装程序如何将所有组件组合在一起。这意味着一个给定的安装包将包含所有资源和依赖项(如DLL)。Windows安装程序还会负责管理这些依赖项,并确保程序能够使用它们。
在过去,情况并不总是这么理想。想象这样一个场景:你一直在电脑上用来播放电影的视频播放器,使用一个图形DLL来在屏幕上显示影片。一款你想玩的新游戏发布了,于是你也安装了它。这个游戏附带了一个新版本的图形库,因此游戏安装程序用新的DLL更新了现有版本。突然间,你的视频播放器停止工作了。原来,视频播放器不知道如何使用新版本的DLL。这在当时是个相当棘手的问题。
然而,在现代Windows操作系统中,DLL地狱已成为过去。为了解决这个问题,大多数共享库和资源都由一种称为并排程序集(SxS)的机制来管理。这些共享库大多存储在 C:\Windows\WinSxS 文件夹中。
如果一个应用程序需要使用共享库来执行任务,该库会在一个名为清单的文件中被指定。这会告诉Windows从SxS文件夹加载相应的库。SxS系统还支持自动访问同一共享库的多个版本。因此,当你安装新软件时,不会破坏已有程序的运行环境。
使用包管理器管理依赖 ⚙️
除了清单和SxS系统,以及安装程序将依赖项捆绑在安装包中的方式外,你还可以使用Windows包管理器来帮助安装和维护已安装软件需要使用的库及其他依赖项。
我们将在关于Windows包管理器的课程中更详细地讨论这一点。但在这里,我们将给你一个预览,展示如何使用PowerShell的Windows包管理功能。
使用一个名为 Find-Package 的Windows包管理命令,你可以直接从命令行定位软件及其依赖项。
顺便说一下,命令基本上是我们给那些使用“动词-名词”格式的Windows PowerShell命令起的名字。我们已经使用过很多命令,例如
Get-Help、Select-String等等。Windows内置了数百个命令,你甚至可以编写自己的命令。
好的,回到手头的任务。假设你想安装 Sysinternals 软件包,这是一套由微软发布的工具集,可以帮助你排查Windows电脑上的各种问题。
你可以从微软网站下载Sysinternals软件包,或者也可以使用包管理功能。
实践:在PowerShell中查找包 🖥️

首先,我们需要通过从开始菜单键入 PowerShell 来打开一个PowerShell终端。
然后,我们可以尝试通过执行以下命令来定位Sysinternals包:
Find-Package -Name "sysinternals" -IncludeDependencies
然而,出现了一个错误:“未找到匹配项”。这是怎么回事?
这个异常产生的原因是,PowerShell中默认的包源是 PowerShell Gallery,而它并不包含Sysinternals包。幸运的是,我们只需要告诉PowerShell一个可以找到这个Sysinternals包的地方。
那是一个名为 Chocolatey 的包存储库。我们将在包管理器视频中深入了解更多关于Chocolatey的信息,但现在,你只需要知道它是一个存放各种Windows软件包的地方。
因此,在我们安装任何包之前,我们需要添加一个包源,告诉我们的电脑在哪里可以找到我们想要安装的包。既然我们想使用Chocolatey来查找包,我们需要将其添加为一个包源。我们将使用PowerShell命令 Register-PackageSource 来完成这个操作。
让我们继续输入:
Register-PackageSource -Name "chocolatey" -ProviderName "Chocolatey" -Location "https://chocolatey.org/api/v2/"
现在,我们可以使用 Get-PackageSource 命令来验证两个软件源都已准备就绪。
然后,再次尝试使用 Find-Package 命令查找我们的包及其依赖项:
Find-Package -Name "sysinternals" -IncludeDependencies
很好!现在我们知道了这就是我们想要的包,我们可以使用一个名为 Install-Package 的命令来实际安装Sysinternals及其相应的依赖项。
我们将在后续课程中进行安装操作。
总结

本节课中,我们一起学习了软件依赖的核心概念。我们了解到,应用程序(如游戏)需要依赖其他代码库(如物理引擎或渲染库)才能运行。在Windows中,这些共享代码通常以动态链接库的形式存在。现代Windows通过并排程序集机制管理不同版本的DLL,避免了“DLL地狱”问题。最后,我们初步探索了使用PowerShell包管理器(如通过Chocolatey源)来查找软件包及其依赖项的方法,为后续的软件安装和管理打下了基础。
149:理解包依赖

在本节课中,我们将要学习 Linux 系统中的包依赖概念。我们将通过一个具体的安装示例,了解什么是依赖关系,以及为什么它会导致安装失败。
什么是包依赖?
上一节我们介绍了如何使用 dpkg 命令安装独立的软件包。本节中我们来看看在安装过程中可能遇到的一个常见问题:包依赖。
让我们看看在 Linux 中包依赖会是什么样子。我们已经在上一课学习了如何使用 dpkg 命令在 Linux 中安装一个独立的软件包。

现在,让我们尝试安装另一个软件包。我已经在桌面上下载了 Google Chrome 浏览器,并想使用 sudo dpkg -i 命令来安装它。
sudo dpkg -i google-chrome-stable_current_amd64.deb
哦,等等,我收到的这个错误是什么?错误提示:“依赖问题阻止了 Google Chrome Stable 的配置”。
依赖错误解析
这个错误提示表明,它无法安装 Google Chrome,因为它依赖于另一个当前未在此机器上安装的软件包。因此,在安装 Chrome 之前,我们必须先安装这个名为 libappindicator1 的包。
虽然像 dpkg 这样的独立包安装器使用起来可能很快,但它不会为我们安装包的依赖项。在 Linux 中,这些依赖项可以是其他软件包,也可以是像共享库这样的东西。
Linux 共享库类似于 Windows 的 DLL(动态链接库),它们是可供其他程序使用的代码库。
如何处理依赖错误?
如果你遇到了依赖错误,该怎么办?你可以一个一个地手动安装这些依赖项。当然可以,但在某些情况下,你可能看到的不仅仅是一个依赖项,甚至可能多达十个。这在 Linux 中尤其常见。
为了能让一个程序运行而不断地安装其他程序,这并不有趣。
幸运的是,这就是包管理器发挥作用的地方。包管理器配备了各种功能,使软件包的安装和卸载变得更加容易,其中包括自动安装包依赖项。

我们将在下一课详细讨论包管理器。但现在,只需知道如果你安装一个独立的软件包,其依赖项不会自动安装,这就足够了。
总结
本节课中我们一起学习了 Linux 的包依赖概念。我们通过尝试安装 Google Chrome 遇到了依赖错误,了解到一个软件包可能依赖于其他未安装的库或包。我们还认识到,虽然 dpkg 工具简单直接,但它不处理依赖关系,这引出了对更高级的包管理器的需求。下一课,我们将深入探讨能够自动解决这些依赖问题的包管理器。
150:Windows包管理器 🖥️
在本节课中,我们将学习一种不同的软件管理方式——包管理器。我们将重点了解Windows系统上的包管理器工具,特别是Chocolatey,并学习如何使用它来简化软件的安装、更新和卸载过程。
概述
上一节我们介绍了通过独立可执行文件或安装包来安装软件及其依赖项的方法。本节中,我们来看看如何使用名为“包管理器”的工具来管理软件安装。
包管理器旨在使软件的安装、移除、更新和依赖项管理过程尽可能简单和自动化。

传统软件安装方式
回想一下在Windows计算机上安装新程序的常规方式。你可能会在搜索引擎中搜索它,访问该程序的网站,下载安装程序,然后运行它。如果你想更新软件,可能需要打开程序并使用它提供的任何机制来安装新版本。许多程序提供自动更新功能,微软也通过Windows Update管理其自身编写的软件。但有时,你可能仍需返回最初下载软件的网站,获取新版本的安装程序。最后,如果你想移除软件,可能会使用Windows的“添加或删除程序”工具,或者运行程序提供的自定义卸载程序。
像Windows Installer这样的安装技术可以处理依赖项管理,但它们并不能很好地帮助你从程序的中央目录安装软件或执行自动更新。
引入包管理器:Chocolatey
这时,像Chocolatey这样的包管理器就派上用场了。Chocolatey是一个适用于Windows的第三方包管理器,这意味着它不是由微软编写的。它允许你从命令行安装Windows应用程序。
Chocolatey基于一些现有的Windows技术(如PowerShell)构建,并允许你安装公共Chocolatey存储库中存在的任何软件包或软件。你还可以将缺失的软件添加到公共存储库中,甚至可以根据需要(例如为内部公司应用程序打包)创建自己的私有存储库。
像SCCM和Puppet这样的配置管理工具甚至可以与Chocolatey集成,这有助于使公司内Windows计算机的软件部署管理自动化和简单化。
Chocolatey的安装与使用方法
我们在之前的视频中讨论了几种安装软件包的方法,现在让我们将Chocolatey加入其中,它本身支持多种软件安装方法。
首先,你可以安装Chocolatey命令行工具,并直接从PowerShell CLI运行它。或者,你可以使用PowerShell最近发布的包管理功能,只需指定软件包的来源应为Chocolatey存储库。
还记得我们讨论安装软件时提到的内容吗?在将Chocolatey添加为软件源后,我们使用以下命令来定位Windows Sysinternals软件包:
Find-Package -Name sysinternals -IncludeDependencies
这很好,但我们究竟如何安装这个软件包呢?这时就需要用到 Install-Package 命令了。我们可以使用这个工具来安装一个软件及其依赖项。
让我们尝试安装之前找到的那个Sysinternals软件包:
Install-Package -Name sysinternals
确认后,软件包就安装好了。我们可以使用 Get-Package 命令来验证它是否已安装:
Get-Package -Name sysinternals
你也可以使用以下命令卸载软件包:
Uninstall-Package -Name sysinternals
总结

本节课中,我们一起学习了Windows包管理器Chocolatey的基本概念和使用方法。我们了解了它如何通过命令行简化软件的安装、更新和卸载流程,并实践了使用PowerShell命令来查找、安装和验证软件包。掌握包管理器工具,可以极大地提升软件管理的效率和自动化水平。
151:apt包管理器详解 🐧

在本节课中,我们将学习Ubuntu Linux系统中一个至关重要的工具——apt包管理器。我们将了解它的作用、如何使用它来安装和卸载软件、以及它背后的核心概念“软件仓库”。掌握apt是高效管理Linux系统软件的基础。
概述:什么是apt?
apt,全称Advanced Package Tool,是Ubuntu及其衍生发行版中使用的包管理器。它的主要作用是简化软件包的安装、升级和移除过程。apt能自动处理软件包之间的依赖关系,让你无需手动寻找和安装每个依赖项。
安装与卸载软件包
上一节我们介绍了apt的基本概念,本节中我们来看看如何使用它进行最基本的操作:安装和卸载软件。
安装软件包的命令格式如下:
sudo apt install <package_name>
例如,要安装开源图像编辑器GIMP,你可以运行:
sudo apt install gimp
执行此命令后,apt会自动从配置的软件仓库中查找gimp包及其所有依赖项,并询问你是否确认安装。输出信息会清晰地告诉你将新增、升级或移除哪些包。
卸载软件包的命令是:
sudo apt remove <package_name>
例如,要移除GIMP:
sudo apt remove gimp
apt在移除软件时,通常会询问你是否要同时移除那些不再被其他软件需要的依赖包,这有助于保持系统的整洁。
核心概念:软件仓库
你可能会好奇,apt是如何知道从哪里下载GIMP的?这要归功于软件仓库。
软件仓库是存储软件包及其元数据的服务器。开发者将软件发布到这些仓库中,用户只需将仓库地址添加到自己的系统,就可以方便地搜索和安装海量软件,而无需手动在互联网上逐个寻找。
在Ubuntu中,系统的主要软件仓库列表存储在以下文件中:
/etc/apt/sources.list
你的系统正是通过读取这个文件中的地址,才知道该去哪些服务器上查找软件。如果未在此文件中添加仓库链接,你的计算机将不知道去哪里检查软件。

除了官方仓库,还有一种常见的仓库类型叫PPA。
关于PPA的注意事项
PPA,全称Personal Package Archive,是托管在Launchpad.net(由Canonical公司运营)上的个人软件包存档。它允许开发者和团队更快速地发布和更新他们的软件。

你可以像添加普通仓库一样添加PPA。但使用时需要谨慎:
- PPA中的软件可能不像Ubuntu官方仓库中的软件那样经过严格的审查和测试。
- 某些PPA可能包含有缺陷甚至恶意的软件。
因此,建议只添加来自可信来源的PPA。
更新系统与软件包
软件仓库中的软件会不断更新。为了确保你能获取到最新的软件和安全补丁,需要定期更新本地的软件包列表和升级已安装的软件。
以下是两个关键命令:
- 更新软件包列表:
sudo apt update
此命令会同步远程仓库的软件包索引列表到本地,让你知道有哪些可用的新版本,但不会实际安装或升级任何软件。 - 升级已安装的软件包:
sudo apt upgrade
在执行完apt update后,运行此命令会根据更新后的列表,自动下载并安装所有可用的更新。
在安装新软件前,先运行sudo apt update是一个好习惯,这能确保你获取的是仓库中最新的软件信息。
探索更多apt命令
apt的功能远不止于此。你可以使用apt --help命令查看所有可用选项。
以下是其他一些有用的命令示例:
apt list:列出所有可用或已安装的软件包。apt search <keyword>:在仓库中搜索包含关键字的软件包。apt show <package_name>:显示某个软件包的详细信息。
虽然Ubuntu上还有其他包管理器(如dpkg、snap),但apt因其易用性和强大的依赖处理能力而成为最受欢迎的选择之一。

总结
本节课中我们一起学习了Ubuntu Linux的核心包管理工具——apt。我们掌握了如何使用apt install和apt remove来管理软件,理解了软件仓库和PPA的概念及其重要性,并学会了通过apt update和apt upgrade来保持系统更新。熟练使用apt是IT支持领域和日常Linux系统维护中一项高频且关键的技能。在接下来的课程中,我们将继续深入探索Linux系统的其他管理工具。
152:Windows软件安装底层原理


在本节课中,我们将学习Windows操作系统下软件安装的底层原理。我们将探讨当您点击安装程序时,系统内部实际发生了什么,这对于IT支持人员理解和排查安装问题至关重要。
软件安装的抽象与底层
上一节我们介绍了使用包管理器安装软件的实践层面,这是一种抽象化的安装方式。本节中我们来看看软件安装的底层机制。
作为IT支持人员,理解安装或卸载软件时底层技术实际发生的变化非常重要。您可能会遇到这样的情况:安装的软件包修改了不该修改的配置文件,从而引发问题。因此,了解软件安装的底层工作原理是必要的。
Windows中EXE文件的安装过程
当您点击一个安装可执行文件(EXE)时,接下来发生的情况取决于程序开发者如何设置其应用程序的安装方式。
如果该EXE文件包含的代码用于不使用Windows安装器系统的自定义安装,那么其底层发生的细节大多是不明确的。这是因为大多数Windows软件是以闭源软件包的形式分发的,意味着您无法查看源代码来了解程序在做什么。
在这种情况下,虽然您无法阅读开发者编写的指令,但可以使用特定工具来检查安装程序正在执行的操作。一种方法是使用Microsoft Sysinternals Toolkit提供的进程监控程序。该工具将显示安装可执行文件正在进行的任何活动,例如它写入的文件以及它执行的任何进程活动。
您可以在接下来的补充阅读中了解更多关于Microsoft Sysinternals Toolkit的信息。
MSI文件的安装机制
那么,MSI文件或封装了MSI的可执行文件又如何呢?同样,应用程序本身是闭源的,因此您无法窥视其源代码以了解其功能。但是,使用MSI格式的安装包需要遵守一套规则和标准,以便Windows安装器系统能够理解其指令并执行安装。
MSI文件的内容比初看起来要复杂。事实上,它们根本不是简单的文件。它们实际上是数据库的组合,这些数据库在不同的表中包含安装指令,同时包含了程序所需的所有文件、对象、快捷方式、资源和库,全部组合在一起。
Windows安装器使用存储在MSI数据库表中的信息来指导应如何执行安装。它会知道文件和应用程序数据应放置在何处,以及成功安装程序需要进行的任何其他操作。
Windows安装器会跟踪其执行的所有操作,并创建一组单独的指令来撤销这些操作。这就是它允许用户卸载程序的方式。
如果您对MSI文件的详细内容感到好奇,或者想自己创建一个Windows安装器包,可以查看Microsoft提供的Orca.exe工具。这是满足您好奇心的好方法。
ORCA是Windows SDK(软件开发工具包)的一部分,但您不需要是程序员才能使用它。ORCA可以帮助您编辑或创建Windows安装器包,因此请随意探索其功能。我们在此视频后的补充阅读中提供了该工具的链接。
总结与过渡
Windows安装过程在底层涉及大量操作,而这一切仅由几次点击触发。那么,Linux系统的情况又如何呢?我们将在下一节中探讨。
153:Linux软件安装详解 🐧

在本节课中,我们将学习Linux操作系统中的软件安装机制。我们将了解如何从源代码直接安装软件,并解析安装过程中的关键步骤。
从源代码安装软件
上一节我们介绍了Linux系统的基本概念,本节中我们来看看如何从源代码安装软件。在Linux中,直接从源代码安装软件是一种更透明的方式。这种方法会因软件而异,因为不同的编程语言编译方式不同。
我们不会深入探讨软件开发细节,但假设我们有一个包含简单软件包的归档文件需要安装。
安装包结构解析
以下是一个典型源代码安装包包含的文件:
setup脚本:这是一个脚本文件,它将在计算机上运行一系列任务以完成软件包的安装配置。Flappy app code:这是软件的实际源代码。Readme文件:这是源代码归档文件中一个相当标准的文件,包含了关于该归档文件的信息。它明确要求你在进行任何操作前先阅读此文件。
在这些文件中,我们最关心的是setup脚本,因为它告诉我们如何安装软件包。
安装脚本示例
一个示例安装脚本可能包含以下程序指令:
- 编译指令:将
flappy app代码编译成机器指令。gcc -o flappy_app flappy_app.c - 复制二进制文件:将编译好的
flappy app二进制文件复制到/bin目录。cp flappy_app /usr/local/bin/ - 创建目录:在
/home/用户名/路径下为flappy app创建一个文件夹。mkdir /home/$USER/.flappy_app
安装过程总结
以上是对安装一个简单软件包时所发生过程的非常简化的概述。最终,软件开发者决定他们的软件需要哪些条件才能工作,并运行相应的任务使其正常运行。

这些任务是创建文件还是更新目录,完全由开发者决定。如果你了解所使用的编程语言,你可以自己阅读这些指令,但这超出了本课程的范围。
总而言之,这就是Linux中软件安装的基本工作原理。
本节课中我们一起学习了Linux下从源代码安装软件的基本流程,包括安装包的结构、核心的setup脚本的作用以及一个简化的安装步骤示例。理解这个过程有助于我们更深入地认识软件在系统中的部署方式。
154:Windows设备与驱动管理 🖥️🔧

在本节课中,我们将学习Windows操作系统中的设备与驱动程序管理。我们将了解驱动程序的作用,探索如何使用设备管理器查看和管理计算机上的硬件设备,并理解Windows如何自动检测和安装新设备的驱动程序。
什么是驱动程序?
上一节我们提到了驱动程序的概念,现在我们来具体看看它的作用。驱动程序是一种特殊的软件,它帮助计算机的硬件设备与操作系统进行通信和交互。没有正确的驱动程序,操作系统就无法识别或使用硬件设备。
访问设备管理器

要管理设备和驱动程序,我们首先需要知道如何访问设备管理器。Windows将所有设备和驱动程序集中在一个名为“设备管理器”的微软管理控制台中。

以下是访问设备管理器的两种常用方法:
- 打开“运行”对话框(Win + R),输入
devmgmt.msc并按回车。 - 右键点击“此电脑”,选择“管理”,然后在左侧导航菜单中点击“设备管理器”。
设备分类与即插即用
打开设备管理器后,你会发现Windows已经根据广泛的类别对计算机上的大多数设备进行了分组。例如,所有显示器都会显示在“监视器”部分下。
这种分组通常是自动完成的,它是Windows“即插即用”系统的一部分。当您将新设备(如鼠标或键盘)插入计算机时,Windows会自动检测新硬件,识别它,并尝试安装合适的软件来管理它。
Windows如何安装驱动程序?
现在,我们来深入了解Windows为新设备安装驱动程序的具体过程。这个过程主要包含以下几个步骤:
- 获取硬件ID:硬件制造商为其设备分配一个特殊的字符串,称为硬件ID。Windows检测到新设备后,首先会向其索取这个ID。
- 搜索驱动程序:操作系统获得硬件ID后,会用它来搜索匹配的驱动程序。搜索按以下顺序进行:
- 本地已知驱动程序列表。
- Windows更新或驱动程序存储。
- 设备自带的安装光盘(如果提供)。
- 安装驱动程序:Windows找到正确的驱动程序软件后,会进行安装,之后您就可以使用新设备了。
使用设备管理器管理驱动
虽然上述过程大多是自动进行的,但我们也可以通过之前提到的设备管理器控制台直接与驱动程序交互。
您可以展开设备管理器中的任何类别来查看其中的设备。右键点击任意设备,会弹出一个功能菜单。
以下是右键菜单中的主要操作选项:
- 卸载设备:从系统中移除该设备及其驱动程序。
- 禁用设备:暂时停用该设备。
- 更新驱动程序:为设备搜索并安装更新的驱动程序。
- 扫描检测硬件改动:手动让Windows检查新连接的设备。
- 属性:查看设备的详细信息,如制造商和当前使用的驱动程序版本。
总结

本节课中,我们一起学习了Windows设备与驱动程序管理的核心知识。我们了解了驱动程序是连接硬件和操作系统的桥梁,掌握了通过设备管理器访问和管理设备的方法,并梳理了Windows即插即用系统自动安装驱动程序的流程。通过设备管理器,我们可以手动更新、禁用或卸载驱动程序,这对于解决硬件冲突或故障排查非常有用。
155:Linux设备与驱动管理

概述
在本节课中,我们将要学习Linux操作系统如何管理硬件设备。我们将了解设备在Linux中的表示方式,区分不同类型的设备文件,并简要介绍Linux设备驱动的工作原理。
Linux中的设备文件
在Linux系统中,一切都被视为文件,硬件设备也不例外。当一个设备连接到计算机时,系统会在 /dev 目录下创建一个对应的设备文件。让我们查看这个目录。

以下是 /dev 目录的部分内容示例:
crw-rw-rw- 1 root root 1, 3 Jan 1 00:00 null
brw-rw---- 1 root disk 8, 0 Jan 1 00:00 sda
brw-rw---- 1 root disk 8, 1 Jan 1 00:00 sda1
crw-rw-rw- 1 root tty 5, 0 Jan 1 00:00 tty
这个目录包含许多设备文件,但并非所有文件都对应物理设备。例如,/dev/null 就是一个特殊的虚拟设备。Linux中有多种设备类型,我们不会全部介绍,但会讲解两种更常见的类型:字符设备和块设备。

字符设备与块设备
上一节我们介绍了设备文件的概念,本节中我们来看看两种主要的设备类型。
字符设备,如键盘或鼠标,以字符为单位传输数据。块设备,如U盘、硬盘和CD-ROM,则以数据块为单位传输数据。数据块是数据存储的一个单元。
以下是两种设备类型的核心区别:
- 字符设备:数据传输是流式的,一次一个字符。用字母
c表示。 - 块设备:数据传输是块式的,一次一个数据块。用字母
b表示。
识别设备文件类型
还记得在之前的课程中,ls -l 命令输出的第一个字符表示文件类型吗?到目前为止,我们见过 -(代表普通文件)和 d(代表目录)。但在 /dev 目录的输出中,我们可以看到其他文件类型。
有些文件以 b 开头,代表块设备;有些以 c 开头,代表字符设备。如果你想了解更多关于其他设备类型的知识,可以查看补充阅读材料。
让我们看看本课程中可能会接触到的一些块设备。你会看到一些以 /dev/sda 或 /dev/sdb 开头的文件。sd 设备是大容量存储设备,如我们的硬盘、U盘等。如果 sd 后面跟着字母 a,仅表示该设备是计算机检测到的第一个此类设备。因此,你可能会看到类似 /dev/sda、/dev/sdb、/dev/sdc 这样的序列。

回顾 /dev/null 设备,我们可以看到它被视为一个字符设备,因为它用于逐字符地传输数据。这是一个非常简单的设备文件概述,我省略了许多你现在不一定需要知道的内容。如果你想了解更多关于设备和Linux内部工作原理的知识,可以查看(你猜对了)下一份补充阅读材料。
Linux设备驱动更新
上一节我们介绍了如何识别设备文件,本节中我们来谈谈如何为Linux更新设备驱动程序。
在Windows中,我们通常可以点击“更新驱动程序”,在大多数情况下这都有效。在Linux中,情况稍微复杂一些,但同时也相当简单。我并不是想让你困惑,你马上就会明白我的意思。
设备驱动程序并不存储在 /dev 目录中。有时,它们是Linux内核的一部分。请记住,我们机器的内核负责处理与硬件的交互。内核是一个非常庞大的软件,具有许多功能,包括对大量硬件的支持。
如今,许多硬件支持都已内置在内核中,因此当你插入一个设备时,它通常会自动工作。但是,如果某些设备的支持没有内置在内核中,它们很可能拥有一种叫做“内核模块”的东西。
那么,这个内核模块是做什么用的呢?对于许多开发者来说,直接修改像Linux内核这样庞大的软件是令人生畏的。相反,他们可以创建内核模块,这些模块可以在不实际修改内核代码的情况下扩展内核的功能。
因此,如果你需要为特定类型的设备安装内核模块,你可以按照我们在Linux中安装所有软件的方式来安装它。请记住,并非所有的内核模块都是驱动程序。我们不会深入探讨内核模块,但如果你想阅读更多相关内容,我也在下一份阅读材料中提供了链接。
由于我们只需要入门并动手操作操作系统,这些知识应该足够了。让我们继续前进。
总结
本节课中我们一起学习了Linux设备管理的基础知识。我们了解到在Linux中,硬件设备通过 /dev 目录下的文件来表示。我们区分了字符设备(如键盘)和块设备(如硬盘),并学会了通过 ls -l 命令输出首字母的 c 或 b 来识别它们。最后,我们简要了解了Linux设备驱动通常以内核模块形式存在,许多现代硬件的驱动已内置在内核中,实现了即插即用。
156:操作系统更新 🖥️
在本节课中,我们将要学习操作系统更新的重要性、工作原理以及如何在Windows系统中进行配置。操作系统是计算机上最重要的软件,保持其更新对于获取新功能和安全补丁至关重要。
为什么需要更新操作系统?
上一节我们介绍了应用程序和设备驱动的安装与维护,本节中我们来看看操作系统的核心更新。保持操作系统更新有多种原因。

- 你希望获得操作系统提供的最新功能。
- 你需要操作系统所必需的安全更新。
当操作系统制造商发现系统中的安全漏洞时,他们会尽力为此漏洞创建补丁。安全补丁是用于修复安全漏洞的软件。当你收到包含安全补丁的操作系统更新时,立即安装这些补丁至关重要。等待的时间越长,受到安全漏洞影响的风险就越高。
作为IT支持专家,定期安装操作系统更新以保持系统最新和安全是非常常见的做法。
Windows更新如何工作?
Windows通常在需要安装更新时会很好地通知你。Windows更新客户端服务在计算机后台运行,负责下载和安装操作系统的更新与补丁。其工作原理是定期与微软的Windows更新服务器进行通信检查。
如果发现适用于你计算机的更新,它就会下载它们。下载完成后,根据你的Windows更新设置,Windows更新客户端会询问你是否同意安装更新,或者直接自动安装。此过程通常需要重启计算机,客户端会在请求许可后执行重启。
如何配置Windows更新?
在Windows 10之前的版本中,你可以通过几种不同的方式让Windows管理更新。
以下是可选的配置方式:

- 你可以让Windows更新客户端自动安装微软发布的更新和补丁。
- 你可以让Windows更新通知你,由你决定是否下载和安装它们。
- 你甚至可以完全关闭更新,但出于我们讨论过的安全原因,这可能不是一个好主意。
你可以通过在搜索框中搜索“更新”并进入“Windows更新设置”来配置Windows更新。
从那里,你可以让Windows更新客户端检查新更新、查看已安装更新的历史记录,或者通过点击设置部分来更改下载和应用补丁的方式。在那里,你可以告诉更新客户端你希望如何管理更新,甚至可以设置你希望安装更新的时间。
Windows 10的更新有何不同?
Windows 10的做法有所不同。它不再下载一堆独立的、你可以选择是否应用到计算机的更新,而是采用累积更新。这意味着每个月会发布一个包含所有更新和补丁的包,它会取代上个月的更新。
这种设计背后的理念是,计算机为了保持最新状态需要下载的内容会更少。举个例子,设想一台Windows电脑关闭了一段时间。当它在长时间不活动后再次启动时,它需要下载并应用所有错过的更新。如果它关闭了很长时间,这可能意味着需要下载和应用数百个更新。而在累积更新模型下,这样的计算机只需要下载最新的累积更新,然后就可以正常使用了。

这种模式的一个缺点是,在Windows 10中,安装更新不再是可选的。你也不能挑选想要应用的更新,因为它们都被整合进了一个月度发布中。微软已宣布,Windows 7和8的更新模型也将朝着这个累积包的方向发展,所以Windows 10用户不会孤单。
总结
本节课中我们一起学习了操作系统更新的核心知识。我们了解了保持系统更新的重要性,特别是为了安全补丁。我们探讨了Windows更新客户端服务的工作原理,以及如何在旧版Windows中配置更新选项。最后,我们重点介绍了Windows 10采用的累积更新模型及其优缺点。记住,定期更新操作系统是维护计算机安全和性能的关键任务。
Linux操作系统更新:第2、3课:核心系统与内核升级指南

在本节课中,我们将学习如何在Linux操作系统中更新核心组件,特别是内核。你将了解内核的作用、如何查看当前内核版本,以及执行完整系统升级的步骤。
在Linux系统中,你已经学习了如何使用 apt update 和 apt upgrade 命令来更新和升级机器上的软件。这些命令可能会自动为你安装安全更新,但当你运行 apt upgrade 时,它并不会升级核心操作系统。
在Windows中,我们的操作系统包是Windows 10。而在Linux中,核心是内核以及其他相关软件包。内核控制着我们操作系统的核心组件。
就像我们的文字处理器一样,内核本身也只是一个软件包。内核开发者会定期在更新中包含安全补丁、新功能以及错误修复。如果你想获得所有这些更新,就应该运行新版本的内核。
首先,我们需要查看当前使用的内核版本。我们将学习一个名为 uname 的新命令。
uname 命令为我们提供系统信息。如果你使用 -r 参数来查看内核发布版本,你将看到当前的内核版本。例如,你可能会看到类似 4.1 的版本号。
为了更新内核和其他软件包,我们使用熟悉的 apt 命令,并加上 full-upgrade 选项。在运行此命令之前,请记得使用 apt update 来更新你的软件源列表。
以下是完整的更新流程:

- 更新软件源列表:
sudo apt update - 执行完整系统升级(包括内核):
sudo apt full-upgrade
如果有可用的新内核版本,该命令会为我们安装它。安装完成后,你需要重启计算机才能开始使用新内核。
你可以再次使用 uname -r 命令来验证系统是否正在使用最新的内核。
关于内核安装和安全更新,我们省略了一些细节,但这是更新你系统的一个良好开端。如果你对学习内核和Linux更新的复杂细节感到好奇,可以查阅补充阅读材料。
本节课中,我们一起学习了软件安装和维护的所有要点。你掌握了如何安装独立软件包、使用包管理器、处理归档文件、设备驱动程序以及核心操作系统更新。这些技能对于一名IT支持专家来说将非常有用。
接下来,我们将再次测试你在Bash和Windows环境下的知识。完成后,我们下一个模块再见。
158:磁盘管理模块介绍 💾


在本节课中,我们将学习如何使计算机磁盘变得可用。我们将介绍磁盘管理的基本概念和所需工具。
上一节课中,我们学习了如何在Windows和Linux操作系统中安装、卸载和维护软件。这些是IT支持专家需要反复执行的任务。
本节中,我们将探讨IT支持专家的另一个重要功能:处理磁盘。在我们的第一门课程《技术支持基础》中,我们了解了硬盘驱动器(HDD)和固态硬盘(SSD)等物理磁盘。
本节课中,我们将在此基础上展开,讨论使磁盘在计算机中可用所需的工具。
以下是本模块将涵盖的主要内容:
- 磁盘分区的基本概念
- 文件系统的类型与作用
- 在不同操作系统中格式化磁盘的工具
- 磁盘挂载与管理的实践步骤
准备好,让我们开始吧。
本节课中,我们一起学习了磁盘管理模块的概述。我们了解到,在掌握软件管理之后,IT支持专家还需掌握配置和管理物理磁盘的技能,这是确保计算机存储系统正常工作的基础。
159:文件系统回顾 💾

在本节课中,我们将回顾文件系统的核心概念,了解不同操作系统使用的默认文件系统,并探讨跨平台文件共享的解决方案。

概述
你可能记得,我们在《技术支持基础》课程中介绍过文件系统的概念。文件系统用于跟踪磁盘上的文件和存储。没有文件系统,操作系统将无法知道如何组织文件。
因此,当你有一个全新的磁盘或任何类型的存储设备(如U盘)时,你需要为其添加一个文件系统。市面上存在许多文件系统,但本课程将讨论被推荐为Windows和Linux默认文件系统的两种。
主流操作系统默认文件系统

以下是Windows和Linux操作系统推荐的默认文件系统:
- Windows:我们使用NTFS文件系统。
- Linux:推荐使用EXT4文件系统。

文件系统的兼容性挑战

文件系统与不同操作系统的兼容性各不相同。大多数情况下,跨操作系统的支持非常有限。
例如,假设你有一个使用NTFS文件系统的U盘。Windows和Linux(如Ubuntu)都可以对该U盘进行读写操作。
但是,如果你有一个EXT4格式的U盘,它将只能在Linux系统上工作,而无法在Windows上直接使用(至少在没有第三方工具的帮助下)。

跨平台文件共享的解决方案
在IT支持工作中,你很可能会遇到这种情况:假设你想将同一个U盘上的重要文件复制到Windows、Linux和Mac操作系统上。你应该怎么做?
这是一个相当常见的情况。你必须重新格式化或擦除U盘,并添加一个与所有三种操作系统都兼容的文件系统。
幸运的是,存在像FAT32这样的文件系统,它支持在所有三种主流操作系统上读写数据。然而,FAT32有一些缺点:它不支持大于4GB的单个文件,并且文件系统的总容量不能超过32GB。

这对于一个小容量的U盘来说可能足够了,但对于其他用途来说并不理想。
你可以在接下来的补充阅读中了解更多关于FAT32的信息。但这仍然引出一个问题:如果你想在多个操作系统之间共享文件,又不想受限于文件系统的种种限制,该怎么办?
别担心,我们有解决方案。在下一门关于系统管理和IT基础设施服务的课程中,我们将讨论另一种称为网络文件系统的文件系统类型,它正好解决了这个问题。
总结
本节课中,我们一起回顾了文件系统的基础知识,了解了NTFS和EXT4分别是Windows和Linux的默认选择,并认识到不同文件系统在跨平台兼容性上的限制。我们还简要介绍了FAT32作为通用解决方案的优缺点,并预告了更强大的网络文件系统将在后续课程中讲解。接下来,我们将花几节课的时间讨论如何实际设置这些文件系统。
160:磁盘结构 💾

在本节课中,我们将学习磁盘的基本结构,了解分区、分区表等核心概念,为后续学习文件系统打下基础。

在开始为磁盘添加文件系统之前,我们先来梳理一下磁盘的组成部分,这些部分使你能够存储和检索文件。
一个存储磁盘可以被划分为多个分区。分区只是磁盘中你可以管理的一部分。

当你创建多个分区时,会给你一种错觉,仿佛你正在物理上将一块磁盘分割成多个独立的磁盘。要为磁盘添加文件系统,首先需要创建一个分区。通常,我们的操作系统只使用一个分区,但为不同用途设置多个分区也并不少见。
例如,你可能想在一块磁盘上创建两个分区,一个用于安装Windows操作系统,另一个用于安装Linux操作系统。这样,你无需使用两台机器,只需在一台机器上启动时选择不同的操作系统即可。





你还可以在同一块磁盘的不同分区上添加不同的文件系统。


分区本质上充当着各自独立的“子磁盘”,但它们都使用同一块物理磁盘。需要指出的一点是,当你在一个分区上格式化文件系统后,它就变成了一个卷。卷和分区有时会被错误地当作同义词使用,但我们希望确保你理解其中的区别。
上一节我们介绍了分区和卷的概念,本节中我们来看看磁盘的另一个重要组件:分区表。
分区表告诉操作系统磁盘是如何被分区的。这张表会告诉你可以从哪个分区启动、每个分区分配了多少空间等信息。


目前主要使用两种分区表方案:MBR(主引导记录)和GPT(GUID分区表)。这些方案决定了分区信息的结构方式。
MBR是一种传统的分区表,主要在Windows操作系统中使用。MBR只允许你创建最大2TB的卷。它还使用一种叫做主分区的概念。一块磁盘上最多只能有四个主分区。如果你想要更多分区,必须将一个主分区转换为扩展分区。
在扩展分区内部,你可以再创建逻辑分区。

初次接触可能觉得有点奇怪,但这正是分区表最初被设计成的方式。MBR是一个旧标准,正逐渐被我们接下来要讨论的分区表方案所取代。

GPT正成为磁盘的新标准。使用GPT,你可以创建大于2TB的卷,并且它只有一种分区类型。你可以在一个磁盘上创建任意数量的GPT分区。


在之前的课程中,我们学习了一个新的BIOS标准叫做UEFI,它已成为新系统的默认BIOS。要使用UEFI启动,你的磁盘必须使用GPT分区表。

现在你已经了解了创建分区需要做什么,接下来我们将在实际的磁盘上进行分区操作。

在接下来的几节课中,我们将学习如何为各自的操作系统分区和格式化一个USB驱动器。
总结
本节课中我们一起学习了磁盘的核心结构。我们了解了分区是磁盘的逻辑划分,格式化后成为卷。我们还探讨了两种主要的分区表方案:传统的MBR(限制较多)和现代的GPT(功能更强大,支持UEFI启动)。理解这些基础知识是管理存储设备和安装操作系统的关键。
161:Windows磁盘分区与文件系统格式化 💾
在本节课中,我们将学习如何在Windows操作系统中对磁盘进行分区,以及如何格式化文件系统。我们将介绍两种主要方法:使用图形用户界面(GUI)的磁盘管理工具,以及使用命令行的diskpart工具。
上一节我们介绍了磁盘分区和文件系统的基本理论,本节中我们来看看如何在Windows中实际操作。
使用磁盘管理工具(GUI)
Windows自带一个名为“磁盘管理”的强大原生工具,无需借助第三方软件即可完成分区和格式化工作。
有多种方法可以打开磁盘管理工具。我们将通过右键点击“此电脑”,选择“管理”选项,然后在“存储”分组下点击“磁盘管理”控制台来启动它。
在磁盘管理控制台中,我们可以看到所有磁盘和分区的显示,以及它们所格式化的文件系统类型信息。
以下是磁盘管理控制台显示的一些关键信息:
- 磁盘和分区的总容量与可用容量。
- 分区使用的文件系统类型(如NTFS、FAT32)。
- 分区的状态(如“健康”)。
磁盘管理控制台的一个关键特性是,你可以从这里直接修改计算机上的磁盘和分区。
为了演示分区和格式化的功能,我们最好避免操作安装有Windows操作系统的分区。因此,我们使用一个USB闪存驱动器来代替。
将USB驱动器插入电脑后,即插即用服务会自动为其安装驱动程序,你应该能在磁盘管理中看到它作为一个额外的磁盘出现。
目前,这个USB驱动器使用的是FAT32文件系统。我们现在将其重新格式化为NTFS文件系统。
以下是格式化USB驱动器的步骤:
- 右键点击USB驱动器对应的分区,选择“格式化”。
- 在弹出的窗口中,可以设置卷标(即磁盘名称)。我们保留“USB驱动器”。
- 指定文件系统,将其更改为NTFS。
- 设置“分配单元大小”。这个选项决定了格式化分区时使用的块大小。换句话说,这是分区将被划分成的“块”的尺寸。如果你存储大量小文件,较小的块大小能减少空间浪费;如果你存储大文件,较大的块大小意味着读取更少的块来组装文件。我们选择默认值,这在大多数情况下是合适的。
- 选择是否执行“快速格式化”。完整格式化与快速格式化的区别在于,完整格式化时,Windows会额外扫描磁盘(本例中是USB驱动器)以查找错误或坏扇区。这会使格式化过程耗时更长。我们选择“快速格式化”。
- 决定是否“启用文件和文件夹压缩”。启用压缩可以减少文件和文件夹占用的磁盘空间,但打开压缩文件时需要进行解压,这会增加处理器的额外工作。我们暂不启用此功能。
- 点击“确定”开始格式化。Windows会警告格式化将擦除磁盘上的所有数据,确认后,格式化过程开始。

经过短暂的处理,分区标签会变为“状态良好”,表示格式化已完成。
使用命令行工具(Diskpart)
使用图形界面非常直观,但也可以通过命令行完成相同的任务。这在需要自动化磁盘分区时非常有用。
要从命令行操作磁盘,我们需要使用一个名为diskpart的工具。diskpart是一个基于终端的工具,专为从命令行管理磁盘而设计。
让我们再次格式化我们的U盘,但这次使用diskpart而不是图形界面。
以下是使用diskpart格式化U盘的步骤:
- 插入U盘。
- 打开命令提示符(例如,运行
cmd),输入命令diskpart并按回车。这将打开一个新的diskpart终端窗口。 - 输入命令
list disk来列出系统上的当前磁盘。 - 根据磁盘大小(U盘通常小得多)识别出要格式化的磁盘(例如
Disk 1)。 - 输入命令
select disk 1来选择该磁盘。 - 输入命令
clean来清除磁盘。此命令将移除磁盘上所有分区和卷的格式。 - 输入命令
create partition primary来创建一个主分区。 - 输入命令
select partition 1来选择我们刚创建的分区。 - 输入命令
active将其标记为活动分区。 - 输入命令
format fs=ntfs label="My Thumb Drive" quick来格式化磁盘。这条命令的含义是:format(格式化),fs=ntfs(文件系统为NTFS),label="My Thumb Drive"(卷标为“My Thumb Drive”),quick(快速格式化模式)。

恭喜!你已成功通过命令行格式化了USB驱动器。如果你想了解更多关于diskpart的选项和功能,可以查看本视频后附带的补充阅读材料中的链接。
总结
本节课中我们一起学习了在Windows操作系统中格式化磁盘的两种方法。我们首先使用图形界面的磁盘管理工具,通过一系列直观的步骤完成了对USB驱动器的NTFS格式化。接着,我们探索了命令行的diskpart工具,通过输入一系列命令,同样实现了磁盘的清除、分区创建和NTFS格式化。这两种方法各有优势,图形界面适合手动操作,而命令行则便于自动化和批量处理。
162:Windows挂载与卸载文件系统

在本节课中,我们将要学习文件系统在Windows操作系统中的挂载与卸载过程。理解这一概念对于管理存储设备和确保数据安全至关重要。
概述
上一节我们介绍了如何格式化一个新的文件系统。格式化完成后,还需要执行一个关键步骤:将文件系统挂载到计算机的一个驱动器上。
什么是挂载?
当我们提到挂载一个文件系统或硬盘时,指的是让计算机能够访问该设备。在本例中,我们希望USB驱动器变得可访问,因此需要将其文件系统挂载到一个驱动器上。

Windows中的自动挂载

Windows操作系统通常会为我们自动完成挂载过程。如果你曾插入过USB驱动器,可能已经注意到它会自动出现在驱动器列表中,之后便可以立即开始使用它。
安全卸载(卸载)驱动器
当你使用完驱动器后,需要安全地弹出它。这本质上就是卸载驱动器的过程。
以下是安全卸载驱动器的步骤:
- 在文件资源管理器或桌面上找到代表该驱动器的图标。
- 右键点击该驱动器图标。
- 从弹出的上下文菜单中选择“弹出”选项。
安全卸载的重要性
我们将在后续课程中详细讨论为什么安全卸载(即正确卸载)是一个非常重要的操作。这主要关系到防止数据损坏和确保设备可以安全地从计算机上移除。
总结
本节课中我们一起学习了Windows系统中文件系统的挂载与卸载。我们了解到,挂载是使存储设备可访问的过程,而卸载则是安全断开连接的必要步骤。Windows通常能自动处理挂载,但用户需要手动执行安全卸载以保护数据。
163:磁盘分区与文件系统格式化


在本节课中,我们将学习如何在Linux系统中使用命令行工具对磁盘进行分区,并为分区创建文件系统。我们将重点介绍parted工具的使用方法,涵盖交互模式和命令行模式,并演示从查看磁盘到完成格式化的完整流程。
查看已连接的磁盘
在开始分区之前,我们需要先了解系统中有哪些磁盘。我们可以使用parted的命令行模式来列出所有磁盘。
以下是查看磁盘列表的命令:
sudo parted -l
运行此命令后,系统会列出所有已连接的磁盘及其信息。例如,你可能会看到类似/dev/sda(128GB)和/dev/sdb(8GB USB驱动器)的磁盘。输出信息包括分区表类型(如GPT)、分区数量、每个分区的起始位置、大小、文件系统类型、名称和标志。
进入交互模式并选择磁盘
上一节我们查看了磁盘信息,本节中我们来看看如何对特定磁盘进行操作。我们将使用parted的交互模式,这能让我们在一个独立的环境中执行一系列分区命令。
要进入交互模式并操作特定磁盘(例如USB驱动器/dev/sdb),请运行:
sudo parted /dev/sdb
此时,你将进入parted工具的命令提示符。在此模式下,你可以运行各种分区命令。若要退出并返回Shell,只需输入quit命令。
创建磁盘标签(分区表)
进入交互模式后,我们首先需要为磁盘创建一个分区表(也称为磁盘标签)。这对于新磁盘或需要重新分区的磁盘是必要步骤。
如果运行print命令后显示“unrecognized disk label”,则说明磁盘没有有效的分区表。我们需要使用mklabel命令来创建一个。由于我们希望使用更现代的GPT分区表,我们将执行以下命令:
mklabel gpt
创建完成后,再次运行print命令,确认磁盘信息中已显示“Partition Table: gpt”。
创建磁盘分区
现在我们已经准备好了分区表,接下来可以开始创建分区了。我们将把/dev/sdb磁盘分成两个分区,并先创建第一个分区。
在parted交互模式中,使用mkpart命令来创建分区。该命令需要指定分区类型、文件系统(此处的文件系统参数仅作提示,实际格式化在后续步骤完成)、起始点和结束点。
以下是创建第一个分区的命令示例:
mkpart primary ext4 1MiB 5GiB
参数解释:
primary:分区类型。对于GPT分区表,此参数意义不大,通常使用primary即可。ext4:计划在该分区上使用的文件系统类型。1MiB:分区的起始位置。我们从1 MiB开始,为磁盘头部留出空间。5GiB:分区的结束位置。这将创建一个大约5 GiB大小的分区。
关于容量单位的说明:在存储领域,我们使用精确的二进制单位以避免空间浪费。1 MiB (Mebibyte) = 1024 KiB, 1 GiB (Gibibyte) = 1024 MiB。这与十进制单位的MB和GB(1 MB = 1000 KB)不同。
格式化分区为文件系统
分区创建完成后,它只是一个空的容器。要能存储文件,我们需要在分区上创建一个文件系统,这个过程称为格式化。
首先,输入quit命令退出parted交互模式,返回Shell。然后,使用mkfs(make filesystem)命令来格式化我们刚刚创建的分区(/dev/sdb1)。
以下是格式化为ext4文件系统的命令:
sudo mkfs -t ext4 /dev/sdb1
此命令将在/dev/sdb1分区上建立ext4文件系统的结构。至此,我们已经成功创建了一个分区并为其格式化了文件系统。磁盘的剩余空间我们暂时保留,以备后续使用。

重要安全提醒与后续步骤
记住,使用parted这类磁盘工具时必须格外小心。它功能强大,但如果操作了错误的磁盘,可能会导致严重的数据丢失。

尽管我们已经完成了分区和文件系统格式化,但目前还不能直接向这个磁盘读写文件。在Linux中,要使用一个磁盘,还有最后关键一步:挂载(Mount)。我们需要将文件系统关联(挂载)到目录树中的一个目录上,才能通过Shell访问其中的内容。
你将在下一个视频中学习如何挂载文件系统。
课程总结
本节课中我们一起学习了Linux下磁盘管理的核心操作。我们使用parted工具查看了磁盘信息,进入了交互模式,为磁盘创建了GPT分区表,并使用mkpart命令划分了分区。随后,我们退出交互模式,使用mkfs命令为分区格式化了ext4文件系统。最后,我们强调了操作磁盘的安全重要性,并指出了下一步需要学习的挂载操作。
164:挂载与卸载文件系统 🖥️💾

在本节课中,我们将要学习如何与磁盘设备进行交互,核心是理解并实践文件系统的挂载与卸载操作。这是管理存储设备(如USB驱动器)的基础技能。
概述
为了开始与磁盘交互,我们需要将文件系统挂载到一个目录上。
你可能会想,为什么我们不能直接进入 /dev/sdb 这个磁盘设备呢?它确实是磁盘设备。但如果我们尝试像这样进入 /dev/sdb,我们会得到一个错误,提示该设备不是一个目录,这是正确的。
为了解决这个问题,我们需要在计算机上创建一个目录,然后将USB驱动器的文件系统挂载到这个目录上。
挂载文件系统
以下是挂载文件系统的步骤:
- 确定分区位置:首先,我们需要找到要访问的分区。可以使用命令
sudo parted -l来查看。假设我们找到的目标分区是/dev/sdb1。 - 创建挂载点:创建一个目录作为挂载点。例如,我们可以在根目录下创建一个名为
MyUSB的目录。 - 执行挂载:使用
mount命令将分区挂载到目录。命令格式为:sudo mount /dev/sdb1 /MyUSB。
现在,如果我们进入 /MyUSB 目录,就可以开始读写新文件系统上的文件了。
实际上,我们并不总是需要显式地使用 mount 命令。大多数操作系统在插入像USB驱动器这样的设备时,会自动为我们完成挂载。但无论如何,文件系统都必须以某种方式挂载,因为我们需要告诉操作系统如何与设备交互。
卸载文件系统
我们可以用类似的方式,使用 umount 命令来卸载文件系统。卸载是挂载磁盘的逆操作。
现在让我们卸载文件系统。我可以使用以下任一命令:
sudo umount /MyUSBsudo umount /dev/sdb1
两者都可以成功卸载文件系统。
当你关闭计算机时,手动挂载的磁盘会自动被卸载。但在某些情况下,比如我们正在使用USB驱动器,我们可能希望在不关闭电脑的情况下仅卸载USB驱动器的文件系统。
务必在物理断开驱动器之前,先卸载其文件系统。 对于USB驱动器,如果不这样做,可能会遇到一些有趣的文件系统错误。我们将在后续课程中详细讨论这一点。
另外请注意,当我们使用 mount 命令将文件系统挂载到一个目录时,一旦我们关闭计算机,这个挂载点就会消失。
永久挂载磁盘
不过,如果我们需要磁盘在计算机启动时自动加载,可以永久挂载一个磁盘。为此,我们需要修改一个名为 /etc/fstab 的文件。
如果我们现在打开这个文件,会看到一个列表,包含唯一设备ID、它们的挂载点、文件系统类型以及更多信息。如果我们想在计算机启动时自动挂载文件系统,只需添加一个与这里所列类似的条目。

让我们快速操作一下。我们需要为 /etc/fstab 添加的第一个字段是USB驱动器的 UUID(通用唯一标识符)。要获取我们设备的UUID,可以使用这个命令:sudo blkid。这将显示块设备ID(即存储设备ID)的UUID。
总结
本节课中我们一起学习了磁盘管理的核心操作。到目前为止,我们已经实践了分区磁盘、添加文件系统以及挂载它以供使用。如果你好奇并想了解更多关于 /etc/fstab 文件及其选项的信息,可以查看下一篇补充阅读材料。否则,让我们继续前进。
165:Windows交换分区 🖥️

在本节课中,我们将要学习一个与磁盘和分区相关的术语——交换空间。我们将从虚拟内存的概念入手,解释操作系统如何管理内存资源,并详细介绍Windows系统中交换空间(即页面文件)的工作原理与配置方法。
虚拟内存与交换空间概念

上一节我们提到了交换空间这个术语。在深入探讨之前,让我们先了解虚拟内存的概念。
虚拟内存是操作系统向计算机上运行的应用程序提供物理内存(如RAM)的一种方式。它通过创建虚拟地址到物理地址的映射来实现这一点。
虚拟地址映射公式:虚拟地址 -> 物理地址
这种方式简化了程序访问内存的过程。程序无需担心其他程序可能正在使用哪些内存部分,也无需跟踪其使用的数据在RAM中的具体位置。
更重要的是,虚拟内存使计算机能够使用比实际安装的物理内存更多的内存。为实现这一点,操作系统会在硬盘上划出一块专用区域,作为数据块(称为“页面”)的存储基地。
页面交换机制
上一节我们介绍了虚拟内存如何扩展可用内存。本节中我们来看看数据是如何在内存和硬盘间移动的。
当某个数据页面未被应用程序使用时,它会被“逐出”。这意味着它会被从内存复制到硬盘上。这是因为访问RAM中的数据速度很快,远比访问硬盘快,而RAM空间是宝贵的。

因此,操作系统希望将最常访问的数据页面保留在RAM中,而将一段时间未使用的数据放到磁盘上。这样,即使程序需要一个不常访问的页面,操作系统仍然可以获取它,但必须从相对较慢的硬盘中读取并放回内存。
几乎所有操作系统都使用某种虚拟内存管理方案和分页机制。
Windows中的内存管理
了解了通用原理后,我们来看看它在Windows系统中是如何具体实现的。
Windows操作系统使用一个名为“内存管理器”的程序来处理虚拟内存。它的职责是为我们的程序管理虚拟到物理内存的映射,并管理分页。
在Windows中,保存到磁盘的页面存储在一个特殊的隐藏文件中,该文件位于卷的根分区,名为 pagefile.sys。
Windows会自动创建页面文件,并使用内存管理器根据需要复制内存页面以供读取。操作系统在自动管理页面文件方面做得相当出色。
配置Windows页面文件
尽管系统能自动管理,但Windows仍然提供了修改页面文件大小、数量和位置的方法。这通过一个名为“系统属性”的控制面板小程序完成。
以下是访问和修改虚拟内存设置的具体步骤:
- 打开控制面板。
- 进入“系统和安全”设置。
- 点击“系统”。
进入系统面板后,您可以在左侧菜单中打开“高级系统设置”。

在“高级”选项卡中,点击“性能”部分的“设置”按钮。

再次点击“高级”选项卡,您应该会看到一个名为“虚拟内存”的部分,这里会显示页面文件的大小。点击“更改”按钮,您可以覆盖Windows提供的默认设置,从而设置页面文件的大小,并将页面文件添加到计算机的其他驱动器上。

页面文件大小设置指南
在修改设置前,了解一些通用准则是很重要的。微软提供了一些设置页面文件大小的指南可供遵循。
例如,在64位Windows 7上,最小页面文件大小应设置为机器RAM容量的1倍。
示例公式:最小页面文件大小 = 1 × RAM容量
除非有特定原因需要更改,否则通常最好让Windows自动管理页面文件大小本身。

本节课中我们一起学习了虚拟内存和交换空间的核心概念。我们了解到,虚拟内存通过硬盘上的页面文件扩展了可用内存,而Windows系统通过内存管理器自动处理这一过程。虽然可以手动配置页面文件,但对于大多数用户而言,依赖系统的自动管理是最佳选择。理解这一机制有助于我们更好地认识计算机如何高效地利用有限的内存资源。
166:Linux交换分区管理 🐧
在本节课中,我们将要学习Linux系统中一个重要的概念——虚拟内存,具体来说,是用于虚拟内存的硬盘专用区域,即交换空间。我们将了解其作用,并掌握如何创建、格式化并启用一个交换分区。
交换空间概述
在Linux中,用于虚拟内存的硬盘专用区域被称为交换空间。
上一节我们介绍了磁盘分区工具,本节中我们来看看如何利用这些工具来创建交换空间。
创建交换分区
我们可以使用之前学习的新磁盘分区工具来创建交换空间。
一个用于确定需要多少交换空间的实用指南是遵循下一篇补充阅读材料中推荐的划分方案。
在我们的案例中,由于我们只有一个USB驱动器,它本身不需要交换空间,我们将仅把剩余空间划分为交换分区,以便向你演示这个过程是如何工作的。在实际操作中,你会为你的主要存储设备(如硬盘和SSD)创建交换分区。

好的,让我们首先创建交换空间。回到 parted 工具,并选择我们的USB驱动器所在的位置 /dev/sdb。

我们将再次对它进行分区,这次是为了创建一个交换分区,然后在其上格式化Linux交换文件系统。
以下是创建分区的命令步骤:
mklabel gpt(如果磁盘未初始化)mkpart primary linux-swap 5GiB 100%
你会注意到驱动器的终点显示为100%,这表示我们应该使用驱动器上所有剩余的空闲空间。
格式化与启用交换空间
我们还没有完成。交换空间本身并不是一个文件系统,所以仅靠分区命令是不够的。我知道,很抱歉,我大约五秒钟前对你说了谎。如果你仔细想想,这很有道理,因为进入交换空间的是内存页,而不是文件数据。
无论如何,要完成这个过程,我们需要使用 mkswap 命令来指定将其制作为交换空间。
让我们退出 parted,并在我们新的交换分区上运行这个命令。
以下是格式化与启用交换空间的完整命令流程:
sudo mkswap /dev/sdb2sudo swapon /dev/sdb2


配置开机自动挂载
如果我们希望每次计算机启动时自动挂载交换空间,只需像之前操作一样,在 /etc/fstab 文件中添加一个交换条目。
本节课中我们一起学习了Linux交换空间的概念及其管理。我们了解了交换空间是用于虚拟内存的硬盘区域,并实践了使用 parted 工具创建交换分区、用 mkswap 命令进行格式化、用 swapon 命令启用它,最后还知道了如何通过修改 /etc/fstab 文件实现开机自动挂载。掌握这些步骤对于有效管理系统内存和存储资源至关重要。
167:Windows文件系统详解
在本节课中,我们将要学习Windows操作系统如何处理文件。我们将深入探讨文件数据、文件元数据,以及NTFS文件系统如何通过主文件表来组织和管理这些信息。此外,我们还将比较快捷方式、符号链接和硬链接的区别与用途。
概述
上一节我们介绍了磁盘分区和文件系统创建等实际操作。本节中,我们将探讨一些核心概念。我们曾讨论过操作系统如何管理文件,它实际上管理着文件数据、文件元数据和文件系统。我们已经覆盖了文件系统部分。在本视频中,我们将重点讲解文件数据和文件元数据。
文件数据与元数据
当我们谈论数据时,指的是文件的实际内容,例如保存到硬盘的文本文档。文件元数据则包含其他所有信息,例如文件所有者、权限、文件大小、在硬盘上的位置等。请记住,NTFS文件系统是Windows的原生文件系统格式。
那么,NTFS究竟如何存储和表示我们在操作系统中处理的文件呢?
主文件表
NTFS使用一种称为主文件表的结构来理清一切。卷上的每个文件在MFT中至少有一个条目,包括MFT本身。通常,文件和MFT记录之间存在一一对应的关系。但是,如果一个文件拥有大量属性,则可能需要多个记录来表示它。
在此上下文中,属性指的是诸如文件名、创建时间戳、文件是否为只读、文件是否被压缩、文件包含数据的位置以及许多其他信息。
当你在NTFS文件系统上创建文件时,条目会被添加到MFT中。当文件被删除时,它们在MFT中的条目会被标记为空闲,以便重用。
文件在MFT中的条目有一个重要部分,称为文件记录号。这是文件条目在MFT中的索引。
Windows中的快捷方式
在Windows中,有一种特殊的文件类型值得提及,称为快捷方式。快捷方式只是另一个文件,是MFT中的另一个条目,但它包含对某个目标的引用,因此当你打开它时,可以跳转到该目标。你可以通过右键单击目标文件并选择“创建快捷方式”选项来创建快捷方式。
除了创建快捷方式作为访问其他文件的方法外,NTFS还提供了另外两种方式:硬链接和符号链接。

符号链接与硬链接

这可能会有点奇怪,但请耐心听我解释。符号链接有点像快捷方式,但发生在文件系统层面。当你创建符号链接时,你会在MFT中创建一个条目,该条目指向另一个条目或另一个文件的名称。
这看起来可能只是创建快捷方式的另一种方式,但符号链接有一个关键区别:操作系统在几乎所有有意义的方面都将它们视为所链接文件的替代品。这部分听起来可能很奇怪,让我们来演示一下。

以下是创建和测试符号链接与快捷方式的步骤:


- 在桌面上创建一个名为
linksx的目录。 - 在其中创建一个名为
F1.txt的文本文件。 - 在该文件中添加单词
hello。 - 创建一个指向此文件的快捷方式,名为
file_one_shortcut.lnk。 - 打开命令提示符并导航到此目录。
- 尝试通过快捷方式用记事本打开文件:
notepad file_one_shortcut.lnk。你会发现记事本打开的是快捷方式文件本身,其中包含一些我们无法阅读的文本,而不是显示“hello”。 - 现在,使用
mklink命令创建一个符号链接:mklink File1_SymLink F1.txt。 - 用记事本打开这个符号链接:
notepad File1_SymLink。此时,记事本将显示“hello”。这就是我们说操作系统将符号链接视为原始文件的含义。
还有另一种值得提及的链接类型,称为硬链接。当你在NTFS中创建硬链接时,会向MFT添加一个条目,该条目指向链接文件的文件记录号,而不是文件名。这意味着目标文件的文件名可以更改,而硬链接仍然指向它。
你可以用类似创建符号链接的方式创建硬链接,但使用 /H 选项:mklink /H file_one_hardlink F1.txt。由于硬链接指向文件记录号而非文件名,你可以更改原始文件的名称,链接仍然有效。

总结
本节课中,我们一起学习了Windows NTFS文件系统如何通过主文件表管理文件。我们区分了文件数据与元数据,并详细探讨了快捷方式、符号链接和硬链接的工作原理与区别。符号链接在文件系统层面充当目标文件的替身,而硬链接则直接指向文件的MFT记录号,因此不受文件名更改的影响。下一节,我们将看看Linux是如何组织文件以及它如何处理硬链接和符号链接的。
168:深入理解inode与链接
在本节课中,我们将要学习Linux文件系统中两个核心概念:inode和链接。我们将了解文件数据是如何被组织和管理的,以及如何创建软链接和硬链接来高效地管理文件。
理解inode:文件的元数据管家
在Linux中,文件的元数据和文件本身被组织成一个称为inode的结构。inode类似于Windows NTFS文件系统中的MFT记录。
我们将inode存储在一个inode表中,它们帮助我们管理文件系统上的文件。
inode本身并不存储文件的实际数据或文件名,但它存储了关于一个文件的所有其他信息,例如文件大小、所有者、权限、时间戳以及指向数据块的指针。
链接:文件的快捷方式与分身
在上一节中,我们介绍了inode如何存储文件信息。本节中,我们来看看如何通过“链接”来引用这些文件。在之前的课程中,我们学习了如何在Windows中创建文件快捷方式、符号链接和硬链接。在Linux中,我们有相同的概念。
Linux中的快捷方式被称为软链接或符号链接。它们的工作方式与Windows中的符号链接类似,因为它们只是指向另一个文件。
软链接允许我们使用一个文件名链接到另一个文件。它们非常适合为其他文件创建快捷方式。
Linux中另一种链接类型是硬链接。与Windows类似,硬链接在Linux中不指向一个文件,而是链接到一个存储在文件系统inode表中的inode。
本质上,当你创建一个硬链接时,你是指向磁盘上的一个物理位置,或者更具体地说,是指向文件系统上的同一个inode。
但是,如果你删除了一个文件的某个硬链接,所有其他指向同一inode的硬链接仍然有效。
查看与创建链接

让我们实际看看硬链接是如何被引用的。如果我们对一个文件(例如 important_file)执行 ls -l 命令:
ls -l important_file
你会注意到详细信息中的第三个字段。这个字段实际上指示了一个文件拥有的硬链接数量。
当一个文件的硬链接计数降为零时,该文件才会被从计算机中完全删除。
以下是创建链接的具体步骤:
创建软链接:我们可以运行 ln 命令并加上 -s 标志(代表软链接)。
ln -s original_file softlink_name
创建硬链接:我们可以运行不带 -s 标志的 ln 命令来指定创建硬链接。
ln original_file hardlink_name

现在,如果我们再次检查 ls -l important_file,会看到硬链接计数增加了1。
软链接与硬链接的应用场景
硬链接非常有用,如果你需要在不同位置存储“同一个”文件,但又不想在卷上占用额外的存储空间。这是因为所有的硬链接都指向卷上的同一块存储空间。
你也可以使用软链接来做同样的事情,但如果你移动了原始文件,软链接就会断裂,并且你可能会忘记在其他地方使用过它。那些链接也会失效,可能需要一些时间来清理。
你现在可能还看不到为自己创建软链接或硬链接的用途,但它们被广泛用于整个系统中,因此你应该了解它们的工作原理。
总结
本节课中,我们一起学习了Linux文件系统的两个基石:inode和链接。我们了解到inode是存储文件元数据的关键结构,而链接(包括软链接和硬链接)则提供了灵活的文件引用方式。硬链接通过共享inode来节省空间,而软链接则作为指向目标路径的指针。理解这些概念对于高效管理Linux系统至关重要。
169:Windows磁盘使用监控与管理 🖥️💾

在本节课中,我们将学习如何在Windows操作系统中监控和管理磁盘使用情况。我们将探讨如何查看磁盘容量、使用空间,以及如何通过系统工具进行磁盘清理和碎片整理,以优化存储性能。
在上一节中,我们深入了解了文件和不同的文件系统。本节中,我们来看看如何监控Windows中这些文件的数量和大小。
市面上有许多第三方程序可用于在Windows上分区和格式化磁盘。同样,你也可以下载许多应用程序来检查和可视化Windows机器上的磁盘使用情况。但是,你可以使用我们在早期课程中检查过的磁盘管理控制台来了解磁盘容量和使用情况。

要检查磁盘使用情况,你可以打开计算机管理实用程序。

然后进入磁盘管理控制台。在那里,右键单击你感兴趣的分区并选择“属性”。
这将打开“常规”选项卡,你可以在其中查看驱动器上的已用空间和可用空间。
除了使用此图形用户界面检查磁盘使用情况外,Windows还提供了一个名为disk usage的命令行实用程序,作为其Sysinternals工具集的一部分。该DU实用程序可以打印出给定磁盘的使用情况,并告诉你它有多少个文件。这对于创建可能需要基于文本的输出(而不是像磁盘管理中的饼图那样的可视化报告)的脚本很有用。你可以在下一个补充阅读中找到DU工具的链接。
在磁盘管理控制台的同一选项卡上,你可能会注意到一个名为“磁盘清理”的按钮。如果你按下此按钮,Windows将启动一个名为cleanmgr的程序,它将在你的硬盘驱动器上进行一些整理工作,以尝试释放一些空间。
以下是磁盘清理包含的任务:
- 删除临时文件。
- 压缩旧的和很少使用的文件。
- 清理日志。
- 清空回收站。
另一个与磁盘健康相关的任务称为“碎片整理”。磁盘碎片整理背后的想法是获取存储在给定磁盘上的所有文件,并将它们重新组织到相邻的位置。


像这样有序地存放文件,对于使用致动臂在旋转盘片上写入和读取数据的旋转硬盘驱动器来说,将使工作变得更轻松。致动臂的磁头实际移动读取所需数据的距离会更短。
需要指出的是,这对于固态硬盘的好处较小,因为没有需要在旋转盘片上移动的物理读写头。对于这类驱动器,操作系统可以使用一个名为TRIM的过程来回收固态硬盘上未使用的部分。我们不会深入探讨TRIM的工作原理,但知道它的存在是很好的。我在此视频后的阅读材料中提供了一个关于TRIM更多信息的链接。
在Windows中,碎片整理是作为一项计划任务处理的。操作系统会定期自动对驱动器进行碎片整理,你无需担心。但如果你愿意,也可以在Windows中手动对驱动器进行碎片整理。
要启动手动碎片整理,请打开操作系统自带的磁盘碎片整理工具。输入disk defragmenter。

启动后,你将获得一个可以进行碎片整理的磁盘列表,以及用于分析运行碎片整理的潜在收益和运行碎片整理本身的按钮。



本节课中,我们一起学习了如何在Windows中监控磁盘使用情况,包括使用图形界面和命令行工具查看磁盘空间。我们还探讨了如何使用磁盘清理工具释放空间,以及针对传统机械硬盘进行碎片整理以优化性能。了解这些工具和概念,将帮助你更有效地管理Windows系统的存储资源。
170:Linux磁盘使用 💾
在本节课中,我们将学习如何在Linux系统中查看磁盘使用情况。我们将介绍两个核心命令:du 和 df,它们分别用于查看目录的磁盘使用量和整个系统的可用空间。掌握这些命令对于管理和维护系统存储空间至关重要。
查看目录磁盘使用量
上一节我们介绍了在Windows中查看磁盘使用情况的方法。本节中我们来看看在Linux系统中如何实现类似的功能。

我们可以使用 du -h 命令来查看磁盘使用情况。

du(即磁盘使用)命令向我们显示特定目录的磁盘使用量。
如果不指定目录,该命令将默认使用当前目录。
-h 标志以人类可读的形式提供数据测量结果。
如果您想知道某个目录中的文件占用了多少磁盘空间,就应该使用 du 命令。
查看系统可用空间
了解了如何查看具体目录的占用后,接下来我们看看如何检查整个系统的存储空间状况。
另一个可以使用的命令是 df 命令,即“磁盘空闲”。
该命令显示您整个机器上的可用空间。
-h 标志以人类可读的形式提供数据测量结果。
如果您想知道整个系统有多少可用空间,就应该使用 df 命令。


关于碎片整理的说明
您可能已经注意到,我们没有真正涉及Linux的文件系统碎片整理。
与Windows相比,Linux通常在避免碎片化方面做得更好。
我们不会深入探讨这一点,但您可以在接下来的补充阅读中了解更多信息。
磁盘空间管理实践
在常见场景中,您可能会发现自己磁盘空间不足。
需要由您来调查是哪些文件和文件夹占用了空间,以及是否需要删除这些文件。
请务必记住,删除文件时要格外小心。
本节课中我们一起学习了Linux系统中两个关键的磁盘管理命令:du 用于分析目录级别的磁盘使用量,而 df 用于查看整个文件系统的可用空间。理解并熟练运用这些命令是有效进行系统存储管理和故障排查的基础技能。
171:Windows文件系统修复 🛠️
在本节课中,我们将要学习为什么需要安全移除USB设备,以及Windows NTFS文件系统如何通过日志记录、自我修复和磁盘检查等机制来防止和修复数据损坏。我们还将了解如何在Windows中手动运行这些修复工具。
数据损坏的风险与原因
在之前的课程中,我们讨论了未从计算机中“弹出”或“卸载”USB设备就直接拔出的危险性。
你可能自己也曾见过类似的错误信息,当系统提示你必须安全弹出这个U盘时。
为什么当我们向U盘复制文件,并且看到文件已成功复制后,还需要执行这个操作?为什么我们不能在不卸载或点击操作系统中的“弹出”按钮的情况下直接拔掉驱动器?
事实证明,数据可能尚未完成复制。系统并非无缘无故地警告我们。
当我们向驱动器读取或写入数据时,实际上会先将数据放入缓冲区或缓存中。
数据缓冲区是RAM中的一个区域,用于在数据移动过程中临时存储数据。
因此,当你从操作系统向USB驱动器复制内容时,数据会首先被复制到数据缓冲区,因为RAM的运行速度比硬盘驱动器快。
所以,如果你没有正确卸载文件系统,并且没有给缓冲区足够的时间来完成数据传输,你就有数据损坏的风险。
数据损坏可能由多种原因引起,而不仅仅是不安全地移除磁盘驱动器。
假设你正在使用电脑,大楼突然断电,导致你的电脑突然关机。这种崩溃也会导致数据损坏。
系统故障或软件错误同样可能导致数据损坏。
NTFS文件系统的防护机制
NTFS文件系统内置了一些高级功能,可以帮助最小化损坏的风险,并在文件系统确实受损时尝试恢复。
其中一项功能是通过一个称为日志记录的过程,将对文件元数据的更改记录到一个名为NTFS日志的日志文件中。


通过记录这些更改,NTFS创建了其执行操作的历史记录。
这意味着它可以查看日志,以了解文件系统当前应该处于什么状态。
如果崩溃或错误确实导致了损坏,文件系统可以启动一个恢复过程,该过程将使用该日志来确保系统处于一致的状态。
除了日志记录,NTFS和Windows还实现了一种称为自我修复的功能。
正如你从名称中可以猜到的那样,自我修复机制会在后台自动修复磁盘上的小问题和损坏。
它在Windows运行时执行此操作,因此你无需重新启动系统。
如果你想检查计算机上自我修复过程的状态,可以打开一个管理员命令提示符,并使用FSUTIL工具,如下所示:
以下是使用FSUTIL工具查询自我修复状态的命令示例:
FSUTIL repair query C:
手动磁盘检查工具
最后,当情况变得非常糟糕,出现一些严重或灾难性的磁盘损坏时,例如坏扇区、磁盘故障等,你可以求助于NTFS磁盘检查实用程序。
NTFS内置的恢复功能意味着你通常不需要运行磁盘检查,但在紧急情况下它仍然可用。
要手动运行磁盘检查,你可以打开管理员命令提示符,并在命令行中键入chkdsk。
默认情况下,磁盘检查将以只读模式运行,因此它会为你提供磁盘健康状况的报告,但不会对其进行任何修改或修复。
你可以使用/F标志告诉磁盘检查程序修复它发现的任何问题。
你还可以指定要检查的驱动器,如下所示。如果输入chkdsk /F D:,我将检查我的U盘,它位于D盘。
不过,很多时候你不需要手动运行磁盘检查。
如果操作系统检测到某些数据已损坏或磁盘有坏扇区,它会在卷上的一个元数据文件中设置一个位,以指示存在损坏。
当系统启动时,磁盘检查实用程序将检查此位。如果它被设置,程序将执行并尝试通过从NTFS日志中重建文件系统的损坏部分来修复损坏。

正如你所见,Windows NTFS文件系统拥有一些相当强大的措施和功能,用于恢复和防止损坏破坏你的分区。
总结

本节课中我们一起学习了数据损坏的常见原因,特别是因不安全移除USB设备导致的风险。我们深入探讨了Windows NTFS文件系统为应对这些风险而设计的核心防护机制:日志记录用于追踪和恢复更改,自我修复用于在后台自动处理小问题,以及磁盘检查实用程序用于手动诊断和修复严重损坏。这些功能共同作用,极大地增强了文件系统的健壮性和数据的安全性。
下一节,让我们来看看如何在Linux系统中执行文件系统修复。
172:Linux文件系统修复 🛠️
在本节课中,我们将学习如何在Linux系统中手动尝试修复文件系统。核心内容包括使用fsck命令的注意事项、修复的局限性以及系统启动时的自动检查机制。
文件系统检查命令:fsck
上一节我们介绍了磁盘分区与挂载的基本操作。本节中我们来看看如何检查和修复可能损坏的文件系统。

在Linux中,你可以使用fsck(File System Check)命令来尝试手动修复文件系统。
重要前提:执行此命令前,必须确保目标文件系统未被挂载。以下是一个命令示例(仅为示意,未实际运行):
fsck /dev/sda1

警告:如果在已挂载的分区上运行fsck命令,极有可能损坏该文件系统。
文件系统修复的局限性
需要明确的是,文件系统修复并非总能保证成功,但在大多数情况下它能提供帮助。
对待硬件设备保持谨慎和规范的操作,在多数情况下它能稳定地为你服务。

系统启动时的自动检查
另一个需要指出的要点是,在某些Linux版本中,fsck实际上会在计算机启动时自动运行,以检查并尝试自动修复文件系统中存在的问题。

你可以在接下来的补充阅读材料中,了解更多关于如何启用此功能以及fsck的一些高级特性。
课程总结与展望
本节课中我们一起学习了许多磁盘管理和文件系统的核心概念。
我们涵盖了如何对磁盘进行分区、如何格式化文件系统以及如何挂载文件系统。甚至还讨论了如何修复损坏的文件系统。
在IT支持工作中,掌握如何操作磁盘至关重要。你的客户将他们宝贵的数据存储在这些磁盘上——无论是孩子的照片、重要的演示文稿、音乐收藏还是其他任何资料——他们都不希望丢失这些数据。
因此,懂得如何管理磁盘及其上的数据,是IT角色中至关重要的一部分。
接下来,如你所料,又到了Windows和Bash评估练习的时间。请从容完成,如有需要,随时可以回顾本模块的任何学习材料。
本节课中我们一起学习了Linux文件系统修复的基本方法,包括fsck命令的使用条件与风险、修复的有限性,以及系统启动时的自动检查机制。理解这些知识对于执行有效的系统维护和数据保护至关重要。
173:计算机的启蒙与魅力

在本节课中,我们将跟随Ben的热情讲述,探索他初次接触计算机时的深刻体验,并理解计算机作为一种“万能工具”的核心魅力。我们将学习到计算机如何通过精确的指令来解决问题,以及这种能力为何如此令人着迷。
当我年纪还很小的时候,我父亲带我去哥伦比亚大学的一个图书馆。那里安装了一些终端,用于连接哥伦比亚大学的主机。那是我第一次看到这些东西。
某种东西被点亮了,仿佛我头顶亮起了一盏灯泡。我想,这就是我想度过余生的方式。
我认为,这大概是一种概念:只要你懂得如何正确地表达,你就能让这台机器做任何你想做的事。这种拥有如此强大控制力的想法,以及这些设备是如此神奇,让计算机就像一个“万能盒子”。你可以塑造它来解决你能想象的任何问题,只要你懂得如何去做。
这令人无比着迷。甚至在我真正能亲手操作计算机之前,我就已经沉迷于那种力量的存在。对我来说,尝试获得访问权限、弄清楚我将如何使用这些东西、与它们一起工作并学习它们,几乎成了一种执念。
我的父母都是历史学家。我想他们认为我是个意外降临到他们家的怪胎孩子。所以他们给我买了台电脑,确信六个月后他们就会把它当二手货卖掉。对我来说幸运的是,他们大错特错了。
上一节我们介绍了Ben与计算机的初次邂逅,本节中我们来看看计算机吸引他的核心特质。
计算机的核心吸引力在于其可编程性。它本身是一个通用机器,其行为完全由我们提供的指令(即程序或代码)决定。这可以用一个简单的公式来描述:
计算机输出 = 函数(用户输入, 程序指令)
这意味着,计算机的输出结果取决于用户的输入和它正在运行的程序。如果你知道如何编写正确的指令(程序),你就能让计算机解决特定问题。
以下是计算机作为一种“万能工具”的几个关键特点:
- 可塑性:计算机硬件本身功能固定,但通过加载不同的软件,它可以变成文字处理器、游戏机、设计工具或计算器。
- 问题解决能力:对于能够被清晰定义和步骤化(算法化)的问题,计算机都能高效处理。
- 控制感:用户通过编程,获得了指挥一台强大机器按自己意志行事的能力。
这种“只要知道方法,就能解决任何问题”的可能性,正是计算机科学令人兴奋的根源。

本节课中我们一起学习了Ben的计算机启蒙故事,并探讨了计算机吸引初学者的核心魅力。我们了解到,计算机并非神秘的黑箱,而是一个遵循指令的逻辑系统。它的强大之处在于其可编程性,即通过编写正确的代码(程序指令),我们可以让它化身成为解决无数问题的工具。这种能够塑造工具以扩展自身能力的控制感和创造力,是许多人投身IT领域的原始动力。
174:进程管理 🖥️

在本节课中,我们将要学习计算机中进程的概念及其管理。进程是计算机运行程序的基础,理解它们对于有效利用硬件资源至关重要。

课程概述
到目前为止,我们已经完成了四个模块的学习,本课程还剩两个模块。在上一课中,我们学习了如何对磁盘进行分区、设置文件系统以开始存储文件。我们还深入探讨了文件系统的细节,甚至学习了修复损坏的文件系统和磁盘的工具。
本节中,我们将讨论进程。进程在我们的计算机用户体验中扮演着重要角色。毕竟,如果无法运行任何程序,我们为何要使用计算机呢?随着计算机上运行的进程越来越多,我们必须思考如何更好地利用硬件资源。
准备好,因为我们将深入探讨进程的细节。我们将讨论如何读取进程输出,并学习如何跟踪我们的资源。预备,开始。
进程的重要性
进程是计算机中正在执行的程序的实例。它们是操作系统进行资源分配和调度的基本单位。随着计算机上运行的进程数量增加,有效管理这些进程对于保持系统性能和稳定性至关重要。
以下是进程管理中的几个核心概念:
- 进程标识符(PID):每个进程都有一个唯一的数字标识符,称为PID。操作系统通过PID来识别和管理进程。
- 进程状态:进程在其生命周期中会处于不同的状态,例如运行、就绪、阻塞等。
- 资源分配:进程在执行时需要占用CPU时间、内存空间和I/O设备等系统资源。
进程监控与管理工具
为了有效地管理系统资源,我们需要使用工具来监控和管理进程。这些工具可以帮助我们查看哪些进程正在运行,它们占用了多少资源,并在必要时进行干预。
以下是几种常用的进程管理命令及其功能:
ps命令:用于报告当前系统的进程状态。例如,ps aux可以列出所有用户的详细进程信息。top命令:提供了一个动态的、实时更新的进程视图,显示系统摘要信息和进程列表,按CPU或内存使用率排序。kill命令:用于向进程发送信号,以终止或控制进程。例如,kill -9 <PID>会强制终止指定PID的进程。
总结
本节课中,我们一起学习了计算机进程的基础知识及其管理。我们了解到进程是程序执行的载体,有效的进程管理对于优化计算机性能和资源利用率至关重要。通过学习使用如ps、top和kill等工具,我们可以监控系统状态、识别资源瓶颈,并对进程进行必要的控制。掌握这些技能是成为一名合格IT支持专业人员的重要一步。
175:程序与进程再探 🔄


在本节课中,我们将深入探讨程序与进程的概念,理解它们如何占用计算机资源,并初步了解进程管理的重要性。我们将从基本定义开始,逐步深入到进程的创建、运行以及后台进程的作用。


概述
在之前的课程中,我们学习了程序是我们能够运行的应用程序,例如Chrome网络浏览器。进程则是正在运行的程序。同一个程序可以同时运行多个进程,就像我们可以同时打开多个Chrome窗口,或者使用一个程序播放多部电影。

程序与进程的关系

当我们启动一个进程时,实际上是在执行一个程序。请记住,程序本质上就是软件。为了计算软件所包含的信息并使其运行,我们需要为它分配资源。

进程与硬件资源
进程在运行时,会占用CPU和内存等硬件资源。幸运的是,如今的计算机性能足够强大,能够处理我们日常活动(如浏览网页、观看电影等)中使用的进程。但有时这还不够。
进程管理的重要性
有时,一个进程会占用超出预期的资源。有时,进程会失去响应,导致系统资源被占用,从而使整个计算机变得无响应。在接下来的课程中,我们将讨论这种情况发生的原因以及如何解决它。
但在讨论如何管理进程之前,我们必须先理解它们是如何工作的。
进程的启动与标识
当你打开一个应用程序(如文字处理器)时,你就在启动一个进程。该进程会被分配一个进程ID,用于唯一地将其与其他进程区分开来。我们的计算机识别到该进程需要硬件资源才能运行,因此内核会做出决策,决定分配哪些资源给它。然后,眨眼之间,计算机就启动了文字处理器,我们便可以开始工作了。
可见进程与后台进程
这个过程适用于你手动启动的每一个进程,也适用于那些你甚至不知道正在运行的进程。除了我们启动的可见进程(如音乐播放器或文字处理器)之外,还有一些不那么可见的进程在运行。这些被称为后台进程,有时也称为守护进程。
后台进程在后台运行,我们通常看不到它们,也不与它们交互,但我们的系统需要它们才能正常运作。它们包括调度资源、记录日志、管理网络等进程。
查看系统进程
当我们查看系统上运行的所有进程时,你就会明白我在说什么。在接下来的几节课中,我们将讨论进程是如何创建和终止的。然后,我们就可以开始深入研究进程管理的细节了。
总结
本节课中,我们一起学习了程序与进程的核心区别,了解了进程如何占用系统资源,并认识了后台进程的作用。进程管理是IT支持中的一项关键技能,你经常会遇到需要排查应用程序冻结、运行缓慢等问题的情况。理解这些基础知识是进行有效故障排除的第一步。
176:Windows进程创建与终止 🖥️
在本节课中,我们将学习Windows操作系统是如何创建和终止进程的。我们将从系统启动时的第一个进程开始,逐步了解进程的父子关系、继承机制,以及如何手动创建和停止一个进程。
系统启动与初始进程
进程的创建和停止方式因您使用的操作系统而异。首先,让我们看看Windows是如何运作的。
当Windows启动时,第一个启动的非内核用户模式进程是会话管理器子系统,即 smss.exe。smss.exe 进程负责为操作系统运行设置一些必要的环境。
随后,它会启动登录进程 Winlogon.exe,以及客户端/服务器运行时子系统 csrss.exe。csrss.exe 负责运行Windows图形用户界面和命令行控制台。
提示:我们将在下一课讨论Linux使用的第一个进程
init。您可能会认为smss.exe是Windows中与init等效的进程,但请不要陷入这个误区。在进程创建机制方面,它们有很大的不同。
进程创建与父子关系
在Windows中,每个新创建的进程都需要一个父进程来通知操作系统需要创建一个新进程。
子进程会从其父进程继承一些东西,例如变量和设置,我们可以统称为 环境。这为子进程提供了一个良好的起点,但在初始创建步骤之后,子进程基本上是独立运行的。
与Linux不同,Windows进程可以独立于其父进程运行。让我们通过创建一个自己的进程来看看这是如何工作的。
动手实践:创建进程
以下是创建进程的步骤:
首先,我们启动PowerShell进程以获得一个Windows命令提示符。

然后,我们可以在其中输入 notepad. 来为记事本程序创建一个新进程。

到目前为止一切顺利。父进程是PowerShell,子进程是记事本应用程序。

进程的独立性
如果我们通过点击“X”按钮来终止父进程,会发生什么?

请注意,即使其父进程已被终止,记事本仍然在愉快地运行。

这些子进程完全活在自己的世界里。

终止进程的方法
点击“X”只是停止Windows中进程运行的一种方式。但正如您所料,还有其他方法可以停止进程。
您可以使用命令提示符命令,调用任务终止实用程序 taskkill。taskkill 可以通过几种方式查找并停止一个进程。
更常见的方法之一是使用一个称为 进程ID 或 PID 的标识号,来告诉 taskkill 您希望停止哪个进程。
使用 taskkill 终止进程
一种方法是再次终止记事本,通过使用 taskkill /PID 后跟PID号来指定PID。
例如,命令格式为:
taskkill /PID <进程ID号>
这里的 <进程ID号> 是记事本的进程ID。成功后,这将向由该PID标识的进程(在我们的例子中恰好是记事本)发送终止信号。

如何获取进程ID
这很有用,但我们首先如何获取那个PID呢?很高兴您会问。我们将在接下来的课程中讨论如何定位和查看进程以及其他更详细的进程信息。

总结
本节课中,我们一起学习了Windows进程的生命周期。我们从系统启动时的初始进程 smss.exe 开始,理解了进程的父子创建关系以及子进程对环境的继承。通过实践,我们看到了Windows进程可以独立于父进程运行的特点。最后,我们介绍了使用 taskkill 命令和进程ID来终止进程的方法,为后续深入学习进程管理打下了基础。
177:进程创建与终止 🖥️
在本节课中,我们将要学习Linux系统中进程的创建与终止机制。我们将了解进程之间的父子关系、系统的初始进程,以及进程结束时的资源回收过程。
进程的父子关系 👨👦

在Linux中,进程之间存在父子关系。这意味着你启动的每一个进程都源自另一个进程。
让我们查看以下命令:


在这个例子中,less命令将是GrP进程的父进程。
初始进程:init 🚀
既然所有进程都源自另一个进程,那么必须存在一个启动这一切的初始进程,对吗?是的,确实存在。

当你启动计算机时,内核会创建一个名为init的进程,其进程ID(PID)为1。

然后,init进程会启动我们启动和运行计算机所需的其他进程。
进程创建的过程比这更复杂,但我想介绍父进程的概念,因为在我们开始管理进程时你会看到它们。
进程的终止与资源回收 ♻️
上一节我们介绍了进程的创建,本节中我们来看看进程的终止。
当你的进程完成任务后,它们通常会自动终止。一旦一个进程终止,它会将其正在使用的所有资源释放回内核,以便这些资源可以被另一个进程使用。
你也可以手动终止一个进程,我们将在后续课程中讨论如何操作。
本节课中我们一起学习了Linux进程的父子关系、系统初始进程init的作用,以及进程终止时如何回收资源。理解这些概念是有效管理系统进程的基础。
178:杰斯的激情与入门

在本节课中,我们将跟随杰西卡·西奥达特的分享,了解她如何从一名对计算机充满好奇的青少年,成长为一名系统工程师。她的故事将为我们揭示IT职业的入门路径、解决问题的初体验,以及如何将兴趣转化为职业。
🧑💻 个人介绍
我的名字是杰西卡·西奥达特,我是Slight Re组织的一名系统工程师。
🚀 职业起点
我曾与一位导师交谈,我说我非常渴望在夏天找到一份工作,我希望能与计算机打交道。她告诉我,她那里有一个机会,但他们不确定我是否已经准备好了,因为我年纪尚轻且缺乏经验。我几乎是在恳求她,最终她给了我一个机会。我从15岁起就跟随着她学习,直到我第一次进入大学。
💡 初次挑战:解决问题
我第一次被挑战去解决问题,可能是在我们得到第一台电脑后,我把它弄坏了。我坐在电脑前,受到一部电影的启发,决定要成为一名年轻的黑客。于是我运行了一些命令行指令,结果让电脑蓝屏死机了。
我惊慌失措,试图找出办法来撤销我刚才的操作。但最终,那台电脑无法挽救。
🌍 家庭背景与职业探索
我是家族中在美国的第一代。我的家人来自海地。在我整个成长过程中,我的父母和周围所有人总是问我:“你长大后想做什么?”说实话,我真的不知道我想做什么。
直到我开始摆弄电脑,我才最终发现我热爱它。我基本上在想,一定有一份我能用电脑做的工作。
🔄 观念的转变
当我表示我想从事技术和计算领域的职业时,没有人理解我在说什么。作为一个移民家庭,大家谈论的都是成为医生、律师或教师。如果你不是这三者之一,你的人生道路就不正确。
但现在,他们不再那样想了。他们认为我“很了不起”。
本节课总结
本节课中,我们一起学习了杰西卡·西奥达特的个人经历。从恳求一个实习机会,到因操作失误而首次面对技术挑战,再到将个人兴趣发展为家族认可的职业道路,她的故事展示了IT支持领域入门所需的热情、实践机会以及从错误中学习的重要性。核心在于主动探索、勇于尝试,并将解决问题的过程视为成长的阶梯。
IT支持:第2课:Windows进程信息查看与管理 🖥️
在本节课中,我们将学习进程在操作系统中的核心概念,并重点掌握在Windows操作系统中查看和管理运行中进程的多种实用方法。
进程的本质
上一节我们介绍了进程的基本概念,本节中我们来深入理解其本质。
你可以将进程理解为“运行中的程序”。以你的网络浏览器代码为例,它原本静静地存储在硬盘上。一旦你启动它,操作系统便会将这些静态代码转化为一个动态运行、可交互的应用程序。换句话说,它变成了一个你可以与之互动的进程。
我们在电脑上随时都在启动和终止进程,尽管操作系统通常在幕后处理这一切。通过学习进程,你得以窥见操作系统实际工作的原理。这些知识既有趣又强大,尤其当被精明的IT支持专家用来解决问题时。
在Windows中查看进程
了解了进程是什么之后,我们来看看如何在Windows电脑上探查哪些进程正在运行,以及更多与它们交互的方法。
在Windows操作系统中,任务管理器是获取进程信息的一种方法。你可以通过按下 Ctrl + Shift + Esc 组合键,或通过开始菜单找到并打开它。
如果你点击“进程”选项卡,会看到一个列表,其中包含当前用户正在运行的进程,以及用户可见的一些系统级进程。
任务管理器将每个进程的信息分列显示。它会告诉你进程正在运行什么应用程序或映像文件、启动它的用户以及它正在使用的CPU或内存资源。
终止进程
以下是终止进程的步骤:
- 在任务管理器的进程列表中,选择任意一个进程行。
- 点击右下角的“结束任务”按钮。
我们可以通过一个例子来演示:先从命令行启动另一个记事本进程,然后切换到任务管理器,选择该记事本进程并结束它。
获取进程标识符
在之前的课程中,我们讨论过启动和结束Windows进程。记得我们使用 taskkill 命令通过其标识号来停止进程。
那么,如何获取这个PID呢?在任务管理器中,你可以点击“详细信息”菜单选项。在这里,你可以看到任务管理器能显示的大量其他信息,包括PID。

你也可以从命令提示符和PowerShell中查看此信息。
- 从命令提示符,你可以使用名为
tasklist的实用程序来显示所有正在运行的进程。tasklist - 从PowerShell提示符,你可以使用名为
Get-Process的命令来执行相同的操作。Get-Process


总结
本节课中,我们一起学习了进程作为“运行中程序”的核心概念。我们重点探讨了在Windows操作系统中,如何使用任务管理器、命令提示符的 tasklist 命令以及PowerShell的 Get-Process 命令来查看运行中的进程信息,并掌握了通过任务管理器图形界面终止进程的基本方法。从Windows操作系统中获取进程信息的方式多种多样,如果你想更深入地研究这些工具,我们已在补充阅读材料中附上了 tasklist 和 Get-Process 的文档链接。
180:查看系统进程信息 🖥️

在本节课中,我们将学习如何在Linux系统中查看正在运行的进程信息。我们将重点介绍ps命令及其常用选项,并了解如何解读其输出结果。掌握这些知识是进行系统监控和故障排查的基础。
概述:使用ps命令查看进程
首先,我们来运行一个基本的ps命令。在Linux中,我们可以使用ps命令来查看系统进程。让我们运行带有-x标志的ps命令,看看会发生什么。
ps -x
这个命令会显示你系统上当前运行进程的一个快照。初次查看ps的输出可能会让人感到不知所措,但别担心,我们将一步步学习如何解读它。
解读ps -x的输出
以下是ps -x命令输出的一个示例,我们将从左到右解读每个字段的含义。
- PID:这是进程ID。请记住,进程在启动时会获得一个唯一的ID。
- TTY:这是与进程关联的终端。我们不会深入讨论这个字段,但你可以在本视频链接的手册页中阅读更多相关信息。
- STAT:这是进程状态。如果你在这里看到
R,意味着进程正在运行或等待运行。另一个常见的状态是T,表示进程已停止,即一个被挂起的进程。你可能还会看到S,表示可中断睡眠,意味着任务正在等待某个事件完成才能恢复。你可以在手册页中阅读关于其他进程状态的更多信息。 - TIME:这是进程已占用的总CPU时间。
- COMMAND:这是我们正在运行的命令的名称。
进阶:使用ps -ef查看详细信息
现在,我们将进入更深入的查看模式。运行以下命令:
ps -ef
其中,-e标志用于获取所有进程,包括其他用户运行的进程。-f标志表示完整格式,它会显示关于进程的完整详细信息。
看,我们现在有了更多的进程和更详细的进程信息。让我们来分解一下这个输出:
- UID:启动进程的用户的用户ID。
- PID:进程ID。
- PPID:父进程ID,我们在之前的课程中讨论过,它表示启动该进程的父进程。
- C:此进程拥有的子进程数量。
- STIME:进程的启动时间。
- TTY:与进程关联的终端。
- TIME:进程已占用的总CPU时间。
- CMD:我们正在运行的命令的名称。
在输出中搜索特定进程
如果我们想在这个输出中进行搜索,现在看起来非常混乱,你能想到一种方法来查看特定进程(例如Chrome)是否在运行吗?没错,使用grep命令。我告诉过你我们会经常用到它。
ps -ef | grep chrome
这将为我们提供一个包含名称中有“chrome”的进程列表。
通过/proc目录查看进程信息
还有另一种查看进程信息的方式。请记住,Linux中的一切都是文件,进程也不例外。要查看与进程对应的文件,我们可以查看/proc目录。
ls /proc
这里有很多目录,对应着每一个正在运行的进程。如果你查看其中一个子目录,它会提供关于该进程的更多信息。
让我们查看一个示例进程的状态文件,例如PID为1805的进程:
cat /proc/1805/status

这告诉我们关于一个进程的更多详细信息,比我们在ps命令中看到的还要多。虽然/proc目录看起来很有趣,但当我们需要对进程问题进行故障排查时,它并不非常实用。目前,请坚持使用ps -ef命令来查看进程信息。
总结
本节课中,我们一起学习了如何查看Linux系统中的进程信息。我们介绍了ps -x和ps -ef命令的基本用法,并详细解读了输出结果中各字段的含义。我们还学习了如何使用grep命令过滤ps的输出,以及如何通过/proc文件系统访问进程的底层信息。
正如你所见,只需几个按键,我们就能了解到很多关于机器上运行进程的信息。在接下来的课程中,我们将讨论如何利用进程信息来找出哪些进程占用了过多资源。现在,请随意多了解一下你正在运行的进程。我将在下一个视频中等待你。
操作系统与网络基础:第2课:Windows信号处理
在本节课中,我们将学习操作系统如何通过“信号”来管理进程,特别是在Windows环境下如何中断或终止正在运行的程序。
想象一下,你启动了一个视频游戏,它正在花时间渲染图形。你决定不再想玩了,这时你有几个选择。你可以等待它完成加载,然后从菜单中退出游戏。或者,你可以完全中断这个过程,在系统层面告诉它退出。
这只是一个例子,说明你可能需要在进程完全完成之前关闭它。为了在系统层面告诉一个进程退出,我们使用一种叫做“信号”的东西。信号是一种告诉进程刚刚发生了某事的方式。


你可以通过键盘上的特殊字符以及其他进程和软件来生成信号。
SIGINT信号
你将遇到的最常见的信号之一叫做 SIGINT,它代表“信号中断”。你可以通过 Ctrl + C 组合键将这个信号发送给一个正在运行的进程。
假设你启动了我们在讨论分区格式化时看过的 diskpart 工具。打开命令提示符,然后启动 diskpart。如果你决定不想实际格式化任何磁盘,你可以按住 Ctrl 键并同时按下 C 键,将 SIGINT 信号发送给 diskpart 进程。你会看到运行 diskpart 程序的窗口关闭,进程终止。

其他Windows信号
进程可以发送和接收一些其他的Windows信号。但与Linux不同,对于最终用户来说,没有简单的方法来发出任意的信号命令。

如果你想了解更多关于Windows信号的信息,请查看补充阅读材料中的信号参考链接。
总结
本节课中,我们一起学习了操作系统中的“信号”概念。我们了解到信号是系统与进程通信的一种方式,用于通知进程发生了特定事件。重点掌握了在Windows中如何使用 Ctrl + C(对应 SIGINT 信号)来中断一个命令行进程。虽然Windows不像Linux那样为用户提供丰富的信号操作命令,但理解这个基本机制对于管理程序执行流程非常重要。
182:Linux信号基础

在本节课中,我们将要学习Linux操作系统中的信号机制。信号是进程间通信的一种基本方式,用于通知进程系统中发生了某个事件。我们将了解信号的命名规则、如何发送信号以及一个常见信号的实际应用。
信号概述
在Linux中,我们可以向进程发送多种信号。这些信号是操作系统用来通知进程有特定事件发生的一种简单通信机制。
信号命名规则
这些信号的名称都以SIG开头。例如,我们之前讨论过的SIGINT信号,你可以使用它来中断一个进程。
SIGINT信号详解
SIGINT信号的默认操作是终止它正在中断的进程。在Linux中,你可以通过键盘组合键Ctrl+C来发送SIGINT信号。
实践演示
让我们通过一个实际操作来看看这个机制。我将像在Windows中那样,启动一个名为parted的程序。
我们可以看到现在已经进入了parted工具。接下来,我们尝试中断这个工具,使用Ctrl+C键盘组合键来中止这个进程。
现在,我们可以看到进程已经关闭,并且我们回到了命令行界面。我们成功地在进程执行中途中断并终止了它。
其他常见信号
Linux中使用了许多不同的信号,我们将在接下来的课程中讨论最常见的一些。
总结

本节课中我们一起学习了Linux信号的基础知识。我们了解了信号以SIG命名的规则,重点探讨了SIGINT信号的作用及其通过Ctrl+C发送的方式,并通过parted工具进行了实际操作演示。理解信号是掌握进程管理的重要一步。
183:Windows进程管理进阶 🖥️
在本节课中,我们将深入学习Windows操作系统中的进程管理。之前我们已经了解了进程的基本概念以及如何使用信号来操作它们。本节我们将重点介绍一个功能强大的工具——Process Explorer,它允许您执行重启、暂停等更高级的进程管理操作。
进程管理工具回顾
在之前的课程中,我们讨论了进程,并看到了使用信号操作进程的一些示例。本节我们将扩展进程管理的概念,探讨其他可用于操作进程的方法。
在Windows中,我们已经了解了诸如任务管理器、PowerShell命令Get-Process以及tasklist实用程序等工具。我们还学习了如何通过Ctrl+C向正在运行的进程发送信号。
然而,还有一个我们尚未讨论的进程管理工具,它允许您执行重启甚至暂停进程等操作。这个工具就是Process Explorer。
认识Process Explorer 🔧
Process Explorer是微软创建的一款实用程序,旨在让IT支持专家、系统管理员和其他用户查看正在运行的进程。
虽然它没有内置在Windows操作系统中,但您可以从微软网站下载它。下载链接已在本视频后的补充阅读材料中提供。
下载并启动Process Explorer后,您将在顶部窗格中看到当前活动进程的视图。在底部窗格中,您将看到所选进程正在使用的文件列表。
如果您需要找出哪些进程使用了某个特定文件,或者想深入了解某个进程的具体行为和运作方式,这个功能会非常方便。
使用Process Explorer搜索进程 🔍
在Process Explorer中,您可以轻松搜索进程,方法是按Ctrl+F或点击小望远镜按钮。
让我们搜索之前打开的记事本进程。您应该会看到C:\Windows\System32\notepad.exe被列为搜索结果之一。如果您看到名为notepad.mui的内容,无需担心。MUI代表多语言用户界面,它包含支持不同语言的功能包。
找到notepad.exe进程后,请注意它在用户界面中是如何嵌套在cmd.exe进程之下的。这表明它是cmd.exe的一个子进程。
管理进程选项 ⚙️
如果您右键单击notepad.exe进程,将会看到一个可用于管理该进程的不同选项列表。请注意以下几个选项:结束进程、结束进程树、重启和挂起。
- 结束进程:执行您预期的操作,即终止该进程。
- 结束进程树:功能更强大一些。它会终止该进程及其所有后代进程。因此,由其启动的任何子进程都将被停止。
- 重启:这是另一个有趣的选项。您可能从其名称就能猜到它的作用。它会先停止,然后再次启动该进程。


让我们对从cmd.exe启动的notepad.exe进程执行重启操作。有趣的是,重启后,记事本不再显示为cmd.exe的子进程。这是为什么呢?如果我们再次搜索notepad,可以看到它已作为procexp.exe进程的子进程重新启动。procexp.exe是Process Explorer的进程名称。这很合理,因为Process Explorer是在我们终止记事本后负责重新启动它的进程。
挂起与恢复进程 ⏸️▶️
那么挂起选项呢?与终止进程不同,您可以使用此选项挂起进程,并可能在以后某个时间继续运行它。
如果我们右键单击并选择挂起该进程,我们将在Process Explorer输出的CPU列中看到“已挂起”一词。当进程被挂起时,它不会消耗其处于活动状态时所消耗的资源。我们可以通过右键单击并选择恢复选项来重新启动它。
总结与展望 📚

本节课中,我们一起学习了如何使用Process Explorer这一高级工具来管理Windows进程,包括搜索、结束、重启、挂起和恢复进程等操作。
Process Explorer功能非常强大,在接下来的课程中,我们将了解它可以提供的一些监控信息。我们不会详细介绍其所有功能,因此如果您感到好奇,可以查看微软网站上的文档。我们已在补充阅读材料中为您提供了链接。
184:使用信号管理进程 🔧

在本节课中,我们将学习如何在Linux系统中使用信号来管理进程。我们将重点介绍如何终止、暂停和恢复进程,并理解不同信号对进程行为的影响。
概述
在Linux系统中,进程是运行中的程序实例。有时我们需要干预这些进程,例如终止一个无响应的程序或暂停一个任务以释放系统资源。这可以通过向进程发送特定的“信号”来实现。kill命令是发送这些信号的主要工具,尽管名字听起来有些严厉,但它是进程管理中的标准操作。
终止进程
首先,我们来学习如何终止一个进程。我们可以使用kill命令来完成这个操作。
kill命令在不带任何标志的情况下,会发送一个终止信号(SIGTERM)。这个信号会要求进程结束运行,但会给它一些时间来清理正在使用的资源。如果不给进程清理文件的机会,可能会导致文件损坏。
为了演示命令的效果,我们将保持一个进程监控窗口打开。

以下是终止进程的步骤:
- 使用
kill命令。 - 后面跟上你想要终止的进程的PID(进程ID)。
例如,让我们终止一个Firefox进程。执行命令后,在进程监控窗口中可以看到该进程已经不再运行。
强制终止进程
你可能会遇到的另一个信号是SIGKILL信号。这个信号会强制终止你的进程。
使用SIGTERM就像告诉你的进程:“你好,我现在不需要你继续运行了,请停止你手头的工作。”而使用SIGKILL则基本上是命令你的进程:“好了,是时候结束了。”SIGKILL信号会尽最大努力确保你的进程被绝对终止,并且不会给它清理的时间。

要发送SIGKILL信号,你可以在kill命令后添加 -9 或 -KILL 标志。


让我们再次打开Firefox,然后使用强制终止命令:kill -9 [PID]。现在你可以看到Firefox已经被强制终止了。
这两种是最常见的终止进程的方法,但需要强调的是,使用kill -9是终止进程的最后手段。由于它不进行任何清理,你可能会对文件造成损害。
暂停与恢复进程
假设你有一个不想终止的进程,但也许你只是想暂停它。你可以通过发送SIGTSTOP(终端停止)信号来实现,这会使你的进程进入挂起状态。
要发送这个信号,你可以使用kill命令并加上 -TSTOP 标志。
我们可以运行ps x命令来查看进程的状态。然后,我们暂停一个进程:kill -TSTOP [PID]。现在你可以看到,该进程的状态变成了“T”(已停止)。你也可以使用键盘组合键 Ctrl+Z 来发送SIGTSTOP信号。
要恢复进程的执行,你可以使用SIGCONT(继续)信号。让我们再次查看进程表,并对刚才暂停的进程使用恢复命令:kill -CONT [PID]。现在再看进程状态,它会从“T”变回“S”。
核心信号总结
SIGTERM、SIGKILL和SIGTSTOP是你在Linux中处理进程时会遇到的一些最常见信号。
现在你已经掌握了这些信号,接下来让我们学习如何利用它们来更好地管理系统硬件资源。

总结
本节课中,我们一起学习了Linux进程管理中的核心操作——使用信号控制进程。我们介绍了如何使用kill命令发送SIGTERM信号来正常终止进程,使用SIGKILL信号来强制终止进程,以及如何使用SIGTSTOP和SIGCONT信号来暂停和恢复进程。理解这些信号的区别和适用场景,对于安全有效地管理系统至关重要。记住,kill -9应作为最后的手段使用,优先考虑给进程预留清理资源的正常终止方式。
185:移动应用程序管理 🧑💻

在本节课中,我们将学习如何在iOS和Android等移动操作系统中管理正在运行的应用程序。与桌面系统不同,移动系统不直接显示进程列表,而是通过管理应用来间接控制系统资源。我们将了解前台与后台应用的区别,学习如何查看和关闭应用,并掌握诊断耗电或行为异常应用的基本方法。
移动应用与进程管理
在iOS和Android这类移动操作系统中,你无法直接看到一个正在运行的进程列表。取而代之的是,你需要管理在操作系统上运行的移动应用程序。当一个移动应用运行时,会有一个或多个进程与之关联,但这些细节由操作系统统一管理。
上一节我们介绍了移动应用管理的基本概念,本节中我们来看看如何管理正在运行的移动应用,并理解它们是如何使用移动设备资源的。
查看正在运行的应用
作为IT支持专家,你可能需要帮助终端用户排查移动设备运行缓慢的问题并管理他们的移动应用。我们将展示一些你可能看到的示例,但如果你的设备界面与示例不同,可能需要参考设备的官方文档。
首先,让我们通过打开应用切换器来检查设备上当前正在运行哪些应用。在iOS系统中,从应用切换器中,我可以看到此iPhone上正在运行的应用列表。
现在让我们在Android系统中进行同样的操作。很好,我启动的每一个应用都列在这里。我可以滚动浏览此列表,并通过点击切换到某个应用。现在我可以使用这个计算器了。
前台应用与后台应用
我们正在使用的应用被称为前台应用。所有其他应用都处于后台。
当我在计算这个兆字节包含多少比特时,你认为后台应用正在发生什么?细节可能有点复杂,但基本思想是这样的:操作系统会尽可能快地挂起后台移动应用。一个被挂起的应用是暂停的,但并未关闭。操作系统偶尔会唤醒一个后台应用,允许它做一些工作,但会尽可能多地让应用保持挂起状态。
让我们回到主屏幕。现在我位于主屏幕上,所有应用都处于后台,没有前台应用。计算器并没有被关闭。你打开的每个新应用都会被置于后台,并且通常会被挂起。这有助于设备节省电池电量。
诊断与关闭行为异常的应用
作为IT支持专家,一个非常实用的技巧是了解移动设备上哪些应用最耗电。如果一个应用因为持续在后台工作或卡住而无法被操作系统挂起,它可能会拖慢你的设备并消耗电池。IT支持专家经常需要找出这些行为异常的应用并关闭或卸载它们。
以下是关闭应用的方法:
- 在iOS应用切换器中,我们可以在任何后台应用上向上滑动。这将关闭该应用。
- 在此版本的Android系统中,我们也可以在这里滑动,并点击“全部清除”来一次性关闭所有应用。
你可以通过逐个关闭应用来排查行为异常的应用,观察是否有某个特定的应用导致设备变慢。有时,关闭一个行为异常的应用就足以让你的设备重新流畅运行。从当前正在使用的应用开始尝试,看看是否有帮助。应用切换器按照从最近使用到最久未使用的顺序显示应用。按时间顺序反向尝试,一次处理一个应用。
请记住,为了让设备正常工作,你不应该经常进行此操作。在当前版本的iOS和Android中,除非应用行为异常,否则你永远不必为了性能原因而关闭应用。实际上,关闭并重新打开一个应用可能比你让它继续运行更耗电。
检查应用电池使用情况
如果你发现某个应用经常行为异常,可以尝试像我们在之前的视频中看到的那样,通过清除其缓存来完全重置它。如果在关闭所有应用后设备仍然运行缓慢,接下来可以尝试简单地重启设备。如果重启设备不能解决性能问题,或者只是暂时修复,那么我们需要进行更深入的排查。
让我们检查已安装应用的电池使用情况。在iPhone上,我进入“设置”应用,然后是“电池”,接着是“电池健康”。在这里,我可以看到自上次充电以来电池的消耗速度。我还可以看到哪些应用最耗电。
让我们查看Android中的相同设置。同样,我进入“设置”应用,从这里选择“电池”,然后是“更多电池设置”或“电池使用情况”。从这里,我可以看到哪些应用最耗电。
如果我发现某个应用耗电量很大,那么它可能没有按预期工作,或者它本身就是一个需要大量电池才能工作的应用。你需要了解终端用户需要哪些应用,才能判断电池使用情况是否异常。

总结
本节课中我们一起学习了移动应用程序管理的基础知识。我们了解到移动操作系统通过管理应用而非直接管理进程来控制系统资源,区分了前台应用与后台应用的不同状态。我们掌握了查看、切换和关闭应用的方法,并学习了如何通过检查电池使用情况来诊断行为异常的应用。记住,在正常情况下无需频繁关闭应用,只有当应用出现卡顿、异常耗电等问题时,才需要进行针对性的管理和排查。
186:Windows资源监控 🖥️
在本节课中,我们将学习如何在Windows操作系统中监控系统资源,特别是进程的资源使用情况。我们将介绍图形界面工具和命令行工具,帮助你识别和管理可能影响系统性能的进程。
概述
上一节我们介绍了进程的基本概念及其管理方法。本节中,我们来看看如何在Windows系统中监控进程的资源使用情况。当进程行为异常或消耗过多资源时,这些监控技能在IT支持工作中将非常有用。
使用资源监控工具
Windows系统提供了有效的方法来监控进程并识别可能出现问题的进程。其中,资源监控工具是一种快速查看系统资源状态的常用方式。
你可以在多个位置找到此工具,我们将直接从开始菜单启动它。打开后,你会看到五个信息选项卡。第一个选项卡提供了系统所有资源的概览,其余每个选项卡则专门显示系统特定资源的信息。
资源监控器也会显示进程信息,以及进程所消耗资源的数据。
进程资源性能视图
你可以从进程资源管理器中获取性能信息,其展示的细节稍少一些。
只需选择你感兴趣的进程,右键点击并选择“属性”。然后,选择“性能图”选项卡。你可以看到当前CPU、内存(由“专用字节”指示)和磁盘活动(由I/O指示)的快速可视化图表。

命令行资源监控
那么,我们如何从命令行获取这些信息呢?
有多种方法可以从命令行获取此信息,但我们将重点介绍一种以PowerShell为中心的方法,即使用我们的朋友 Get-Process 命令。
我们知道,如果运行不带任何选项或标志的 Get-Process 命令,会获取系统上每个运行进程的信息。
如果你查看输出开头的列标题,会看到诸如 NPM(K) 的值。此列中的值表示进程正在使用的非分页内存量,K 代表单位千字节。你可以在接下来的补充阅读中查看微软文档,了解每列的完整说明。
这很有用,但信息量很大。将信息过滤到你只感兴趣的数据会非常有帮助。
假设你只想显示使用最多CPU的前三个进程,你可以编写以下命令:
Get-Process | Sort-Object CPU -Descending | Select-Object -First 3 -Property ID, ProcessName, CPU
就这样,我们得到了系统上消耗CPU最多的前三个进程。这个命令可能有点难以理解,所以让我们逐步分析。
首先,我们调用 Get-Process cmdlet 从操作系统获取所有进程信息。
然后,我们使用管道将那个命令的输出连接到 Sort-Object 命令。
你可能还记得之前在Linux示例中提到的管道。
我们按CPU列降序排序 Get-Process 的输出,将最大的数字放在前面。
然后,我们将该信息通过管道传递给 Select-Object 命令。
使用 Select-Object,我们从排序后的输出中选取前三行,并仅选择属性ID、进程名和CPU使用量来显示。
过渡到Linux监控
现在你已经了解了Windows提供的用于调查资源使用的命令行和图形工具的一些知识,接下来让我们看看Linux的资源监控。

总结
本节课中,我们一起学习了在Windows系统中监控进程资源使用情况的方法。我们介绍了如何使用图形化的资源监控工具和进程资源管理器查看性能图表,并重点讲解了如何在PowerShell中使用 Get-Process 命令结合管道、排序和筛选来获取特定的进程资源信息。这些技能对于诊断系统性能问题和进行有效的IT支持至关重要。
187:资源监控 🖥️

在本节课中,我们将学习如何在Linux系统中监控硬件资源的使用情况。掌握这些工具对于诊断系统性能问题至关重要。
实时进程监控:top命令
上一节我们介绍了进程的基本概念,本节中我们来看看如何实时监控它们。一个用于实时查看系统资源利用情况的实用命令是 top 命令。
top 命令向我们展示了占用机器最多资源的顶级进程。它还能快速显示运行或空闲的总任务数、CPU使用率、内存使用率等信息。
使用 top 命令时,最常查看的位置之一是这些字段:%CPU 和 %MEM。它们显示了单个任务所占用的CPU和内存使用率。
要退出 top 命令,只需按 Q 键(代表退出)。
诊断性能问题
您可能遇到的一个常见情况是用户的计算机运行有点慢。这可能有多种原因,但最常见的原因之一是硬件资源的过度使用。
如果您发现 top 命令显示某个任务占用了大量内存或CPU,您应该调查该进程正在做什么。您甚至可能终止该进程,以便它释放正在使用的资源。
系统运行时间与负载:uptime命令
另一个用于查看资源利用情况的实用工具是 uptime 命令。此命令显示有关当前时间、系统已运行时长、有多少用户登录以及机器的平均负载的信息。
从这里我们可以看到当前时间是16:43(或4:43 PM)。我们的系统已运行了5小时8分钟,并且有1个用户登录。我们想重点讨论的部分是系统平均负载。它显示了1分钟、5分钟和15分钟间隔内的平均CPU负载。
平均负载是一个有趣的度量指标。当您需要查看机器在特定时间段内的表现时,它们会变得非常有用。我们不会在此深入探讨平均负载,但您应该在下一篇补充阅读材料中了解它们。
追踪文件使用情况:lsof命令
另一个可用于帮助管理进程的命令是 lsof 命令。假设您有一个USB驱动器连接到您的机器。您正在处理机器上的一些文件。然后当您尝试弹出USB驱动器时,您收到一个错误,提示“设备或资源忙”。您已经检查过USB驱动器上的所有文件都没有在使用或在任何地方打开。

或者您认为是这样。使用 lsof 命令,您就不必猜测了;它会列出打开的文件以及哪些进程正在使用它们。这个命令非常适合追踪那些占用着文件的棘手进程。
硬件监控的扩展应用
关于硬件利用率,最后要指出的一点是,您可以独立于进程来监控它。如果您只想查看CPU或内存的运行情况,可以使用各种命令来检查它们的输出。
在单台机器上查看这一点可能不是立即可见其用处,但也许在未来,如果您管理一批机器,您可能会考虑一次性监控所有机器的硬件利用率。我们不会讨论如何做到这一点,但您可以在补充阅读材料中了解更多信息。
总结
您在本模块中完成了一些非常出色的工作。您学到了很多关于如何读取进程信息和管理进程的知识。这对于您作为IT支持专家在排除故障时至关重要。
接下来的评估将测试您新掌握的进程管理知识。然后,请做好准备,我们将进入本课程的最后一课。我们将介绍IT支持专家角色中使用的一些基本工具。😊
188:介绍


概述
在本模块中,我们将完成操作系统课程的学习。我们将回顾已掌握的关键技能,并介绍一些在IT支持工作中会频繁使用的、更实用的操作系统知识。
你已经成功抵达本课程的最后一个模块。到目前为止,你表现非常出色。你已经学会了如何操作Windows和Linux操作系统,如何设置和管理用户,以及如何管理软件。你还学习了如何处理磁盘和文件系统,以及如何管理进程和硬件资源。这些都是非常重要的工作成果。
你在本课程中学到的技能,对于构建作为IT支持专家的坚实技术基础至关重要。
现在,让我们以强劲的势头完成最后的学习。在接下来的几节课中,我们将通过介绍一些在IT支持中会经常用到的、更实用的操作系统知识来结束本课程。
让我们开始吧。
总结
本节课我们一起回顾了本课程已涵盖的核心技能,包括操作系统导航、用户与软件管理、磁盘文件系统以及进程与硬件资源管理。这些是IT支持工作的基础。接下来,我们将进入更实用的操作环节,为实际工作做好准备。
189:远程连接与SSH 🔗

在本节课中,我们将学习一个重要的计算概念——远程连接。这个概念能让IT支持工作变得更加便捷,实际上,它几乎能让所有人的工作都轻松不少。
想象一下这个场景:你正在去参加一个重要会议的路上,为这次演示准备了一整周,现在你准备好向高层展示你的成果了。但是等等,演示文稿在哪里?它不在你的笔记本电脑上,那会在哪里?结果是你把唯一的副本忘在家里的台式机上了。现在掉头回去拿已经太晚了,所以你只能坐在那里,等待着不可避免的尴尬时刻。
但是等一下,你突然想起来,你的笔记本电脑和台式机之间设置了远程连接。你利用这个连接登录到家中的电脑。就像你正坐在家里一样,你能够从台式机上获取文件,并将其复制到笔记本电脑上。然后,你成功地完成了一场精彩的演示。
再考虑另一个场景:你在商店买了一台电脑,但它出现了很多问题。商店有一个电脑服务台可以帮你解决问题,但现在已经下班,商店关门了。你急需解决电脑问题,那么你有什么选择?幸运的是,商店提供24/7的在线技术支持。现在,你无需等到实体店再次开门,就可以联系到在线技术人员,让他们通过远程连接帮助你解决问题。
远程连接让IT支持角色的工作变得容易得多,因为它允许我们从世界任何地方管理多台机器。
什么是SSH?🔐
上一节我们介绍了远程连接的概念,本节中我们来看看实现安全远程连接的核心协议——SSH。
SSH,即安全外壳协议,是一种由其他程序实现的协议,用于安全地从一台计算机访问另一台计算机。要使用SSH,你需要在发起连接的计算机上安装SSH客户端,并在你试图连接的目标计算机上安装SSH服务器。

需要记住的是,当我们说SSH服务器时,并不是指另一台提供数据的物理机器。SSH服务器只是一个软件。在远程机器上,SSH服务器以后台进程的形式运行。它会持续检查是否有客户端试图连接,然后对连接请求进行身份验证。
在Linux系统中,最流行的SSH程序是OpenSSH。我们稍后会讨论如何使用流行的开源程序PuTTY在Windows机器上使用SSH。现在,我们先谈谈使用SSH时会发生什么。
如何使用SSH登录?💻
我们将向你展示一个通过SSH登录远程机器的示例。首先,要登录远程机器,我们必须在该计算机上拥有一个账户。我们还需要知道该计算机的主机名或IP地址。

让我们来测试一下。以下是连接命令的基本格式:
ssh username@hostname_or_ip_address
例如,输入 ssh cindy@192.168.1.100。
你可能会看到这样一条消息:“无法建立主机的真实性...”。这条消息只是说我们以前从未连接过这台机器,我们的SSH客户端无法真正验证我们是否连接到了想要连接的目标机器。但我们可以验证这是正确的机器,所以直接输入 yes 继续即可。

现在,这台主机将被保存为“已知主机”,这样我们下次尝试登录时就不会再看到这条消息了。
SSH连接后的操作与身份验证 🔑
好了,现在我们通过SSH连接上了。我们输入的任何文本命令都会被安全地发送到SSH服务器。从这里开始,你甚至可以启动一个应用程序,让你看到图形用户界面,而不仅仅是直接在命令行中工作。你可以在补充阅读材料中了解更多相关信息。
正如之前所见,我们可以使用密码连接SSH。这种对远程机器进行身份验证的方式相当标准,但并不是超级安全。另一种方式是使用SSH认证密钥。
SSH密钥成对出现,称为私钥和公钥。你可以把它们想象成打开一个特殊保险箱的实际物理钥匙。你可以用一把钥匙锁上保险箱,但它打不开保险箱。另一把钥匙只能打开保险箱,但不能锁上它。这基本上就是公钥和私钥的工作原理:你可以用公钥锁住某些东西,但只能用私钥打开它,反之亦然。这确保了保险箱里的东西只有同时拥有公钥和私钥的人才能访问。
你将在我们的IT安全课程中学习公钥和私钥的技术细节。如果现在不理解也不用担心,以后会明白的。这就是SSH的基本工作原理,并不太可怕,对吧?
另一种安全连接方式:VPN 🌐
另一种可以安全连接到远程机器的方式是通过VPN。VPN是虚拟专用网络的缩写。它允许你通过互联网连接到专用网络,比如你的工作网络。

可以把它看作是一个更复杂、设置更多的SSH。它允许你访问共享文件服务器和网络设备等资源,就像你连接到了工作网络一样。剧透一下:我们同样会在IT安全课程中探讨VPN背后的技术细节。
总结 📝
本节课中我们一起学习了远程连接及其工作原理。我们探讨了SSH协议如何实现安全登录,以及公钥/私钥对的基本概念。我们还简要介绍了VPN作为另一种远程访问方式。在系统管理课程中,我们将进一步讨论Windows和Linux上流行的远程连接程序以及如何设置它们。
190:Windows上的远程连接 🔗
在本节课中,我们将学习如何在Windows计算机上建立远程连接。远程连接功能允许您从一台计算机访问和控制另一台计算机,这对于故障排除、文件管理或远程工作至关重要。我们将介绍两种主要工具:PuTTY(用于SSH连接)和远程桌面协议(RDP)。

远程连接工具概述
上一节我们介绍了远程连接的基本概念,本节中我们来看看在Windows系统上实现远程连接的具体工具。PuTTY是一个广泛使用的免费开源软件。
使用PuTTY进行SSH连接
PuTTY可用于通过多种网络协议建立远程连接,其中包括SSH(安全外壳协议)。您可以通过其官网下载完整的软件包(包含Microsoft安装程序,即MSI文件),或选择特定的可执行文件(如 putty.exe)来获取所需功能。
以下是启动和使用PuTTY图形界面(GUI)的基本步骤:

- 启动PuTTY后,会出现一个窗口,显示连接的基本选项。
- 注意主机名、端口和连接类型选项。默认端口为
22,这是SSH协议的默认端口;连接类型默认设置为SSH。 - 输入您想要连接的目标计算机的主机名或IP地址。
- 点击“打开”以启动新的SSH会话。
此时,您已通过SSH连接到远程计算机。

在命令行中使用PuTTY
除了图形界面,您也可以在命令行中使用PuTTY。以下是具体方法:
打开PowerShell提示符,输入应用程序名称 putty,并通过添加 -ssh 选项指定通过SSH连接。您还可以以 user@IP地址 的形式提供用户名和地址,并在末尾指定端口。

完整的命令格式如下:
putty -ssh user@192.168.1.100 -P 22
此外,PuTTY安装后会在命令行中内置一个名为Plink(或PuTTY Link)的工具。您同样可以使用Plink来建立远程SSH连接。
使用远程桌面协议(RDP)
SSH非常有用,特别是当您需要从Windows计算机连接到远程基于Linux的操作系统时。对于连接到其他Windows计算机,微软提供了另一种方式:远程桌面协议(RDP)。Linux和macOS也有相应的RDP客户端。
RDP为用户提供了远程计算机的图形用户界面,前提是远程计算机已启用传入的RDP连接。一个名为Microsoft终端服务客户端(mstsc.exe)的程序用于创建到远程计算机的RDP连接。
您可以通过以下步骤在计算机上启用远程连接:
- 打开“开始”菜单,右键点击“此电脑”,然后选择“属性”。
- 选择“远程设置”。
- 在面板的“远程桌面”部分选择一个选项。
允许他人远程连接到您的计算机会带来一些安全隐患,您应该只允许受信任的用户进行此操作。通常在商业环境中,此类设置由系统管理员为公司内连接到网络的计算机统一配置。
在远程计算机上允许连接并将您添加到允许访问的用户列表后,您就可以使用远程桌面客户端 mstsc 从网络上的任何其他位置连接到它。
您可以通过几种方式启动RDP客户端:
- 在“运行”框中键入
MSTSC。 - 在“开始”菜单中搜索“远程桌面连接”。
启动客户端后,它会要求输入您要连接的计算机的名称或IP地址。Windows RDP客户端也可以从命令行启动,您可以在其中指定更多参数,例如如果您想使用管理员凭据连接到远程计算机,可以添加 /admin 参数。
总结

本节课中我们一起学习了在Windows系统上建立远程连接的两种主要方法。我们首先介绍了使用PuTTY通过SSH协议进行命令行远程连接,包括其图形界面和命令行的使用方法。接着,我们探讨了用于Windows计算机间图形化远程控制的远程桌面协议(RDP),涵盖了如何启用RDP服务以及如何使用客户端进行连接。掌握这些工具将极大地帮助您进行远程系统管理和技术支持。
191:远程连接与文件传输
在本节课中,我们将学习一种通过网络远程连接来安全传输文件的方法。这种方法对于在不同计算机之间共享文件非常有用。
概述
你是否曾尝试向同事发送文件?你使用什么方法?是通过电子邮件附件发送,还是将文件复制到U盘再进行传输?文件传输的方式有很多种。本节我们将讨论一种利用远程连接进行传输的方法。
使用SCP进行安全文件复制

上一节我们介绍了远程连接的基本概念,本节中我们来看看如何利用这种连接进行文件传输。
SCP,即安全复制,是Linux系统中一个用于在网络上的计算机之间复制文件的命令。它利用SSH协议来传输数据。正如你可以通过SSH连接到一台机器一样,你也可以通过这种方式发送文件。
让我们通过一个例子来看看它的实际应用。假设我们想将文件从自己的计算机复制到另一台计算机上。
以下是执行此操作的基本命令格式:
scp [本地文件路径] [用户名]@[主机名]:[远程目标路径]
具体操作步骤如下:
- 打开终端或命令行界面。
- 输入SCP命令,指定要传输的本地文件路径、目标计算机的用户账户、主机名以及远程计算机上的目标路径。
- 命令执行后,系统会提示你输入目标计算机的登录密码。
- 输入正确的密码后,文件传输便会开始。
传输完成后,你可以登录到目标计算机验证文件是否已成功复制过去。

SCP命令是在网络中的计算机之间复制文件的超级实用工具。如果你需要了解更多关于该命令的详细信息,可以通过查看其手册页来获取:
man scp
总结
本节课中,我们一起学习了如何使用SCP命令通过网络进行安全的远程文件传输。我们了解了其基本命令格式和操作步骤,认识到它是基于SSH协议工作的,是系统管理员和IT支持人员工具箱中的一个重要工具。
192:Windows上的远程连接与文件传输

在本节课中,我们将学习如何在Windows计算机上通过网络共享文件和数据。我们将介绍两种主要方法:使用PuTTY工具进行安全的命令行文件传输,以及利用Windows内置的共享文件夹功能。
使用PuTTY的PSCP工具传输文件
上一节我们介绍了远程连接的基础知识,本节中我们来看看如何在Windows和Linux系统之间传输文件。PuTTY程序支持SCP协议,其软件包中包含一个名为PuTTY安全复制客户端(PSCP)的工具。
你可以使用PSCP以与Linux scp命令非常相似的方式来复制文件。让我们来看一个例子。
命令格式:
pscp.exe [源文件路径] [用户名]@[远程主机地址]:[目标路径]


例如,从Windows桌面复制一个文件到Linux工作站:
pscp.exe C:\Users\用户名\Desktop\myfile.txt user@192.168.1.100:/home/user/
执行后,你可以在Linux工作站上验证文件是否已成功复制。
使用PuTTY或SCP传输文件有时可能比较耗时,特别是当你需要向多台机器传输文件时。作为一种替代方案,Windows提供了一种内置的文件共享机制。
使用Windows共享文件夹
Windows内置的共享文件夹功能,其作用正如其名:你告诉Windows你想要共享一个文件夹给特定的人或组,然后将文件放入其中。被你共享了该文件夹的任何人都可以访问这些文件。
在Windows中共享文件夹非常简单。以下是操作步骤:
以下是具体步骤:
- 右键单击你想要共享的文件夹。
- 将鼠标悬停在“授予访问权限”或“共享”选项上。
- 选择“特定用户”。
- 在弹出的窗口中,添加你想要共享文件夹的单个用户或组。
- 点击“共享”完成设置。
这里甚至有一个选项可以将“Everyone”(所有人)添加到共享权限中,这可能很方便,但安全性不高。
一旦你共享了文件夹,就可以从其他计算机访问它。以下是访问方法:
以下是两种访问共享文件夹的方法:
- 映射网络驱动器:打开“此电脑”,进入“计算机”选项卡,使用“映射网络驱动器”选项将文件夹直接映射到你的计算机。
- 直接访问:在另一台计算机的“运行”框中(按
Win + R),输入\\[计算机名]\[共享文件夹名]即可直接访问。
使用命令行共享文件夹
你可能会有兴趣知道,你也可以使用命令行来共享文件夹,这通过 net share 命令实现。

net share 命令可以完成与图形界面共享工作流相同的操作,你需要指定希望授予哪些用户何种权限。
假设你想授予网络上所有人对一个名为“ShareMe”的文件夹的完全控制权限。你可以在具有管理员权限的PowerShell提示符中执行以下命令:
命令示例:
net share ShareMe=C:\Path\To\ShareMe /GRANT:Everyone,FULL
用户可以使用我们之前讨论过的相同方法来访问这个共享文件夹。
net share 命令也可以在没有任何参数的情况下执行,以列出计算机上当前共享的文件夹。

列出共享文件夹:
net share
如果你想了解更多关于 net share 命令及其功能的信息,请查阅补充阅读材料中的文档。

本节课中我们一起学习了在Windows环境下进行网络文件传输的两种核心方法。我们首先介绍了如何使用PuTTY套件中的PSCP工具在Windows和Linux系统之间进行安全的命令行文件复制。接着,我们探讨了Windows内置的共享文件夹功能,包括如何通过图形界面和 net share 命令来设置和管理文件夹共享,以及如何从网络上的其他计算机访问这些共享资源。掌握这些技能对于IT支持人员高效管理跨平台文件交换至关重要。
193:虚拟机管理教程 🖥️
在本节课中,我们将学习如何安装、管理和移除虚拟机实例。虚拟机是一种在物理计算机上模拟出的独立操作系统环境,它允许我们在同一台机器上运行多个不同的操作系统。

概述
之前我们已经简单讨论过虚拟机。在快速评估中,我们也一直在使用虚拟机。本节课程将指导你完成虚拟机实例的安装、管理和移除过程。我们将使用流行的开源虚拟化软件VirtualBox来管理虚拟机实例。

安装虚拟机实例
首先,我们来看看如何安装一个虚拟机实例。我已经从Ubuntu官网预先下载了一个系统镜像并保存在桌面上,但我需要安装它。
以下是安装步骤:
- 点击VirtualBox主界面的“新建”按钮来创建一个新的虚拟机。
- 为虚拟机命名,并选择操作系统的类型和版本。我将保持默认设置。
- 系统会询问要为该虚拟机分配多少内存。1GB对我来说足够了,所以我将保持这个设置并继续。
- 接下来,系统询问要为虚拟机分配多少硬盘空间。我将保持默认的10GB并点击“创建”。
- 我们将保持其他选项的默认值,直接完成创建。
现在,在我的虚拟机列表中,我可以点击“启动”来运行它。系统会提示我选择一个启动介质,这类似于从装有操作系统镜像的U盘启动。我只需选择之前下载的镜像文件,安装过程就会开始。
管理虚拟机资源
上一节我们介绍了如何安装虚拟机,本节中我们来看看如何管理它的资源。如果我们决定为操作系统分配超过1GB的内存,在物理机上我们需要购买并安装更多内存条。但由于我们使用的是虚拟机,修改设置非常简单。
要修改分配给虚拟机的硬件资源,我们只需右键点击虚拟机,然后选择“设置”。在这里,我们可以更改内存分配以及其他设置。虽然我们不会详细讨论每个设置的具体含义,但你可以看到修改虚拟机实例是多么简单。
移除虚拟机实例
最后,如果我们决定不再使用这个虚拟机了怎么办?如果这是一台物理机器,我们需要考虑如何存放或回收硬件。但对于虚拟机,我们只需要右键点击并选择“移除”。
这时,系统会询问我们是希望删除所有文件(包括虚拟机安装本身),还是仅将其从虚拟机列表中移除。让我们选择删除所有文件。这样,虚拟机就被彻底移除了。

总结
本节课中,我们一起学习了虚拟机管理的基础操作。我们使用VirtualBox软件,完成了从创建、配置到删除一个Ubuntu虚拟机实例的全过程。你学会了如何为虚拟机分配资源,以及如何轻松地移除不再需要的实例。如果你想深入了解VirtualBox或其他虚拟化软件的使用,请务必查阅补充阅读材料。
194:系统监控

在本节课中,我们将要学习系统监控的核心概念——日志。日志是计算机系统记录事件的“日记”,是IT支持人员进行故障排查时不可或缺的信息来源。我们将了解日志是什么、包含什么内容,以及如何在Windows和Linux操作系统中找到并解读它们。
什么是日志?📝
还记得我们课程第一单元《技术支持基础》中介绍过的日志概念吗?日志就像是计算机的日记,它记录了系统中发生的各种事件。
那么,日志会记录什么样的事件呢?几乎是一切事件。例如,系统何时关机、何时启动、何时加载了驱动程序、何时有用户登录,所有这些事件都可以被写入日志。

日志的详细程度
日志的记载非常详细。它会告诉你事件发生的精确时间、事件的触发者以及其他更多信息。在接下来的课程中,我们将查看一些日志片段示例,以便更好地理解如何阅读日志。
创建日志事件的行为被称为“日志记录”。你的系统在默认配置下就能很好地完成事件日志记录工作。
日志记录服务

在大多数系统中,都有一个服务在后台运行,持续地将事件写入日志。这些系统是可定制的,因此你可以记录任何你想要的特定字段,但默认情况下,它会记录所有必要信息。
在本节课结束时,你将学会在Windows和Linux操作系统中,所有重要日志的存放位置。你还将学会如何阅读日志,以及在处理日志时常用的故障排查方法。
日志在IT支持中的重要性
当你从事IT支持工作时,需要收集尽可能多的数据来排查问题。日志能告诉我们许多重要信息,例如发生的错误、所做的更改等等。它们是可靠的信息来源。
本节课总结
本节课中,我们一起学习了系统监控的基础——日志。我们了解到日志是系统事件的详细记录,对于故障排查至关重要。我们探讨了日志的内容、记录方式,并预告了后续将学习如何在Windows和Linux系统中定位和解读日志。掌握日志分析是IT支持人员的一项核心技能。
195:Windows事件查看器 🖥️

在本节课中,我们将学习Windows操作系统中的一个重要工具——事件查看器。事件查看器记录了计算机上发生的各种事件,类似于我们记录生活事件的日记。无论是排查游戏崩溃、登录问题,还是单纯想了解系统运行状况,事件查看器都是一个极佳的起点。
启动事件查看器
你可以通过两种方式启动事件查看器:
- 从“开始”菜单中搜索并打开。
- 在“运行”对话框中输入
eventvwr.msc并回车。


理解界面布局
启动后,事件查看器默认显示近期重要事件的摘要。但通常我们更关心具体的问题,因此让我们关注左侧窗格中的事件分组。
自定义视图
事件查看器会记录大量系统信息,有时难以从海量数据中快速找到关键信号。自定义视图功能可以解决这个问题。
以下是创建自定义视图的步骤:
- 在左侧窗格中点击“自定义视图”。
- 在右侧“操作”窗格中点击“创建自定义视图”。
- 在弹出的“筛选器”选项卡中,勾选“错误”和“严重”级别。
- 将“记录时间”下拉菜单改为“最近1小时”。
- 在“事件日志”中,仅选择“Windows日志”。
- 点击“确定”,并为新视图命名。
- 再次点击“确定”。
完成后,你将在“自定义视图”下看到一个新条目,其中仅显示符合你筛选条件的事件。
主要日志类别
在左侧导航窗格中,你还会看到另外两个主要日志类别:Windows日志和应用程序和服务日志。
Windows日志
Windows日志类别包含通常应用于整个操作系统的事件日志。例如:
- 系统日志:是排查驱动程序启动失败等问题的好起点。
- 安全日志:可用于调查谁访问过计算机。
应用程序和服务日志
此类别包含跟踪单个应用程序或操作系统组件事件的日志,而非Windows日志那样的系统范围事件。例如,如果你遇到PowerShell问题,查看“应用程序和服务日志”下的PowerShell日志将是很好的第一步。
解读事件详情
无论属于哪个类别,事件查看器中给定日志的每一行都代表一个事件。每个事件都包含按列分组的信息,例如:
- 级别:表示事件的严重程度,从低到高依次为:信息、警告、错误、严重。
- 日期和时间:事件发生的具体时间。
选择某个事件后,你可以在事件查看器底部窗格中看到更详细的信息。这些信息有助于深入排查问题,甚至为提交错误报告提供上下文。


总结与建议
本节课中,我们一起学习了Windows事件查看器。它是IT支持专家的一个超级有用的工具,能提供关于系统上任何软件或硬件可能遇到的问题的详细数据。
不过,其中信息量巨大,因此请善用其自定义视图和筛选功能。更重要的是,不要犹豫,多动手探索这个工具,熟悉其界面。你会在其中找到乐趣并学到很多。
接下来,我们将进入Linux日志的奇妙世界。
196:日志文件基础

在本节课中,我们将要学习Linux系统中日志文件的基础知识。日志是记录系统事件的重要工具,对于故障排查和系统监控至关重要。
日志文件的位置与作用
上一节我们介绍了系统目录结构,本节中我们来看看日志文件的具体位置和作用。
Linux系统的日志文件存储在 /var/log 目录中。/var 目录代表“变量”,意味着该目录存放的是经常变化的文件。日志文件的内容正是持续更新的。
使用 ls 命令查看 /var/log 目录时,可能会看到许多文件,这看起来有些令人望而生畏。但不必担心,每个日志文件都根据其文件名存储特定的信息。
以下是您会经常查看的一些常见日志文件:
/var/log/auth.log:授权和安全相关的事件记录在此。/var/log/kern.log:内核消息记录在此。/var/log/dmesg:系统启动消息记录在此。如果您在启动时遇到问题,这是查找信息的好地方。
综合日志与日志管理
逐一打开每个日志文件来查找事件信息可能会有些繁琐。幸运的是,系统也存在一些综合了其他日志文件信息的日志文件。其缺点是这些文件通常非常庞大。
如果您对问题可能出在哪里有比较清晰的判断,那么选择更小、更具体的日志文件可能更合适。
在您的系统上,几乎记录所有事件的日志文件是 /var/log/syslog。默认情况下,syslog 唯一不记录的是身份验证事件。在排查用户机器问题时,/var/log/syslog 通常包含关于您系统最全面的信息,因此这应该是您的首选。
日志轮转与集中式日志
日志文件会输出大量事件,因此它们会占用机器上大量的存储空间。我们通常只想查看系统上的最新事件,而不需要让所有这些信息塞满我们的磁盘。
幸运的是,我们的系统也擅长清理日志文件,以便为新日志腾出空间。它们使用一种称为“日志轮转”的机制来实现这一点。在Linux中,用于轮转日志的实用程序叫做 logrotate。
您可能需要调查一个月前发生的事件,因此您可以更改日志轮转设置,以确保不会删除那么久远的事件。我们不会详细讨论如何操作日志轮转,但您可以在补充阅读材料中了解更多信息。
我们一直在单台机器的背景下讨论日志记录。但如果您发现自己需要管理许多系统,并希望能在单一中心位置解析它们的日志,您可以使用一种称为“集中式日志记录”的方法。我们不会讨论具体如何实现,但如果您有兴趣设置集中式日志服务器,请查看下一份补充阅读材料。
解析日志条目格式

好了,关于日志是什么已经说得够多了,现在让我们实际查看一些真实的日志条目。
这看起来可能非常复杂,但别担心,我们不需要阅读全部内容。下一课将教您如何使用日志进行故障排除。现在,我们只解析 syslog 中的一行内容,看看它说了什么。
日志条目的第一个字段是事件发生的时间戳,这很直观。但根据日志的不同,您可能会看到不熟悉的时间格式,例如一长串数字,如 1501538594。
以这种格式出现的时间戳被称为 Unix时间 或 纪元时间。起初,您可能会对此感到困惑。为什么要用这种方式表示时间?Unix纪元到底是什么?
Unix纪元时间 用于表示时间。它是自 1970年1月1日午夜(UTC) 以来经过的秒数。这个日期被选为Unix系统计算机锚定其时间概念的“零时”。这意味着 1501538594 这个数字代表的是 2017年7月31日,星期一,太平洋标准时间。
为什么是1970年1月1日午夜?这个日期是Unix的生日,还是标志着其他重大事件?实际答案要简单得多。贝尔实验室的Unix原始工程师选择它只是因为方便。所以,如果您看到这样的时间戳,不必感到意外。
时间戳之后的下一个字段是事件发生所在机器的主机名。
接下来是日志事件所指的服务或进程。
最后是发生的事件描述本身。
总结
本节课中我们一起学习了Linux日志系统的基础知识。我们了解了日志文件存储在 /var/log 目录,认识了 auth.log、kern.log、dmesg 和 syslog 等关键日志文件及其作用。我们还探讨了日志轮转机制如何管理日志文件大小,并简要提及了集中式日志记录的概念。最后,我们学习了如何解析日志条目的基本结构,包括时间戳、主机名、服务名和事件描述,特别是理解了Unix纪元时间的含义。下一课,我们将学习如何运用这些日志进行实际的故障排查。
197:日志工作 🔍

在本节课中,我们将学习如何利用系统日志来调查计算机问题。日志是记录系统活动和事件的文件,通过分析日志,我们可以快速定位并解决各种故障。
概述 📋
上一节我们介绍了日志的基本概念和重要性。本节中,我们来看看如何实际运用日志信息来排查系统问题。
场景引入 💻
假设你在IT支持岗位工作。一位用户报告说,他的电脑一直保持开机状态,但最近醒来时发现电脑已自动关机。你应该怎么做?
你可以选择整夜不眠,紧盯电脑,甚至不敢去洗手间或眨眼,等待电脑再次关机。或者,在一个理智且正常的世界里,你决定直接查看系统日志。我们选择后者。
那么,从哪里开始呢?
日志分析技巧 🛠️
起初,日志可能看起来非常混乱和令人生畏。我们将讨论查看日志的技巧,但请放心,你永远不需要逐行阅读日志。
以下是分析日志时可以使用的几种方法:
1. 进行特定搜索
查看日志时,首先要做的是搜索特定内容。但如果你发现某个应用程序出现问题,却不知道从哪里开始查找呢?
幸运的是,我们的系统以相当标准的方式记录信息。如果一个应用程序出现大量错误,你认为可以搜索什么?没错,就是“error”这个词。如果你发现特定应用程序有问题,你认为还可以搜索什么?如果你猜是应用程序名称,那就对了。
通过这种方式,你已经能够过滤日志,查找你可能遇到的特定问题。
让我们看看实际操作。这里我们可以看到包含“error”一词的日志结果。
2. 按时间戳调查
如果需要调查在特定时间发生的问题,你可以通过检查该时间前后的时间戳来实现。通过这种方式,你可能会找到导致问题的根源,或者至少更接近问题的本质。
3. 从顶部或底部开始查看
当你最终找到可能有助于发现问题的重要日志部分时,通常希望从顶部或底部开始查看输出。
假设你看到很多错误。这些错误中的每一个都可能是由根本问题引起的。如果你解决了根本问题,就能修复连锁错误。看看这个例子:
日志中充满了错误,但如果我们向上滚动,可以看到引发所有其他错误的那个错误。如果我们修复它,那么其他问题很可能也会得到解决。
另一方面,如果你在日志中没有看到任何问题迹象,你可能希望从底部开始工作,直到找到线索。你的系统可能运行正常,但当你向下滚动阅读输出时,会看到一个可能与你的问题相关的日志条目。
4. 实时检查日志

你可以使用的另一种故障排除策略是实时检查日志。假设每次启动特定应用程序时,它都会突然执行某些操作并关闭。当然,你可以在事后检查日志并跟踪时间,或者你可以实时查看日志。
为此,我们可以使用在早期课程中学到的一个命令。让我们看看这意味着什么。我们将使用 tail -f 命令跟踪系统日志文件,并将其保持在打开的窗口中。然后,我们将关闭蓝牙以显示它正在记录的事件。
现在,我们可以实时看到蓝牙记录的数据。看,我们已经完成了一个完整的循环。我告诉过你,这些命令会派上用场。
总结 📝
本节课中,我们一起学习了如何利用日志进行故障排除。使用这些简单的日志策略将帮助你在整个IT支持专家的职业生涯中解决问题。日志将是你面对没有明显线索的问题机器时最好的朋友之一。与日志对话,倾听那甜美日志声音告诉你的信息,你将很快发现问题所在。
198:映像软件 📀


在本节课中,我们将学习如何为多台计算机高效部署操作系统。我们将了解映像软件的概念及其在IT支持工作中的重要性。
上一节我们学习了如何为自己安装操作系统。但在IT支持岗位上,你需要为其他人安装操作系统。
使用单个U盘安装操作系统,就像我们在本课程早期所做的那样,会非常耗时,尤其是在需要为多台机器操作时。幸运的是,在IT领域,我们使用出色的工具来简化工作。
请记住,映像一台机器意味着用另一台机器的映像来格式化该机器。这包括从操作系统到设置的所有内容。
在本节中,我们将简要介绍一些可用于为机器创建映像并帮助更轻松地部署操作系统的选项。
以下是几种常见的映像部署方法:
- 网络引导(PXE):计算机通过网络启动并从服务器加载操作系统映像。
- 磁盘克隆:使用专用软件(如Clonezilla)将一台计算机的整个硬盘驱动器复制到另一台计算机。
- 系统准备工具(Sysprep):在创建映像之前,从Windows系统中删除特定于计算机的信息(如SID),以便将其部署到多台计算机。
- 配置管理工具:使用如Ansible、Puppet或Chef等工具,通过代码自动配置操作系统和应用程序。
这些工具和方法的核心目的是实现自动化,其基本工作流程可以概括为:
准备主镜像 -> 捕获镜像 -> 通过网络或存储介质部署到目标计算机
本节课中我们一起学习了映像软件的基本概念及其在批量部署操作系统时的优势。通过使用网络引导、磁盘克隆和配置管理等工具,IT支持专业人员可以显著提高工作效率,避免重复性的手动安装工作。
199:操作系统部署方法 🖥️
在本节课中,我们将要学习两种主要的操作系统部署方法:磁盘克隆和网络部署。我们将了解它们的工作原理、使用的工具以及在实际工作环境中的最佳实践。
磁盘克隆工具 💾

上一节我们介绍了操作系统部署的基本概念,本节中我们来看看一种具体的部署方法:磁盘克隆。
磁盘克隆工具可以创建整个磁盘的副本。它允许你备份当前机器或设置一台新机器。与独立的安装介质相比,磁盘克隆的优势在于,你可以同时安装所需的设置和文件夹。
以下是市面上众多磁盘克隆工具中的两个例子:
- Clonezilla:一款开源软件,可用于备份和恢复单台或多台机器。
- Symantec Ghost:一款流行的商业映像工具。
磁盘克隆实践 🔧
了解了可用的工具后,我们来看看磁盘克隆的具体操作方式。
使用磁盘映像时,许多工具提供了不同的克隆方法。其中一种选择是磁盘到磁盘克隆。这种方法需要将一台外部硬盘驱动器连接到你要克隆的机器上。
你可以将HDD或SSD等硬盘连接到一种称为外部硬盘坞的设备中。这些设备是很好的IT工具,外形有点像烤面包机。连接好外部硬盘后,你就可以使用任何你选择的磁盘克隆工具了。
接下来,我们将展示一个磁盘克隆如何工作的快速示例。我们将使用Linux命令行工具 dd 来复制文件。dd 是一个轻量级工具,也用于克隆驱动器。当然,你可以使用任何工具来克隆磁盘,但现在我们只用 dd 来演示。
假设我们要复制连接到笔记本电脑的USB驱动器,并将其保存为一个映像文件。
首先,我们需要确保该驱动器已卸载。然后运行 dd 命令。你不需要知道 dd 的工作原理就能使用这个命令(实际上,你应该查看最后的补充阅读材料以了解更多关于此工具的信息)。
命令如下:
dd if=/dev/sdd of=~/Desktop/usb_backup.img
这个命令表示:我将复制 /dev/sdd(即USB驱动器)的内容,并将其保存到桌面上的一个名为 usb_backup.img 的映像文件中。

映像文件保存后,如果我们打开它,应该能看到与USB驱动器完全相同的内容。你也可以对更大的磁盘(如硬盘)使用 dd,其工作方式相同。
网络部署 🌐
除了本地克隆,另一种为机器安装映像的方法是从网络直接获取映像。

如今,许多操作系统制造商都提供网络启动部署。这意味着不再需要依赖独立的安装介质。相反,你可以直接通过网络下载并安装操作系统。
如果你想使用自己的映像,而不是计算机内置的网络启动选项,也有其他方法可以实现。我们在此不讨论具体细节,但它们需要一些自动化设置才能运行。
硬件标准化考量 🏢
无论你管理的是笔记本电脑、台式机、Windows操作系统还是Linux操作系统,如果你负责公司的操作系统部署工作,都需要考虑硬件标准化的某些方面。
想象一下,如果你的公司有各种不同的笔记本电脑,需要安装不同的驱动程序,维护起来会非常繁琐。通常,尝试在公司内标准化所使用的硬件类型是一个好主意,这可以使部署操作系统的工作变得更轻松。

本节课中我们一起学习了两种关键的操作系统部署方法。我们探讨了使用如Clonezilla、Ghost和 dd 等工具进行磁盘克隆的实践步骤,以及通过网络进行部署的现代方法。最后,我们强调了在企业环境中进行硬件标准化以简化部署和维护流程的重要性。
200:移动设备重置与映像

在本节课中,我们将学习移动设备重置与映像的核心概念,包括工厂重置和重新刷写操作系统。你将了解这些操作的目的、执行时机、注意事项以及具体步骤。
工厂重置
上一节我们介绍了移动设备的基本概念,本节中我们来看看工厂重置。当一台移动设备出厂时,工厂会为其安装操作系统。工厂重置操作会将设备恢复到出厂时的原始状态。
作为IT支持专家,你将经常需要对移动设备执行工厂重置。
以下是执行工厂重置的常见场景:
- 在将设备重新分配给另一位最终用户之前。
- 在将设备送修之前。
- 作为对运行异常的设备进行故障排除的最后手段。
请注意,工厂重置会清除设备上的所有数据、应用程序和个性化设置。
确保你不想丢失的任何内容都已备份或同步到云端。我们将在未来的视频中介绍移动设备的同步与备份。
另一个重要提醒是注意扩展存储。像SD卡或USB驱动器这类扩展存储设备可能包含个人或专有数据。
在连接扩展存储的情况下执行工厂重置,可能会误删你希望保留的数据。更糟糕的是,许多设备的工厂重置操作可能不会清除扩展存储的内容。你肯定不希望将仍附有个人或专有数据的设备重新分配用途或报废。
最后一点,对于Android和iOS设备,你需要主账户的凭据才能执行工厂重置。这是为了防止被盗设备被轻易重置并转售。
操作系统更新与重新刷写
上一节我们介绍了工厂重置,本节中我们来看看操作系统更新。随着时间的推移,移动设备制造商会发布设备操作系统的更新。这些更新通常通过无线方式或OTA进行推送。
OTA更新是指由移动设备自身下载并安装的更新。
但有时你可能需要使用计算机来安装操作系统更新。
以下是可能需要使用计算机的场景:
- 某些移动设备(如健身追踪器和医疗设备)可能没有移动网络或Wi-Fi网络接口来连接互联网。
- 移动设备可能无法启动,或者没有足够好的数据连接来自行下载更新。
在这些情况下,你可以从计算机上重新刷写或覆盖设备的操作系统。
但操作时必须小心。请仔细阅读设备关于重新刷写的说明。对于某些设备,重新刷写会保留设备上的最终用户数据。但对于其他设备,最终结果将类似于工厂重置。具体细节因设备而异。
以下是基本的重新刷写步骤:
- 将更新文件下载到计算机。
- 使用USB数据线将移动设备连接到计算机。
- 在计算机上运行特定软件,对移动设备进行重新刷写。

在补充阅读材料中,你会找到如何从计算机恢复iOS和Android设备的说明。对于其他类型的设备,请参考设备制造商的文档,了解如何使用计算机执行工厂重置或重新刷写。
总结

本节课中我们一起学习了移动设备重置与映像。我们了解了工厂重置的定义、应用场景和重要注意事项,特别是数据备份和扩展存储的处理。我们还探讨了通过OTA更新和通过计算机重新刷写操作系统的方法,以及后者的适用场景和基本步骤。掌握这些知识对于有效管理和维护移动设备至关重要。

浙公网安备 33010602011771号