Linux第二次基础知识总结(rpm、yum、服务器基础、web、dhcp、nfs、ftp)开机过程

7、软件管理

------rpm

①RPM:RedHat软件包管理工具,似Windows里面的“添加/删除程序”

②rpm 执行安装是包
二进制包(Binary)以及源代码包(Source)两种。二进制包可以直接安装在计算机中,而源代码包将会由RPM自动编译、安装。源代码包经常以src.rpm作为后缀名。

③用命令组合:

-ivh:安装显示安装进度--install--verbose--hash
-Uvh:升级软件包--Update;
-qpl:列出RPM软件包内的文件信息[Query Package list];
-qpi:列出RPM软件包的描述信息[Query Package install package(s)];
-qf:查找指定文件属于哪个RPM软件包[Query File];
-Va:校验所有的RPM软件包,查找丢失的文件[View Lost];
-e:删除包

④复制代码

rpm -q samba //查询程序是否安装
rpm -ivh  /media/cdrom/RedHat/RPMS/samba-3.0.10-1.4E.i386.rpm //按路径安装并显示进度
rpm -ivh --relocate /=/opt/gaim gaim-1.3.0-1.fc4.i386.rpm    //指定安装目录

rpm -ivh --test gaim-1.3.0-1.fc4.i386.rpm    //用来检查依赖关系;并不是真正的安装;
rpm -Uvh --oldpackage gaim-1.3.0-1.fc4.i386.rpm //新版本降级为旧版本

rpm -qa | grep httpd      #[搜索指定rpm包是否安装]--all搜索*httpd*
rpm -ql httpd         #[搜索rpm包]--list所有文件安装目录

rpm -qpi Linux-1.4-6.i368.rpm #[查看rpm包]--query--package--install package信息
rpm -qpf Linux-1.4-6.i368.rpm #[查看rpm包]--file
rpm -qpR file.rpm       #[查看包]依赖关系
rpm2cpio file.rpm |cpio -div    #[抽出文件]

rpm -ivh file.rpm  #[安装新的rpm]--install--verbose--hash
rpm -ivh

rpm -Uvh file.rpm    #[升级一个rpm]--upgrade
rpm -e file.rpm      #[删除一个rpm包]--erase

④常用参数:

Install/Upgrade/Erase options:
复制代码

-i, --install                     install package(s)
-v, --verbose                     provide more detailed output
-h, --hash                        print hash marks as package installs (good with -v)
-e, --erase                       erase (uninstall) package
-U, --upgrade=<packagefile>+      upgrade package(s)
--replacepkge                    无论软件包是否已被安装,都强行安装软件包
--test                            安装测试,并不实际安装
--nodeps                          忽略软件包的依赖关系强行安装
--force                           忽略软件包及文件的冲突

Query options (with -q or --query):

-a, --all                         query/verify all packages
-p, --package                     query/verify a package file
-l, --list                        list files in package
-d, --docfiles                    list all documentation files
-f, --file                        query/verify package(s) owning file

一、RPM源代码包装安装

.src.rpm结尾的文件,这些文件是由软件的源代码包装而成的,用户要安装这类RPM软件包,必须使用命令:

rpm --recompile vim-4.6-4.src.rpm   #这个命令会把源代码解包并编译、安装它,如果用户使用命令:

rpm --rebuild vim-4.6-4.src.rpm  #在安装完成后,还会把编译生成的可执行文件
                                                           重新包装成i386.rpm的RPM软件包。

二、RPM包管理的用途

1、可以安装、删除、升级和管理软件;当然也支持在线安装和升级软件;
2、通过RPM包管理能知道软件包包含哪些文件,也能知道系统中的某个文件属于哪个软件包
3、可以在查询系统中的软件包是否安装以及其版本
4、作为开发者可以把自己的程序打包为RPM 包发布
5、软件包签名GPG和MD5的导入、验证和签名发布
6、依赖性的检查,查看是否有软件包由于不兼容而扰乱了系统

三、RPM 的使用权限;

RPM软件的安装、删除、更新只有root权限才能使用;对于查询功能任何用户都可以操作;如果普通用户拥有安装目录的权限,也可以进行安装;

四、rpm 的一点简单用法;

文件以.rpm 后缀结尾的才行;有时我们在一些网站上找到file.rpm ,都要用 rpm 来安装;

一)初始化rpm 数据库;

通过rpm 命令查询一个rpm 包是否安装了,也是要通过rpm 数据库来完成的;所以我们要经常用下面的两个命令来初始化rpm 数据库;

[root@localhost beinan]# rpm --initdb
[root@localhost beinan]# rpm --rebuilddb   
                                     long time;有时rpm 系统出了问题,不能安装和查询,大多是这里出了问题

二)RPM软件包管理的查询功能:

命令格式:rpm {-q|–query} [select-options] [query-options]

1、对系统中已安装软件的查询

1)查询系统已安装的软件; 语法:rpm -q 软件名

举例:

