晓铧.

Do more of what makes you happy.

第五周

1. 总结rocky 系统的启动流程,grub工作流程

rocky 系统的启动流程

POST加电自检 → MBR引导 → GRUB → 加载内核

  1. 加载BIOS的硬件信息,获取第一个启动设备
  2. 读取第一个启动设备MBR的引导加载程序(grub)的启动信息
  3. 加载核心操作系统的核心信息,核心开始解压缩,并尝试驱动所有的硬件设备
  4. 核心执行init程序,并获取默认的运行信息
  5. init程序执行/etc/rc.d/rc.sysinit文件,重新挂载根文件系统
  6. 启动核心的外挂模块
  7. init执行运行的各个批处理文件(scripts)
  8. init执行/etc/rc.d/rc.local
  9. 执行/bin/login程序,等待用户登录
  10. 登录之后开始以Shell控制主机
grub工作流程
  1. 阶段 1:MBR 加载:计算机启动时,BIOS 首先执行存储在硬盘 MBR(Master Boot Record)中的 GRUB 第一阶段代码。MBR 位于硬盘的第一个扇区,空间非常小,仅能容纳 GRUB 的最小主程序。这个主程序的主要任务是加载 GRUB 的下一个阶段。
  2. 阶段 1.5:识别文件系统:由于 Stage 1 不能识别不同的文件系统,而 Stage 2 又比较大,只能放在文件系统中的分区里,所以需要先加载 Stage 1.5。Stage 1.5 的作用是连接 Stage 1 和 Stage 2,让系统能够识别 Stage 2 所在的文件系统分区,进而加载 Stage 2。通常在安装 GRUB 时,Stage 1.5 会被安装到紧跟 MBR 之后的 32KB 空间中。不过对于较新的 GRUB 版本(如 GRUB 0.93),在某些情况下 Stage 1.5 并非必需。
  3. 阶段 2:核心映像加载:在 Stage 1 或 Stage 1.5 的作用下,GRUB 的核心映像被加载。核心映像包含了 GRUB 的主要功能,如文件系统驱动和启动菜单等,通常位于硬盘的一个特定分区中。
  4. 阶段 3:模块加载:核心映像加载完成后,GRUB 会加载必要的模块,这些模块为 GRUB 提供了额外的功能,比如支持特定的文件系统、提供命令行界面等,使 GRUB 能够更加灵活地适应不同的系统环境和用户需求。

2. 总结内核设计流派及特点。

单体内核

  • 所有核心功能(如进程调度、内存管理、文件系统)紧密集成,直接调用内核函数,减少上下文切换开销。
  • 但模块间耦合度高,一个模块的错误可能导致整个系统崩溃(如驱动崩溃可能引发内核 panic)。

混合内核:

  • 核心功能(如进程调度、内存管理)运行在内核空间。
  • 部分非核心功能(如文件系统、驱动)可以运行在用户空间(但 Linux 内核通常不这样做)

微内核:

  • 模块化设计:允许动态加载/卸载模块(类似微内核的“按需加载”)。
  • 用户空间驱动:某些特殊场景(如安全关键系统)可能将驱动运行在用户空间(如 user-mode-linuxseL4 微内核方案)。

3. 总结systemd服务配置文件

配置文件结果由三个部分组成分别是:

1. [Unit] 区块

Description=服务描述(必填)
After=network.target    # 指定在哪些服务之后启动
Requires=postgresql     # 强依赖(依赖失败则本服务失败)
Wants=redis.service     # 弱依赖(依赖失败不影响本服务)
Conflicts=old-service   # 禁止与某服务同时运行

2.[Service] 区块

Type=simple            # 服务类型(simple/forking/oneshot/notify)
ExecStart=/usr/bin/command  # 启动命令(必填)
ExecReload=/bin/kill -HUP $MAINPID  # 重载命令
Restart=on-failure     # 重启策略(always/on-success/on-failure)
User=nginx             # 运行用户
Group=nginx            # 运行组
Environment="KEY=value" # 环境变量
WorkingDirectory=/path # 工作目录
LimitNOFILE=65535      # 资源限制(文件描述符数量)

