当前位置: 首页 > article >正文

第三周作业

第三周作业

  • 1. 总结程序包管理器有哪些,以及包中包含什么内容的文件,尝试这些文件如何获取命令获取? yum/dnf/apt总结程序包获取途径,以及rpm, yum, apt命令选项示例。
    • 1.1.主流的程序包管理器
    • 1.2.程序包管理器相关文件
    • 1.3.系统发版的光盘或官方网站
    • 1.4.rpm包管理
    • 1.5.yum客户端管理
    • 1.6.apt命令管理
  • 2. 简要总结yum/dnf工作原理。并搭建私有yum仓库(base, epel源)给另一个虚拟机使用。
    • 2.1.yum/dnf工作原理
    • 2.2.搭建私有yum仓库(base, epel源)
  • 4. 简要总结apt的工作原理
  • 5. 编译安装nginx的步骤总结
  • 6. 磁盘存储术语总结: head, track, sector, cylinder.
  • 7. 总结MBR,GPT结构。
    • 7.1.MBR分区结构
    • 7.2.GPT分区结构
  • 8. 总结学过的分区,文件系统管理,SWAP管理相关的命令及示例(加注释),示例 fdisk, parted, mkfs, tune2fs, xfs_info, fsck, mount, umount, swapon, swapoff
    • 8.1.fdisk分区工具
    • 8.2.parted:warning:
    • 8.3.mkfs 创建文件系统
    • 8.4.tune2fs
    • 8.5.xfs_info
    • 8.6.fsck
    • 8.7.挂载文件系统 mount
    • 8.8.卸载文件系统 umount
    • 8.9.启用swap分区swapon
    • 8.10.禁用swap分区swapoff
  • 9. 总结raid 0, 1, 5, 10, 01的工作原理。总结各自的利用率,冗余性,性能,至少几个硬盘实现。
  • 10. 总结LVM的基本原理,完成实验对LVM的创建和磁盘扩容。
  • 11. 总结开放系统互联OSI模型,每层作用及对应的协议。
  • 12. 调整动态端口范围为20000-60000
  • 13. 总结TCP包头结构,TCP三次握手,4次挥手。
    • 13.1.TCP包头结构
    • 13.2.TCP三次握手
    • 13.3.4次挥手
  • 14. 总结主机到主机的包传递过程。
  • 15. 总结IP地址 A, B, C, D 类,并解析IP地址的组成
  • 16. 201.222.200.111/18计算主机数?子网掩码?说明计算方法。
  • 17. 当A(10.0.1.1/16)与B(10.0.2.2/24)通信,A如何判断是否在同一个网段?A和B能否通信?
  • 18. 如何将10.0.0.0/8划分32个子网?求每个子网的掩码,主机数。
  • endl

课程进度要求:
第三周	
第8天-存储管理和软件管理	
第9天-软件管理和网络基础	
3、网络管理与Shell编程进阶
第10天-网络基础TCPIP协议	

第三周作业
	1. 总结程序包管理器有哪些,以及包中包含什么内容的文件,尝试这些文件如何获取命令获取? yum/dnf/apt总结程序包获取途径,以及rpm, yum, apt命令选项示例。
	2. 简要总结yum/dnf工作原理。并搭建私有yum仓库(base, epel源)给另一个虚拟机使用。
	4. 简要总结apt的工作原理
	5. 编译安装nginx的步骤总结
	6. 磁盘存储术语总结: head, track, sector, sylinder.
	7. 总结MBR,GPT结构。
	8. 总结学过的分区,文件系统管理,SWAP管理相关的命令及示例(加注释),示例 fdisk, parted, mkfs, tune2fs, xfs_info, fsck, mount, umount, swapon, swapoff
	9. 总结raid 0, 1, 5, 10, 01的工作原理。总结各自的利用率,冗余性,性能,至少几个硬盘实现。
	10. 总结LVM的基本原理,完成实验对LVM的创建和磁盘扩容。
	11. 总结开放系统互联OSI模型,每层作用及对应的协议。
	12. 调整动态端口范围为20000-60000
	13. 总结TCP包头结构,TCP三次握手,4次挥手。
	14. 总结主机到主机的包传递过程。
	15. 总结IP地址 A, B, C, D 类,并解析IP地址的组成
	16. 201.222.200.111/18计算主机数?子网掩码?说明计算方法。
	17. 当A(10.0.1.1/16)与B(10.0.2.2/24)通信,A如何判断是否在同一个网段?A和B能否通信?
	18. 如何将10.0.0.0/8划分32个子网?求每个子网的掩码,主机数。

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

1.1.主流的程序包管理器

  • redhat:rpm文件, rpm 包管理器,rpm:Redhat Package Manager,RPM Package Manager
  • debian:deb文件, dpkg 包管理器

1.2.程序包管理器相关文件

    1. 包文件组成 (每个包独有)
      • 包内的文件
      • 元数据,如:包的名称,版本,依赖性,描述等
      • 可能会有包安装或卸载时运行的脚本
    1. 数据库(公共):/var/lib/rpm
      • 程序包名称及版本
      • 依赖关系
      • 功能说明
      • 包安装后生成的各文件路径及校验码信息

1.3.系统发版的光盘或官方网站

  • CentOS 镜像
https://www.centos.org/download/
http://mirrors.aliyun.com
https://mirrors.huaweicloud.com/
https://mirror.tuna.tsinghua.edu.cn/
http://mirrors.sohu.com
http://mirrors.163.com
  • Ubuntu 镜像:
http://cdimage.ubuntu.com/releases/
http://releases.ubuntu.com

1.4.rpm包管理

使用rpm命令可以操作rpm包,如:

