工欲善其事必先利其器,怎么搭建一个Linux作为开发日常接触的环境,一些命令,操作,环境安装等需要熟悉。

第一章-Linux概述

1
2
3
在前面的学习中,我们无论是开发、测试。部署、存储都在Windwos操作系统的环境中,从今天开始我们一起学习下Linux,Linux系统和Windows系统最大的区别就是图形化界面操作和用途上有所差异,除了这两点,两者有异曲同工之妙,在国内, Linux 系统更多的是应用于服务器上,而桌面操作系统更多使用的是 Windows,也就是说Linux与Windows一样,同样也是操作系统只是在使用以及应用上有所差异,其他都是一样的;
因为Linux也是操作系统
所以在正式进入Linux学习之前,我们先简单的学习操作系统的知识,然后在讲解Linux

1.0 为什么要学习Linux

对于windows操作系统而言,大家应该不陌生,这里我列举一些windows的不足:

  1. 个人用户正版windows需要收费
  2. 系统长时间运行后,不稳定,变慢,容易死机
  3. 且windows经常招到病毒攻击等

相反,上述windows的不足,恰好是另一款操作系统Linux的优势所在,这里我也列举一些Linux的优点:

  1. 个人用户正版Linux不需要收费

  2. 系统长时间运行后,还是比较稳定,比较快,不容易死机

  3. 且Linux不常招到病毒攻击等

做为一个后端JavaEE程序员,通常在windows/MAC中开发完程序后,得部署到一个相对比较安全,稳定的服务器中运行,这台服务器上安装的不是windows操作系统,而是Linux操作系统。

1.1 操作系统

操作系统(Operation System, OS),是管理计算机硬件软件资源的计算机程序,同时也是计算机系统的内核与基石。操作系统需要处理如管理与配置内存、决定系统资源供需的优先次序、控制输入设备输出设备、操作网络与管理文件系统等基本事务。操作系统也提供一个让用户与系统交互的操作界面。

操作系统作为接口的示意图:

image-20230919160346360

如上图所示,在操作系统的最上层是用户,中间层是操作系统(里面可能装了很多的应用程序),最下层是硬件的支撑,包含CPU/内存/硬盘等

这就是一个完成的操作系统结构图,再看一张详细的图:

image-20220729221559953

主流操作系统按照应用领域的划分

1、桌面操作系统

  • Window 系列
    • 用户群体大
  • macOS
    • 细节处理的更好, 没有windows软件丰富, 价格高
  • Linux
    • 应用软件少

2、服务器操作系统

  • Linux

    • 安全、稳定、免费
    • 占有率高
  • Windows Server

    • 付费
    • 占有率低

    image-20230919160427021

3、嵌入式操作系统

​ Linux

4、移动设备操作系统

image-20230919160433295

  • IOS
  • Android (基于Linux)
  • 华为鸿蒙(基于linux)

Linux内核

Linux系统的核心是内核,内核控制着计算机系统上的所有硬件和软件,在必要时分配硬件,并根据需要执行软件。

内核主要负责以下四种功能:

  • 系统内存管理
  • 软件程序管理
  • 硬件设备管理
  • 文件系统管理

GNU工具

Linus Torvalds(林纳斯·托瓦茨)在创建Linux系统内核时并没有可用的系统工具。幸运的是就在他开发Linux内核的同时,有GNU组织正在模仿Unix操作系统开发一系列标准的计算机系统工具。

GNU组织(GNU是GNU’s Not Unix的缩写)开发了一套完整的Unix工具,但是没有内核系统。这些工具在开源软件的理念下开发。

尽管通常将Linux内核和GNU工具的结合称为Linux,严格讲,应该是GNU/Linux系统。

GNU coreutils软件包由三部分构成:

  • 处理文件的工具
  • 操作文本的工具
  • 管理进程的工具

图形化桌面环境

  • X Window系统
  • KDE桌面
  • GNOME桌面
  • Unity桌面
  • 其他桌面,如Fluxbox、Xfce、JWM、Fvwm、fvwm95等。

1.2 Linux发展历程

1
2
引子
在上面,我们学习了操作系统的知识,也知道了主流操作系统按照应用领域划分了四个类型的操作系统,其中Linux操作系统在四个领域都有提名,因为它是至今开源序列最好的操作系统,下面,我们就一起看下Linux的发展历程,看看它是怎么诞生的...
  • 1984年,Andrew S.Tanenbaum 开发了用于教学的Unix系统,命名为Minix,但是仅仅用于教学
  • 1989年,Andrew S.Tanenbaum将Minix系统运行于x86的pc平台
  • 1990年,芬兰赫尔辛基大学学生Linus Torvalds首次接触Minix系统
  • 1991年,Linus Torvalds开始在Minix上编写各种驱动程序等操作系统内核组件
  • 1991年年底,Linus Torvalds公开了Linux内核源码0.02版,仅仅是内核
  • 1994年,Linux 1.0版本发行,Linux转向GPL版权协议

至此,Linux开始盛行开来…

image-20230919160452932

Linux 内核最初是由李纳斯•托瓦兹(Linus Torvalds)在赫尔辛基大学读书时出于个人爱好而编写的,当时他觉得教学用的迷你版 Unix操作系统 Minix 太难用了,于是决定自己开发一个操作系统。

第 1 版本于 1991 发布,当时仅有 10000 行代码。

李纳斯•托瓦兹没有保留 Linux 源代码的版权,公开了代码,并邀请他人一起完善 Linux。与 Windows 及其他有专利权的操作系统不同,Linux 开放源代码,任何人都可以免费使用它。

据估计,现在只有 2% 的 Linux 核心代码是由李纳斯•托瓦兹自己编写的,虽然他仍然拥有 Linux 内核(操作系统的核心部分),并且保留了选择新代码和需要合并的新方法的最终裁定权。现在大家所使用的 Linux,我更倾向于说是由李纳斯•托瓦兹和后来陆续加入的众多 Linux 好者共同开发完成的。

Unix

Unix 操作系统由肯•汤普森(Ken Thompson)和丹尼斯•里奇(Dennis Ritchie)发明。它的部分技术来源可追溯到从 1965 年开始的 Multics 工程计划,该计划由贝尔实验室、美国麻省理工学院和通用电气公司联合发起,目标是开发一种交互式的、具有多道程序处理能力的分时操作系统,以取代当时广泛使用的批处理操作系统。

Unix是一个强大的多用户、多任务操作系统。于1969年在AT&T的贝尔实验室开发。Unix 的商标权由国际开放标准组织(The Open Group)所拥有。Unix操作系统是商业版,需要收费,价格比Microsoft Windows正版要贵一些。

1.3 Linux简介

1
2
3
引子
Linux和我们常见的Windows一样,都是操作系统,
例如:新浪、百度、淘宝等互联网公司,他们使用的服务器全都是Linux系统;全球500强企业95%的服务器使用的都是Linux系统。

1.3.1 什么是 Linux

