第三次作业

发布时间 2023-12-31 16:56:19作者: 过心不忘

一. 总结raid 0, 1, 5, 10, 01的工作原理。总结各自的利用率,冗余性,性能,至少几个硬盘实现。

  raid0

    工作原理:所有文件都会平均分配存储到各个磁盘中

    冗余性:0

    性能:n

    最少磁盘数:1

  raid1

    工作原理:每个磁盘都会存储所有文件,彼此之间互为镜像

    冗余性:n-1

    性能:读性能n,写性能1

    最少磁盘数:2

  raid5

    工作原理:所有文件和校验和都会平均分配到N个磁盘中

    冗余性:1

    性能:n-1

    最少磁盘数:3

  raid10

    工作原理:磁盘之间先做raid1组成磁盘阵列组,再将阵列组之间做raid0

    最少磁盘数:4

  raid01

    工作原理:磁盘之间先做raid0组成磁盘阵列组,再将阵列组之间做raid1

    最少磁盘数:4


二. 完成对LVM磁盘扩容及缩容示例。

  扩展逻辑卷示例

    1.创建逻辑卷lv-gx1,lv-gx2

    2.查看逻辑卷

    3.扩展逻辑卷lv-gx1为20G

    4.使用resize2fs命令对lv-gx1进行文件系统同步

   缩容逻辑卷示例

    1.取消逻辑卷挂载

    2.使用fsck检测逻辑卷文件系统

    3.缩减lv-gx1文件系统大小

    4.缩减逻辑卷lv-gx1大小

    5.重新挂载

 
三. 总结程序包管理器有哪些,以及包中包含什么内容的文件,尝试这些文件如何获取命令获取? yum/dnf/apt总结程序包获取途径,以及rpm, yum, apt命令选项示例。

  程序包管理器

    redhat:rpm包管理器,包含rpm文件,元数据,数据库(程序包名称版本,依赖关系,功能说明等)

    debian:dpkg包管理器,包含deb文件,元数据,数据库  

 (挂载光盘,获取包文件)

  程序包获取途径

    系统中的光盘或官方网站

      CentOS镜像:

        https://www.centos.org/download

        http://mirrors.aliyun.com

        https://mirrors.huaweicloud.com

        https://mirror.tuna.tsinghua.edu.cn

      Ubuntu镜像:

        http://cdimage.ubuntu.com/releases

        http://releases.ubuntu.com

    第三方组织提供

      Fedora-EPEL

        https://fedoraproject.org/wiki/EPEL

        https://mirrors.aliyun.com/epel

      SCL

        https://wiki.centos.org/SpecialInterestGroup/SCLo

      Rpmforge

        http://repoforge.org

    搜索引擎

      http://pkgs.org

      http://rpmfind.net

      http://rpm.pbone.net

    自己编译制作

  

  rpm选项:

    -a:查询已安装的所有软件包

    -e:卸载软件包

    -q:查询软件包

    -i:查询软件包的信息

    -l:查询软件包的文件列表

    -f:查询文件来自哪个软件包

  示例:查看软件包的详细信息

  示例:查看软件包中的文件

   示例:查看文件来自哪个软件包

 

  yum选项:

    yum install:安装软件包

    yum list:查看软件仓库中的软件包

    yum info:查看软件包信息

    yum provides:查看文件来自哪个软件包

    yum search:关键字搜索软件包

    yum clean all:清除缓存

  示例:查看软件仓库中以http开头的软件包

  示例:查看软件包信息

  示例:搜索以sam开头的软件包

 

  apt选项:

    apt install:安装软件包

    apt  purge:卸载软件包及配置文件

    apt update:更新软件仓库索引

    apt search:搜索软件包

    apt show:查看软件包信息


四. 简要总结yum/dnf工作原理。并搭建私有yum仓库(base, epel源)给另一个虚拟机使用。

  yum/dnf是基于C/S模式,yum服务器存放rpm包和相关包的元数据库,yum客户端访问yum服务器进行安装或查询等

  yum实现过程

    先在yum服务器上创建yum仓库,仓库中存储众多rpm包,以及包相关的元数据,当yum客户端使用yum/dnf安装软件包时,会自动下载repodata中元数据,查询元数据对应包的依赖关系,然后下载并安装

  搭建私有yum仓库

    安装并开启httpd服务

     挂载光盘文件

     进入/test/BaseOS目录中,复制粘贴文件

     修改yum源配置文件

     仅下载EPEL源的软件包到指定目录下

    yum客户端修改yum源配置文件

 