[root@localhost beinan]# rpm -q gaim
gaim-1.3.0-1.fc4

-q就是 --query ,中文意思是“问”,此命令表示的是,是不是系统安装了gaim ;如果已安装会有信息输出;如果没有安装,会输出gaim 没有安装的信息;

2)查看系统中所有已经安装的包,要加 -a 参数 ;

 [root@localhost RPMS]# rpm -qa

3)如果分页查看,再加一个管道 |和more命令;

 [root@localhost RPMS]# rpm -qa |more

在所有已经安装的软件包中查找某个软件,比如说 gaim ;可以用 grep 抽取出来;

[root@localhost RPMS]# rpm -qa |grep gaim

上面这条的功能和 rpm -q gaim 输出的结果是一样的;

4)查询一个已经安装的文件属于哪个软件包; 语法 rpm -qf 文件名

注:文件名所在的绝对路径要指出

举例:

[root@localhost RPMS]# rpm -qf /usr/lib/libacl.la
libacl-devel-2.2.23-8

5)查询已安装软件包都安装到何处; 语法:rpm -ql 软件名 或 rpm rpmquery -ql 软件名

举例:

 [root@localhost RPMS]# rpm -ql lynx
[root@localhost RPMS]# rpmquery -ql lynx

6)查询一个已安装软件包的信息:语法格式: rpm -qi 软件名

举例:

 [root@localhost RPMS]# rpm -qi lynx

7)查看一下已安装软件的配置文件; 语法格式:rpm -qc 软件名

举例:

   [root@localhost RPMS]# rpm -qc lynx

8)查看一个已经安装软件的文档安装位置: 语法格式: rpm -qd 软件名

举例:

[root@localhost RPMS]# rpm -qd lynx

9)查看一下已安装软件所依赖的软件包及文件; 语法格式: rpm -qR 软件名

举例:

  [root@localhost beinan]# rpm -qR rpm-python

查询已安装软件的总结:对于一个软件包已经安装,我们可以把一系列的参数组合起来用;比如 rpm -qil ;比如:

 [root@localhost RPMS]# rpm -qil lynx

2、对于未安装的软件包的查看

查看的前提是您有一个.rpm 的文件,也就是说对既有软件file.rpm的查看等;

1)查看一个软件包的用途、版本等信息; 语法: rpm -qpi file.rpm

举例:

 [root@localhost RPMS]# rpm -qpi lynx-2.8.5-23.i386.rpm

2)查看一件软件包所包含的文件; 语法: rpm -qpl file.rpm

举例:

  [root@localhost RPMS]# rpm -qpl lynx-2.8.5-23.i386.rpm

3)查看软件包的文档所在的位置; 语法: rpm -qpd file.rpm

举例:

 [root@localhost RPMS]# rpm -qpd lynx-2.8.5-23.i386.rpm

4)查看一个软件包的配置文件;

语法: rpm -qpc file.rpm

举例:
[root@localhost RPMS]# rpm -qpc lynx-2.8.5-23.i386.rpm

4)查看一个软件包的依赖关系:语法: rpm -qpR file.rpm

举例:

[root@localhost archives]# rpm -qpR yumex_0.42-3.0.fc4_noarch.rpm
/bin/bash
/usr/bin/python
config(yumex) = 0.42-3.0.fc4
pygtk2
pygtk2-libglade
rpmlib(CompressedFileNames) <= 3.0.4-1
rpmlib(PayloadFilesHavePrefix) <= 4.0-1
usermode
yum >= 2.3.2

三)软件包的安装、升级、删除等;

1、安装和升级一个rpm 包;

[root@localhost beinan]#rpm -vih file.rpm 注:这个是用来安装一个新的rpm 包;
[root@localhost beinan]#rpm -Uvh file.rpm 注:这是用来升级一个rpm 包;

如果有依赖关系的,请解决依赖关系,其实软件包管理器能很好的解决依赖关系,请看前面的软件包管理器的介绍;如果您在软件包管理器中也找不到依赖关系的包;那只能通过编译他所依赖的包来解决依赖关系,或者强制安装;

语法结构:

[root@localhost beinan]# rpm -ivh file.rpm --nodeps --force
[root@localhost beinan]# rpm -Uvh file.rpm --nodeps --force

2、删除一个rpm 包

首先您要学会查询rpm 包 ;请看前面的说明;

[root@localhost beinan]#rpm -e 软件包名

举例:我想移除lynx 包,完整的操作应该是:

[root@localhost RPMS]# rpm -e lynx

如果有依赖关系,您也可以用–nodeps 忽略依赖的检查来删除。但尽可能不要这么做,最好用软件包管理器 systerm-config-packages 来删除或者添加软件;

[root@localhost beinan]# rpm -e lynx --nodeps

四)、导入签名:

[root@localhost RPMS]# rpm --import 签名文件

举例:

[root@localhost fc40]# rpm --import RPM-GPG-KEY
[root@localhost fc40]# rpm --import RPM-GPG-KEY-fedora

五)、对已安装软件包查询的一点补充;