Linux是一套免费使用和自由传播的类Unix操作系统,是一个基于POSIX和Unix的多用户、多任务、支持多线程和多CPU的操作系统。它能运行主要的Unix工具软件、应用程序和网络协议。它支持32位64位硬件。Linux继承了Unix以网络为核心的设计思想,是一个性能稳定的多用户网络操作系统。

Linux 的标志和吉祥物是一只名字叫做Tux(它克斯)的企鹅,Linux是基于Unix的。

Linux是一种自由和开放源码的操作系统,存在着许多不同的Linux版本,但它们都使用了Linux内核。Linux可安装在各种计算机硬件设备中,比如手机、平板电脑、路由器、台式计算机

image-20230919160623840

Linux不仅系统性能稳定,而且是开源软件。其核心防火墙组件性能高效、配置简单,保证了系统的安全。在很多企业网络中,为了追求速度和安全,Linux操作系统不仅仅是被网络运维人员当作服务器使用,Linux既可以当作服务器,又可以当作网络防火墙是Linux的 一大亮点。

Linux与其他操作系统相比 ,具有开放源码、没有版权、技术社区用户多等特点 ,开放源码使得用户可以自由裁剪,灵活性高,功能强大,成本低。尤其系统中内嵌网络协议栈 ,经过适当的配置就可实现路由器的功能。这些特点使得Linux成为开发路由交换设备的理想开发平台。

1.3.2 Linux的特点

基本思想

Linux的基本思想有两点:

第一:一切都是文件

第二:每个软件都有确定的用途

其中第一条详细来讲就是系统中的所有都归结为一个文件,包括命令硬件软件设备、操作系统进程等等对于操作系统内核而言,都被视为拥有各自特性或类型的文件。至于说Linux是基于Unix的,很大程度上也是因为这两者的基本思想十分相近

完全免费

Linux是一款免费的操作系统,用户可以通过网络或其他途径免费获得,并可以任意修改其源代码。这是其他的操作系统所做不到的。正是由于这一点,来自全世界的无数程序员参与了Linux的修改、编写工作,程序员可以根据自己的兴趣和灵感对其进行改变,这让Linux吸收了无数程序员的精华,不断壮大。

安全稳定

Linux采取了很多安全技术措施,包括读写权限控制、带保护的子系统、审计跟踪、核心授权等,这为网络环境中的用户提供了安全保障。实际上有很多运行Linux的服务器可以持续运行长达数年而无须重启,依然可以性能良好地提供服务,其安全稳定性已经在各个领域得到了广泛的证实。

完全兼容POSIX1.0标准

这使得可以在Linux下通过相应的模拟器运行常见的DOSWindows的程序。这为用户从Windows转到Linux奠定了基础。许多用户在考虑使用Linux时,就想到以前在Windows下常见的程序是否能正常运行,这一点就消除了他们的疑虑。

多用户、多任务

Linux支持多用户,各个用户对于自己的文件设备有自己特殊的权利,保证了各用户之间互不影响。多任务则是现在电脑最主要的一个特点,指系统资源可以同时被不同的用户使用,每个用户对自己的资源有特定的权限,互不影响。是计算机能同时运行多个程序,且程序之间彼此独立,Linux内核负责调度每个进程,使之平等地访问处理器。由于CPU处理速度极快,从用户的角度来看所有的进程好像在并行运行。Linux可以使多个程序同时并独立地运行。

良好的界面

Linux同时具有字符界面和图形界面。在字符界面用户可以通过键盘输入相应的指令来进行操作。它同时也提供了类似Windows图形界面的X-Window系统,用户可以使用鼠标对其进行操作。在X-Window环境中就和在Windows中相似,可以说是一个Linux版的Windows。

支持多种平台

Linux可以运行在多种硬件平台上,如具有x86、680x0、SPARC、Alpha等处理器的平台。此外Linux还是一种嵌入式操作系统,可以运行在掌上电脑、机顶盒或游戏机上。2001年1月份发布的Linux 2.4版内核已经能够完全支持Intel64位芯片架构。同时Linux也支持多处理器技术。多个处理器同时工作,使系统性能大大提高。

良好的可移植性

Linux中95%以上的代码都是用C语言编写的,由于C语言是一种机器无关的高级语言,是可移植的,因此Linux系统也是可移植的。

广泛的硬件支持

得益于其免费开源的特点,有大批程序员不断地向Linux社区提供代码,使得Linux有着异常丰富的设备驱动资源,对主流硬件的支持极好,而且几乎能运行在所有流行的处理器上。

模块化程度高

Linux的内核设计分成进程管理、内存管理、进程间通信、虚拟文件系统、网络5部分,其采用的模块机制使得用户可以根据实际需要,在内核中插入或移走模块,这使得内核可以被高度的剪裁定制,以方便在不同的场景下使用。

优点

1)Linux由众多微内核组成,其源代码完全开源;

2)Linux继承了Unix的特性,具有非常强大的网络功能,其支持所有的因特网协议,包括TCP/IPv4TCP/IPv6和链路层拓扑程序等,且可以利用Unix的网络特性开发出新的协议栈;

3)Linux系统工具链完整,简单操作就可以配置出合适的开发环境,可以简化开发过程,减少开发中仿真工具的障碍,使系统具有较强的移植性;

1.4 Linux和Unix区别

1、开源情况

Unix 是商业化的,而 Linux 是开源的,是免费、公开源代码的。

2、硬件适用

Unix 系统大多是与硬件配套的,也就是说,大多数Unix系统如AIX、HP-UX等是无法安装在 x86 服务器和个人计算机上的,而 Linux则可以运行在多种硬件平台上。

可以先学习Linux后再学习Unix,因为Linux可以方便的在虚拟机上运行,防止新手的误操作。

3、本质不同

Linux是开放源代码的自由软件,用户对前者有很高的自主权,在实际的的开发是处在一个完全开放的环境之中;

而Unix是对源代码实行知识产权保护的传统商业软件,用户的开发完全是处在一个黑箱之中,只有相关的开发人员才能够接触的产品的原型;

Unix 诞生于 20 世纪 60 年代末,Windows 诞生于 20 世纪 80 年代中期,Linux 诞生于 20 世纪 90 年代初,可以说 Unix是操作系统中的”老大哥”,后来的 Windows 和 Linux 都参考了 Unix

1.5 Linux和Windows区别

目前国内 Linux 更多的是应用于服务器上,而桌面操作系统更多使用的是 Windows。主要区别如下

