Linux基础学习第五周作业
一、网络分层模型:OSI 七层与 TCP/IP 四层
1.1 为什么需要分层模型
网络通信涉及物理信号传输、地址寻址、路由选择、进程间通信、应用协议解析等多个环节。分层模型将复杂过程拆分为职责明确的若干层,每层只与相邻层交互,降低了设计、实现与排障的复杂度。生产环境中常说的"二层交换机"“三层路由器”“四层负载均衡”"七层代理"均源于此。
1.2 OSI 七层模型
| 层次 | 名称 | 核心职责 | 典型协议/设备 |
|---|---|---|---|
| 第 7 层 | 应用层 | 为应用程序提供网络服务接口 | HTTP、HTTPS、SSH、FTP、DNS、SMTP |
| 第 6 层 | 表示层 | 数据格式转换、加密压缩、编码解码 | SSL/TLS、JPEG、ASCII |
| 第 5 层 | 会话层 | 建立、管理、终止会话 | NetBIOS、RPC |
| 第 4 层 | 传输层 | 端到端连接、可靠传输、端口寻址 | TCP、UDP |
| 第 3 层 | 网络层 | 逻辑寻址、路由选择、跨网段转发 | IP、ICMP、路由器 |
| 第 2 层 | 数据链路层 | 物理地址寻址、帧封装、同网段转发 | MAC、ARP、交换机 |
| 第 1 层 | 物理层 | 比特流传输、电气信号、物理介质 | 网线、光纤、网卡、集线器 |
1.3 TCP/IP 四层模型
TCP/IP 模型是互联网实际运行的协议栈,结构更紧凑,与 OSI 的对应关系如下:
| TCP/IP 四层 | 对应 OSI 层 | 核心职责 | 典型协议/设备 |
|---|---|---|---|
| 应用层 | 应用层 + 表示层 + 会话层 | 业务数据通信 | HTTP、HTTPS、SSH、DNS、FTP、SMTP |
| 传输层 | 传输层 | 端到端连接与端口寻址 | TCP、UDP |
| 互联网层 | 网络层 | 跨网段寻址与路由 | IP、ICMP、路由器 |
| 链路层 | 数据链路层 + 物理层 | 同网段物理通信 | MAC、ARP、以太网、交换机 |
1.4 各层常见协议与运维关注点
- 应用层:HTTP/HTTPS 负责 Web 通信,SSH 负责远程管理,DNS 负责域名解析,FTP/SFTP 负责文件传输。排障时关注服务监听、应用日志、证书有效性。
- 传输层:TCP 提供面向连接、可靠传输;UDP 提供无连接、低延迟传输。关注端口监听、连接状态、防火墙策略。
- 互联网层:IP 负责主机寻址,ICMP 用于连通性测试(ping)。关注 IP 地址、子网掩码、网关、路由表。
- 链路层:ARP 完成 IP 到 MAC 的解析,以太网帧完成同网段交付。关注网卡状态、MAC 地址、物理链路。
1.5 数据封装与解封装
发送端自上而下逐层封装,每层添加本层头部:
| 层级 | 封装内容 | PDU 名称 |
|---|---|---|
| 应用层 | HTTP 请求、SSH 命令等业务数据 | Data |
| 传输层 | TCP/UDP 头部(源端口、目的端口) | Segment / Datagram |
| 互联网层 | IP 头部(源 IP、目的 IP) | Packet |
| 链路层 | 以太网头部(源 MAC、目的 MAC) | Frame |
接收端自下而上逐层解封装。关键规则:只有目标 MAC 和 IP 均指向本机的数据包,才会继续向上解封并交给对应端口的进程处理。
1.6 TCP 与 UDP 选型
| 对比项 | TCP | UDP |
|---|---|---|
| 连接方式 | 面向连接,三次握手建立连接 | 无连接,直接发送 |
| 可靠性 | 可靠传输,确认重传、按序到达 | 不保证可靠,丢包不重传 |
| 速度 | 相对较慢 | 相对较快 |
| 适用场景 | SSH、HTTP/HTTPS、MySQL、Redis | DNS 查询、视频通话、直播、游戏 |
二、TCP 三次握手与四次挥手
2.1 三次握手(连接建立)
TCP 是全双工协议,通信前必须确认双方的发送与接收能力均正常,并完成初始序列号同步。
握手流程:
- 第一次握手(SYN):客户端向服务器发送 SYN 报文,Seq = x(随机初始序列号),进入 SYN_SENT 状态。
- 第二次握手(SYN-ACK):服务器收到 SYN 后,回复 SYN + ACK 报文,Seq = y(随机初始序列号),Ack = x + 1,进入 SYN_RECEIVED 状态。
- 第三次握手(ACK):客户端收到 SYN-ACK 后,回复 ACK 报文,Seq = x + 1,Ack = y + 1,双方进入 ESTABLISHED 状态,连接建立。
为什么需要三次握手:
- 确认双方收发能力均正常(第一次证明客户端能发,第二次证明服务器能收能发,第三次证明客户端能收)。
- 同步双方初始序列号,为后续可靠传输提供基础。
- 防止历史重复连接请求被误接受。
2.2 四次挥手(连接释放)
TCP 连接释放需分别关闭两个方向的通道,因此需要四次交互。
挥手流程:
- 第一次挥手(FIN-ACK):主动关闭方发送 FIN + ACK 报文,Seq = u,Ack = v,进入 FIN_WAIT_1 状态。
- 第二次挥手(ACK):被动关闭方收到 FIN 后,回复 ACK 报文,Ack = u + 1,进入 CLOSE_WAIT 状态;主动方收到后进入 FIN_WAIT_2 状态。
- 第三次挥手(FIN-ACK):被动关闭方数据发送完毕后,发送 FIN + ACK 报文,Seq = w,Ack = u + 1,进入 LAST_ACK 状态。
- 第四次挥手(ACK):主动关闭方回复 ACK 报文,Ack = w + 1,进入 TIME_WAIT 状态;被动方收到后关闭连接。
TIME_WAIT 状态的作用:
- 等待 2MSL(Maximum Segment Lifetime),确保最后一个 ACK 若丢失,被动方重传的 FIN 仍能被处理。
- 让旧连接在网络中的残留报文全部消失,避免干扰后续复用相同端口的新连接。
2.3 常见 TCP 连接状态
| 状态 | 含义 | 运维关注点 |
|---|---|---|
| LISTEN | 服务正在监听端口 | 正常状态 |
| ESTABLISHED | 连接已建立,正在通信 | 正常状态 |
| SYN_SENT | 客户端已发 SYN,等待回复 | 可能网络不通或服务未响应 |
| CLOSE_WAIT | 对方已关闭,本机未关闭 | 应用未正确关闭连接,需排查 |
| TIME_WAIT | 主动关闭方等待 2MSL | 高并发场景常见,大量属正常 |
| LAST_ACK | 等待最后一个 ACK | 四次挥手最后阶段 |
三、tcpdump 与 Wireshark 抓包分析 TCP
3.1 tcpdump 基础用法
tcpdump 是 Linux 下的命令行抓包工具,可直接分析或导出 .pcap 文件供 Wireshark 深度分析。
# 安装
dnf install -y tcpdump
# 抓取指定网卡所有包
tcpdump -i ens160
# 不解析主机名和端口名,提升速度
tcpdump -i ens160 -nn
# 限制抓包数量
tcpdump -i ens160 -nn -c 100
# 按端口过滤
tcpdump -i ens160 -nn port 80
tcpdump -i ens160 -nn port 22
# 按主机过滤
tcpdump -i ens160 -nn host 10.0.0.100
# 组合条件
tcpdump -i ens160 -nn host 10.0.0.100 and port 80
# 保存为 pcap 文件
tcpdump -i ens160 -nn -w /tmp/capture_$(date +%Y%m%d_%H%M%S).pcap
# 读取 pcap 文件
tcpdump -nn -r capture.pcap port 80
3.2 tcpdump 输出解读
10:30:01.123456 IP 10.0.0.100.54321 > 10.0.0.142.80: Flags [S], seq 123456
10:30:01.123478 IP 10.0.0.142.80 > 10.0.0.100.54321: Flags [S.], seq 654321, ack 123457
10:30:01.123489 IP 10.0.0.100.54321 > 10.0.0.142.80: Flags [.], ack 654322
| 字段 | 说明 |
|---|---|
| 时间戳 | 数据包到达时间 |
| 源地址:端口 | 发送方 IP 与端口 |
| 目标地址:端口 | 接收方 IP 与端口 |
| Flags | [S] 表示 SYN,[.] 表示 ACK,[S.] 表示 SYN+ACK,[F] 表示 FIN,[R] 表示 RST |
3.3 抓包分析 TCP 三次握手
以访问 Web 服务为例,过滤端口 80:
tcpdump -i ens160 -nn port 80
观察到的三次握手报文:
- 客户端 → 服务器:
Flags [S], seq 123456 - 服务器 → 客户端:
Flags [S.], seq 654321, ack 123457 - 客户端 → 服务器:
Flags [.], ack 654322
三次交互后,连接进入 ESTABLISHED 状态,随后开始 HTTP 请求传输。
3.4 抓包分析 TCP 四次挥手
主动关闭连接后,可观察到:
- 主动方 → 被动方:
Flags [F.], seq X, ack Y - 被动方 → 主动方:
Flags [.], ack X+1 - 被动方 → 主动方:
Flags [F.], seq Y, ack X+1 - 主动方 → 被动方:
Flags [.], ack Y+1
3.5 Wireshark 图形化分析
- 在服务器上使用 tcpdump 抓包并保存为
.pcap文件。 - 通过
sz或 SCP 将文件下载到本地。 - 使用 Wireshark 打开,过滤表达式示例:
tcp.port == 80ip.addr == 10.0.0.142tcp.flags.syn == 1
- 右键数据包 → Follow → TCP Stream,可完整查看一次 TCP 会话。
3.6 常见排障场景
| 问题 | 抓包命令 | 观察重点 |
|---|---|---|
| SSH 无法连接 | tcpdump -i ens160 -nn port 22 | 是否收到 SYN,是否回复 SYN-ACK |
| HTTP 访问异常 | tcpdump -i ens160 -nn -A port 80 | 请求头、响应状态、RST/FIN |
| DNS 解析失败 | tcpdump -i ens160 -nn port 53 | 查询请求与响应是否到达 |
| 怀疑丢包 | tcpdump -i ens160 -nn host 目标IP | 重传、乱序、重复 ACK |
四、DNS 原理与内网 DNS 部署
4.1 DNS 的作用
DNS(Domain Name System,域名系统)将人类易记的域名(如 magedu.com)解析为机器可识别的 IP 地址(如 43.226.56.46)。它是互联网的基础设施之一,采用分布式、层次化的数据库结构。
4.2 DNS 解析完整流程
当用户在浏览器输入域名时,解析流程如下:
- 浏览器缓存:检查是否近期访问过该域名。
- 本地 hosts 文件:
/etc/hosts优先级高于 DNS,常用于内网测试。 - 本地 DNS 缓存:操作系统缓存的解析结果。
- 递归 DNS 服务器:向配置的 DNS 服务器(如
8.8.8.8、114.114.114.114)发起递归查询。 - 根域名服务器:递归服务器向根服务器查询顶级域(TLD)服务器地址。
- 顶级域服务器:返回该域名对应的权威 DNS 服务器地址。
- 权威 DNS 服务器:返回域名对应的 A/AAAA 记录。
- 结果返回:递归服务器将结果返回客户端,并缓存一定时间(TTL)。
4.3 递归查询与迭代查询
| 查询类型 | 发起方 | 特点 |
|---|---|---|
| 递归查询 | 客户端 → 递归 DNS | 由递归服务器负责查到底,客户端只需等待最终答案 |
| 迭代查询 | 递归 DNS → 根/TLD/权威 DNS | 每层只返回下一层该找谁,由递归服务器逐级追问 |
4.4 常见 DNS 记录类型
| 记录类型 | 含义 | 示例 |
|---|---|---|
| A | IPv4 地址记录 | magedu.com → 43.226.56.46 |
| AAAA | IPv6 地址记录 | magedu.com → 2001:db8::1 |
| CNAME | 别名记录 | www.magedu.com → magedu.com |
| MX | 邮件交换记录 | 指向邮件服务器 |
| NS | 域名服务器记录 | 指定权威 DNS 服务器 |
| TXT | 文本记录 | 用于 SPF、DKIM、域名验证 |
| PTR | 反向解析记录 | 192.168.100.10 → magedu.com |
| SOA | 授权起始记录 | 区域权威信息、序列号、刷新策略 |
4.5 DNS 查询工具
# 使用 dig 查询
dig magedu.com A
dig magedu.com +short
dig @8.8.8.8 magedu.com
# 使用 nslookup
nslookup magedu.com
nslookup magedu.com 114.114.114.114
# 使用 host
host magedu.com
host -t MX magedu.com
host -t NS magedu.com
4.6 内网 DNS 部署(Bind)
4.6.1 安装 Bind
# Rocky Linux 10
dnf install -y bind bind-utils
# Ubuntu 26.04
apt install -y bind9 bind9-utils
4.6.2 修改主配置文件 /etc/named.conf
options {
listen-on port 53 { any; };
allow-query { any; };
recursion yes;
forwarders {
114.114.114.114;
8.8.8.8;
};
forward first;
directory "/var/named";
};
4.6.3 声明正向解析区域 /etc/named.rfc1912.zones
zone "magedu.com" IN {
type master;
file "magedu.com.zone";
allow-update { none; };
};
4.6.4 编写区域文件 /var/named/magedu.com.zone
$TTL 86400
@ IN SOA ns1.magedu.com. admin.magedu.com. (
2026072801 ; serial
3600 ; refresh
1800 ; retry
604800 ; expire
86400 ; minimum TTL
)
@ IN NS ns1.magedu.com.
ns1 IN A 192.168.100.10
ruoyi IN A 192.168.100.10
mysql IN A 192.168.100.20
redis IN A 192.168.100.30
nacos IN A 192.168.100.40
4.6.5 验证与启动
# 检查配置文件语法
named-checkconf /etc/named.conf
# 检查区域文件语法
named-checkzone magedu.com /var/named/magedu.com.zone
# 启动并设置开机自启
systemctl enable --now named
# 验证解析
dig @127.0.0.1 mysql.magedu.com +short
4.6.6 客户端配置
# Rocky Linux 10
nmcli conn mod ens160 ipv4.dns "192.168.100.10"
nmcli conn up ens160
# Ubuntu 26.04
# 编辑 /etc/netplan/00-installer-config.yaml 添加 nameservers
netplan apply
4.6.7 防火墙放行
# Rocky Linux 10
firewall-cmd --add-service=dns --permanent
firewall-cmd --reload
五、RAID 技术总结
5.1 RAID 基本概念
RAID(Redundant Array of Independent Disks,独立硬盘冗余阵列)将多块物理磁盘组合成一个逻辑磁盘,通过并行读写提升性能,通过冗余算法提高可靠性。实现方式包括:
- 硬件 RAID:通过 RAID 控制器卡或主板集成芯片实现,操作系统将其识别为单块磁盘。
- 软件 RAID:通过操作系统或软件实现,如 Linux 的
mdadm。
5.2 常见 RAID 级别特性对比
| RAID 级别 | 最少磁盘数 | 容错能力 | 可用容量 | 读性能 | 写性能 | 安全性 | 典型应用场景 |
|---|---|---|---|---|---|---|---|
| RAID 0 | 1 | 无 | n | 高 | 高 | 低 | 临时缓存、视频剪辑 |
| RAID 1 | 2 | n-1 | 50% | 高 | 一般 | 高 | 系统盘、关键数据 |
| RAID 5 | 3 | 1 | n-1 | 高 | 一般 | 较高 | 数据中心、预算敏感场景 |
| RAID 6 | 4 | 2 | n-2 | 高 | 较低 | 高 | 高安全要求场景 |
| RAID 10 | 4 | 每组镜像可坏 1 块 | 50% | 高 | 高 | 高 | 数据库、高性能服务器 |
| RAID 01 | 4 | 有限 | 50% | 高 | 高 | 一般 | 较少使用 |
5.3 各级别详细说明
RAID 0(条带化)
- 将数据分块(chunk)后分散写入多块磁盘,读写可并行处理。
- 无冗余、无容错,任意一块磁盘损坏将导致全部数据丢失。
- 适用场景:追求极致性能且数据可重建的临时性场景。
RAID 1(镜像)
- 数据同时写入两块磁盘,实现完全冗余。
- 磁盘利用率 50%,写入性能受限于单盘,读取性能可提升。
- 适用场景:系统盘、关键业务数据。
RAID 5(分布式奇偶校验)
- 数据与奇偶校验信息分散存储在所有磁盘上。
- 可容忍一块磁盘故障,磁盘利用率较高(n-1)。
- 写入性能受奇偶校验计算影响,重建过程对系统压力较大。
- 适用场景:数据中心、文件服务器、预算与可靠性兼顾的场景。
RAID 6(双分布式奇偶校验)
- 与 RAID 5 类似,但保存两份独立的奇偶校验信息。
- 可容忍两块磁盘同时故障,安全性更高,但写入性能下降、成本增加。
- 适用场景:对数据安全要求极高的业务系统。
RAID 10(镜像 + 条带化)
- 先做 RAID 1 镜像对,再将多个镜像对组成 RAID 0。
- 兼具 RAID 0 的高性能和 RAID 1 的高可靠性。
- 磁盘利用率 50%,成本较高。
- 适用场景:数据库、OLTP、高并发 Web 服务。
5.4 选型建议
| 用途 | 推荐 RAID |
|---|---|
| 操作系统盘 | RAID 1 |
| 重要业务数据 | RAID 10 + 热备盘 |
| 大容量一般数据 | RAID 5 / RAID 6 |
| 临时缓存、可重建数据 | RAID 0 或不配置 RAID |
5.5 Linux 软 RAID 实践(mdadm)
# 创建 RAID 5,使用 3 块数据盘 + 1 块热备盘
mdadm -C /dev/md0 -a yes -l 5 -n 3 -x 1 /dev/sdb1 /dev/sdc1 /dev/sdd1 /dev/sde1
# 查看 RAID 详情
mdadm -D /dev/md0
# 格式化并挂载
mkfs.xfs /dev/md0
mount /dev/md0 /mnt/raid5
# 保存配置
echo '/dev/md0 /mnt/raid5 xfs defaults 0 0' >> /etc/fstab
六、Linux 网络配置(补充)
6.1 查看网络状态
ip a # 查看 IP 地址
ip -4 -br addr # 简洁查看 IPv4 地址
ip route show # 查看路由表
ip neigh show # 查看 ARP 缓存
ss -tlnp # 查看 TCP 监听端口
ss -tan state established # 查看已建立连接
6.2 使用 nmcli 配置静态 IP
nmcli con mod ens160 \
ipv4.method manual \
ipv4.addresses 10.0.0.142/24 \
ipv4.gateway 10.0.0.1 \
ipv4.dns "8.8.8.8 114.114.114.114" \
autoconnect yes
nmcli con up ens160
6.3 Ubuntu Netplan 配置示例
network:
version: 2
ethernets:
ens160:
dhcp4: false
addresses:
- 10.0.0.142/24
routes:
- to: default
via: 10.0.0.1
nameservers:
addresses:
- 8.8.8.8
- 114.114.114.114
七、HTTP/HTTPS 与 Nginx 部署概览(第 14–15 天补充)
7.1 HTTP 协议核心
HTTP 工作于 TCP/IP 的应用层,基于请求-响应模型。请求报文由请求行、请求头、空行和请求体组成;响应报文由状态行、响应头、空行和响应体组成。
常见状态码:
| 状态码 | 含义 | 场景 |
|---|---|---|
| 200 | 请求成功 | 正常返回资源 |
| 301 | 永久重定向 | 域名切换、HTTP 跳转 HTTPS |
| 302 | 临时重定向 | 登录跳转、动态分流 |
| 304 | 未修改,使用缓存 | 协商缓存命中 |
| 400 | 请求语法错误 | 参数格式错误 |
| 401 | 未认证 | 缺少登录凭证 |
| 403 | 禁止访问 | 权限不足或 IP 受限 |
| 404 | 资源不存在 | URL 错误或文件缺失 |
| 500 | 服务器内部错误 | 后端程序异常 |
| 502 | 网关错误 | 后端服务不可达 |
| 503 | 服务不可用 | 过载或维护中 |
| 504 | 网关超时 | 后端响应超时 |
7.2 HTTPS 与 TLS 握手
HTTPS = HTTP + TLS。TLS 通过非对称加密交换对称密钥,后续使用对称加密传输数据,兼顾安全性与性能。
TLS 1.2 握手流程:
- ClientHello:客户端发送支持的 TLS 版本、加密套件、随机数。
- ServerHello:服务器返回选定的加密套件、随机数、服务器证书。
- 客户端验证证书链(域名、有效期、签发者、吊销状态)。
- 客户端生成 Pre-Master Secret,用服务器公钥加密后发送。
- 双方根据 Client Random、Server Random、Pre-Master Secret 生成会话密钥。
- 后续通信使用会话密钥对称加密。
TLS 1.3 将握手缩短为 1 次 RTT,并移除了不安全的加密算法。
7.3 Nginx 基础部署
# 使用 DNF 快速安装
dnf install -y nginx
systemctl enable --now nginx
# 源码编译安装(生产推荐,可定制模块与路径)
dnf groupinstall -y "Development Tools"
dnf install -y gcc make pcre2-devel zlib-devel openssl-devel
./configure \
--prefix=/usr/local/nginx \
--sbin-path=/usr/sbin/nginx \
--conf-path=/etc/nginx/nginx.conf \
--user=nginx --group=nginx \
--with-http_ssl_module \
--with-http_v2_module \
--with-http_stub_status_module \
--with-http_gzip_static_module
make -j$(nproc) && make install
7.4 Nginx 虚拟主机与 location
Nginx 通过 server 块定义虚拟主机,通过 location 块实现 URL 路由。虚拟主机可基于域名、IP 或端口区分。
server {
listen 80;
server_name www.magedu.com;
root /var/www/magedu;
index index.html;
}
server {
listen 80;
server_name blog.magedu.com;
root /var/www/blog;
index index.html;
}
location 匹配优先级:
| 优先级 | 类型 | 语法 | 说明 |
|---|---|---|---|
| 1 | 精确匹配 | = /path | 完全相等,立即生效 |
| 2 | 前缀优先匹配 | ^~ /path | 匹配后停止正则匹配 |
| 3 | 正则匹配(区分大小写) | ~ /pattern | 按顺序匹配 |
| 4 | 正则匹配(不区分大小写) | ~* /pattern | 按顺序匹配 |
| 5 | 通用前缀匹配 | /path | 最长匹配原则 |
| 6 | 通用匹配 | / | 兜底 |
7.5 root 与 alias 的区别
| 指令 | 路径拼接方式 | 示例 |
|---|---|---|
| root | root 路径 + location 路径 | root /var/www; + /images/1.jpg → /var/www/images/1.jpg |
| alias | alias 路径替换 location 路径 | alias /var/www/img/; + /images/1.jpg → /var/www/img/1.jpg |
注意:alias 路径末尾必须带斜杠,否则会出现路径拼接异常。
openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构
更多推荐

所有评论(0)