rpm -ivh package.rpm 安装rpm包
rpm -qa package 查询已安装的rpm包信息
rpm -qf package 查看指定的文件由哪个程序包安装生成
rpm -qi package 查看程序包详细信息
rpm -ql package 查看指定的程序包安装后生成的所有文件
rpm -e package 删除rpm包
[root@centos8 ~]#rpm -qf /etc/issue
centos-release-8.1-1.1911.0.8.el8.x86_64
[11:09:33 root@Rocky8 ~]# rpm -qa lrzsz
lrzsz-0.12.20-43.el8.x86_64

[11:09:59 root@Rocky8 ~]# rpm -qi lrzsz
Name        : lrzsz
Version     : 0.12.20
Release     : 43.el8
Architecture: x86_64
Install Date: Sat 26 Oct 2024 01:34:45 PM CST
Group       : Applications/Communications
Size        : 182414
License     : GPLv2+
Signature   : RSA/SHA256, Mon 12 Apr 2021 03:12:43 PM CST, Key ID 15af5dac6d745a60
Source RPM  : lrzsz-0.12.20-43.el8.src.rpm
Build Date  : Mon 12 Apr 2021 12:34:39 PM CST
Build Host  : ord1-prod-x86build002.svc.aws.rockylinux.org
Relocations : (not relocatable)
Packager    : infrastructure@rockylinux.org
Vendor      : Rocky
URL         : http://www.ohse.de/uwe/software/lrzsz.html
Summary     : The lrz and lsz modem communications programs
Description :
Lrzsz (consisting of lrz and lsz) is a cosmetically modified
zmodem/ymodem/xmodem package built from the public-domain version of
the rzsz package. Lrzsz was created to provide a working GNU
copylefted Zmodem solution for Linux systems.

[11:10:06 root@Rocky8 ~]# rpm -ql lrzsz
/usr/bin/rb
/usr/bin/rx
/usr/bin/rz
/usr/bin/sb
/usr/bin/sx
/usr/bin/sz
/usr/lib/.build-id
/usr/lib/.build-id/b3
/usr/lib/.build-id/b3/61f9cf808c825ef0e14d480a1daf34a303f1de
/usr/lib/.build-id/b3/61f9cf808c825ef0e14d480a1daf34a303f1de.1
/usr/lib/.build-id/b3/61f9cf808c825ef0e14d480a1daf34a303f1de.2
/usr/lib/.build-id/f6
/usr/lib/.build-id/f6/2a4605e7e31a383c440bd03cbf449039c6918e
/usr/lib/.build-id/f6/2a4605e7e31a383c440bd03cbf449039c6918e.1
/usr/lib/.build-id/f6/2a4605e7e31a383c440bd03cbf449039c6918e.2
/usr/share/locale/de/LC_MESSAGES/lrzsz.mo
/usr/share/man/man1/rz.1.gz
/usr/share/man/man1/sz.1.gz

[11:10:17 root@Rocky8 ~]# rpm -qf /usr/bin/rb
lrzsz-0.12.20-43.el8.x86_64

1.5.yum客户端管理

yum命令选项使用示例:

install:安装软件包

yum install package

update:更新软件包

yum update

search:搜索软件包

yum search package

list installed:列出所有已安装的软件包

yum list installed

remove:删除软件包

yum remove package

1.6.apt命令管理

  • dpkg管理deb软件包,deb包包含:
    • 数据文件(.deb文件本身)
    • 控制信息(描述文件内容和依赖关系的文件)
    • 配置文件
    • 文档
  • 使用dpkg命令操作deb包,如:
dpkg -i package.deb 安装deb包
dpkg -s package 查询deb包信息
dpkg -r package 删除deb包

#列出当前已安装的包,类似rpm -qa
dpkg -l
#列出该包的状态,包括详细信息,类似rpm –qi
dpkg -s package
#列出该包中所包含的文件,类似rpm –ql
dpkg -L package
#搜索包含pattern的包,类似rpm –qf
dpkg -S <pattern>
  • APT是基于dpkg构建的高级包管理系统,使用apt命令进行下载和安装操作:
apt update 更新软件包索引
apt install package 安装软件包
apt remove package 删除软件包

apt命令选项使用示例:

install:安装软件包

apt install package

update:更新软件源

apt update

upgrade:升级所有软件包

apt upgrade

search:搜索软件包

apt search package

list --installed:列出所有已安装的软件包

apt list --installed

remove:删除软件包

apt remove package

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

2.1.yum/dnf工作原理

yum(Yellowdog Updater, Modified)和dnf(Dandified Yum)是用于在基于RPM的Linux发行版中进行软件包管理的工具。
它们的工作原理可以简要总结如下:

  • 1️⃣ 软件源配置:yum和dnf通过配置软件源来确定从哪里获取软件包。软件源是包含软件包的服务器或存储库。
  • 2️⃣ 元数据下载:当执行yum或dnf命令时,它们首先会从软件源下载元数据。元数据是描述软件包及其依赖关系的信息,包括软件包名称、版本、依赖关系等。
  • 3️⃣ 依赖关系解析:yum和dnf会分析软件包的依赖关系,确定需要安装、更新或删除的软件包以及它们的依赖关系。
  • 4️⃣ 事务处理:在确定要进行的操作后,yum和dnf会执行相应的事务处理。这可能涉及安装、更新、删除软件包以及解决依赖关系。
  • 5️⃣ 下载和安装:如果需要,yum和dnf会从软件源下载相应的软件包,并将其安装到系统中。它们会自动处理软件包之间的依赖关系,确保所有依赖的软件包都得到满足。
  • 6️⃣ 本地缓存:yum和dnf会将下载的软件包保存在本地缓存中,以便后续使用。这样可以提高软件包的获取速度,并在离线环境下使用。

2.2.搭建私有yum仓库(base, epel源)

yum -y install httpd        下载Apache提供web服务
mkdir /var/www/html/centos/8 -p 创建私有仓库目录

三个选择:
1:把光盘挂载到私有仓库目录

mount /dev/sr0 /var/www/html/centos/8/

2:下载仓库中已经配好的源,里面所有的软件到私有仓库目录

cat /etc/yum.repos.d/epel.repo