3.[Install] 区块

WantedBy=multi-user.target  # 关联到系统启动目标
Alias=servicename-alias     # 服务别名

4. 总结DNS域名三级结构,DNS服务工作原理,涉及递归和迭代查询原理

总结DNS域名三级结构
层级 定义 常见示例
顶级域名 最高层级,表示国家、通用类别或国际组织。 .com(商业)、.org(非营利)、.cn(中国)、.uk(英国)
二级域名 注册者选择的名称,代表组织或品牌。 example(在 example.com 中)
三级域名 二级域名的子域,用于细分服务或子网(如网站、邮箱服务器)。 wwwmailapi(如 www.example.com

例如:www.baidu.com

www:子域名

baidu:二级域名

com:顶级域名

DNS服务工作原理
  1. 当客户端主机决定访问 https://www.magedu.com 这个域名时,
  2. 先查询本地 hosts 文件,是否有对应IP地址,如果有,则直接访问该IP地址,域名解析服务结束;
  3. 再查询本机缓存,如果本机缓存没有解析记录,则会向其配置的DNS服务器发起解析请求;
  4. DNS代理解析服务器会先查询其缓存是否有这条解析记录,如果有,则直接返回,如果没有,则继续向上解 析;
  5. DNS代理解析服务器会向根域名服务器发起解析请求,根域名服务器返回 com 域名的DNS地址;
  6. DNS代理解析服务器继续向 com 域名服务器发起解析请求,com 域名服务器返回 magedu.com 域名服 务器DNS地址;
  7. DNS代理解析服务器继续向 magedu.com 域名服务器发起解析请求,magedu.com 域名服务器返回 www.magedu.com 主机的IP;
  8. DNS代理解析服务器将 www.magedu.com 的IP地址存入本机缓存,再读取缓存,将 IP地址发送给客户 端主机;
  9. 客户端主机通过IP地址顺利访问 https://www.magedu.com
涉及递归和迭代查询原理

递归原理:

是指DNS服务器在收到用户发起的请求时,必须向用户返回一个准确的查询结果。如果DNS服务器本地没 有存储与之对应的信息,则该服务器需要询问其他服务器,并将返回的查询结果提交给用户。 

一般客户机和本地DNS服务器之间属于递归查询,即当客户机向DNS服务器发出请求后,若DNS服务器本 身不能解析,则会向另外的DNS服务器发出查询请求,得到最终的肯定或否定的结果后转交给客户机。 

此查询的源和目标保持不变,为了查询结果只需要发起一次查询。

递归算法:客户端向LocalDNS发起域名查询-->localDNS不知道域名对应的IP-->但它知道谁知道-> 他代为帮客户端去查找-->最后再返回最终结果。

迭代原理:

是指DNS服务器在收到用户发起的请求时,并不直接回复查询结果,而是告诉另一台DNS服务器的地址, 用户再向这台DNS服务器提交请求,这样依次反复,直到返回查询结果。 

 一般情况下(有例外)本地的DNS服务器向其它DNS服务器的查询属于迭代查询,如:若对方不能返回权威 的结果,则它会向下一个DNS服务器(参考前一个DNS服务器返回的结果)再次发起进行查询,直到返回查询的 结果为止。此查询的源不变,但查询的目标不断变化,为查询结果一般需要发起多次查询。

 迭代算法:客户端向LocalDNS发起域名查询-->localDNS不知道域名对应的IP-->但它知道谁知道并推荐客 户端应该找谁-->客户端自己去找它

6. 实现私有DNS, 供本地网络主机作DNS递归查询。

安装宾得9

yum install bind bind-utils -y

配置bind9支持递归查询

vim /etc/named.conf

options {
    listen-on port 53 { 10.0.0.14; };      # 监听的 IP 地址
    listen-on-v6 port 53 { ::1; };             # IPv6 监听地址
    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";
    recursing-file  "/var/named/data/named.recursing";
    secroots-file   "/var/named/data/named.secroots";
    
    recursion yes;                            # 启用递归查询
    allow-recursion { trusted; };              # 允许信任的网络进行递归查询
    allow-query     { trusted; };              # 允许信任的网络进行查询
    allow-transfer  { none; };                 # 禁止区域传输
    
    forwarders {
        1.1.1.1;                              # Cloudflare DNS
        8.8.8.8;                              # Google DNS
    };
    forward only;                             # 仅转发模式
};

# 定义信任的网络
acl trusted {
    10.0.0.12/24;                           # 本地网络
    localhost;                                # 本地主机
};

# 日志配置(可选)
logging {
    channel default_debug {
        file "data/named.run";
        severity dynamic;
    };
};

# 根区域配置
zone "." IN {
    type hint;
    file "named.ca";
};

# 本地回环区域
zone "localhost.localdomain" IN {
    type master;
    file "named.localhost";
    allow-update { none; };
};

zone "localhost" IN {
    type master;
    file "named.localhost";
    allow-update { none; };
};

zone "1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.ip6.arpa" IN {
    type master;
    file "named.loopback";
    allow-update { none; };
};

zone "1.0.0.127.in-addr.arpa" IN {
    type master;
    file "named.loopback";
    allow-update { none; };
};

zone "0.in-addr.arpa" IN {
    type master;
    file "named.empty";
    allow-update { none; };
};

配置区域文件

sudo mkdir -p /var/named/zones
sudo chown named:named /var/named/zones

vim /etc/named.rfc1912.zones

# 正向区域
zone "example.com" IN {
    type master;
    file "zones/db.example.com";
    allow-update { none; };
};

# 反向区域
zone "0.0.10.in-addr.arpa" IN {
    type master;
    file "zones/db.10.0.0.12";
    allow-update { none; };
};

创建正向区域文件

vim /var/named/zones/db.example.com

$TTL 86400
@       IN      SOA     ns1.example.com. admin.example.com. (
                        2023052101      ; Serial
                        3600            ; Refresh
                        1800            ; Retry
                        604800          ; Expire
                        86400 )         ; Minimum TTL

; 域名服务器
@       IN      NS      ns1.example.com.
@       IN      NS      ns2.example.com.

; 主机记录
@       IN      A       10.0.0.12       ; 域名指向的 IP
ns1     IN      A       10.0.0.2        ; 主 DNS 服务器
www     IN      A       192.168.1.100   ; Web 服务器
mail    IN      A       192.168.1.101   ; 邮件服务器

; MX 记录
@       IN      MX      10      mail.example.com.

创建反向区域文件

vim /var/named/zones/db.10.0.0

$TTL 86400
@       IN      SOA     ns1.example.com. admin.example.com. (
                        2023052101      ; Serial
                        3600            ; Refresh
                        1800            ; Retry
                        604800          ; Expire
                        86400 )         ; Minimum TTL

; 域名服务器
@       IN      NS      ns1.example.com.
@       IN      NS      ns2.example.com.

; PTR 记录(IP 到域名的映射)
10      IN      PTR     ns1.example.com.
11      IN      PTR     ns2.example.com.
100     IN      PTR     www.example.com.
101     IN      PTR     mail.example.com.

重启服务

# 启动服务并设置开机自启
sudo systemctl enable --now named
# 验证服务状态
sudo systemctl status named

配置服务器使用自身 DNS

vim /etc/resolv.conf

nameserver 10.0.0.12     # 指向本地 DNS 服务器
search example.com       # 搜索域(可选)

完成之后在客户端测试即可

7. 总结DNS服务器类型,解析类型,正反解析域,资源记录定义。

DNS服务器类型
定义 示例
递归解析服务器 接收客户端查询请求,负责完成所有层级查询并返回最终结果(或错误)。 本地ISP的DNS服务器、公共DNS(如8.8.8.8)
权威解析服务器 存储特定域名的权威记录,直接回答对该域名的查询。 ns1.example.com(管理example.com的DNS记录)
根DNS服务器 全球13组逻辑服务器,存储顶级域名(TLD)的权威服务器信息。 a.root-servers.netb.root-servers.net
TLD(顶级域名)服务器 管理顶级域名(如.com.org)下的权威服务器信息。 .com TLD服务器、.cn TLD服务器
本地DNS服务器 用户设备配置的首选DNS服务器,可能是递归解析服务器或缓存服务器。 家庭路由器DNS、企业内网DNS
解析类型

递归查询:是指DNS服务器在收到用户发起的请求时,必须向用户返回一个准确的查询结果。如果DNS服务器本地没 有存储与之对应的信息,则该服务器需要询问其他服务器,并将返回的查询结果提交给用户。

迭代查询:是指DNS服务器在收到用户发起的请求时,并不直接回复查询结果,而是告诉另一台DNS服务器的地址, 用户再向这台DNS服务器提交请求,这样依次反复,直到返回查询结果。

正反解析域
类型 定义 用途
正向解析域 将域名(如www.example.com)解析为IP地址(如192.0.2.1)。 网站访问、服务发现
反向解析域 将IP地址(如192.0.2.1)解析为域名(如www.example.com)。 邮件服务器验证(PTR记录)、安全审计
资源记录定义
记录类型 缩写 定义 示例
A A 将域名映射到IPv4地址。 www.example.com. 300 IN A 192.0.2.1
AAAA AAAA 将域名映射到IPv6地址。 www.example.com. 300 IN AAAA 2001:db8::1
CNAME CNAME 别名记录,将域名指向另一个域名(不能与其他记录共存)。 blog.example.com. 300 IN CNAME www.example.com.
MX MX 邮件交换记录,指定接收邮件的邮件服务器优先级。 example.com. 300 IN MX 10 mail.example.com.
TXT TXT 文本记录,用于验证域名所有权、SPF记录、DKIM等。 example.com. 300 IN TXT "v=spf1 include:_spf.example.com ~all"
NS NS 指定管理该域名的权威DNS服务器。 example.com. 300 IN NS ns1.example.com.
PTR PTR 反向解析记录,将IP地址映射到域名。 1.2.0.192.in-addr.arpa. 300 IN PTR www.example.com.
SOA SOA 起始授权记录,定义域名的权威信息(序列号、主从服务器、刷新时间等)。 example.com. 300 IN SOA ns1.example.com. admin.example.com. ( 2023101001 ; Serial 3600 ; Refresh 1800 ; Retry 604800 ; Expire 86400 ; Minimum TTL )
SRV SRV 定义服务地址和端口(如SIP、LDAP)。 _sip._tcp.example.com. 300 IN SRV 10 60 5060 sip.example.com.

8. 总结对称加密和非对称加密,单向哈希算法的概念和加密原理

对称加密
加密和解密使用相同的密钥。常见的对称加密算法包括DES(数据加密标准)、3DES(三重DES)、
AES(高级加密标准)等。这些算法通常用于加密大量数据,因为它们速度快且易于实现。

特性:

 -加密、解密使用同一个密钥,效率高;
 - 将原始数据分割成固定大小的块-,逐个进行加密
 - 加密解密双方需要协商使用哪一种秘钥信息

缺陷:

- 密钥过多
- 密钥分发,无法保证获得秘钥的人都是好人。
- 数据来源无法确认 

常见算法

  • AES(高级加密标准):取代 DES 的主流算法,支持 128/192/256 位密钥,安全性高。
  • DES(数据加密标准):早期算法,因密钥长度仅 56 位(易被暴力破解),已逐步淘汰。
  • ChaCha20:适用于移动设备和资源受限环境,性能优异。
非对称加密
非对称加密算法:
加密和解密使用不同的密钥,即公钥和私钥。公钥可以公开,而私钥必须保密。常见的非对称加密算法包
括RSA(Rivest-Shamir-Adleman算法)、DSA(Digital Signature Algorithm)数字签名算法、
ECC(椭圆曲线密码学)等。这些算法通常用于数字签名和密钥交换,因为它们提供了更高的安全性。

特性:

- 数据加密:适合加密较小数据,比如: 加密对称密钥
- 数字签名:主要在于让接收方确认发送方身
- 密钥长,算法复杂
- 加密解密效率低

常见算法

  • RSA:基于大质数分解难题,常用于证书认证、密钥交换(如 HTTPS、SSH)。
  • ECC(椭圆曲线加密):相同安全强度下密钥更短(如 256 位 ECC ≈ 3072 位 RSA),适合移动设备和物联网。
  • DSA(数字签名算法):专门用于数字签名,不支持加密
单向哈希算法
单向加密是一种不可逆的加密算法,它只能将明文加密成密文,而无法通过密文还原为明文。通常用于数
据完整性验证和密码存储等场景。常见的单向加密算法包括:SHA(安全散列算法)、SHA-1、SHA-256和
SHA-3、MD5(Message-Digest Algorithm 5)。

特性:

特性:
- 任意长度输入,固定长度输出。
- 若修改数据,指纹也会改变,且有雪崩效应,数据的一点微小改变,生成的指纹值变化非常大。
- 无法从指纹中重新生成数据,即不可逆,具有单向性。
功能:数据完整性

常见算法

  • MD5:128位哈希,已发现碰撞漏洞,不推荐用于安全场景。
  • SHA-1:160位哈希,已不安全(如2017年Google破解)。
  • SHA-2/3:目前主流,抗碰撞性强(如SHA-256、SHA3-256)

9. 总结cdn原理

主要功能

CDN的功能主要包含两块:网络通信功能、内容管理功能。
网络通信功能
高质量的IP通信网络,可以实现跨运营商和跨地域访问的效果,而且访问延时大大降低。
智能DNS解析功能,可以实现高效的、高质量的客户端与服务器间的通信。
内容管理功能
对缓存功能加强,随着网络能力的提高,在本地存储更多的静态文件对象。
用户请求的就是不再只是正在的web服务器,而且缓存了web服务器内容的CDN的节点服务器
通过上面的解析,我们可以简单的感觉到,CDN网络是在用户和web服务器之间增加内容的Cache层,如
何将用户的请求引导到Cache上获得源服务器的数据,主要是通过接管智能DNS实现。

流程

CDN是将DNS的解析功能与服务器本身的存储功能整合在一起了,将原来用户和web服务器之间的通信,
拆分为了Web服务器、CDN主节点、CDN边缘节点、用户端 四者之间的通信联系。
两次解析
浏览器调用域名解析库对域名进行解析,由于CDN对域名解析过程进行了调整,所以一般得到的是该域名
对应的CNAME记录。为了得到实际IP地址,浏览器需要再次对获得的CNAME域名进行解析以得到实际的IP地
址;在此过程中,使用的全局负载均衡DNS解析,这个时候得到CDN缓存服务器(边缘节点)的IP地址,浏览器
在得到实际的IP地址以后,向缓存服务器发出访问请求
内容解析
CDN缓存服务器根据浏览器提供的要访问的域名,通过Cache内部专用DNS解析得到此域名的实际IP地
址,再由缓存服务器向此实际IP地址提交访问请求;缓存服务器从实际IP地址得得到内容以后,一方面在本地
进行保存,以备以后使用,二方面把获取的数据返回给客户端,完成数据服务过程。
流程透明
通过以上的分析我们可以得到,为了实现既要对普通用户透明(即客户端无需进行任何设置,直接使用被
加速网站原有的域名即可访问),又要为指定的网站提供加速服务的同时降低对ICP的影响,只要修改整个访问
过程中的域名解析部分,以实现透明的加速服务。
posted @ 2025-05-21 10:44  晓铧  阅读(31)  评论(0)    收藏  举报
访问统计