五. 总结系统安装之后的常用初始化步骤。rocky/ubuntu

  修改主机名

  关闭防火墙

  关闭SELinux

  配置yum源文件

  修改网卡名

  配置网卡配置文件

  修改SSH配置文件


六. 解读一键安装httpd脚本,并自行实现一个一键安装脚本,要求
1)基于位置变量传递版本号
2)基于独立函数进行初始化步骤,禁用防火墙,安装开发依赖包。
3)基于独立函数进行下载包,解压包。
4)基于独立函数进行编译,安装包。
5)基于独立函数完成链接包。
6)启动服务,并输出自定义的语句,安装xxx服务

 
七. 总结开放系统互联OSI模型,每层作用及对应的协议。

  应用层:提供为应用软件而设的接口,与另一应用软件之间的通信,http,dns,ftp,ssh

  表示层:把数据转换为能与接收者的系统格式兼容并适合传输的格式,ASCII,Unicode

  会话层:负责数据传输中通信连接,NFS,SQL,RPC

  传输层:把传输表头加至数据形成数据段,TCP,UDP

  网络层:决定数据的转发路径,将网络表头加至数据形成数据包,IP,IPX

  数据数据链:负责网络寻址,错误侦测,将数据链路表头加至数据形成数据帧,PPP,HDLC

  物理层:负责通信设备和网络媒体之间的互通


八. 调整动态端口范围为20000-60000

  修改/proc/sys/net/ipv4/ip_local_port_range文件的值


九. 总结TCP包头结构,TCP三次握手,4次挥手。

  至少20字节,最大60字节,源端口和目的端口为16位,范围0-65535

  序列号:表示本报文发送数据的第一个字节编号

  确认号:表示接收方希望收到发送方下一个报文段的第一个字节编号

  数据偏移:表示TCP头部长度,由于TCP头部包含可选部分,所以需要指定TCP报文头部长度

  URG:表示TCP报文是否启用紧急指针字段

  ACK:表示确认号是否有效

  PSH:表示该TCP报文是缓存还是立即提交上层应用

  RST:表示连接失败,释放来南京

  SYN:表示请求建立连接

  FIN:表示通知对端结束连接

  窗口:表示允许对方发送的数据量

  校验和:提供额外可靠性

  紧急指针:标记紧急数据在数据字段中的位置

  

  TCP三次握手

    客户端发送SYN置1的TCP连接请求报文,由CLOSED状态变为SYN-SEND状态

    服务器收到TCP连接请求报文后,回复SYN和ACK都置1的TCP响应报文,由LISTEN状态变为SYN-RCVD状态

    客户端收到TCP响应报文后,发送ACK置1的TCP报文,由SYN-SEND状态变为ESTAB-LISHED状态

    服务器收到报文后,由SYN-RCVD状态变为ESTAB-LISHED状态

 

  TCP四次挥手

    

    客户端发送FIN置1的TCP连接断开报文,由ESTAB-LISHED状态变为FIN-WAIT1状态

    服务器收到TCP连接断开报文后,发送ACK置1的TCP响应报文,由ESTAB-LISHED状态变为CLOSE-WAIT状态

    客户端收到TCP响应报文后,由FIN-WAIT1状态变为FIN-WAIT2状态

    服务器向客户端发送完数据后,会发送FIN和ACK置1的TCP连接断开报文,由CLOSE-WAIT状态变为LAST-ACK状态

    客户端收到TCP连接断开报文后,回复ACK置1的TCP响应报文,由FIN-WAIT2状态变为TIME-WAIT状态

    服务器收到TCP响应报文后,由LAST-ACK状态变为CLOSED状态

    服务器等待一定时间,接收到所有数据后,由TIME-WAIT状态变为CLOSED状态


十. 总结主机到主机的包传递过程。

  发送方:发送数据经过应用层,表示层,会话层,传输层,网络层,数据链路层的层层封装,然后由物理层转换为光或电信号传输,如果传输层是TCP协议,需要先通过TCP三次握手建立TCP连接,才能发送数据,在网络层封装源目IP地址查找路由表转发,在数据链路层的封装中通过ARP协议解析IP地址对应的MAC地址

  接收方:接收数据经过数据链路层,网络层,传输层,会话层,表示层,应用层的层层解封装,根据各层对应的上层协议字段将数据传输给相应的协议或端口