[epel]
name=EPEL
baseurl=https://mirrors.aliyun.com/epel/8/Everything/x86_64/
gpgcheck=0
dnf repolist


Last metadata expiration check: 0:07:40 ago on Sun 22 Dec 2019 03:14:16 PM CST.
repo id             repo name                                           status
AppStream           AppStream                                           4,681
BaseOS               BaseOS                                              1,655
epel                 EPEL                                                3,707
#下载相关仓库包和元数据到私有仓库目录
dnf reposync --repoid=epel --download-metadata   -p /var/www/html/centos/8/

3 启动web服务

systemctl enable --now httpd

4 配置yum仓库

cat /etc/yum.repos.d/test.repo

[epel]
name=My epel
baseurl=http://<主机IP地址>/centos/8/epel/
enabled=1
gpgcheck=0

4. 简要总结apt的工作原理

在服务器上先复制所有DEB包,然后用APT的分析工具genbasedir根据每个DEB 包的包头(Header)信息对所有的DEB包进行分析,
并将该分析结果记录在文件夹base内的一个DEB 索引清单文件中,一旦APT 服务器内的DEB有所变动,要使用genbasedir产生新的DEB索引清单。
客户端在进行安装或升级时先要查询DEB索引清单,从而获知所有具有依赖关系的软件包,并一同下载到客户端以便安装。
当客户端需要安装、升级或删除某个软件包时,客户端计算机取得DEB索引清单压缩文件后,会将其解压置放于 /var/cache/apt/,
而客户端使用apt-get install或apt-get upgrade命令的时候,就会将这个文件夹内的数据和客户端计算机内的DEB数据库比对,
知道哪些DEB已安装、未安装或是可以升级的

5. 编译安装nginx的步骤总结

yum -y install nginx

6. 磁盘存储术语总结: head, track, sector, cylinder.

术语英文描述
磁头head一个盘面对应一个磁头
磁道track盘面上的每一圈就是一个磁道
扇区sector把每个磁道按512Bytes大小再进行划分,这就是扇区就,每个磁道上的扇区数量是不一样的
柱面cyliner磁头移动的时候,是一起移动的,如果是6个盘面,则6个磁头对应的磁道是一致的,这就是柱面

7. 总结MBR,GPT结构。

7.1.MBR分区结构

  • MBR:Master Boot Record,1982年,使用32位表示扇区数,分区不超过2T
  • 划分分区的单位:
    • CentOS 5 之前按整柱面划分
    • CentOS 6 版本后可以按Sector划分
  • 0磁道0扇区:512bytes
    • 446bytes: boot loader 启动相关
    • 64bytes:分区表,其中每16bytes标识一个分区
    • 2bytes: 55AA,标识位
  • MBR分区中一块硬盘最多有4个主分区,也可以3主分区+1扩展(N个逻辑分区)
  • MBR分区:主和扩展分区对应的1–4,/dev/sda3,逻辑分区从5开始,/dev/sda5
  • MBR分区结构

在这里插入图片描述

7.2.GPT分区结构

  • GPT:GUID(Globals Unique Identifiers) partition table 支持128个分区,使用64位,支持8Z( 512Byte/block )64Z ( 4096Byte/block)
  • 使用128位UUID(Universally Unique Identifier) 表示磁盘和分区,GPT分区表自动备份在头和尾两份, 并有CRC校验位
  • UEFI (Unified Extensible Firmware Interface 统一可扩展固件接口)硬件支持GPT,使得操作系统可以启动

在这里插入图片描述
GPT分区结构分为4个区域:
- GPT头
- 分区表
- GPT分区
- 备份区域

8. 总结学过的分区,文件系统管理,SWAP管理相关的命令及示例(加注释),示例 fdisk, parted, mkfs, tune2fs, xfs_info, fsck, mount, umount, swapon, swapoff

8.1.fdisk分区工具

#显示所有设备
fdisk -l

#显示指定设备
fdisk -l /dev/sda

8.2.parted⚠️

  • 注意:parted 的操作都是实时生效的,没有交互式确认
#显示所有分区信息
parted -l

8.3.mkfs 创建文件系统

#创建ext4 文件系统
#mkfs.ext4 /dev/sdc1 等同于 mkfs -t ext4 /dev/sdc1

8.4.tune2fs

  • 重新设定ext系列文件系统可调整参数的值
tune2fs [OPTION]... [DEVICE]

#常用选项
-l #查看指定文件系统信息
-L LABEL #修改卷标
-m N #修预留给管理员的空间百分比
-j #将ext2升级为ext3
-O #文件系统属性启用或禁用, -O ^has_journal
-o #调整文件系统的默认挂载选项,-o ^acl
-U UUID #修改UUID号

8.5.xfs_info

  • 显示已挂载的 xfs 文件系统信息
xfs_info /dev/sdc2

8.6.fsck

  • 文件系统检测和修复
fsck [options] -- [fs-options] [<filesystem> ...]

#常用选项
-a 		#自动修复
-r 		#交互式修复错误

8.7.挂载文件系统 mount

mount [-lhV]
mount -a [options]
mount [options] [--source] <source> | [--target] <directory>
mount [options] <source> <directory>
mount <operation> <mountpoint> [<target>]

8.8.卸载文件系统 umount

卸载时:可使用设备,也可以使用挂载点

umount [-hV]
umount -a [options]
umount [options] <source> | <directory>

8.9.启用swap分区swapon

swapon [options] [<spec>]

#常用选项
-a|--all 	#激活 /etc/fstab 中的所有交换区

8.10.禁用swap分区swapoff

swapoff [options] [<spec>]
#常用选项
-a|--all 		#禁用 /proc/swaps 中的所有交换区
-v|--verbose 	#显示过程

永久禁用swap