[root@localhost RPMS]# updatedb
[root@localhost RPMS]# locate              软件名或文件名

通过updatedb,我们可以用 locate 来查询一些软件安装到哪里了;系统初次安装时要执行updatedb ,每隔一段时间也要执行一次;以保持已安装软件库最新;updatedb 是slocate软件包所有;如果您没有这个命令,就得安装slocate ;

举例:

[root@localhost RPMS]# locate gaim

六)、从rpm软件包抽取文件;

命令格式: rpm2cpio file.rpm |cpio -div

举例:

[root@localhost RPMS]# rpm2cpio gaim-1.3.0-1.fc4.i386.rpm |cpio -div

抽取出来的文件就在当用操作目录中的 usr 和etc中;

其实这样抽到文件不如指定安装目录来安装软件来的方便;也一样可以抽出文件;

为软件包指定安装目录:要加 -relocate 参数;下面的举例是把gaim-1.3.0-1.fc4.i386.rpm指定安装在 /opt/gaim 目录中;

  [root@localhost RPMS]# rpm -ivh --relocate /=/opt/gaim gaim-1.3.0-1.fc4.i386.rpm
   Preparing... ########################################### [100%]
  1:gaim ########################################### [100%]
  [root@localhost RPMS]# ls /opt/
   gaim

这样也能一目了然;gaim的所有文件都是安装在 /opt/gaim 中,我们只是把gaim 目录备份一下,然后卸掉gaim;这样其实也算提取文件的一点用法;

七)、RPM的配置文件;

RPM包管理,的配置文件是 rpmrc ,我们可以在自己的系统中找到;比如Fedora Core 4.0中的rpmrc 文件位于;

 [root@localhost RPMS]# locate rpmrc
/usr/lib/rpm/rpmrc
/usr/lib/rpm/redhat/rpmrc

我们可以通过 rpm --showrc 查看;具体的还得我们自己来学习。呵。。。不要问我,我也不懂;只要您看了这篇文章,认为对您有用,您的水平就和我差不多;咱们水平是一样的,所以我不能帮助您了;请理解;

------yum

一、查询

1、査询yum源服务器上所有可安装的软件包列表

#查询所有可用软件包列

[root@localhost yum.repos.d]# yum list                    

#已经安装的软件包

Installed Packages                         

查询yum源服务器中是否包含某个软件包
#查询单个软件包

 [root@localhost yum.repos.d]# yum list 包名

例如:
[root@localhost yum.repos.d]# yum list samba
Available Packages samba.i686 3.5.10-125.el6 c6-media
#搜索yum源服务器上所有和关键字相关的软件包

例如:
[root@localhost yum.repos.d]# yum search 关键字
#搜索yum服务器上所有和关键字相关的软件包

例如:
[root@localhost yum.repos.d]# yum search samba
#搜索服务器上所有和samba相关的软件包
========================N/S Matched:
samba =============================
samba-client.i686:Samba client programs
samba-common.i686:Files used by both Samba servers and clients
samba-doc.i686: Documentation for the Samba suite
…省略部分输出…
Name and summary matches only, use"search all" for everything.

2、查询指定软件包的信息

[root@localhost yum.repos.d]# yum info samba
#查询samba软件包的信息

Available Packages <-没有安装
Name : samba <-包名
Arch : i686 <-适合的硬件平台
Version : 3.5.10 <―版本
Release : 125.el6 <—发布版本
Size : 4.9M <—大小
Repo : c6-media <-在光盘上
…省略部分输出…

3、 安装

[root@localhost yum.repos.d]# yum -y install 包名

选项: install:安装;
-y:自动回答yes。如果不加 -y,那么每个安装的软件都需要手工回答yes;

例如:#使用yum自动安装gcc

 [root@localhost yum jepos.d]#yum -y install gcc

在讲 RPM 包安装时提到,gcc 是 C 语言的编译器,其依赖的软件包比较多,手工使用 RPM 包安装太麻烦了,所以使用 yum 安装。

yum 安装可以自动解决依赖性,而且安装速度也比源码包快得多。不过,yum 到底安装的还是 RPMS,所以 rpm 命令还是必须学习和使用的。

4、升级

[root@localhost yum.repos.d]# yum -y update 包名

#升级指定的软件包

选项:update:升级;
-y:自动回答yes;

注意,在进行升级操作时,yum 源服务器中软件包的版本要比本机安装的软件包的版本高。
[root@localhost yum.repos.d]# yum -y update
#升级本机所有软件包

这条命令会升级系统中所有的软件包。不过我们的生产服务器是稳定优先的,所以这种全系统升级的情况并不多见。

5、卸载

再次强调一下,除非你确定卸载的软件的依赖包不会对系统产生影响,否则不要执行 yum 的卸载,因为很有可能在卸载软件包的同时卸载的依赖包也是很重要的系统文件,这就有可能导致系统崩溃

卸载命令如下:#卸载指定的软件包

[root@localhost yum.repos.d]# yum remove 包名