比较 Windows Linux
界面 界面统一,外壳程序固定所有 Windows 程序菜单几乎一致,快捷键也几乎相同 图形界面风格依发布版不同而不同,可能互不兼容。GNU/Linux 的终端机是从 Unix传承下来,基本命令和操作方法也几乎一致。
驱动程序 驱动程序丰富,版本更新频繁。默认安装程序里面一般包含有该版本发布时流行的硬件驱动程序,之后所出的新硬件驱动依赖于硬件厂商提供。对于一些老硬件,如果没有了原配的驱动有时很难支持。另外,有时硬件厂商未提供所需版本的 Windows 下的驱动,也会比较头痛。 由志愿者开发,由 Linux 核心开发小组发布,很多硬件厂商基于版权考虑并未提供驱动程序,尽管多数无需手动安装,但是涉及安装则相对复杂,使得新用户面对驱动程序问题(是否存在和安装方法)会一筹莫展。但是在开源开发模式下,许多老硬件尽管在Windows下很难支持的也容易找到驱动。HP、Intel、AMD 等硬件厂商逐步不同程度支持开源驱动,问题正在得到缓解。
使用 使用比较简单,容易入门。图形化界面对没有计算机背景知识的用户使用十分有利。 图形界面使用简单,容易入门。文字界面,需要学习才能掌握。
学习 系统构造复杂、变化频繁,且知识、技能淘汰快,深入学习困难。 系统构造简单、稳定,且知识、技能传承性好,深入学习相对容易。
软件 每一种特定功能可能都需要商业软件的支持,需要购买相应的授权。 大部分软件都可以自由获取,同样功能的软件选择较少。

Windows与Linux在其他方面的不同

开放性

所谓的开放性就是Linux 操作系统是开放源码系统,可以对其程序进行编辑修改。而微软的Windows 系统是受微软版权保护,就是只能微软内部进行开发及修改。

文件格式不同

Windows 操作系统内核是NT,而Linux 是 shell;

另外,windows 硬盘文件格式是fat32或NTFS,而Linux 需要的文件格式是ext2或ext3,该操作系统还多一个SWAP格式的交换分区

免费与收费

在中国,对个人用户Windows 和Linux 都是免费的,对公用户Windows 需要收费,Linux 是免费的。

技术支持

Windows 较普及。Linux 需要深度的Linux 版块支持。

安全性

Linux 相对Windows 来说安全性更高。

开源

开源就是指对外部开放软件源代码。Linux 开源,而Windows并不开源。

使用习惯

Windows 放弃了dos的字符模式,主攻图形界面,让桌面系统更易用。Linux 字符模式运行的更好,图形界面还只是附带品,可有可无。

软件与支持

Windows 下可以运行绝大部分软件、玩99.999%的游戏、硬件厂商近乎100%的支持。Linux 下可直接运行的软件数量和win下比起来就是1和99的区别,而且目前选择Linux 的人基本不会考虑玩游戏,同时Linux 正期待更多硬件厂商的支持

1.6 Linux发行商和常见发行版

Linux的版本分为两种:内核版本和发行版本;

  • 内核版本是指在Linus领导下的内核小组开发维护的系统内核的版本号 ;
  • 发行版本是一些组织和公司根据自己发行版的不同而自定的

Linux发行版是由个人,自由组织,以及商业机构和志愿者组织编写。它们通常包括了其他的系统软件和应用软件,以及一个用来简化系统初始安装的安装工具,和让软件安装升级的集成管理器。大多数系统还包括了像提供GUI界面的XFree86之类的曾经运行于BSD的程序。
一个典型的Linux发行版包括:Linux内核,一些GNU程序库和工具,命令行shell,图形界面的桌面环境,如KDE或GNOME,并包含数千种从办公套件,编译器,文本编辑器到科学工具的应用软件

Linux发行版的某些版本是不需要安装,只需通过CD或者可启动的USB存储设备就能使用的版本,他们称为LiveCD。

image-20230919160719720

Linux的版本号分为两部分:内核版本和发行版本

1.Linux的内核版本
内核版本指的是在Linus Torvalds领导下的开发小组开发出的系统内核的版本号,通常,内核版本号的第二位是偶数表示是稳定的版本,如2.6.25;是奇数表示有一些新的东西加入,是不稳定的测试版本,如2.5.6。Linux操作系统的核心就是它的内核,Linus Torvalds和他的小组在不断地开发和推出新内核。

任务:进程调度、内存管理、配置管理虚拟文件系统、提供网络接口以及支持进程间通信。像所有软件一样,Linux的内核也在不断升级。

2.Linux的发行版本
一个完整的操作系统不仅仅只有内核,还包括一系列为用户提供各种服务的外围程序。外围程序包括GNU程序库和工具,命令行shell,图形界面的X Window系统和相应的桌面环境,如KDE或GNOME,并包含数千种从办公套件,编译器,文本编辑器到科学工具的应用软件。所以,许多个人、组织和企业,开发了基于GNU/Linux的Linux发行版,他们将Linux系统的内核与外围应用软件和文档包装起来,并提供一些系统安装界面和系统设置与管理工具, 这样就构成了一个发行版本。
实际上,Linux的发行版本就是Linux内核再加上外围的实用程序组成的一个大软件包而已。相对于操作系统内核版本,发行版本的版本号是随发布者的不同而不同,与Linux系统内核的版本号是相对独立的,例如:RedHat EnterpriseLinux 5.2的操作系统内核是Linux-2.6.18。
Linux的发行版本大体可以分为两类:

一类是商业公司维护的发行版本,如著名的Red Hat;

一类是社区组织维护的发行版本,如Debian、CentOS;

以下为Linux的主流版本:

目前市面上较知名的发行版有:Ubuntu、RedHat、CentOS、Debian、Fedora、SuSE、OpenSUSE、Arch Linux、SolusOS 等

image-20230919160726373

以下是主要的发行版本

1
2
3
4
5
需要注意的:
下面的内容主要是介绍了下Linux发行家族以及发行版本的一些详细信息,虽然我们当前的课程讲解的是CentOS,但是其他的一些发行商、主流的发行版本比如Ubuntu、Redhat也需要让学生多多了解下,毕竟这是Linux体系内产品线
注意
下面的文字虽然很多,但是只要让学生知道有这么回事即可
在下面会简单的总结..

1、Debian 介绍

Debian名字的由来—-DebianGNU/Linux是由一个叫做伊恩·默多克(IanMurdock)在1993年发起的,他的名字以Ian开头,他太太的名字Debra开头三个字母是Deb。

Debian是社区类Linux的典范,是迄今为止最遵循GNU规范的Linux系统。Debian最早由 Ian Murdock于1993年创建,分为三个版本分支: stable(服务器版), testing(稳定版) 和unstable(测试版)。

2、Ubuntu介绍

Ubuntu严格来说不能算一个独立的发行版本,Ubuntu是基于Debian的unstable版本加强而来,可以这么说,Ubuntu就是一个拥有Debian所有的优点,以及自己所加强的优点的近乎完美的 Linux桌面系统。

共分三个版本:

  • 基于Gnome的Ubuntu,
  • 基于KDE的Kubuntu以。
  • 基于Xfc的 Xubuntu。

特点是界面非常友好,容易上手,对硬件的支持非常全面,是最适合做桌面系统的Linux发行版本。稳定性,其实都差不多,难易度嘛,

Ubuntu 默认桌面环境采用 GNOME,一个 Unix和 Linux 主流桌面套件和开发平台。