#删除swap行
[root@ubuntu2204 ~]# sed -i.bak '/swap/d' /etc/fstab
#或注释swap行
[root@ubuntu2204 ~]# sed -i.bak '/swap/s@^@#@' /etc/fstab
#禁用swap,由于修改了配置文件,所以重启也不会有SWAP
[root@ubuntu2204 ~]# swapoff -a

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

RAID(冗余磁盘阵列)是一种将多个物理磁盘组合在一起以提供更高性能、更高容量或更高可靠性的技术。以下是对RAID 0、1、5、10和01的工作原理的总结:

  • 1️⃣ RAID 0
    • 工作原理:RAID 0将数据分成块并将其分散存储在多个物理磁盘上。数据被分割成多个块,每个块被写入不同的磁盘。这样可以提高读写性能,因为数据可以同时从多个磁盘读取或写入。
    • 利用率:高,将多个磁盘组合在一起,提供更大的存储容量。
    • 冗余性:无,没有冗余备份,一块磁盘故障将导致数据丢失。
    • 性能:高,可以提供更高的读写性能和吞吐量,理论上,不管多少硬盘组成,那么他们的读写速度可以叠加。
    • 最少硬盘数量:至少两个硬盘。
      • 注意:如果多块硬盘大小不一样,则所有硬盘按他们当中最小的的来算,其他硬盘多出来的就用不了了。
    • 优点:高性能、高吞吐量。
    • 缺点:没有冗余,一块磁盘故障将导致所有数据丢失。
  • 2️⃣ RAID 1
    • 工作原理:RAID 1使用镜像技术,将数据同时写入两个或多个物理磁盘。这样可以实现数据的冗余存储,即使一块磁盘故障,数据仍然可用。
    • 利用率:低,存储容量减半,因为数据被完全复制在多个磁盘上。
    • 冗余性:高,数据被完全复制在多个磁盘上,即使一块磁盘故障,数据仍然可用。
    • 性能:相对较低,读取性能不错(每块个读%50),写入性能可能略有下降(因为每块硬盘的要写一份)。
    • 最少硬盘数量:至少两个硬盘。
    • 优点:高可靠性、数据冗余。
    • 缺点:存储容量减半(相当于花两倍的价格保存一份数据),读取性能几乎没有提升。
  • 3️⃣ RAID 5
    • 工作原理:RAID 5将数据和奇偶校验信息分布存储在多个物理磁盘上。奇偶校验信息用于恢复故障磁盘上的数据。数据和奇偶校验信息被分块存储在不同的磁盘上(当一个磁盘发生故障时,可以通过奇偶校验信息来恢复故障磁盘上的数据。假设磁盘1发生故障,可以通过从磁盘2和磁盘3上读取相同位置的数据,再进行异或运算,得到磁盘1上的数据。),提高了读写性能和存储容量。
    • 利用率:高,存储容量利用率高,不管多少快硬盘来搭建只需要一个磁盘的容量用于存放奇偶校验信息。
    • 冗余性:高,可以容忍一块磁盘故障,通过奇偶校验信息恢复数据。
    • 性能:相对较高,读取性能较好,写入性能相对较低。
    • 最少硬盘数量:至少三个硬盘。
    • 优点:高性能、高可靠性、存储容量利用率高。
    • 缺点:写入性能相对较低,防止不了两块硬盘同时损坏。
  • 4️⃣ RAID 10
    • 工作原理:RAID 10是RAID 1和RAID 0的组合。每两块磁盘组成RAID 1,然后再将这些RAID 1磁盘组成RAID 0阵列。这样既实现了数据的冗余存储,又提高了读写性能。
    • 利用率:中等,存储容量减半,因为数据被完全复制在多个磁盘上。
    • 冗余性:高,数据被完全复制在多个磁盘上,可以容忍多块磁盘故障(里面的每组RAID 1 坏一块没问题,但是坏两块 比翼双飞 组成不了最后的RAID 0 就GG)。
    • 性能:高,具有较好的读写性能和吞吐量。
    • 最少硬盘数量:至少四个硬盘。
    • 优点:高性能、高可靠性。
    • 缺点:存储容量减半。
  • 5️⃣ RAID 01
    • 工作原理:RAID 01是RAID 0和RAID 1的组合。首先将多个物理磁盘分成两组,每组内部使用RAID 0技术进行数据分块和分散存储,然后再将这两组磁盘使用RAID 1技术进行镜像存储。
    • 利用率:中等,存储容量较低,需要至少四个磁盘。
    • 冗余性:中等,数据被镜像存储在不同的磁盘上,可以容忍少些硬盘的损坏(坏一块硬盘,相当于坏了个RIAD 0)。
    • 性能:高,具有较好的读写性能和吞吐量。
    • 最少硬盘数量:至少四个硬盘。
    • 优点:高性能。
    • 缺点:存储容量较低,需要至少四个磁盘,冗余性不如RAID 10 高。

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

  • 扩容
# 创建逻辑卷
lvcreat -L 20G  -n mylv testvg
# 扩展逻辑卷
lvextend -L 20G /dev/textvg/mylv
# 进行文件系统同步
resize2fs /dev/testvg/mylv
  • 缩容
# 取消逻辑卷挂载
umount /dev/testvg/mylv
# 磁盘检查
e2fsck -f /dev/testvg/mylv
# 收缩文件系统
resize2fs /dev/testvg/mylv 20G
# 缩减逻辑卷大小
lvreduce -L -6G /dev/testvg/mylv
# 重新挂载
mount /dev/testvg/mylv   /lvtest

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

7️⃣ 第7层 应用层

  • 应用层(Application Layer)提供为应用软件而设的接口,以设置与另一应用软件之间的通信。
  • 例如:HTTP、HTTPS、FTP、TELNET、SSH、SMTP、POP3、MySQL等

6️⃣ 第6层 表示层

  • 主条目:表示层(Presentation Layer)把数据转换为能与接收者的系统格式兼容并适合传输的格式

5️⃣ 第5层 会话层

  • 会话层(Session Layer)负责在数据传输中设置和维护电脑网络中两台电脑之间的通信连接。