例如:#卸载samba软件包

[root@localhost yum.repos.d]# yum remove samba

服务器基础 以下

定义

:服务器英文名称为“Server”,指的是网络环境下为客户机(Client)提供某种服务的专用计算机,服务器安装有网络操作系统(如Windows 2000 Server、Linux、Unix等)和各种服务器应用系统软件(如Web服务、电子邮件服务)的计算机。这里的“客户机”指安装有DOS、Windows 9x等普通用户使用的操作系统的计算机。

服务器的处理速度和系统可靠性都要比普通PC要高得多,因为服务器是在网络中一般是连续不断工作的。普通PC死机了大不了重启,数据的丢失损失也仅限于单台电脑。服务器则完全不同,许多重要的数据都保存在服务器上,许多网络服务都在服务器上运行,一旦服务器发生故障,将会丢失大量的数据,造成的损失是难以估计的,而且服务器提供的功能如代理上网、安全验证、电子邮件服务等都将失效,从而造成网络的瘫痪,对服务器可靠性的要求可见一斑。

一、服务器的种类

1、按网络规模划分

  • 工作组级服务器
    用于联网计算机在几十台左右或者对处理速度和系统可靠性要求不高的小型网络,其硬件配置相对比较低,可靠性不是很高。

  • 部门级服务器
    用于联网计算机在百台左右、对处理速度和系统可靠性中等的中型网络,其硬件配置相对较高,其可靠性居于中等水平。

  • 企业级服务器
    用于联网计算机在数百台以上、对处理速度和数据安全要求最高的大型网络,硬件配置最高,系统可靠性要求最高。 需要注意的是,这三种服务器之间的界限并不是绝对的,而是比较模糊的,比如工作组级服务器和部门级服务器的区别就不是太明显,有的干脆统称为“工作组/部门级”服务器。

2、按架构划分(芯片)

按照服务器的结构,可以分为CISC(复杂指令集)架构的服务器和RISC(精简指令集)架构的服务器:

  • IA架构服务器(Intel Architecture Server)-即通常所讲的PC服务器,采用x86(CISC)芯片并且主要采用Windows NT/Windows2000、Linux、FreeBSD等操作系统的服务器,如Intel PentiumIII(P4)和Intel (P4)Xeon(至强)等。
  • RISC架构的服务器指采用非英特尔架构技术的服务器, 使用RISC芯片并且主要采用UNIX操作系统的服务器,如SUN公司的SPARC、HP公司的PA-RISC、DEC的Alpha芯片、SGI公司的MIPS等;
    由于RISC架构服务器的性能和价格比CISC架构的服务器高得多。近几年来,随着PC技术的迅速发展,IA架构服务器与RISC架构的服务器之间的技术差距已经大大缩小,用户基本上倾向于选择IA架构服务器,但是RISC架构服务器在大型、关键的应用领域中仍然居于非常重要的地位。

3、按用途划分

按照使用的用途,服务器又可以分为通用型服务器和专用型(或称“功能型”)服务器,如实达的沧海系列功能服务器。

  • 通用型服务器是没有为某种特殊服务专门设计的可以提供各种服务功能的服务器,当前大多数服务器是通用型服务器。
  • 专用型(或称“功能型”)服务器是专门为某一种或某几种功能专门设计的服务器,在某些方面具有与通用型服务器有所不同。如光盘镜像服务器是用来存放光盘镜像的,那么需要配备大容量、高速的硬盘以及光盘镜像软件。

4、按外观划分

按照服务器的外观,可以分为台式服务器和机架式服务器以及刀片服务器

  • 台式服务器有的采用大小与立式PC台式机大致相当的机箱,有的采用大容量的机箱,像一个硕大的柜子一样,主要分为单塔式和双塔式,如下图所示。

  • 机架式服务器的外形看起来不像计算机,而是像交换机,有1U(1U=1.75英寸)、2U、4U等规格,如下图所示。机架式服务器安装在标准的19英寸机柜里面。

  • 刀片服务器
    刀片服务器是一种称之为“HAHD(High Availability High Density,高可用高密度)”的低成本服务器平台,是专门为特殊应用行业和高密度计算机环境设计的。在结构上它比前面介绍的机架式服务器更紧凑,因为它像刀片一样非常薄,而且可以根据需要选择是否插入整个服务器系统的机柜中,所以称之为“刀片服务器”,如下图。主要应用集群服务。

二、Web工作原理

1、定义

  • Web服务器通过copyHTTP协议进行通信,Web服务器有是也叫HTTP服务器或Web容器,HTTP协议采用的是请求/响应模式,即客户端发起HTTP请求,web服务器接收并解析处理HTTP请求,bai然后将HTTP响应发送给客户端。

  • Web服务器指的是一个软件程序,例如Apache Tomcat、Jboos等,它们的作用就是管理Web应用,当客户端发出一个HTTP请求,相应的Web服务器接收HTTP请求后,调用相应的web应用处理请求,然后Web服务器再将响应结果返回给客户端
    在这里插入图片描述

