第三周作业解答:
1. 程序包管理器总结及命令示例
程序包管理器
- YUM:用于基于 RPM 的系统(如 CentOS、Fedora)。
- APT:用于基于 Debian 的系统(如 Ubuntu)。
- RPM:低级包管理工具,直接操作
.rpm
文件。
包内容
- RPM:包含软件的二进制文件、配置文件、依赖关系等。
- DEB:包含软件的二进制文件、配置文件、依赖关系等。
获取命令
-
**YUM:
# 获取软件包 yum install <package-name>
-
APT:
# 获取软件包 apt-get install <package-name>
-
RPM:
# 安装本地 RPM 文件 rpm -ivh <package-name>.rpm
命令选项示例
-
YUM:
# 安装软件包 yum install <package-name># 更新软件包 yum update <package-name># 卸载软件包 yum remove <package-name># 查找软件包 yum search <keyword>
-
APT:
# 安装软件包 apt-get install <package-name># 更新软件包 apt-get update apt-get upgrade# 卸载软件包 apt-get remove <package-name># 查找软件包 apt-cache search <keyword>
-
RPM:
# 安装 RPM 文件 rpm -ivh <package-name>.rpm# 卸载 RPM 文件 rpm -e <package-name># 查询已安装的 RPM 文件 rpm -qa
2. YUM/DNF工作原理及私有仓库搭建
工作原理
- YUM:
- 从配置的软件源(
/etc/yum.repos.d/
)获取软件包信息。 - 使用
yum
命令安装、更新或卸载软件包。 - 自动解析依赖关系并安装所需的依赖包。
- 从配置的软件源(
搭建私有 YUM 仓库
- 安装 HTTP 服务器:
yum install -y httpd systemctl start httpd systemctl enable httpd
- 创建仓库目录:
mkdir -p /var/www/html/repo/base mkdir -p /var/www/html/repo/epel
- 同步软件包到仓库:
- 使用
reposync
同步 Base 和 EPEL 源:yum install -y yum-utils reposync -g -l -d -m --repoid=base --repoid=epel --download_path=/var/www/html/repo
- 使用
- 配置仓库:
- 创建仓库元数据:
createrepo /var/www/html/repo/base createrepo /var/www/html/repo/epel
- 创建仓库元数据:
- 配置客户端:
- 在另一台虚拟机上,添加私有仓库配置文件
/etc/yum.repos.d/private.repo
:[base] name=Private Base Repo baseurl=http://10.0.0.100/repo/base enabled=1 gpgcheck=0[epel] name=Private EPEL Repo baseurl=http://10.0.0.100/repo/epel enabled=1 gpgcheck=0
- 在另一台虚拟机上,添加私有仓库配置文件
3. APT工作原理
- APT:
- 使用
/etc/apt/sources.list
和/etc/apt/sources.list.d/
文件配置软件源。 - 使用
apt-get
命令安装、更新或卸载软件包。 - 自动解析依赖关系并安装所需的依赖包。
- 使用
apt-cache
管理软件包缓存。
- 使用
4. 编译安装 Nginx 的步骤
- 安装依赖:
apt-get update apt-get install -y build-essential libpcre3 libpcre3-dev libssl-dev
- 下载 Nginx 源码:
wget http://nginx.org/download/nginx-<version>.tar.gz tar -zxvf nginx-<version>.tar.gz cd nginx-<version>
- 配置并编译:
./configure --prefix=/usr/local/nginx --with-http_ssl_module make make install
- 启动 Nginx:
/usr/local/nginx/sbin/nginx
5. 磁盘存储术语
- Head:磁头,用于读写磁盘数据。
- Track:磁道,磁盘上的一圈圈同心圆。
- Sector:扇区,磁道上的最小存储单元。
- Cylinder:柱面,同一柱面上的所有磁道。
6. MBR 和 GPT 结构
- MBR (Master Boot Record):
- 位于磁盘的第 0 扇区。
- 包含启动代码和分区表。
- 最多支持 4 个主分区。
- GPT (GUID Partition Table):
- 支持更多分区(最多 128 个)。
- 使用全局唯一标识符(GUID)标识分区。
- 支持大于 2TB 的磁盘。
7. 分区、文件系统管理、SWAP 管理命令
- fdisk:
# 查看分区表 fdisk -l
- parted:
# 创建分区 parted /dev/sdX mkpart primary 0 100%
- mkfs:
# 创建文件系统 mkfs.ext4 /dev/sdX1
- tune2fs:
# 调整文件系统参数 tune2fs -L "MyVolume" /dev/sdX1
- xfs_info:
# 查看 XFS 文件系统信息 xfs_info /dev/sdX1
- fsck:
# 检查和修复文件系统 fsck /dev/sdX1
- mount/umount:
# 挂载文件系统 mount /dev/sdX1 /mnt umount /mnt
- swapon/swapoff:
# 启用/禁用 SWAP swapon /dev/sdX1 swapoff /dev/sdX1
8. RAID 工作原理
- RAID 0:
- 工作原理:数据分条存储在多个磁盘上。
- 利用率:100%。
- 冗余性:无。
- 性能:高。
- 最少硬盘数:2。
- RAID 1:
- 工作原理:数据镜像存储在两个磁盘上。
- 利用率:50%。
- 冗余性:高。
- 性能:读取快,写入慢。
- 最少硬盘数:2。
- RAID 5:
- 工作原理:数据分条存储,带奇偶校验。
- 利用率:(N-1)/N。
- 冗余性:中。
- 性能:读取快,写入中。
- 最少硬盘数:3。
- RAID 10:
- 工作原理:先镜像,再分条。
- 利用率:50%。
- 冗余性:高。
- 性能:高。
- 最少硬盘数:4。
- RAID 01:
- 工作原理:先分条,再镜像。
- 利用率:50%。
- 冗余性:高。
- 性能:高。
- 最少硬盘数:4。
9. LVM 基本原理
- LVM (Logical Volume Manager):
- 将物理磁盘抽象为逻辑卷,便于动态调整磁盘容量。
- 创建 LVM:
# 创建物理卷 pvcreate /dev/sdX1# 创建卷组 vgcreate myvg /dev/sdX1# 创建逻辑卷 lvcreate -L 10G -n mylv myvg# 格式化并挂载 mkfs.ext4 /dev/myvg/mylv mount /dev/myvg/mylv /mnt
- 扩容逻辑卷:
# 添加新磁盘到卷组 pvcreate /dev/sdY1 vgextend myvg /dev/sdY1# 扩容逻辑卷 lvextend -L +5G /dev/myvg/mylv resize2fs /dev/myvg/mylv
10. OSI 模型
- OSI (Open Systems Interconnection):
- 物理层:传输二进制数据流,定义电气接口。
- 数据链路层:建立链路连接,传输数据帧。
- 网络层:负责路由选择,传输 IP 数据包。
- 传输层:提供端到端的通信,如 TCP/UDP。
- 会话层:建立、管理和终止会话。
- 表示层:数据格式转换,加密解密。
- 应用层:提供用户接口,如 HTTP、FTP。
11. 调整动态端口范围
# 修改 /etc/sysctl.conf 文件
net.ipv4.ip_local_port_range = 20000 60000# 应用更改
sysctl -p
12. TCP 包头结构
- 源端口:16 位。
- 目的端口:16 位。
- 序列号:32 位。
- 确认号:32 位。
- 头部长度:4 位。
- 标志位:6 位(SYN、ACK、FIN、RST 等)。
- 窗口大小:16 位。
- 校验和:16 位。
- 紧急指针:16 位。
TCP 三次握手
- SYN:客户端发送 SYN 包到服务器。
- SYN-ACK:服务器回应 SYN-ACK 包。
- ACK:客户端发送 ACK 包,连接建立。
TCP 四次挥手
- FIN:客户端发送 FIN 包。
- ACK:服务器回应 ACK 包。
- FIN:服务器发送 FIN 包。
- ACK:客户端回应 ACK 包,连接关闭。
13. 主机到主机的包传递过程
- 源主机:封装数据包,添加 IP 和 TCP/UDP 头。
- 路由器:根据 IP 地址和子网掩码转发数据包。
- 目的主机:解封装数据包,处理数据。
14. IP 地址分类
- A 类:
0.0.0.0 - 127.255.255.255
,子网掩码/8
。 - B 类:
128.0.0.0 - 191.255.255.255
,子网掩码/16
。 - C 类:
192.0.0.0 - 223.255.255.255
,子网掩码/24
。 - D 类:
224.0.0.0 - 239.255.255.255
,多播地址。
IP 地址组成
- 网络部分:标识网络。
- 主机部分:标识主机。
15. 201.222.200.111/18 的主机数和子网掩码
- 子网掩码:
255.255.192.0
(/18
)。 - 主机数:
2^(32-18) - 2 = 16382
。
计算方法
- 子网掩码:
/18
表示前 18 位为网络位,后 14 位为主机位。 - 主机数:
2^(32-18) - 2
(减去网络地址和广播地址)。
16. A(10.0.1.1/16) 与 B(10.0.2.2/24) 的通信
- 判断是否在同一个网段:
- A 的子网掩码为
/16
,网络地址为10.0.0.0
。 - B 的子网掩码为
/24
,网络地址为10.0.2.0
。 - A 和 B 不在同一个网段。
- A 的子网掩码为
- 能否通信:
- 如果 A 和 B 在同一个网络中(如通过路由器连接),可以通信。
- 如果不在同一个网络中,无法直接通信。
17. 10.0.0.0/8 划分 32 个子网
- 子网掩码:
255.255.224.0
(/19
)。 - 每个子网的主机数:
2^(32-19) - 2 = 8190
。
计算方法
- 子网掩码:
/8
表示前 8 位为网络位,需要再划分 5 位(2^5 = 32
)。 - 子网掩码:
255.255.224.0
(/19
)。 - 每个子网的主机数:
2^(32-19) - 2
。