4️⃣ 第4层 传输层

  • 传输层(Transport Layer)把传输表头(TH)加至数据以形成数据包。传输表头包含了所使用的协议等发送信息。
  • 例如:传输控制协议(TCP)等。

3️⃣ 第3层 网络层

  • 网络层(Network Layer)决定数据的路径选择和转寄,将网络表头(NH)加至数据包,以形成报文。
  • 网络表头包含了网络数据。例如:互联网协议(IP)等。

2️⃣ 第2层 数据链接层

  • 数据链路层(Data Link Layer)负责网络寻址、错误侦测和改错。当表头和表尾被加至数据包时,会形成信息框(Data Frame)。
  • 数据链表头(DLH)是包含了物理地址和错误侦测及改错的方法。
  • 数据链表尾(DLT)是一串指示数据包末端的字符串。例如以太网、无线局域网(Wi-Fi)和通用分组无线服务(GPRS)等。
  • 分为两个子层:逻辑链路控制(logical link control,LLC)子层和介质访问控制(Mediaaccess control,MAC)子层

1️⃣ 第1层 物理层

  • 物理层(Physical Layer)在局部局域网上传送数据帧(Data Frame),它负责管理电脑通信设备和网络媒体之间的互通。
  • 包括了针脚、电压、线缆规范、集线器、中继器、主机接口卡等

在这里插入图片描述

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

默认的端口范围:

cat /proc/sys/net/ipv4/ip_local_port_range
32768	60999

编辑sysctl.conf文件

vim /etc/sysctl.conf

#在文件末尾添加以下行来设置动态端口范围:
net.ipv4.ip_local_port_range = 20000 60000

应用更改sysctl.conf设置

sysctl -p

net.ipv4.ip_local_port_range = 20000 60000

检查更改是否生效:运行以下命令来检查新的动态端口范围设置:

cat /proc/sys/net/ipv4/ip_local_port_range
20000	60000

显示为"20000 60000",则表示更改已成功应用。

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

13.1.TCP包头结构

在这里插入图片描述

源端口、目标端口:计算机上的进程要和其他进程通信是要通过计算机端口的,而一个计算机端口某个时刻只能被一个进程占用,所以通过指定源端口和目标端口,就可以知道是哪两个进程需要通信。源端口、目标端口是用16位表示的,可推算计算机的端口个数为2^16个,即65536

序列号:表示本报文段所发送数据的第一个字节的编号。在TCP连接中所传送的字节流的每一个字节都会按顺序编号。由于序列号由32位表示,所以每2^32个字节,就会出现序列号回绕,再次从 0开始

确认号:表示接收方期望收到发送方下一个报文段的第一个字节数据的编号。也就是告诉发送方:我希望你(指发送方)下次发送的数据的第一个字节数据的编号为此确认号

数据偏移:表示TCP报文段的首部长度,共4位,由于TCP首部包含一个长度可变的选项部分,需要指定这个TCP报文段到底有多长。它指出 TCP 报文段的数据起始处距离 TCP 报文段的起始处有多远。该字段的单位是32位(即4个字节为计算单位),4位二进制最大表示15,所以数据偏移也就是TCP首部最大60字节

URG:表示本报文段中发送的数据是否包含紧急数据。后面的紧急指针字段(urgent pointer)只有当URG=1时才有效

ACK:表示是否前面确认号字段是否有效。只有当ACK=1时,前面的确认号字段才有效。TCP规定,连接建立后,ACK必须为1,带ACK标志的TCP报文段称为确认报文段

PSH:提示接收端应用程序应该立即从TCP接收缓冲区中读走数据,为接收后续数据腾出空间。如果为1,则表示对方应当立即把数据提交给上层应用,而不是缓存起来,如果应用程序不将接收到的数据读走,就会一直停留在TCP接收缓冲区中

RST:如果收到一个RST=1的报文,说明与主机的连接出现了严重错误(如主机崩溃),必须释放连接,然后再重新建立连接。或者说明上次发送给主机的数据有问题,主机拒绝响应,带RST标志的TCP报文段称为复位报文段

SYN:在建立连接时使用,用来同步序号。当SYN=1,ACK=0时,表示这是一个请求建立连接的报文段;当SYN=1,ACK=1时,表示对方同意建立连接。SYN=1,说明这是一个请求建立连接或同意建立连接的报文。只有在前两次握手中SYN才置为1,带SYN标志的TCP报文段称为同步报文段

FIN:表示通知对方本端要关闭连接了,标记数据是否发送完毕。如果FIN=1,即告诉对方:“我的数据已经发送完毕,你可以释放连接了”,带FIN标志的TCP报文段称为结束报文段

窗口大小:表示现在允许对方发送的数据量,也就是告诉对方,从本报文段的确认号开始允许对方发送的数据量,达到此值,需要ACK确认后才能再继续传送后面数据,由Window size value *Window size scaling factor(此值在三次握手阶段TCP选项Window scale协商得到)得出此值

校验和:提供额外的可靠性

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

选项部分:其最大长度可根据TCP首部长度进行推算。TCP首部长度用4位表示,选项部分最长为:(2^4-1)*4-20=40字节

13.2.TCP三次握手

  • TCP三次握手是建立TCP连接的过程,由客户端和服务器之间进行。下面是TCP三次握手的过程:

在这里插入图片描述
1️⃣ 第一次握手(SYN):

  • 客户端发送一个带有SYN(同步)标志位的TCP包,将序列号设为随机值(Seq=X)。
  • 客户端进入SYN_SENT状态,等待服务器的响应。

2️⃣ 第二次握手(SYN+ACK):

  • 服务器收到客户端的SYN包后,发送一个带有SYN和ACK(确认)标志位的TCP包,将确认号设为客户端的序列号+1(Ack=X+1),同时将自己的序列号设为随机值(Seq=Y)。
  • 服务器进入SYN_RCVD状态。