2、网址的意义:

web服务器提供的这些数据大部分都是文件,那么我们需要在服务器端先将数据文件写好,并且放置在某个特殊的目录下面,这个目录就是我们整个网站的首页,在redhat中,这个目录默认在/var/www/html。浏览器是通过你在地址栏中输入你所需要的网址来取得这个目录的数据的。

端口:http为80。https为443。

IANA:互联网数字分配机构
0-1023:众所周知,永久地分配给固定的应用程序使用,特权端口
                                     (只有管理员有权限启用并让进程监听);
1024-41951:亦为注册端口,但要求不是特别严格,分配给程序注册为某应用使用:3306/TCP
41952-60000:客户端程序随机使用的端口,动态端口,或私有端口;
浏览器与服务器之间传递数据的方法:

3、状态代码由三位数字组成,第一个数字定义了响应的类别,且有五种可能取值。

1xx:指示信息 —— 表示请求已接收,继续处理。
2xx:成功 —— 表示请求已被成功接收、理解、接受。
3xx:重定向 —— 要完成请求必须进行更进一步的操作。
4xx:客户端错误 —— 请求有语法错误或请求无法实现。
5xx:服务器端错误 —— 服务器未能实现合法的请求。

4、常见状态代码、状态描述的说明如下。

200 OK:客户端请求成功。
400 Bad Request:客户端请求有语法错误,不能被服务器所理解。
401 Unauthorized:请求未经授权,这个状态代码必须和 WWW-Authenticate 报头域一起使用。
403 Forbidden:服务器收到请求,但是拒绝提供服务。
404 Not Found:请求资源不存在,举个例子:输入了错误的URL。
500 Internal Server Error:服务器发生不可预期的错误。
503 Server Unavailable:服务器当前不能处理客户端的请求,一段时间后可能恢复正常。

5、搭建动态网站的需求:

1、可支持的操作系统:让所有需要的软件都能够进行安装。

2、可运行的www服务器:例如Apache。

3、网页程序语言:Perl(Practical Extraction and Report Language,实用报表提取语言)、PHP(Hypertext Preprocessor,超文本预处理器,是一种通用开源脚本语言)、JSP(Java Server Pages,java服务器页面)、CGI(Common Gateway Interface,公共网关接口)、ASP(Active Server Pages,动态服务器页面)。

4、数据存储的数据库系统 :MySQL、MSSQL、Oracle等。

6、LAMP(linux+Apache+MySQL+PHP)

  • Apache主要提供www的服务器平台
  • MySQL:传统的文件读取是很麻烦的,如果你只要读取该文件当中的一小部分,系统还是会将整个文件读出来,若又有人同时读取同一个文件时,那就会造成效率与系统上的问题,所以才会有数据库系统的推出。数据库其实是一种特殊格式的文件,这种文件要通过特殊接口(数据库软件)来进行读写。由于这个特殊接口已经针对数据的查询、写入做过优化设计,因此很适合多人同时写入与查询工作。
  • PHP:PHP可以被用来建立动态网页,PHP程序代码可以直接在HTML网页当中嵌入,就像编辑HTML网页一样简单。PHP是一种“程序语言”,这种程序语言可以直接在网页当中编写,不需要经过编译即可执行。

7、 HTTP浏览器与服务器传送数据方法

在这里插入图片描述

三、dhcp工作原理

1、定义

dhcp(Dynamic Host configuration Protocol,动态主机配置协议 )是一个局域网的网络协议,它主要是通过客户端发送广播数据包给整个物理网段内的所有主机,若局域网内有DHCP服务器时,才会响应客户端的IP参数要求。

DHCP是一种C/S架构,主要用户互联网主机动态获取IP地址的协议
DHCP有3种工作方式

  • 自动分配方式,DHCP为PC指定一个永久性的IP地址,一旦PC与DHCP服务器租到该IP,可永久使用
  • 动态分配方式, 目前用的最多的一种方式, DHCP服务器给PC时间限制的IP地址,时间到期后自动续租,或者放弃
  • 手工分配方式,客户端IP地址由网络管理员自己指定,DHCP服务器只是将指定IP地址告诉主机

2、客户端取得IP参数的过程如下:

(1)客户端:利用广播数据包发送搜索DHCP服务器的数据包
若客户端网络设置使用DHCP协议取得IP,则当客户端开机或者是重新启动网卡时,客户端主机会发送出查找DHCP服务器的UDP数据包(discover)给所有物理网段内的计算机。因为客户端还不知道自己属于哪一个网络,所以该数据包的来源地址会为0.0.0.0,而目的地址则为255.255.255.255。一般主机接收到这个数据包之后会直接丢弃,若局域网内有DHCP服务器,则会开始后续行为。

