第三周作业

一、 磁盘存储术语总结和理解.

以下是一些常见磁盘存储术语的总结和理解:

(一)磁盘物理结构相关

  • 磁头:一个盘面对应一个磁头。
  • 磁道:盘面上的一圈就是一个磁道。
  • 扇区:把每个磁道按512bytes大小进行划分,就是扇区,每个磁道的扇区数量是不一样的。
  • 柱面:磁头移动的时候,是一起移动的,如果是6个盘面,则6个磁头对应的磁道是一致的,这就是柱面

(二)存储容量相关

  • 位(bit):二进制位,是计算机中最小的数据单位,只能表示0或1。
  • 字节(Byte):由8位组成,是计算机中常用的基本存储单位。1字节可以表示一个字符或一个小的数值等。
  • 千字节(KB):1KB = 1024字节。通常用于衡量较小文件或存储区域的大小。
  • 兆字节(MB):1MB = 1024KB。常用于描述内存、硬盘分区等的容量大小。
  • 吉字节(GB):1GB = 1024MB。是目前计算机存储设备常用的容量单位,如硬盘、U盘等的容量通常以GB为单位来表示。
  • 太字节(TB):1TB = 1024GB。常用于大型数据存储系统、企业级硬盘等,随着数据量的不断增长,TB级别的存储设备越来越常见。

(三)磁盘接口相关

  • SATA(Serial ATA):串行ATA接口,是目前个人计算机中最常用的磁盘接口之一。它具有传输速度快、支持热插拔等优点,常见的SATA接口版本有SATA 3.0,其数据传输速率可达6Gbps。
  • SAS(Serial Attached SCSI):串行连接SCSI接口,主要用于服务器和高端存储设备。SAS接口具有更高的性能和可靠性,支持更多的设备连接,并且能够提供更好的错误检测和纠正功能。
  • NVMe(Non - Volatile Memory Express):一种基于闪存的存储设备接口标准,主要用于固态硬盘(SSD)。NVMe利用PCI - E总线直接连接存储设备和CPU,大大提高了数据传输速度,降低了延迟,能够充分发挥闪存的高性能优势。

磁盘管理相关

  • 分区:将一个物理磁盘划分成多个逻辑区域,每个分区可以独立进行格式化、安装操作系统或存储数据。通过分区,可以更好地组织和管理磁盘空间,同时也便于数据的备份和恢复。
  • 格式化:对磁盘分区进行初始化的过程,包括创建文件系统、设置引导记录等。格式化会清除分区上的所有数据,因此在进行格式化操作前需要备份重要数据。
  • 文件系统:用于管理磁盘上文件和目录的组织方式和数据结构。常见的文件系统有NTFS(Windows系统)、ext4、xfs(Linux系统)等。不同的文件系统具有不同的特点和功能。

二、 总结MBR,GPT结构区别。

  • 分区数量:MBR最多能有4个主分区,如果想分更多区,得用扩展分区来帮忙,但也比较麻烦。GPT则能轻松创建很多分区,Windows系统一般支持最多128个,像Mac、Linux等系统能支持的更多。
  • 容量支持:MBR管理的硬盘容量最大只能到2TB,要是硬盘容量比2TB大,多出来的空间就用不了。GPT能支持特别大的硬盘容量,理论上能到9.4ZB,这意味着不管硬盘有多大,GPT基本都能让它的空间得到充分利用。
  • 可靠性:MBR把分区信息都放在一个地方,要是这个地方出问题了,比如被病毒攻击或者磁盘坏了一块,分区信息丢失,就可能导致系统无法启动或者数据丢失。GPT在硬盘会有一份MBR冗余备份信息。
  • 引导方式:MBR用的是传统的BIOS引导,启动速度相对较慢。GPT搭配UEFI引导,启动速度更快。

三、 总结学过的分区,文件系统管理。