3️⃣ 第三次握手(ACK):

  • 客户端收到服务器的SYN+ACK包后,发送一个带有ACK标志位的TCP包,将确认号设为服务器的序列号+1(Ack=Y+1)。
  • 服务器收到客户端的ACK包后,双方都进入已建立连接的ESTABLISHED状态,可以开始进行数据传输。

通过三次握手,客户端和服务器确认彼此的序列号和确认号,建立起可靠的TCP连接。这个过程中,客户端和服务器都发送了SYN包,用于同步序列号;服务器发送了SYN+ACK包,用于确认客户端的序列号和同步自己的序列号;客户端发送了ACK包,用于确认服务器的序号。这样双方就建立了可靠的连接,可以进行数据的传输和通信。

需要注意的是,TCP三次握手过程中可能会遇到网络延迟、丢包等问题,导致握手过程重复进行。为了解决这个问题,TCP引入了超时重传机制和序列号的随机化,以提高连接的可靠性和安全性。

13.3.4次挥手

  • TCP四次挥手是关闭TCP连接的过程,由客户端和服务器之间进行。下面是TCP四次挥手的过程
    在这里插入图片描述

1️⃣ 第一次挥手(FIN):

  • 客户端发送一个带有FIN(结束)标志位的TCP包,表示客户端不再发送数据。
  • 客户端进入FIN_WAIT_1状态,等待服务器的确认。

2️⃣ 第二次挥手(ACK):

  • 服务器收到客户端的FIN包后,发送一个带有ACK标志位的TCP包,表示服务器收到了客户端的关闭请求。
  • 服务器进入CLOSE_WAIT状态,等待自己的关闭请求。

3️⃣ 第三次挥手(FIN):

  • 服务器发送一个带有FIN标志位的TCP包,表示服务器也不再发送数据。
  • 服务器进入LAST_ACK状态,等待客户端的确认。

4️⃣ 第四次挥手(ACK):

  • 客户端收到服务器的FIN包后,发送一个带有ACK标志位的TCP包,表示客户端收到了服务器的关闭请求。
  • 客户端进入TIME_WAIT状态,在这个状态下会等待一段时间(通常是2倍的最大报文段寿命),确保服务器收到了ACK包。
  • 服务器收到客户端的ACK包后,进入CLOSED状态,关闭连接。
  • 客户端在等待时间结束后,也进入CLOSED状态,关闭连接。

通过四次挥手,客户端和服务器完成了双向的关闭连接操作。客户端和服务器都发送了FIN包,用于结束数据的发送;服务器发送了ACK包,用于确认客户端的关闭请求;服务器发送了FIN包,用于结束数据的接收;客户端发送了ACK包,用于确认服务器的关闭请求。这样双方就完成了连接的关闭,不再进行数据的传输和通信。

需要注意的是,TCP四次挥手过程中可能会遇到网络延迟、丢包等问题,导致挥手过程重复进行。为了解决这个问题,TCP引入了超时重传机制,以提高连接的可靠性和安全性。此外,客户端在TIME_WAIT状态下等待一段时间,是为了确保服务器收到了ACK包,防止服务器误判为连接异常而关闭连接。

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

主机到主机的包传递过程可以总结为以下几个步骤:

  • 1️⃣ 应用层封装数据:发送主机的应用程序将要发送的数据封装成应用层的数据包,添加上相应的应用层协议头部,如HTTP、FTP等。

  • 2️⃣ 传输层封装数据:传输层协议(如TCP或UDP)将应用层的数据包封装成传输层的数据段。在TCP中,会添加TCP头部,包括源端口号和目的端口号等信息。

  • 3️⃣ 网络层封装数据:网络层协议(如IP)将传输层的数据段封装成网络层的数据包。在IP中,会添加IP头部,包括源IP地址和目的IP地址等信息。

  • 4️⃣ 数据链路层封装数据:数据链路层协议(如以太网)将网络层的数据包封装成帧。在以太网中,会添加以太网头部,包括源MAC地址和目的MAC地址等信息。

  • 5️⃣ 物理层传输数据:数据链路层将帧传输到物理层,通过物理媒介(如以太网电缆、无线信道等)将数据发送到目标主机。

  • 6️⃣ 目标主机接收数据:接收主机的物理层接收到数据后,依次向上交给数据链路层、网络层、传输层和应用层进行解封装。

  • 7️⃣ 数据传递给应用程序:接收主机的应用层接收到数据后,进行相应的处理,将数据交给目标应用程序进行处理或显示。

总结起来,主机到主机的包传递过程经过应用层、传输层、网络层、数据链路层和物理层的封装和传输,最终到达目标主机后再进行解封装,将数据传递给目标应用程序。这个过程中,每一层协议都添加了相应的头部信息,用于标识和控制数据的传输。

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

IP地址可以分为A、B、C和D类,每个类别有不同的地址范围和网络规模。

  • 1️⃣ A类IP地址:以0开头,范围从1.0.0.0到126.0.0.0。A类地址的前8位是网络位,后24位是主机位。A类地址适用于大型网络,可以有2^24-2个主机。

  • 2️⃣ B类IP地址:以10开头,范围从128.0.0.0到191.0.0.0。B类地址的前16位是网络位,后16位是主机位。B类地址适用于中型网络,可以有2^16-2个主机。

  • 3️⃣ C类IP地址:以110开头,范围从192.0.0.0到223.0.0.0。C类地址的前24位是网络位,后8位是主机位。C类地址适用于小型网络,可以有2^8-2个主机。

  • 4️⃣ D类IP地址:以1110开头,范围从224.0.0.0到239.0.0.0。D类地址用于多播(Multicast)通信,不分网络和主机。

私网地址范围是指专门用于内部网络或局域网(LAN)中的IP地址范围,不被公共互联网路由器转发。

私网地址范围如下:

  • A类私网地址范围:10.0.0.0到10.255.255.255
  • B类私网地址范围:172.16.0.0到172.31.255.255
  • C类私网地址范围:192.168.0.0到192.168.255.255