(2)服务器端:提供客户端网络相关的租约以供选择。(dhcp offer)
DHCP服务器在监听到客户端发出的dhcp discover广播后,会针对这个客户端的硬件地址( MAC)与本身的设置数据进行下列工作:
到服务器的日志文件中查找该用户之前是否曾经租用过某个IP,若有且该IP目前无人使用,则提供此IP给客户端。
若配置文件针对该MAC地址提供特定的固定IP时,则提供该固定的IP给客户端。
若不符合上述两个条件,则随机选取当前没有被使用的IP参数给客户端,并记录下来。

(3)客户端:决定选择DHCP服务器提供的网络参数租约并向服务器确认。
由于局域网内可能并非仅有一台DHCP服务器,但客户端仅能接收一组网络参数租约,因此客户端只会挑选其中一个DHCP offer(通常是最先抵达的那个)。当决定好使用此服务器的网络参数租约后,客户端便开始使用这组网络参数来配置自己的网络环境。此外,客户端会发送一个dhcp request广播数据包给所有物理网段内的主机,告知已经接受该服务器的租约(此时若有两台以上的DHCP服务器,则这些没有被接受的服务器会收回该IP租约。)。同时,客户端还会向网络发送一个ARP封包,查询网络上面有没有其他机器使用该IP地址;如果发现该IP地址已经被占用,客户端则会送出一个DHCPDECLIENT包给DHCP服务器,拒绝接受其DHCP offer,并重新发送DHCP discover信息。