Ubuntu的版本和发布号
Ubuntu的版本号是由该次发布的年份和月份组成,并未反映其实际版本。我们的首次发布是在2004年10月,因此该版本为4.10。当前版本(DapperDrake)于2006年6月发布,因此版本号为6.06 LTS。

3、Redhat

可能这是最著名的Linux版本了,Red Hat Linux已经创造了自己的品牌,越来越多的人听说过它。Red Hat在1994年创业,当时聘用了全世界500多名员工,他们都致力于开放的源代码体系。
Red Hat Linux是公共环境中表现上佳的服务器。它拥有自己的公司,能向用户提供一套完整的服务,这使得它特别适合在公共网络中使用。这个版本的Linux也使用最新的内核,还拥有大多数人都需要使用的主体软件包。
Red Hat Linux的安装过程也十分简单明了。它的图形安装过程提供简易设置服务器的全部信息。磁盘分区过程可以自动完成,还可以选择GUI工具完成,即使对于 Linux新手来说这些都非常简单。选择软件包的过程也与其他版本类似;用户可以选择软件包种类或特殊的软件包。系统运行起来后,用户可以从Web站点和 Red Hat那里得到充分的技术支持。我发现Red Hat是一个符合大众需求的最优版本。在服务器和桌面系统中它都工作得很好。Red Hat的唯一缺陷是带有一些不标准的内核补丁,这使得它难于按用户的需求进行定制。 Red Hat通过论坛和邮件列表提供广泛的技术支持,它还有自己公司的电话技术支持,后者对要求更高技术支持水平的集团客户更有吸引力

4、Fedora

Fedora和Redhat这两个Linux的发行版放联系很密切。Redhat 自9.0以后,不再发布桌面版的,而是把这个项目与开源社区合作,于是就有了Fedora 这个 Linux 发行版。Fedora项目是由 Red Hat 赞助,由开源社区与 Red Hat 工程师合作开发的项目统称。Fedora 的目标,是推动自由和开源软件更快地进步。

特点:
1、 Fedora 是一个开放的、创新的、前瞻性的操作系统和平台,基于 Linux。它允许任何人自由地使用、修改和重发布,无论现在还是将来。可运行的体系结构包括x86(即i386),x86_64 和PowerPC!
2、Fedora 可以说是Redhat 桌面版本的延续,只不过是与开源社区合作。

3、Fedora 是一个独立的inux发行版本的操作系统。

5centos

CentOS(Community ENTerprise Operating System)是来自于Red Hat Enterprise Linux依照开放源代码规定释出的源代码所编译而成。由于出自同样的源代码,因此有些要求高度稳定性的服务器以CentOS替代商业版的Red Hat Enterprise Linux使用(我会告诉你,以为企业想省钱,运维要靠这个东西来赚钱嘛,国内运维主流是CentOS剩下版本很少)。两者的不同,在于CentOS并不包含封闭源代码软件,CentOS 是一个基于Red Hat Linux 提供的可自由使用源代码的企业级Linux发行版本。每个版本的CentOS都会获得十年的支持(通过安全更新方式)。新版本的 CentOS 大约每两年发行一次,而每个版本的 CentOS 会定期(大概每六个月)更新一次,以便支持新的硬件。这样,建立一个安全、低维护、稳定、高预测性、高重复性的 Linux 环境

6、Slackware介绍

Slackware 由PatrickVolkerding(帕特里克.沃克登)创建于1992年。算起来应当是历史最悠久的Linux发行版。尽管如此,Slackware仍然深入人心(大部分都是比较有经验的 Linux老手)。Slackware稳定、安全,所以仍然有大批的忠实用户。由于Slackware尽量采用原版的软件包而不进行任何修改,所以制造新 bug的几率便低了很多。Slackware的版本更新周期较长(大约1年),但是新版本的软件仍然不间断的提供给用户下载。

7、openSUSE介绍

SUSE是德国最著名的Linux发行版,在全世界范围中也享有较高的声誉。SUSE自主开发的软件包管理系统也大受好评。SUSE于2003年年末被Novell收购。SUSE在收购之后的发布显得比较混乱,比如9.0版本是收费的,而10.0版本(也许由于各种压力)又免费发布。这使得一部分用户感到困惑,也转而使用其它发行版本。最近还跟微软扯到了一起。但是瑕不掩瑜,SUSE仍然是一个非常专业、优秀的发行版。

openSUSE 项目是由Novell公司资助的全球性社区计划,旨在推进 Linux 的广泛使用。这个计划提供免费的openSUSE 操作系统。这里是一个由普通用户和开发者共同构成的社区,我们拥有一个共同的目标—创造世界上最好用的 Linux 发行版。openSUSE 是 Novell 公司发行的企业级 Linux 产品的系统基础。

openSUSE 项目是由Novell 发起的开源社区计划。 旨在推进 Linux 的广泛使用。提供了自由简单的方法来获得世界上最好用的 Linux 发行版,SUSE Linux。openSUSE 项目为 Linux 开发者和爱好者提供了开始使用 Linux 所需要的一切。

8、中国大陆的Linux发行版

红旗Linux(RedflagLinux) ,冲浪Linux(Xteam Linux) ,蓝点Linux , GNU/Linux,OpenDesktop等等 。

9、 台湾地区的Linux发行版

鸿奇Linux

目前最著名的发行版本:Debian,ubuntu、OpenSuse(原Suse)、CentOS、fedora等。国内比较著名的红旗Linux版本

对于上面的知识我们做下重点总结

  • redhat:目前,全球最大的linux发行厂商,功能全面、稳定。
    • RedhatIBM 收购!
  • ubuntu:目前,是linux桌面操作系统做的最好的。
  • centos:免费版的redhat,centos 基于 redhat 发行版基础之上,再重新编译发布的版本。
    • 目前 centos 已经被 Redhat 公司收购,但是依然免费

1.7 Linux 应用领域

今天各种场合都有使用各种 Linux 发行版,从嵌入式设备到超级计算机,并且在服务器领域确定了地位。在企业级开发中,我们通常使用Linux作为我们的服务器。

比如:服务器系统Web应用服务器、数据库服务器、接口服务器、DNS、FTP等等;

嵌入式系统路由器、防火墙、手机、PDA、IP 分享器、交换器、家电用品的微电脑控制器等等,高性能运算、计算密集型应用Linux有强大的运算能力。

目前 Linux 不仅在家庭与企业中使用,并且在政府中也很受欢迎

  • 巴西联邦政府由于支持 Linux 而世界闻名。
  • 有新闻报道俄罗斯军队自己制造的 Linux 发布版的,做为 G.H.ost 项目已经取得成果。
  • 印度的 Kerala 联邦计划在向全联邦的高中推广使用 Linux。
  • 中华人民共和国为取得技术独立,在龙芯处理器中排他性地使用 Linux。
  • 在西班牙的一些地区开发了自己的 Linux 发布版,并且在政府与教育领域广泛使用,如 Extremadura 地区的 gnuLinEx 和 Andalusia 地区的 Guadalinex。
  • 葡萄牙同样使用自己的 Linux 发布版 Caixa Mágica,用于 Magalh?es 笔记本电脑和 e-escola 政府软件。
  • 法国和德国同样开始逐步采用 Linux。