磁盘分区

  • 概念:将物理磁盘划分为多个逻辑上相互独立的区域,每个区域可以独立进行格式化、安装操作系统、存储数据等操作。
  • 目的
    • 隔离不同类型的数据:例如将操作系统、应用程序和用户数据分别存储在不同的分区,便于管理和维护,也能在系统出现问题时减少数据丢失的风险。
    • 提高磁盘性能:通过合理分区,可以将不同访问频率的数据分开存储,减少磁头寻道时间,提高磁盘读写效率。
    • 支持多操作系统:在同一台计算机上安装多个操作系统时,需要为每个操作系统划分独立的分区。
  • 常见分区类型
    • 主分区:是直接在硬盘上划分的分区,每个硬盘最多可以有4个主分区。主分区可以直接被操作系统识别和使用,用于安装操作系统或存储重要数据。
    • 扩展分区:如果需要划分更多的分区,可使用扩展分区。扩展分区不能直接使用,必须再划分为多个逻辑分区才能使用。
    • 逻辑分区:是从扩展分区中划分出来的分区,数量不受限制。逻辑分区可以像主分区一样进行格式化和存储数据。

文件系统管理

  • 概念:文件系统是一种用于组织和管理存储设备上数据的机制,它规定了文件和目录在磁盘上的存储方式、命名规则、访问权限等。
  • 功能
    • 文件存储与检索:负责将文件数据存储到磁盘的特定位置,并能够根据文件名或其他属性快速检索文件。
    • 目录管理:提供了一种层次化的目录结构,方便用户对文件进行分类和组织。用户可以创建、删除、重命名目录,并在目录中创建和管理文件。
    • 空间管理:跟踪磁盘上的空闲空间和已使用空间,合理分配磁盘空间给新创建的文件。当文件被删除时,及时回收其占用的空间。
    • 文件权限管理:允许用户或系统管理员为不同的用户或用户组设置文件和目录的访问权限,如读取、写入、执行等权限,以保护数据的安全性和隐私性。
  • 常见文件系统
    • FAT32:适用于各种操作系统,兼容性好,但单个文件最大不能超过4GB,分区最大支持2TB,安全性和性能相对较低。
    • NTFS:是Windows系统常用的文件系统,支持文件加密、权限管理、磁盘配额等功能,单个文件和分区容量都较大,性能较好。
    • ext4:常用于Linux系统,具有高效的磁盘空间管理和快速的文件访问速度,支持大容量文件和分区,可靠性较高。
    • HFS+:是苹果Mac OS系统使用的文件系统,提供了对文件和文件夹的丰富元数据支持,以及较好的磁盘性能和可靠性。

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

  • RAID 0
    • 原理:数据分块存于多硬盘,无冗余。
    • 利用率:100%。
    • 冗余性:无。
    • 性能:读写快。
    • 最少硬盘数:2个。
  • RAID 1
    • 原理:数据镜像存于多硬盘。
    • 利用率:50%。
    • 冗余性:高。
    • 性能:读好,写差。
    • 最少硬盘数:2个。
  • RAID 5
    • 原理:数据和校验信息分布存于多硬盘。
    • 利用率:(n-1)/n(n为硬盘数)。
    • 冗余性:可容忍单硬盘故障。
    • 性能:读写较平衡。
    • 最少硬盘数:3个。
  • RAID 10
    • 原理:先RAID 1镜像分组,再RAID 0条带化。
    • 利用率:50%。
    • 冗余性:高。
    • 性能:读写都好。
    • 最少硬盘数:4个。
  • RAID 01
    • 原理:先RAID 0条带化,再RAID 1镜像。
    • 利用率:50%。
    • 冗余性:高。
    • 性能:读好,写性能视情况而定。
    • 最少硬盘数:4个。

五、 总结LVM的基本原理,完成实验对LVM的创建和磁盘扩容。

六、 总结变量命名规则,不同类型变量(环境变量,位置变量,只读变量,局部变量,状态变量)如何使用。

(一)变量命名规则

  • 字符限制:变量名只能由字母(大小写均可)、数字和下划线(_)组成。
  • 禁止数字开头:变量名不能以数字开头,不过可以包含数字。
  • 区分大小写:大写字母和小写字母代表不同的变量。
  • 避免使用特殊字符:变量名中不能包含空格、标点符号或其他特殊字符。
  • 见名之意:变量名应当能够清晰地表达其存储数据的用途。

(二)不同类型变量的使用方法

1.环境变量

  • 定义:环境变量是全局变量,可被所有子进程访问,用于存储系统配置信息。
  • 使用场景:常用于设置路径、语言、用户信息等系统级参数。
  • 常见操作
    • 查看环境变量:使用echo $变量名命令,
    • 设置环境变量:使用export 变量名=值命令,
    • 永久设置环境变量:将export命令添加到~/.bashrc/etc/profile文件中。
    • 查看所有环境变量:使用envprintenv命令。