(4)服务器端::记录该次租约行为后并向客户端发送响应数据包信息以确认客户端的使用。`
当服务器端收到客户端的确认选择后,服务器会回送确认的dhcp ack响应数据包,并且告知客户端这个网络参数租约的期限,并且开始租约计时。那么该次租约何时会到期而被解约,

有以下几种情况:

  • 客户端脱机:关闭网络接口、重新启动、关机等行为,都算是脱机状态,这个时候server端就会将该IP地址收回,并放到server的备用区中,以便日后使用。
    客户端租约到期:dhcp server端发放的IP有使用的期限,客户端使用这个IP到达期限规定的时间,而且没有重新提出DHCP的申请时,server端就会将该IP收回,这个时候就会断线。但用户也可以向DHCP服务器再次要求分配IP。
    由于目前的DHCP客户端程序大多数会主动依据租约时间去重新申请IP,所以即使有租约期限,也不需要在某个时间点手动去重新申请IP。一般情况下,假设租约时间是T小时,那么客户端程序在0.5T时会主动向DHCP服务器发出重新要求网络参数的数据包。如果这次数据包请求没有成功,那么在0.85T后还会再次发送数据包一次。正因如此,所以服务器端会启动port67监听客户端请求,而客户端会启动port68主动向服务器请求。
    在这里插入图片描述
  • DHCP Discover报文(客户端发出):用户服务器的发现
  • DHCP Offer报文(服务器发出):用于响应客户端的Discover报文,提供可分配IP地址范围
  • DHCP Request报文(客户端发出):用于请求租用IP地址
  • DHCP Ack报文(服务端发出):用于响应客户端的Request报文,为客户端分配IP地址
  • DHCP Decline报文(客户端发出):当租用IP地址不可用时,用于请求服务器禁用该IP地址
  • DHCP Release报文(客户端发出):用于客户端释放IP地址

四、dns解析原理

1、定义:

  • DNS解析主要分为两段,一段递归,一段迭代
    递归查询: 在客户端与本地服务器之间查询的方式,为递归查询
    迭代查询: 是服务器与服务器之间查询的方式,为迭代查询、

在这里插入图片描述

①、在浏览器中输入www . qq .com 域名,操作系统会先检查自己本地的hosts文件是否有这个网址映射关系,如果有,就先调用这个IP地址映射,完成域名解析。

②、如果hosts里没有这个域名的映射,则查找本地DNS解析器缓存,是否有这个网址映射关系,如果有,直接返回,完成域名解析。

③、如果hosts与本地DNS解析器缓存都没有相应的网址映射关系,首先会找TCP/IP参数中设置的首选DNS服务器,在此我们叫它本地DNS服务器,此服务器收到查询时,如果要查询的域名,包含在本地配置区域资源中,则返回解析结果给客户机,完成域名解析,此解析具有权威性。

④、如果要查询的域名,不由本地DNS服务器区域解析,但该服务器已缓存了此网址映射关系,则调用这个IP地址映射,完成域名解析,此解析不具有权威性。

⑥、如果本地DNS服务器本地区域文件与缓存解析都失效,则根据本地DNS服务器的设置(是否设置转发器)进行查询,如果未用转发模式,本地DNS就把请求发至13台根DNS,根DNS服务器收到请求后会判断这个域名(.com)是谁来授权管理,并会返回一个负责该顶级域名服务器的一个IP。本地DNS服务器收到IP信息后,将会联系负责.com域的这台服务器。这台负责.com域的服务器收到请求后,如果自己无法解析,它就会找一个管理qq.com的DNS服务器地址给本地DNS服务器。当本地DNS服务器收到这个地址后,就会找qq.com域服务器,重复上面的动作,进行查询,直至找到www . qq .com主机。

⑦、如果用的是转发模式,本地DNS服务器就会把请求转发至上一级DNS服务器,由上一级服务器进行解析,上一级服务器如果不能解析,或找根DNS或把请求转至上上级,以此循环。找到最后把结果返回给本地DNS服务器,由此DNS服务器再返回给客户机。
注:从客户端到本地DNS服务器是属于递归查询,而DNS服务器之间使用的交互查询就是

⑧迭代查询。
114.114.114.114是国内移动、电信和联通通用的DNS,手机和电脑端都可以使用,干净无广告,解析成功率相对来说更高,国内用户使用的比较多,而且速度相对快、稳定,是国内用户上网常用的DNS。
8.8.8.8是GOOGLE公司提供的DNS,该地址是全球通用的,相对来说,更适合国外以及访问国外网站的用户使用。

2、NFS的作用

NFS(Network File System)网络文件系统的缩写,最大的功能就是可以通过网络,让不同的机器、不同的操作系统可以共享彼此的文件

NFS服务器可以让PC将网络中的NFS服务器共享的目录挂载到本地端的文件系统中,而在本地端的系统中来查看,那个远程主机的目录就好像是自己的一个磁盘分区一样,在使用上相当的便利

在这里插入图片描述
有权限的客户端可以将NFS服务器中的共享目录,挂载到本地的目录中,这样客户端就可以查看共享目录中的数据,当然也会受权限限制NFS客户端服务端的通讯过程

3、NFS客户端与服务端的通讯过程

RPC主要用来管理NFS通信端口

NFS通信需要依靠 RPC(Remote Procedure Call) 远程过程调用的帮助,RPC主要是指每个NFS功能所对应的的Port number,并且回报给客户端,让客户端可以连接到正确的port上去

在这里插入图片描述
注册端口->达成协议->直接建立联系->达成协议->建立连接

  • 服务器端启动RPC服务,开启111端口
  • 服务端启动NFS服务,并向RPC注册端口信息
  • 客户端启动RPC(portmap服务),向服务端的RPC(portmap)服务请求服务端的NFS端口
  • 服务端的RPC(portmap)服务反馈NFS端口信息给客户端
  • 客户端通过获取的NFS端口来建立和服务器的NFS连接并进行数据的传输

4、NFS的优缺点分析

  1. 优点

     节省本地存储空间,将常用的数据存放在一台服务器可以通过网络访问
     简单容易上手
    方便部署非常快速,维护十分简单
    
  2. 缺点

     * 局限性容易发生单点故障,及server机宕机了所有客户端都不能访问
     * 在高并发下NFS效率/性能有限
     * 客户端没有用户认证机制,且数据是通过明文传送,
                               安全性一般(一般建议在局域网内使用)
    
*  NFS的数据是明文的,对数据完整性不做验证
* 多台机器挂载NFS服务器时,连接管理维护麻烦

5、搭建DNS服务器

提供DNS服务的软件叫bind,服务名是named。

[root@localhost ~]# yum install bind -y
[root@localhost ~]# rpm -ql bind
/etc/named.conf              # bind主配置文件
/etc/named.rfc1912.zones     # 定义zone的文件
/etc/rndc.conf               # rndc配置文件
/usr/sbin/named-checkconf    # 检测/etc/named.conf文件语法
/usr/sbin/named-checkzone    # 检测zone和对应zone文件的语法
/usr/sbin/rndc               # 远程dns管理工具
/usr/sbin/rndc-confgen       # 生成rndc密钥
/var/named/named.ca          # 根解析库
/var/named/named.localhost   # 本地主机解析库
/var/named/slaves            # 从ns服务器文件夹
[root@localhost ~]# vim /etc/named.conf 
options {
定义监听端口,如果所有地址都监听,则只写端口
        listen-on port 53 { 127.0.0.1; };
        listen-on-v6 port 53 { ::1; };

定义数据文件目录

    directory       "/var/named";
    dump-file       "/var/named/data/cache_dump.db";
    statistics-file "/var/named/data/named_stats.txt";统计档案、文件
    memstatistics-file "/var/named/data/named_mem_stats.txt";分配统计目录
    allow-query     { localhost; };只允许本地主机进行查询
    recursion yes;允许递归
    logging {

指定日志记录分类和他们的目标位置

       channel default_debug {
     file "data/named.run";
         severity dynamic;
        };
};
zone "." IN {

定义区域
        type hint;
        file "named.ca";
};


包含其他的配置文件
include "/etc/named.rfc1912.zones";
include "/etc/named.root.key";
 

六、FTP的主动模式和被动模式

1、工作流程

FTP的传输使用的是TCP数据包协议。FTP服务器使用了两个连接,分别是命令通道与数据流通道。由于是TCP数据包,这两个连接都需要经过三次握手。

-建立命令通道的过程
客户端会随机获取一个大于1024以上的端口来与FTP服务器端的port 21来实现连接,这个过程需要三次握手。实现连接后客户端便可以通过这个连接来对FTP服务器执行命令,查询文件名、下载、上传等命令都是利用这个通道来执行的。

FTP 文件传输协议,应用层文件共享服务,应用于C/S架构

端口:TCP 21(命令端口),TCP 20(数据端口)

模式:主动模式和被动模式

2、FTP的主动模式:通知FTP服务器端使用主动连接且告知连接的端口号

在这里插入图片描述

  • FTP服务器的端口21号主要用在命令的执行,但是牵涉到数据流时,就不是使用这个连接了。客户端在需要数据的情况下,会告知服务器端要用什么方式来连接,如果是主动连接,客户端会先随机启用一个端口,且通过命令通道告知FTP服务器这两个信息,并等待FTP服务器的连接。

  • FTP服务器主动向客户端连接

    FTP服务器由命令通道了解客户端的需求后,会主动地由port 20向客户端的数据端口连接,这个连接也会经过三次握手。此时FTP的客户端与服务器端会建立两条连接,分别用在命令的执行与数据的传递。而默认FTP服务器端使用的主动连接端口就是port 20。

    数据传输通道是在有数据传输的行为时才会建立的通道,并不是一开始连接到FTP服务器就立刻建立的通道。
    -注意:port 21主要接收来自客户端的主动连接,port 20则为FTP服务器主动连接至客户端。

FTP主动模式优缺点分析

1. 优点
服务端配置简单,利于服务器安全管理,服务器只需要开放21端口

2. 缺点
如果客户端开启了防火墙,或者客户端处于内网(NAT网关之后),
                                        那么服务器对客户端端口发起的连接可能会失败

3、FTP的被动模式 :客户端选择被动式连接模式

-客户端通过命令通道发出被动式连接要求,并等待服务器的回应。

FTP服务器启动数据端口,并通知客户端连接
如果你所使用的FTP服务器是能够处理被动式连接的,此时FTP服务器会先启动一个监听端口。这个端口号码可以是随机的,也可以自定义某一范围的端口,这要看FTP服务器软件而定。然后FTP服务器会通过命令通道告知客户端这个已经启动的端口port pasv,并等待客户端的连接。

客户端随机取用大于1024的端口进行连接
然后客户端会随机取用一个大于1024的端口号来进行对主机的port pasv连接。如果一切都没有问题的话,那么FTP数据就可以通过客户端的随机端口和服务端的port pasv来传送了。

在这里插入图片描述
FTP被动模式优缺点分析

1. 优点
服务器配置管理复杂,不利于安全,服务器需要开放随机的高端口以便客户端可以连接, 
                                因此大多数的FTP服务软件都可以手动配置被动端口的范围
2. 缺点
对于客户端网络环境没有要求,便于客户端进行管理

4、ftp的使用以及软件的安装

为了更安全的使用FTP协议,只介绍较为安全但功能较少的vsftpd这个软件。vsftpd(very secure FTP daemon)。vsftpd是一个设计的较为安全的FTP服务器软件,它的特点如下:

  • (1)vsftpd服务的启动者身份为一般用户,所以对linux系统的权限较低,对于linux系统的危害就相对降低了。此外,vsftpd也利用chroot这个函数来进行改换根目录的操作,使得系统工具不会被vsftpd这个服务所利用。

  • (2)任何需要具有较高执行权限的vsftpd命令均以一个特殊的上层程序所控制,该上层程序享有的较高执行权限功能已经被限制的比较低,并以不影响linux系统本身的系统为准。

  • (3)绝大部分FTP会使用到的额外命令功能(例如ls,cd等)都已经被整合到vsftpd主程序当中了,因此理论上vsftpd不需要使用到额外的系统提供的命令。

  • (4)所有来自客户端且想要使用这个上层程序所提供的较高执行权限的vsftpd命令的需求,均被视为不可信任的要求来处理,必须要经过相当程度的身份确认后,才可以利用上层程序的功能。

  • (5)关于上层程序,会使用chroot的功能来限制用户的执行权限。

七、Linux系统的启动过程

在这里插入图片描述

1、计算机通电,载入ROM芯片的BIOS程序,BIOS程序读取CMOS(电脑主板上可读写的RAM芯片),进行自检和初始化

2、读取执行第一个开始设备 MBR(主引导记录,是装有Linux系统的硬盘的第一个扇区) 的boot loader(GRUB2多重操作系统启动管理器,用来引导不同的系统)

3、 载入kernel(实时操作系统),kernel会检测硬件和载入驱动程序

4、(呼叫systemd程序)当硬件驱动成功后,kernel会主动呼叫systemd程序,以default.target流程开机

5、 (初始化,准备作业系统)systemd 执行sysinit.target初始化系统及basic.target准备作业系统
(启动本机服务)systemd 启动multi-user.target下本机服务
(执行文件)systemd 执行multi-user.target下的/etc/rc.d/rc.local文件
(登入服务)systemd 执行multi-user.target下的getty.target以及登入服务
(执行服务)systemd执行graphical需要的服务

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值