Linux系统的使用场景

  1. 服务器是Linux系统的最主要的使用场景
  2. 大型运算场景的计算机系统
  3. 安全性要求比较高的场景,比如说”大型公司的网关环境”
  4. 嵌入式设备、手机等等

1.8 Linux之CentOS

1
前面章节介绍了一些Linux的基本知识,前已经对Linux有了一个初步的认识,也知道了在Linux发行版中有各个家族的发行版本;比如比较知名的ubuntu、CentOS,我们将采用发行版CentOS作为日常学习的环境。

CentOS,是基于 Red Hat Linux 提供的可自由使用源代码的企业级 Linux 发行版本;是一个稳定,可预测,可管理和可复制的免费企业级计算平台

主要特点:

1.主流: 目前的Linux操作系统主要应用于生产环境,主流企业级Linux系统仍旧是RedHat或者CentOS
2.免费: RedHat 和CentOS差别不大,CentOS是一个基于Red Hat Linux 提供的可自由使用源代码的企业级Linux发行版本
3.更新方便:CentOS独有的yum命令支持在线升级,可以即时更新系统,不像RED HAT那样需要花钱购买支持服务!

学习使用的环境:

Windows7 , VMware Workstation15.02, CentOS Linux release 7.6.1810

1.9 Linux的目录结构

image-20230919160739333

​ Linux不像windows那样有盘符的概念,它的最高目录为根目录(用/表示)

记住一句经典的话:在Linux世界里,一切皆文件。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
具体的目录结构:
/bin [重点] (/usr/bin 、 /usr/local/bin):是Binary的缩写, 这个目录存放着最经常使用的命令
/sbin (/usr/sbin 、 /usr/local/sbin):s就是Super User的意思,这里存放的是系统管理员使用的系统管理程序。
/home [重点]:存放普通用户的主目录,在Linux中每个用户都有一个自己的目录,一般该目录名是以用户的账号命名的。
    useradd nbchen=>home下会有一个nbchen的目录;userdel -r nbchen=>/home下的nbchen用户目录会删除;
/root [重点]:该目录为系统管理员,也称作超级权限者的用户主目录。用~表示。
/lib:系统开机所需要最基本的动态连接共享库,其作用类似于Windows里的DLL文件。几乎所有的应用程序都需要用到这些共享库。
/lost+found:这个目录一般情况下是空的,当系统非法关机后,这里就存放了一些文件。
/etc [重点]:所有的系统管理所需要的配置文件和子目录 my.conf
/usr [重点]:这是一个非常重要的目录,用户的很多应用程序和文件都放在这个目录下,类似与windows下的program files目录。
/boot [重点]:存放的是启动Linux时使用的一些核心文件,包括一些连接文件以及镜像文件
/proc:这个目录是一个虚拟的目录,它是系统内存的映射,访问这个目录来获取系统信息。
/srv:service缩写,该目录存放一些服务启动之后需要提取的数据。
/sys:这是linux2.6内核的一个很大的变化。该目录下安装了2.6内核中新出现的一个文件系统 sysfs
    /proc /srv /sys时高手的修改的地方,涉及内核,不要轻易修改
/tmp:这个目录是用来存放一些临时文件的。
/dev:类似于windows的设备管理器,把所有的硬件用文件的形式存储。比如有cpu,disk等
/media [重点]:linux系统会自动识别一些设备,例如U盘、光驱等等,当识别后,linux会把识别的设备挂载到这个目录下。
/mnt [重点]:系统提供该目录是为了让用户临时挂载别的文件系统的,我们可以将外部的存储挂载在/mnt/上,然后进入该目录就可以查看里的内容了。 f:/linux/share => /mnt/hgfs/share。/mnt,可以是实现磁盘扩容。
/opt:这是给主机额外安装软件所摆放的目录。如安装ORACLE数据库就可放到该目录下。默认为空。
/usr/local [重点]:这是另一个给主机额外安装软件所安装的目录。一般是通过编译源码方式安装的程序。
/var [重点]:这个目录中存放着在不断扩充着的东西,习惯将经常被修改的目录放在这个目录下。包括各种日志文件。
/selinux [security-enhanced linux]类似360:SELinux是一种安全子系统,它能控制程序只能访问特定文件。有黑客入侵到服务器后,会触发安全系统。

1.10 Linux系统启动流程

1.10.1 计算机加载BIOS

这是计算机上最接近硬件的软件,BIOS对自身的硬件做一次健康检查,只有硬件没有问题,才能运行软件,操作系统也是一种软件。如果所有的硬件自检通过,一般都会发出一次“滴”的短声提示,说明硬件一切正常。

1.10.2 引导系统

这个动作是BIOS设定的,BIOS默认会从硬盘上的第0柱面、第0磁道、第一个扇区中读取被称为MBR的东西,即主引导记录。一个扇区的大小是512字节,存放的内容是一段引导程序和分区信息,其中引导程序部分占用446字节,另外64字节是磁盘分区表DPT,最后两字节是MBR的结束位。这512字节的空间内容是由专门的分区程序产生的,比如说Windows下的fdisk.exe,或者Linux下的fdisk命令,所以它不依赖于任何操作系统,而MBR中的引导程序也是可以修改的,所以可以利用这个特性实现多操作系统共存。由于RedHat、CentOS默认会使用Grub作为其引导操作系统的程序,而Grub本身又比较大,所以常见的方式是在MBR中写入Grub的地址,这样系统实际会载入Grub作为操作系统的引导程序。

1.10.3 运行Grub

Grub最重要的功能就是根据其配置文件加载kernel镜像,并运行内核加载后的第一个程序/sbin/init,这个程序会根据/etc/inittab来进行初始化的工作。其实这里最重要的就是根据文件中设定的值来确定系统将会运行的runlevel,默认的runlevel定义在“id:3:initdefault:”中,其中的数字3说明目前的运行级别定义为3。

1.10.4 系统初始化配置

Linux将根据/etc/inittab中定义的系统初始化配置si::sysinit:/etc/rc.d/rc.sysinit执行/etc/rc.sysinit脚本,该脚本将会设置系统变量、网络配置,并启动swap、设定/proc、加载用户自定义模块、加载内核设置等。

1.10.5 将运行/etc/rc.local

1.10.6 生成终端或X Window来等待用户登录

1.11 Linux用户和用户组

Linux是一个多用户分时系统,想要使用系统资源,就必须在系统中有合法的账号,每个账号都有一个唯一的用户名,同时必须设置密码。在系统中使用用户的概念,一方面可以方便识别不同的用户,另一方面也可以为用户设置合理的文件权限,为每个用户的数据提供安全保障。另外,为了更灵活地管理用户和控制文件权限,Linux还采用了用户组的概念,这为系统管理提供了极大的便利。

1.11.1 UID和GID

1)User ID,简称UID,是用来区分不同用户的数字,系统会自动记录“用户名”和UID的对应关系。