2.位置变量

  • 定义:位置变量是在脚本执行时传递给脚本的参数,用数字$1, $2, $3...表示。
  • 使用场景:用于脚本接收外部输入的参数。
  • 示例
    # 脚本 test.sh
    echo "第一个参数: $1"
    echo "第二个参数: $2"
    echo "所有参数: $@"
    echo "参数个数: $#"
    
    # 执行脚本
    bash test.sh apple banana
    
    输出结果:
    第一个参数: apple
    第二个参数: banana
    所有参数: apple banana
    参数个数: 2
    

3.只读变量

  • 定义:只读变量一旦被赋值,就不能再修改或删除。
  • 使用场景:用于存储不希望被修改的常量。
  • 示例
    NAME="John"
    readonly NAME
    NAME="Tom"  # 尝试修改会报错
    
    输出结果:
    -bash: NAME: 只读变量
    

局部变量

  • 定义:局部变量只在函数或代码块内部有效,外部无法访问。
  • 使用场景:用于函数内部临时存储数据,避免变量名冲突。
  • 示例
      #/bin/bash
    function() {
        local COUNT=10  # 定义局部变量
        echo "函数内部: $COUNT"
    }
    function
    echo "函数外部: $COUNT"  # 外部无法访问局部变量
    
    输出结果:
    函数内部: 10
    函数外部: 
    

状态变量

  • 定义:状态变量用于存储命令或脚本的执行状态,最常见的是$?
  • 使用场景:用于判断命令是否执行成功。
  • 示例
    #/bin/bash
    ls /nonexistent  # 列出不存在的目录
    echo "命令执行状态: $?"  # 0表示成功,非0表示失败
    
    if [ $? -eq 0 ]; then
        echo "命令执行成功"
    else
        echo "命令执行失败"
    fi
    
    输出结果:
    ls: 无法访问 '/nonexistent': 没有那个文件或目录
    命令执行状态: 2
    命令执行失败
    

其他特殊变量

  • $@:所有位置参数。
  • $#:位置参数的个数。

七、 编写一个脚本猜数字,使用判断提示用户比目标数字是大还是小

#!/bin/bash

answer=$((1 + RANDOM % 100))
guess=0

echo "猜数字游戏开始!!! gogogo出发咯。"

while true; do
    read -p "请输入你的猜测(1-100),输入0退出游戏: " guess
    
    # 退出游戏
    if [[ $guess -eq 0 ]]; then
        echo "游戏已退出。正确答案是:$answer"
        exit 0
    fi
    
    if [[ $guess -eq $answer ]]; then
        echo "恭喜你,猜对了!答案就是 $answer"
        exit 0
    elif [[ $guess -lt $answer ]]; then
        echo "猜小了!再大一点..."
    else
        echo "猜大了!再小一点..."
    fi
done    