这些私网地址范围是为了在内部网络中使用,不需要向互联网注册和分配。私网地址可以重复使用,因为在互联网上,这些地址是不可路由的,只能在局域网内部使用。

私网地址的使用可以帮助组织和企业在内部网络中进行IP地址分配,而不需要依赖于公共IP地址的有限资源。这样可以更好地管理和控制局域网中的主机和设备。

IP地址的组成如下:

  • 网络部分(Network Portion):IP地址的前面几位用来表示网络的标识,用于路由器进行数据包转发。根据IP地址的类别不同,网络部分的位数也不同。

  • 主机部分(Host Portion):IP地址的后面几位用来表示主机的标识,用于在网络中唯一标识一个主机。根据IP地址的类别不同,主机部分的位数也不同。

  • 子网掩码(Subnet Mask):用于将IP地址划分为网络部分和主机部分。子网掩码是一个与IP地址长度相同的二进制数,其中网络部分为1,主机部分为0。通过与IP地址进行逻辑与运算,可以得到网络部分和主机部分的值。

IP地址的分类和组成是为了实现网络的划分和路由的目的,以便进行有效的数据传输和管理。不同类别的IP地址可以满足不同规模和需求的网络环境。

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

根据IP地址的子网掩码,可以确定网络地址和主机地址的范围。子网掩码是一个32位的二进制数,其中前面的连续位是网络地址,后面的连续位是主机地址。

给定IP地址:201.222.200.111/18

将子网掩码转换为二进制:
18个1,后面是14个0:11111111.11111111.11000000.00000000

根据子网掩码的二进制,可以确定网络地址和主机地址的范围:
网络地址:201.222.192.0
主机地址范围:201.222.192.1 - 201.222.255.254

计算主机数:
主机地址范围中,主机地址的数量是:2^14 - 2 = 16,382

所以,该子网的主机数是16,382个。

子网掩码:255.255.192.0

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

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

A和B是否在同一个网段可以通过比较它们的网络地址和子网掩码来判断。
A的IP地址是10.0.1.1/16,子网掩码是255.255.0.0,转换为二进制为:

10.0.1.1:00001010.00000000.00000001.00000001
255.255.0.0:11111111.11111111.00000000.00000000

B的IP地址是10.0.2.2/24,子网掩码是255.255.255.0,转换为二进制为:

10.0.2.2:00001010.00000000.00000010.00000010
255.255.255.0:11111111.11111111.11111111.00000000

如果A事先不知道B的子网掩码,可以通过将自己的子网掩码和自己的IP地址相与,再将自己的子网掩码和对方的IP地址相与,来判断A和B是否在同一个网段。

基于规则:任何数和0相与结果为0,任何数和1相与为原值:
0^0=0
0^1=0
1^0=0
1^1=1

将A的子网掩码和A的IP地址相与:

00001010.00000000.00000001.00000001
11111111.11111111.00000000.00000000
00001010.00000000.00000000.00000000:得到的结果是10.0.0.0,这是A的网络地址。

B的IP地址是10.0.2.2,转换为二进制为:

10.0.2.2:00001010.00000000.00000010.00000010

将A的子网掩码和B的IP地址相与:

00001010.00000000.00000010.00000010
11111111.11111111.00000000.00000000
00001010.00000000.00000000.00000000:得到的结果也是10.0.0.0,这是B的网络地址。

这时A会认为B的ip和自己在一个网段,这时A ping B 的话,能够ping到,但是B也使用上面的方法,B会认为A不可到达,然后就不会回应A的ping

10.0.1.1的二进制是:00001010.00000000.00000001.00000001    网段是:10.0.0.0/16
10.0.2.2的二进制是:00001010.00000000.00000010.00000010    网段是:10.0.2.0/24

当A给B发送消息时:
A用自己的子网掩码去对B的IP求网段,得到:10.0.0.0/16;在同一个网段,可以通信
当B给A发送消息时:
B用自己的掩码去对A的ip求网段,得到   :10.0.1.0/24;不在一个网段,不能通信

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

10.0.0.0转为二进制是:00001010.00000000.00000000.00000000
子网掩码是8,表示前8位是网络位,后面24位是主机位,由于要划分位32个子网,
网络位向主机位借5位,2^5=32,网络位达到13位,主机位是19位,所以子网范围:
(00001010.00000)(000.00000000) -> (00001010.11111)(000.00000000)
10.0.0.0/13 -> 10.248.0.0/13
每个子网的掩码为13:255.248.0.0
各个子网的主机数是:524286
因为每个子网的主机位都是19位:0000000000000000000-1111111111111111111 即0-524287
所以除去不可用的2个主机,一共524285个主机数

要将10.0.0.0/8划分为32个子网,我们需要借用5位主机ID位来创建子网。这样,我们将有27个主机ID位用于主机,而5个主机ID位将用于子网。

首先,我们将初始的掩码为8位的网络ID(10.0.0.0/8)转换为二进制形式:
10.0.0.0/8: 00001010.00000000.00000000.00000000

根据我们的需求,我们将从左到右依次借用5个主机ID位。这样,我们可以得到以下的子网划分:
以下是按照二进制+1的方式增长划分的32个子网的网络ID、子网掩码和可用主机数:

10.0.0.0/13: 00001010.00000000.00000000.00000000
子网掩码:255.248.0.0
可用主机数:2^19 - 2 = 524286

10.8.0.0/13: 00001010.00001000.00000000.00000000
子网掩码:255.248.0.0
可用主机数:2^19 - 2 = 524286

10.16.0.0/13: 00001010.00010000.00000000.00000000
子网掩码:255.248.0.0
可用主机数:2^19 - 2 = 524286

10.24.0.0/13: 00001010.00011000.00000000.00000000
子网掩码:255.248.0.0
可用主机数:2^19 - 2 = 524286