Linux系统中的用户分为3类,即:

普通用户

指所有使用Linux系统的真实用户,这类用户可以使用用户名及密码登录系统。Linux有着极为详细的权限设置,所以一般来说普通用户只能在其家目录、系统临时目录或其他经过授权的目录中操作,以及操作属于该用户的文件。通常普通用户的UID大于500,因为在添加普通用户时,系统默认用户ID从500开始编号。

使用 id 命令可以查看当前用户的uid以及gid:

1
2
3
[user1@linux30 ~]$ id
uid=1003(user1) gid=1003(user1) 组=1003(user1) 环境=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023
[user1@linux30 ~]$

根用户

也就是root用户,它的ID是0,也被称为超级用户,root账户拥有对系统的完全控制权:可以修改、删除任何文件,运行任何命令。所以root用户也是系统里面最具危险性的用户,root用户甚至可以在系统正常运行时删除所有文件系统,造成无法挽回的灾难。所以一般情况下,使用root用户登录系统时需要十分小心。

1
2
3
[root@linux30 ~]# id
uid=0(root) gid=0(root) 组=0(root) 环境=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023
[root@linux30 ~]#

系统用户

系统运行时必须有的用户,但并不是指真实的使用者。比如在RedHat或CentOS下运行网站服务时,需要使用系统用户apache来运行httpd进程,而运行MySQL数据库服务时,需要使用系统用户mysql来运行mysqld进程。在RedHat或CentOS下,系统用户的ID范围是1~499。

1
2
3
4
5
6
7
8
[root@linux30 ~]# ps aux | grep apache
apache 2944 0.0 0.0 230440 3004 ? S 11:16 0:00 /usr/sbin/httpd -DFOREGROUND
apache 2945 0.0 0.0 230440 3004 ? S 11:16 0:00 /usr/sbin/httpd -DFOREGROUND
apache 2946 0.0 0.0 230440 3004 ? S 11:16 0:00 /usr/sbin/httpd -DFOREGROUND
apache 2947 0.0 0.0 230440 3004 ? S 11:16 0:00 /usr/sbin/httpd -DFOREGROUND
apache 2948 0.0 0.0 230440 3004 ? S 11:16 0:00 /usr/sbin/httpd -DFOREGROUND
root 2952 0.0 0.0 112824 984 pts/0 S+ 11:17 0:00 grep --color=auto apache

2)Group ID,简称GID,是用于区分不同用户组的ID。

在下面的例子中,使用ls -l查看文件时,第三列和第四列显示的是这个文件的所有者是用户root,所有组是root组,如果加上了-n参数,第三列和第四列则是用UID和GID来显示的,这里分别是0和0。

1
2
3
4
5
6
7
8
9
10
11
[root@linux30 ~]# ls -l
总用量 4
-rw-------. 1 root root 1440 9月 6 15:43 anaconda-ks.cfg
drwxr-xr-x. 5 root root 53 10月 21 17:49 logs
drwxr-xr-x. 4 root root 34 10月 25 15:47 nacos
[root@linux30 ~]# ls -ln
总用量 4
-rw-------. 1 0 0 1440 9月 6 15:43 anaconda-ks.cfg
drwxr-xr-x. 5 0 0 53 10月 21 17:49 logs
drwxr-xr-x. 4 0 0 34 10月 25 15:47 nacos
[root@linux30 ~]#

在Linux下每个用户都至少属于一个组。

想获取自己的UID:

1
2
3
[root@linux30 ~]# id
uid=0(root) gid=0(root) 组=0(root) 环境=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023
[root@linux30 ~]#

想获取自己所属的组:

1
2
3
[root@linux30 ~]# groups
root
[root@linux30 ~]#

1.11.2 /etc/passwd和/etc/shadow

在登录Linux时必须要输入用户名和密码。而系统用来记录用户名、密码最重要的两个文件就是/etc/passwd和/etc/shadow。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
[root@linux30 ~]# cat /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
games:x:12:100:games:/usr/games:/sbin/nologin
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
nobody:x:99:99:Nobody:/:/sbin/nologin
systemd-network:x:192:192:systemd Network Management:/:/sbin/nologin
dbus:x:81:81:System message bus:/:/sbin/nologin
polkitd:x:999:998:User for polkitd:/:/sbin/nologin
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
postfix:x:89:89::/var/spool/postfix:/sbin/nologin
+zuoer:x:1000:1000:zuoer:/home/zuoer:/bin/bash
jenkins:x:1001:1001::/home/jenkins:/bin/bash
elsearch:x:1002:1002::/home/elsearch:/bin/bash
user1:x:1003:1003::/home/user1:/bin/bash
apache:x:48:48:Apache:/usr/share/httpd:/sbin/nologin
[root@linux30 ~]#

可以看到,虽然每行的内容不一样,但格式却是一致的,即每行都是使用6个分隔号“:”隔开的7列字符串。

zuoer:x:1000:1000:zuoer:/home/zuoer:/bin/bash 行举例说明:

  • 用户名:zuoer
  • 密码:用x显示,为了安全起见,密码被保存到了/etc/shadow
  • UID:1000
  • GID:1000
  • 说明栏:itcast
  • 家目录:/home/zuoer
  • 登录shell:/bin/bash

/etc/passwd的第二列最早是在UNIX系统中用于记录密码的,但是这其中存在一个问题:由于每个用户都需要有读取这个文件的权限,而随着现代密码破解技术的发展,即便是加密的密码,也有被破解的可能,所以将密码从这个文件中剥离出去是非常必要的。目前Linux的做法是,将密码相关的信息保存到/etc/shadow中,而且默认只有root用户才有读的权限,其他人完全没有读取这个文件的可能。这种密码保存方式被称为“影子密码”

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
[root@linux30 ~]# cat /etc/shadow
root:$6$nSO49fZlgyjjRaK.$3xy9XDhZnVKiXowUn361Hm4MvEMUchpxFfh7MwgTqNH6Ei2n1/5Rov8c8FaGe0Ip1bLgiYlFRvYXT2gI83pdo.::0:99999:7:::
bin:*:18353:0:99999:7:::
daemon:*:18353:0:99999:7:::
adm:*:18353:0:99999:7:::
lp:*:18353:0:99999:7:::
sync:*:18353:0:99999:7:::
shutdown:*:18353:0:99999:7:::
halt:*:18353:0:99999:7:::
mail:*:18353:0:99999:7:::
operator:*:18353:0:99999:7:::
games:*:18353:0:99999:7:::
ftp:*:18353:0:99999:7:::
nobody:*:18353:0:99999:7:::
systemd-network:!!:18876::::::
dbus:!!:18876::::::
polkitd:!!:18876::::::
sshd:!!:18876::::::
postfix:!!:18876::::::
+zuoer:$6$KZ2JS3z84YRjYqqd$40JpwRFwMFQhHCdPC4NcTzsImXWThUfCBWeUJVRzjy1XyD/sCiz1IUfYq5GfLt0pEHvSwYD7M6WU9djS3EE9N.::0:99999:7:::
jenkins:$6$ISxnbeG3$h9xeLoMY4ZB.Zx8TVxNms.vdzLorlzDyii6veT3Mq1bNgZDP/X.4u3vTCnBpVCNDQQRy1qeXUvkHSKhGO8vXR.:18912:0:99999:7:::
elsearch:elasticsearch:18946:0:99999:7:::
user1:$6$uQDWyuAK$ysmwSzxwe/NxZ5VTIagfphx.voxsuFXHihlWJLMnR60xMZPMV5hsj5soemUXar85SV2d9riCgDVovJek/JlTu.:18978:0:99999:7:::
apache:!!:18978::::::
[root@linux30 ~]#