八、 总结TCP包头结构,TCP三次握手,4次挥手。

  • TCP包头它通常由20字节的固定部分,还有0-40字节的可选部分

    • 源端口和目标端口各占2字节:分别包含发送端和接收端的端口号,端口号是传输层和应用层服务的接口,通过端口号实现传输层复用和分用的功能
    • 序号(4字节):用于标识TCP报文段中所携带的数据中第一个字节编号
    • 确认号(4字节):表示"期望"收到对方下一个报文段的第一个数据字节的序号。确认号用于确认数据的接收情况,确保数据传输的可靠性。
    • 数据偏移(4位):表示TCP包头的长度
    • 保留(6位):保留为将来使用,目前的TCP报文段中该字段置为0。
    • 控制位(6位):包含多种控制标志,用于实现TCP各种传输功能的控制。具体内容如下:
         -- URG(紧急确认字段):占一位,表示报文段中的数据是否为紧急数据,URG=1 时表示紧急指针字段有效,通知接收端优先处理紧急数据。
         -- ACK(确认标志字段):占一位,表示前面确认号字段是否有效,ACK=1 时表明该报文对已接收数据的确认。
         -- PSH(急迫标志字段):占一位,应用应该立即从TCP接收缓存区中读取数据,为后续接收数据腾出空间 当PSH=1时 表示需要将收到的数据立刻传给上层协议,而不是进行缓存。
         -- RST(复位标识字段):占一位,用于复位连接,当出现异常情况时,发送 RST 包强制关闭连接。当RST=1时,表示TCP连接中出现了严重错误,必须释放连接,然后再重新建立传输连接。RST还可以用来拒绝一个非法的报文段或拒绝打开一个连接。
         -- SYN(同步标志字段):占一位,在建立连接时,用于同步序列号。SYN 包带有初始序列号,告知对方自己的起始序列号。在连接建立时用来同步序号。当SYN=1而ACK=0时,表明这是一个连接请求报文段。对方若同意建立连接,则应在响应的报文段中使SYN=1和ACK=1。当SYN=1时说明这是一个请求建立连接或同意建立连接的报文。只有在前两次握手中SYN才置为1,带SYN标志的TCP报文段称为同步报文段。
         -- FIN(结束标志字段):占一位,用于释放连接,置 1 时表示发送端已无数据要发送,请求关闭连接
    • 窗口大小(2字节):用于流量控制,接收端通过此字段告诉发送端自己当前的接收缓冲区大小,即还能接收多少数据。发送端会根据这个窗口大小调整发送的数据量,避免接收端缓冲区溢出。
    • 校验和(2字节):对 TCP 包头和数据进行校验,用于检测数据在传输过程中是否发生错误。接收端会根据校验和判断接收到的数据是否完整、正确。
    • 紧急指针(2字节):当 URG 标志置 1 时有效,它指出紧急数据的最后一个字节的位置,用于处理紧急数据。
  • TCP三次握手

    • 第一次握手:A向B发送一个SYN包,A进入SYN_SENT 状态
    • 第二次握手:B接收到A的SYN包后,B向A发送一个SYN+ACK包,ACK=1用于确认收到客户端的SYN包。B进入SYN_RCVD 状态
    • 第三次捂手:A接收到B的SYN+ACK包,向B发送一个ACK包,ACK=1用于确认受到服务发送的SYN包,B受到ACK包后,连接成功双方进入ESTABLISHED 状态,然后两端就可以开始数据传输。
  • TCP四次挥手

    • 第一次挥手:A向B发送一个FIN包,表示没有数据要进行传输了。但仍可接收数据。此时A进入FIN_WAIT_1 状态。
    • 第二次挥手:B向收到A的FIN包后,向A发送一个ACK包作为已确认。此时B进入CLOSE_WAIT 状态,A进入FIN_WAIT_2 状态。B还有数据需要继续发送,所以不会立即关闭连接。
    • 第三次挥手:当B所有数据发送完成后,向A发送一个FIN包,表示没有数据要发送了,请求关闭连接,B进入LAST_ACK 状态。
    • 第四次挥手:当A收到B的FIN包后,向B发送一个ACK包进进行确认,然后A进入TIME_WAIT状态,经过一定时间后,A才会真正关闭连接。B收到A的ACK包后,关闭连接。


九、 总结源主机到目的主机的包传递过程。

  1.数据封装:在源主机上,应用层数据会先到达传输层,为数据加一层传输层头部完成数据端的封装(port),接着到网络层,添加一层网络层头部形成包(IP),然后到数据链路层,添加数据链路层头部形成帧(MAC),数据包前后加上一些外额外的信息,数据包前其他信息,尾部用于差错检测。
  2.路由选择:找到合适的地址,将数据包转发到下一个网络节点。
  3.数据传输: 通过物理层网卡将数据包转换为物理介质比特流进行传输。
  4.数据解封装:到达目标地址后将数据包进行解封装。

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

  • 子网掩码为18为
  • 主机数=32-18=14位
  • 可容纳主机数位214-2 = 16384 - 2 = 16382
  • 所以IP地址(201.222.200.111/18)可有 16382 台主机

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

  • A处于10.0.0.0网段 B处于10.0.2.0网段不在同一个网段,如需通信需要路由器等设备。

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

  • 计算需要借用的主机位
    • 原子网掩码为255.0.0.0 换分成32个子网,25=32,所以需要借用5位来换分子网
  • 计算新的掩码
    • 原地址10.0.0.0/8的二进制表示为11111111.00000000.00000000.00000000,转换为十进制为255.0.0.0
    • 借用五位后子网掩码变为11111111.11111000.00000000.00000000,转换为十进制为255.248.0.0
  • 计算主机数
    • 剩余主机位=32 - 8 = 24 - 5 =19位
    • 主机数=219 - 2 = 524288 - 2 = 524286
  • 10.0.0.0/8 划分为32个子网是,每个子网的主机数是524286。


posted @ 2025-05-13 22:53  想要进步  阅读(22)  评论(0)    收藏  举报