十一. 总结IP地址 A, B, C, D 类,并解析IP地址的组成

  A类

    范围:0.0.0.0-127.255.255.255

    网络位为8位,主机位为24位

    掩码:255.0.0.0

    私网地址:10.0.0.0-10.255.255.255

  B类

    范围:128.0.0.0-191.255.255.255

    网络位为16位,主机位为16位

    掩码:255.255.0.0

    私网地址:172.16.0.0-172.31.0.0

  C类

    范围:192.0.0.0-223.255.255.255

    网络位为24位,主机位为8位

    掩码:255.255.255.0

    私网地址:192.168.0.0-192.168.255.0

  D类

    范围:224.0.0.0-239.255.255.255

  IP地址由网络位+主机位组成


十二. 201.222.200.111/18计算主机数?子网掩码?说明计算方法。

  主机数:16382

  子网掩码:18

  主机数=2^(32-子网掩码)-2


十三. 当A(10.0.1.1/16)与B(10.0.2.2/24)通信,A如何判断是否在同一个网段?A和B能否通信?

  A会将自己的IP地址与子网掩码进行与运算,将B的IP地址与自己的子网掩码进行与运算,比较这两个结果是否一致,一致则在同一网段,否则不在同一网段

  A和


十四. 如何将10.0.0.0/8划分32个子网?
求每个子网的掩码,主机数。

  网络位向主机位借5位,2^5=32

  每个子网的掩码为13,主机数为524286


十五. 通过网络配置命令,让主机可以上网。 ip, netmask, gateway, dns,主机名。相关命令总结,最终可以通过这些配置让你的主机上网。

  修改主机名

    hostname(临时修改主机名)

    hostnamectl set-hostname(永久修改主机名)

    vim  /etc/hostname(修改主机名配置文件)

 

  ifconfig

    用于查看和配置网卡信息

    选项:

      -a:查看所有网卡信息

      -s:查看网卡摘要信息

    ifconfig  XX up/down:启用/关闭网卡

    示例:查看网卡摘要信息

     示例:关闭eth1网卡

   

  route

    用于查看,添加,删除路由

    route add:添加路由

    route del:删除路由

    route  -n:数字显示

    route  -v:查看详细信息

    示例:添加路由

    示例:查看路由

    示例:删除路由

   

  ip

    ip link  set:用于启用/禁用网卡

    示例:禁用eth1网卡

    ip  address:用于查看网卡信息

    ip address add:用于新增IP地址

    ip address del:用于删除IP地址

    ip address flush:用于清空IP地址

    ip address change:用于修改IP地址的首选生存时间和失效时间

    示例:新增网卡IP地址

    示例:删除网卡IP地址

    示例:清空网卡IP地址

    ip route show:用于查看路由表

    ip route add:用于添加路由

    ip route del:用于删除路由

    ip route flush:用于清空路由

    示例:查看路由表

    示例:添加路由

    示例:删除路由

     

  nmcli

    nmcli connection reload:用于重启网络连接

    nmcli connection up/down:用于开启/关闭网络连接

    nmcli connection show:用于查看网络连接信息

    nmcli connection add:用于创建网卡配置文件

    nmcli connection del:用于删除网卡配置文件

    示例:查看网络连接信息

    示例:创建网卡配置文件

    示例:删除网卡配置文件

 
十六. 解析/etc/sysconfig/network-scripts/ifcfg-eth0配置格式。

  DEVICE:设备名

  NAME:连接别名

  TYPE:接口雷系

  BOOTPROTO:获取地址方式,dhcp、static、none

  IPADDR:IP地址

  PREFIX:网络ID位数

  GATEWAY:网关

  DNS:域名服务器地址

  DOMAIN:主机不完整时,自动搜索的域名后缀

  ONBOOT:系统引导时是否激活此设备


十七. 基于配置文件或命令完成bond0配置

   配置文件

 
十八. 通过ifconfig命令结果找到ip地址.