user1:$6$uQDWyuAK$ysmwSzxwe/NxZ5VTIagfphx.voxsuFXHihlWJLMnR60xMZPMV5hsj5soemUXar85SV2d9riCgDVovJek/JlTu.:18978:0:99999:7:::

  • 用户名:user1
  • 密码:$6$uQDWyuAK$ysmwSzxwe/NxZ5VTIagfphx.voxsuFXHihlWJLMnR60xMZPMV5hsj5soemUXar85SV2d9riCgDVovJek/JlTu.
  • 密码的最近修改日:18978
  • 密码不可修改的天数:0,随时可以修改
  • 密码重新修改的天数:99999
  • 密码失效前提前警告的天数:7
  • 密码失效宽限天数
  • 账号失效日期
  • 保留字段

ps: /etc/group 文件 用来保存系统中的所有组

1.12 分区

什么是分区格式?

磁盘的主要组成部分:

image-20220729224002222

磁盘,它是由一个个盘片组成的,从盘片的结构上来看 图中的一圈圈灰色同心圆为一条条磁道,从圆心向外画直线 ,可以将磁道划分为若干个弧段,每个磁道上一个弧段被称为一个扇区(图中绿色部分)。

扇区是磁盘的最小组成单元,通常是512字节

image-20220729224028805

磁盘物理结构:

磁头(head) 磁道(track) 柱面(cylinder) 扇区(sector) 盘片(platter)

image-20220729224052748

了解了磁盘物理组成,还需要了解磁盘分区是什么?

磁盘分区:指定分割区域起始与结束磁柱

磁盘分区是告诉操作系统,磁盘在此分割区域内可以存取的区域 例如A磁柱到B磁柱之间的区块,如此一来操作系统就能够知道它 可以指定区块进行文件读,写,查询等操作。

使用硬盘之前为什么需要格式化呢?

因为每种操作系统所设定的文件属性/权限,以及存放数据的格式有所不同

Ext2/Ext3/Ext4区别

  • 这仨都是文件系统格式 NFTS和FAT32

  • Linux kernel自2.6.28开始正式支持新的文件系统Ext4

  • Ext4是Ext3的改进版,修改了Ext3中部分重要的数据结构。

  • Ext3对Ext2,只是增加了一个日志功能而已。Ext4可以提供更佳的性能和可靠性,还有更为丰富的功能,更大的文件系统和更大的文件。

  • 较之Ext3所支持的最大16TB文件系统和最大2TB文件,Ext4分别支持1EB(1,048,576TB,1EB=1024PB,1PB=1024TB)的文件系统,以及16TB的文件。

  • 无限数量的子目录

    • Ext3只支持32,000个子目录,而Ext4支持无限数量的子目录
  • Extents(区段)

    • Ext3采用间接块映射,当操作大文件时,效率极其低下。比如一 个100MB大小的文件,在Ext3中要建立25,600个数据块(每个数 据块大小为4KB)的映射表。在Ext3中,每个物理块都需要一个 逻辑块结构与之相对应。
    • Ext4引入了extents概念,提高效率,每个extent为一组连续的数据块,理想情况下,上述文件则表示为只需要一个extent来记录 映射关系。
  • 多块分配

    • 当写入数据到Ext3文件系统中时,Ext3的数据块分配器每次只能 分配一个4KB的块,写一个100MB文件就要调用25,600次数据块 分配器,而Ext4的多块分配器“multiblockallocator”( mballoc)支持一次调用分配多个数据块。
  • 延迟分配

    • Ext3的数据块分配策略是尽快分配,而Ext4是尽可能地延迟分配,直 到文件在cache中写完才开始分配数据块并写入磁盘。
    • 如此能优化整个文件的数据块分配,显著提升性能。
  • 快速fsck(文件系统检查)

    • 老的fsck会很慢,因为它要检查所有的inode
    • Ext4给每个组的inode表中都过它们而只去检查那些在用的inode添加了一份未使用inode的列表,执行 fsck就可以跳过它们而只去检查那些在用的inode。
  • 日志校验

    • 日志是最常用的部分,也极易导致磁盘硬件故障,而从损坏的日志中恢复数据会导致更多的数据损坏。

    • Ext4的日志校验功能可以很方便地判断日志数据是否损坏,将过去两阶段日志机制合并成一个阶段,提高性能。

补充,两阶段提交:

(1) 文件系统将准备执行的事务的具体内容写入日志

(2) 文件系统进行文件操作

(3) 操作成功后,将事务具体的内容从日志中删除

  • “无日志”(NoJournaling)模式
    • Ext4允许关闭日志,以便某些有特殊需求的用户可以借此进一步 提升性能。
  • 在线碎片整理
    • Ext4支持在线碎片整理,并提供e4defrag工具进行个别文件或整 个文件系统的碎片整理。
  • inode相关特性
    • Ext4支持更大的inode,较之Ext3默认的inode大小128字节, Ext4为了在inode中容纳更多的扩展属性(如纳秒时间戳或inode 版本),默认inode大小为256字节。

swap介绍

swap(交换分区)概述 :

  • 使用磁盘存储内存不够而“溢出来”的内容。
  • 当系统的物理内存不够用的时候,就需要将物理内存中的一部分空间释放出来,以供当前运行的程序使用。
  • 最容易成为被释放的对象:一些很长时间没有什么操作的程序。 –被释放的空间中的内容被临时保存到swap空间中。等到那些被换出的程序
  • 要继续运行时,再从swap中恢复保存的数据到内存中。

一般来说可以按照如下规则设置swap大小:

  • 4G以内的物理内存, swap设置为内存的2倍。
  • 4-8G的物理内存, swap等于内存大小。
  • 8-64G 的物理内存, swap设置为8G。
  • 64-256G物理内存, swap设置为16G。

文件系统

image-20220729224922782

安装Linux时的自定义分区

如果在Linux安装的时候要自定义分区,

  • 挂载点/boot(安装Linux用的),文件类型ext4,大小200单位是MB。
  • swap(交换分区),设置大小为2048MB,(根据经验,低于4G的一般交换分区给2倍)
  • 新分区挂载到/(根分区),文件类型设置为ext4,大小选择磁盘剩余总容量。

1.13 网络基础知识

OSI七层和TCP/IP四层的关系

七层结构记忆方法:应、表、会、传、网、数、物