10.32.0.0/13: 00001010.00100000.00000000.00000000
子网掩码:255.248.0.0
可用主机数:2^19 - 2 = 524286

10.40.0.0/13: 00001010.00101000.00000000.00000000
子网掩码:255.248.0.0
可用主机数:2^19 - 2 = 524286

10.48.0.0/13: 00001010.00110000.00000000.00000000
子网掩码:255.248.0.0
可用主机数:2^19 - 2 = 524286

10.56.0.0/13: 00001010.00111000.00000000.00000000
子网掩码:255.248.0.0
可用主机数:2^19 - 2 = 524286

10.64.0.0/13: 00001010.01000000.00000000.00000000
子网掩码:255.248.0.0
可用主机数:2^19 - 2 = 524286

10.72.0.0/13: 00001010.01001000.00000000.00000000
子网掩码:255.248.0.0
可用主机数:2^19 - 2 = 524286

10.80.0.0/13: 00001010.01010000.00000000.00000000
子网掩码:255.248.0.0
可用主机数:2^19 - 2 = 524286

10.88.0.0/13: 00001010.01011000.00000000.00000000
子网掩码:255.248.0.0
可用主机数:2^19 - 2 = 524286

10.96.0.0/13: 00001010.01100000.00000000.00000000
子网掩码:255.248.0.0
可用主机数:2^19 - 2 = 524286

10.104.0.0/13: 00001010.01101000.00000000.00000000
子网掩码:255.248.0.0
可用主机数:2^19 - 2 = 524286

10.112.0.0/13: 00001010.01110000.00000000.00000000
子网掩码:255.248.0.0
可用主机数:2^19 - 2 = 524286

10.120.0.0/13: 00001010.01111000.00000000.00000000
子网掩码:255.248.0.0
可用主机数:2^19 - 2 = 524286

10.128.0.0/13: 00001010.10000000.00000000.00000000
子网掩码:255.248.0.0
可用主机数:2^19 - 2 = 524286

10.136.0.0/13: 00001010.10001000.00000000.00000000
子网掩码:255.248.0.0
可用主机数:2^19 - 2 = 524286

10.144.0.0/13: 00001010.10010000.00000000.00000000
子网掩码:255.248.0.0
可用主机数:2^19 - 2 = 524286

10.152.0.0/13: 00001010.10011000.00000000.00000000
子网掩码:255.248.0.0
可用主机数:2^19 - 2 = 524286

10.160.0.0/13: 00001010.10100000.00000000.00000000
子网掩码:255.248.0.0
可用主机数:2^19 - 2 = 524286

10.168.0.0/13: 00001010.10101000.00000000.00000000
子网掩码:255.248.0.0
可用主机数:2^19 - 2 = 524286

10.176.0.0/13: 00001010.10110000.00000000.00000000
子网掩码:255.248.0.0
可用主机数:2^19 - 2 = 524286

10.184.0.0/13: 00001010.10111000.00000000.00000000
子网掩码:255.248.0.0
可用主机数:2^19 - 2 = 524286

10.192.0.0/13: 00001010.11000000.00000000.00000000
子网掩码:255.248.0.0
可用主机数:2^19 - 2 = 524286

10.200.0.0/13: 00001010.11001000.00000000.00000000
子网掩码:255.248.0.0
可用主机数:2^19 - 2 = 524286

10.208.0.0/13: 00001010.11010000.00000000.00000000
子网掩码:255.248.0.0
可用主机数:2^19 - 2 = 524286

10.216.0.0/13: 00001010.11011000.00000000.00000000
子网掩码:255.248.0.0
可用主机数:2^19 - 2 = 524286

10.224.0.0/13: 00001010.11100000.00000000.00000000
子网掩码:255.248.0.0
可用主机数:2^19 - 2 = 524286

10.232.0.0/13: 00001010.11101000.00000000.00000000
子网掩码:255.248.0.0
可用主机数:2^19 - 2 = 524286

请注意,每个子网的掩码都是255.248.0.0,因为我们借用了5个主机ID位,这使得每个子网可以容纳2^19 - 2个主机(减去2是因为网络ID和广播地址)。

这样,我们就成功将10.0.0.0/8划分为32个子网,并确定了每个子网的掩码和可用主机数。

endl


http://www.kler.cn/a/427887.html

相关文章:

  • RRT_STAR路径规划代码
  • 【自学嵌入式(7)天气时钟:WiFi模块、OLED模块、NTP模块开发】
  • C++中常用的十大排序方法之1——冒泡排序
  • python | OpenCV小记(一):cv2.imread(f) 读取图像操作(待更新)
  • 自制一个入门STM32 四足机器人具体开发顺序
  • 哈希表实现
  • 如何在MySQL中开启死锁日志及查看日志
  • 超详细!!关于Docker的访问仓库操作
  • TCP Analysis Flags 之 TCP Spurious Retransmission
  • Apache Dolphinscheduler可视化 DAG 工作流任务调度系统
  • 【Elasticsearch】ES+MySQL实现迷糊搜索
  • 【062B】基于51单片机无线病房呼叫系统(+时间)【Keil程序+报告+原理图】
  • 使用CIFS挂载nas到centos
  • Android仿美团左右联动购物列表
  • 数据分析类论文通过stata进行数据预处理(一)
  • 数据仓库全生命周期管理
  • 怎么实现邮件营销自动化?
  • 数据结构-查找
  • 基于 Apache Dolphinscheduler3.1.9中的Task 处理流程解析
  • Qt之第三方库‌QXlsx使用(三)
  • Dockerfile容器镜像构建技术
  • 13.在 Vue 3 中使用OpenLayers加载鹰眼控件示例教程
  • PDF解析方法详解 JavaPython 原创
  • 距离与AoA辅助的三维测距算法(适用于四个基站的情况的单点定位),MATLAB代码
  • python使用h5py保存数据
  • D614 PHP+MYSQL +失物招领系统网站的设计与现 源代码 配置 文档