十九.  使用脚本判断 你主机所在网络内在线的主机IP有哪些? ping通则在线。

  1 #!/bin/bash
  2 
  3 read -p "主机IP地址:" IP
  4 read -p "子网掩码(1-32):" MASK
  5 
  6 N=$[${MASK}%8]
  7 case $N in
  8 1)
  9     M=128
 10     ;;
 11 2)
 12     M=192
 13     ;;
 14 3)
 15     M=224
 16     ;;
 17 4)
 18     M=240
 19     ;;
 20 5)
 21     M=248
 22     ;;
 23 6)
 24     M=252
 25     ;;
 26 7)
 27     M=254
 28     ;;
 29 0)
 30     M=255
 31     ;;
 32 *)
 33     ;;
 34 esac
 35 
 36 if [ $MASK -le 8 ];then
 37     A=`echo $IP | awk -F"." '{print $1}'`
 38 elif [ $MASK -le 16 ];then
 39     A=`echo $IP | awk -F"." '{print $2}'`
 40 elif [ $MASK -le 24 ];then
 41     A=`echo $IP | awk -F"." '{print $3}'`
 42 elif [ $MASK -le 32 ];then
 43     A=`echo $IP | awk -F"." '{print $4}'`
 44 fi
 45 
 46 let W=A\&M
 47 if [ $MASK -lt 8 ];then
 48     for x in `seq $W $[255-MASK+W]`;do
 49         for y in {0..255};do
 50             for z in {0..255};do
 51                 for l in {0..255};do
 52                     (ping -c1 -w1 $x.$y.$z.$l &> /dev/null && echo "$x.$y.$z.$l在线" || echo "$x.$y.$z.$l不在线")&
 53                 done
 54             done
 55         done
 56     done
 57 elif [ $MASK -eq 8 ];then
 58     for x in {0..255};do
 59         for y in {0..255};do
 60             for z in {0..255};do
 61                 pre=`echo $IP | awk -F"." '{print $1}'`
 62                 (ping -c1 -w1 $pre.$x.$y.$z &> /dev/null && echo "$x.$y.$z.$l在线" || echo "$x.$y.$z.$l不在线")&
 63             done
 64         done
 65     done
 66 elif [ $MASK -lt 16 ];then
 67     for x in `seq $W $[255-MASK+W]`;do
 68         for y in {0..255};do
 69              for z in {0..255};do
 70                  pre=`echo $IP | awk -F"." '{print $1"."$2}'`
 71                  (ping -c1 -w1 $pre.$x.$y.$z &> /dev/null && echo "$pre.$x.$y.$z在线" || echo "$pre.$x.$y.$z不在线")&
 72              done
 73         done
 74     done
 75 elif [ $MASK -eq 16 ];then
 76     for x in {0..255};do
 77         for y in {0..255};do
 78                 pre=`echo $IP | awk -F"." '{print $1"."$2}'`
 79                 (ping -c1 -w1 $pre.$x.$y &> /dev/null && echo "$pre.$x.$y在线" || echo "$pre.$x.$y不在线")&
 80             done
 81         done
 82 elif [ $MASK -lt 24 ];then
 83     for x in `seq $W $[255-MASK+W]`;do
 84         for y in {0..255};do
 85             pre=`echo $IP | awk -F"." '{print $1"."$2}'`
 86            (ping -c1 -w1 $pre.$x.$y &> /dev/null && echo "$pre.$x.$y在线" || echo "$pre.$x.$y不在线")&
 87         done
 88     done
 89 elif [ $MASK -eq 24 ];then
 90     for x in {0..255};do
 91         pre=`echo $IP | awk -F"." '{print $1"."$2"."$3}'`
 92         (ping -c1 -w1 $pre.$x &> /dev/null && echo "$pre.$x在线" || echo "$pre.$x不在线")&
 93     done
 94 elif [ $MASK -lt 32 ];then
 95     for x in `seq $W $[255-MASK+W]`;do
 96         pre=`echo $IP | awk -F"." '{print $1"."$2"."$3}'`
 97         (ping -c1 -w1 $pre.$x &> /dev/null && echo "$pre.$x在线" || echo "$pre.$x不在线")&
 98     done
 99 elif [ $MASK -eq 32 ];then
100     (ping -c1 -w1 $IP &> /dev/null && echo "$IP在线" || echo "$IP不在线")&
101 fi