OSI七层网络模型 TCP/IP四层概念模型 对应网络协议
应用层(Application) 应用层 HTTP、TFTP, FTP, NFS, WAIS、SMTP
表示层(Presentation) Telnet, Rlogin, SNMP, Gopher
会话层(Session) SMTP, DNS
传输层(Transport) 传输层 TCP, UDP
网络层(Network) 网络层 IP, ICMP, ARP, RARP, AKP, UUCP
数据链路层(Data Link) 数据链路层 FDDI, Ethernet, Arpanet, PDN, SLIP, PPP
物理层(Physical) IEEE 802.1A, IEEE 802.2到IEEE 802.11
  • OSI引入了服务、接口、协议、分层的概念,TCP/IP借鉴了OSI的这些概念建立TCP/IP模型。
  • OSI先有模型,后有协议,先有标准,后进行实践;而TCP/IP则相反,先有协议和应用再提出了模型,且是参照的OSI模型。
  • OSI是一种理论下的模型,而TCP/IP已被广泛使用,成为网络互联事实上的标准。

传输协议:

  • TCP:transmission control protocol 传输控制协议
  • UDP:user data protocol 用户数据包协议

网络常用设备:交换机

image-20220729231758567

思考:MAC地址是全球唯一,为何不使用MAC地址连入互联网,而是使用IP地址呢?

身份证号也是唯一的,发快递时为何使用收件地址相同的道理

image-20220729230626075

家用路由器

将交换机和路由器合在了一体

image-20220729230656920

网络连接涉及概念

image-20220729230721244

  • IP地址(IPADDR)
1
2
3
4
5
6
IP地址=网络位+主机位
相同的网络,网络位肯定相同,主机位不一样
不同的网络,网络位肯定不同,主机位可能一样
比如:电话号码
北京:010-88889999
上海:021-12345678
  • 子网掩码(NETMASK)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
子网掩码(subnet mask)又叫网络掩码、地址掩码、子网络遮罩,它是一种用来指明一个IP地址的哪些位标识的是主机所在的子网,以及哪些位标识的是主机的位掩码。子网掩码不能单独存在,它必须结合IP地址一起使用。子网掩码只有一个作用,就是将某个IP地址划分成网络地址和主机地址两部分。
子网掩码是一个32位地址,用于屏蔽IP地址的一部分以区别网络标识和主机标识,并说明该IP地址是在局域网上,还是在远程网上。
子网掩码:在二进制的前提下,将网络位全置1,主机位全置0,作用是判断一个IP地址属于哪个网络。用法将IP地址与子网掩码按位做与运算。


IP地址与子网掩码按位做与运算
IP地址 子网掩码
192.168.1.10/24 (前24位为网络位) 255.255.255.0
192.168.1.8/24
运算演示:
11000000 10101000 00000001 00001010
11111111 11111111 11111111 00000000
-------------------------------------------------
11000000 10101000 00000001 00000000=192.168.1.0
  • 网关(GATEWAY)DNS
1
2
3
又称网间连接器、协议转换器
从一个房间走到另一个房间,必然要经过一扇门。同样,从一个网络向另一个网络发送信息,也必须经过一道“关口”,这道关口就是网关。顾名思义,网关(Gateway) 就是一个网络连接到另一个网络的“关口”。也就是网络关卡。

image-20220729230842814

  • DNS(Domain Name System,域名系统)
1
2
3
4
5
6
因特网上作为域名和IP地址相互映射的一个分布式数据库,能够使用户更方便的访问互联网,而不用去记住能够被机器直接读取的IP数串。通过主机名,最终得到该主机名对应的IP地址的过程叫做域名解析(或主机名解析)。DNS协议运行在UDP协议之上,使用端口号53。
主机名到IP地址的映射有两种方式:
1)静态映射,每台设备上都配置主机到IP地址的映射,各设备独立维护自己的映射表,而且只供本设备使用;
2)动态映射,建立一套域名解析系统(DNS),只在专门的DNS服务器上配置主机到IP地址的映射,网络上需要使用主机名通信的设备,首先需要到DNS服务器查询主机所对应的IP地址。
类似手机中通讯录(姓名-电话号码)

虚拟机的3种连接方式

1
2
3
4
5
1.NAT即为网络地址转换,通常它的名称为VMnet8,通过nat的连接方式可以使得虚拟机和真实机的网卡在不同的网段中,从而实现联网。
2.bridge即为桥接,通常它的名称为VMnet0,使用桥接的方式使得自己的虚拟机和自己的真实机网卡在同一个网段,从而实现联网。
3.host-only即为仅主机,通常它的名称是VMnet1,使用host-only的方式是不能和外界通信的,只能够和本机的物理网卡通信。
修改网络链接方式后,记得执行以下命令:
[root@localhost ~]# service network restart/status/start/stop

虚拟机网络连接之NAT模式

image-20220729231134979

虚拟机网络连接之桥接模式

image-20220729231120316

网络配置优化

1
2
3
4
5
6
7
8
9
10
11
为什么删除70-persistent-net.rules?
很多Linux distribution使用udev动态管理设备文件,并根据设备的信息对其进行持久化命名。
udev会在系统引导的过程中识别网卡,将mac地址和网卡名称对应起来记录在udev的规则脚本中。而对于克隆的新虚拟机,会自动为虚拟机的网卡生成MAC地址,当你克隆或者重装虚拟机软件时,由于你使用的是以前系统虚拟硬盘的信息,而该系统中已经有eth0的信息,对于这个新的网卡,udev会自动将其命名为eth1 (累加的原则),所以在你的系统启动后,你使用ifconfig看到的网卡名为eth1。
[root@localhost ~]# vim /etc/udev/rules.d/70-persistent-net.rules
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="00:0c:29:0f:fe:1a", ATTR{type}=="1", KERNEL=="eth*", NAME="eth0"

SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="00:0c:29:5e:8b:43", ATTR{type}=="1", KERNEL=="eth*", NAME="eth1"

如何把名字改回eth0?
udev记录网络规则的脚本为:/etc/udev/rules.d/70-persistent-net.rules
打开该文件,这时你会发现,里面有eth0,eth1 这两个网卡的信息,但实际上你ifconfig时只能发现eth1这一个网卡的信息,这时因为eth0根本就不存在。将其中eth0 的信息删掉,并将eth1这行信息中的设备名改为eth0,重启系统,你看到的网卡就是eth0了,或者删掉其中所有的信息重启系统udev会帮你发现新的设备的。

运行级别

1
2
3
4
5
6
7
8
9
10
Linux运行级别
!!0:关机
!!1:单用户
2:无网络的多用户
!!!3:命令行模式
4:未用
!!!5:GUI(图形桌面模式)
!!!6:重启
运行级别的切换
#init 运行级别

1.14 总结

当前章节主要介绍了Linux发行的主要版本(使用的是CentOS Linux release 7.6.1810 )、以及与Unix、Windows系统的区别;主要了解Linux是基于Unix的以及与Windows一样,Linux也是操作系统即可。