1. 磁盘存储术语总结: head, track, sector, sylinder.
磁盘存储术语中的head、track、sector、cylinder分别有以下含义:
head(磁头):
磁头是磁盘驱动器中的读/写头,用于读取或写入数据。
每个磁盘表面(或盘面)通常配备一个磁头,因此磁头数通常等于盘面数。
track(磁道):
磁道是磁盘表面上的一个圆形数据存储区域,由多个扇区组成。
磁道可以视为磁盘上的同心圆,数据沿着这些圆进行存储。
sector(扇区):
扇区是磁盘存储的基本单位,通常每个扇区的大小为512字节(bytes)。
每个磁道上的扇区数量可能不同,但同一磁盘上的扇区大小通常是固定的。
cylinder(柱面):
当磁头移动时,它们通常是一起移动的。如果磁盘有多个盘面,则每个盘面对应的磁道在垂直方向上会形成一个柱面。
换句话说,柱面是由所有盘面上在同一半径上的磁道组成的。
这些术语共同构成了磁盘存储系统的基本架构,使得数据能够在磁盘上进行有序、高效的存储和检索。在实际应用中,了解这些术语有助于更好地理解磁盘的工作原理和性能特点。
2. 总结MBR,GPT结构。
MBR(Master Boot Record,主引导记录)和GPT(GUID Partition Table,全局唯一标识分区表)是两种不同的磁盘分区结构,它们各自有不同的特点和限制。以下是对MBR和GPT结构的总结:
MBR结构
位置与大小:
MBR位于硬盘的柱面0、磁头0、扇区1的位置,即0磁道位置。
一个扇区为512字节,MBR占用整个扇区,即512字节。
组成部分:
主引导程序(Boot Loader):占446字节,用于加载硬盘上其他分区上的更大的加载器(如操作系统的启动加载器)。
磁盘分区表(Disk Partition Table,DPT):占64字节,记录整块硬盘分区的状态,包括分区数量和每个分区的大小。每个分区的信息占16字节,因此MBR最多支持4个分区。
结束标志(Magic Number):占2字节,固定为55AA,用于检验主引导记录是否有效。
限制:
由于分区表大小限制,MBR最多支持4个主分区,或者3个主分区加1个扩展分区(扩展分区内可包含多个逻辑分区)。
MBR分区表不支持容量大于2.2TB的分区,因为每个分区表记录只有16字节,寻址范围有限。
GPT结构
位置与大小:
GPT磁盘上的第一个扇区也是MBR扇区,但与MBR磁盘上的MBR扇区功能不同,GPT磁盘上的MBR扇区主要用于防止磁盘错误识别和数据保护。
GPT的实际分区信息从第二个扇区开始存储。
组成部分:
GPT标头(GPT Header):定义了分区条目的位置以及大小,包括分区表以及CRC校验和。CRC校验用于验证GPT标头的完整性。
分区条目(Partition Entries):从第三个扇区开始,存储每个分区的详细信息。GPT使用8个字节来描述分区位置,因此理论上可以支持非常大的分区和磁盘容量。
备份GPT标头和分区条目:GPT在磁盘末尾还存储了GPT标头和分区条目的备份,以防止数据损坏时丢失分区信息。
特点与优势:
GPT支持更大的磁盘容量和分区大小,理论上可以支持8ZB的磁盘容量。
GPT的分区表项数量没有限制(实际数量受操作系统限制),在Windows下支持最多128个分区。
GPT没有扩展分区或逻辑分区的概念,分区结构更加简单清晰。
GPT分区形式比MBR更安全,因为GPT有备份的GPT标头和分区条目。
综上所述,MBR和GPT在结构、组成部分、限制和优势等方面存在显著差异。在选择使用哪种分区结构时,需要根据实际需求和硬件支持情况进行综合考虑
3. 总结学过的分区,文件系统管理,SWAP管理相关的命令及示例(加注释),示例 fdisk, parted, mkfs, tune2fs, xfs_info, fsck, mount, umount, swapon, swapoff
以下是对分区、文件系统管理以及SWAP管理相关命令的总结,包括示例和注释:
分区管理命令
fdisk
-
作用:用于查看和管理磁盘分区的命令行工具,可以创建、删除、调整硬盘上的分区。
-
基本语法:
fdisk [选项] [设备]
-
示例:
- # 列出所有磁盘分区
- fdisk -l
- # 查看指定磁盘的分区表
- fdisk -l /dev/sda
- # 进入交互模式创建新分区
- fdisk /dev/sda
注释:在交互模式下,可以使用n
命令创建新分区,d
命令删除分区,p
命令显示分区表等。
parted
-
作用:高级磁盘分区工具,支持GPT和MBR分区表。
-
基本语法:
parted [选项] [设备] [命令] [参数]
-
示例:
- # 显示/dev/sdb分区的相关信息
- parted /dev/sdb print
- # 创建GPT磁盘标签
- parted /dev/sdb mklabel gpt
- # 创建一个主分区
- parted /dev/sdb mkpart primary 1 1001
注释:mklabel
命令用于创建新的磁盘标签(分区表),mkpart
命令用于创建分区。
文件系统管理命令
mkfs
-
作用:创建文件系统。
-
基本语法:
mkfs [选项] [文件系统类型] [设备]
-
示例:
- # 在/dev/sdb1上创建ext4文件系统
- mkfs.ext4 /dev/sdb1
-
注释:
mkfs
命令后面需要跟上具体的文件系统类型,如ext4
、xfs
等。
tune2fs
-
作用:调整ext系列文件系统的参数。
-
基本语法:
tune2fs [选项] [设备]
-
示例:
- # 查看/dev/sdb1文件系统的超级块信息
- tune2fs -l /dev/sdb1
- # 设置/dev/sdb1文件系统的预留块百分比为5%
- tune2fs -r 5 /dev/sdb1
注释:tune2fs
命令可以查看和修改ext系列文件系统的各种参数。
xfs_info
-
作用:显示XFS文件系统的信息。
-
基本语法:
xfs_info [设备]
-
示例:
- # 显示/dev/sdc1的XFS文件系统信息
- xfs_info /dev/sdc1
注释:xfs_info
命令用于获取XFS文件系统的详细信息。
fsck
-
作用:检查和修复文件系统。
-
基本语法:
fsck [选项] [设备]
-
示例:
- # 检查并修复/dev/sdb1文件系统
- fsck /dev/sdb1
注释:fsck
命令在文件系统出现问题时非常有用,可以修复一些损坏的文件或目录。
SWAP管理命令
swapon
-
作用:启用交换空间(swap space)。
-
基本语法:
swapon [选项] [设备]
-
示例:
- # 启用/dev/sdb2作为交换空间
- swapon /dev/sdb2
- # 启用/root/swapfile作为交换文件
- swapon /root/swapfile
注释:交换空间可以是分区(如/dev/sdb2)或文件(如/root/swapfile)。
swapoff
-
作用:禁用交换空间。
-
基本语法:
swapoff [选项] [设备]
-
示例:
- # 禁用/dev/sdb2交换空间
- swapoff /dev/sdb2
- # 禁用/root/swapfile交换文件
- swapoff /root/swapfile
-
注释:
swapoff
命令用于禁用指定的交换空间或交换文件。
挂载与卸载命令
mount
-
作用:挂载文件系统。
-
基本语法:
mount [选项] [设备] [挂载点]
-
示例:
- # 将/dev/sdb1挂载到/mnt/mydata目录
- mount /dev/sdb1 /mnt/mydata
注释:挂载点是一个已经存在的目录,用于访问挂载的文件系统。
umount
-
作用:卸载文件系统。
-
基本语法:
umount [选项] [设备或挂载点]
-
示例:
- # 卸载/mnt/mydata目录上的文件系统
- umount /mnt/mydata
- # 或者卸载/dev/sdb1设备上的文件系统
- umount /dev/sdb1
注释:umount
命令用于卸载指定的文件系统,可以通过设备名或挂载点来卸载。
这些命令和示例涵盖了分区、文件系统管理以及SWAP管理的基本操作。请注意,在执行这些命令之前,务必备份重要数据,并确保你了解每个命令的作用和潜在风险。
4. 总结raid 0, 1, 5, 10, 01的工作原理。总结各自的利用率,冗余性,性能,至少几个硬盘实现。
RAID(Redundant Array of Independent Disks)即独立磁盘冗余阵列,是用多个独立的磁盘组合在一起形成一个大的磁盘系统,从而实现比单块磁盘更好的存储性能和更高的可靠性。以下是RAID 0、1、5、10、01的工作原理、利用率、冗余性、性能以及所需最少硬盘数量的总结
RAID 0
工作原理:RAID 0又称为Stripe或Striping,它代表了所有RAID级别中最高的存储性能。RAID 0提高存储性能的原理是把连续的数据分散到多个磁盘上存取,这样系统有数据请求就可以被多个磁盘并行的执行,每个磁盘执行属于它自己的那部分数据请求。这种数据上的并行操作可以充分利用总线的带宽,显著提高磁盘整体存取性能。
利用率:100%,因为所有数据都直接存储在磁盘上,没有额外的空间用于冗余或校验。
冗余性:无,RAID 0不提供数据冗余,一旦数据损坏,将无法恢复。
性能:非常高,因为数据可以同时写入多个硬盘,提高了I/O性能。
所需最少硬盘数量:1块以上,但通常至少使用2块以体现性能优势。
RAID 1
工作原理:RAID 1通过磁盘数据镜像实现数据冗余,在成对的独立磁盘上产生互为备份的数据。当原始数据繁忙时,可直接从镜像拷贝中读取数据。
利用率:50%,因为每个数据块都在两个磁盘上存储了副本。
冗余性:高,数据在两个磁盘上都有备份。
性能:通常比RAID 0低,因为数据需要同时写入两个硬盘。但是读取性能可以很高,因为可以从两个磁盘中的任何一个读取数据。
所需最少硬盘数量:2块。
RAID 5
工作原理:RAID 5具有和RAID 0相近似的数据读取速度,只是多了一个奇偶校验信息。RAID 5把数据和相对应的奇偶校验信息存储到组成RAID 5的各个磁盘上,并且奇偶校验信息和相对应的数据分别存储于不同的磁盘上。其中任意N-1块磁盘上都存储完整的数据,也就是说有相当于一块磁盘容量的空间用于存储奇偶校验信息。
利用率:(N-1)/N,其中N是磁盘数量。因为有一个磁盘的空间用于存储奇偶校验信息。
冗余性:中至高,因为使用奇偶校验来保护数据,可以容忍一个磁盘的故障。
性能:通常比RAID 1高,因为只有一块磁盘用于存储奇偶校验信息。读取性能通常很好,写入性能稍慢于RAID 0,因为需要计算奇偶校验信息。
所需最少硬盘数量:3块。
RAID 10
工作原理:RAID 10也被称为镜象阵列条带,它结合了RAID 1和RAID 0的特点。先将数据分成两部分,每部分都复制到两个硬盘上(RAID 1),然后每组镜像的硬盘也进行条带化以提供更高的性能(RAID 0)。
利用率:50%,因为每个数据块都在两个磁盘上存储了副本,并且条带化不会改变这一事实。
冗余性:高,因为数据被复制到两个硬盘上,并且还有额外的镜像用于容错。
性能:通常比RAID 5高,因为每个镜像组都可以独立地读写数据,提供了更高的并行性。
所需最少硬盘数量:4块。
RAID 01
工作原理:RAID 01是指一个有些复杂的RAID阵列,其中阵列设置为RAID 1,但元素是RAID 0。它将数据分成两部分,每部分都进行条带化并复制到两个硬盘上(类似RAID 0的条带化),但这些条带化的数据又被镜像到另一组磁盘上(类似RAID 1的镜像)。然而,这种设置通常不是最优的,因为RAID 01并不常见,且其性能可能不如RAID 10。
利用率:与RAID 1相同,为50%,因为数据在两个磁盘上都有备份。
冗余性:高,因为数据被复制到两个硬盘上,并且还有额外的镜像用于容错。但由于其复杂性,通常不推荐使用。
性能:理论上可以很高,但实际上可能受到RAID 0和RAID 1组合方式的影响,性能可能不如RAID 10。
所需最少硬盘数量:4块(但通常更多,以实现更好的性能和冗余性)。
综上所述,不同的RAID级别在工作原理、利用率、冗余性、性能和所需硬盘数量方面都有所不同。在选择RAID级别时,需要根据具体的应用场景和需求进行权衡。
5. 总结LVM的基本原理,完成实验对LVM的创建和磁盘扩容。
LVM(Logical Volume Manager)基本概念
LVM 是一种磁盘管理技术,它允许在操作系统层面灵活地管理磁盘空间。通过将物理磁盘或磁盘分区组合成卷组(Volume Group,VG),然后从卷组中划分出逻辑卷(Logical Volume,LV),最后在逻辑卷上创建文件系统来使用。
物理卷(Physical Volume,PV)
原理:物理卷是 LVM 的基本存储单元,它可以是整个物理磁盘(如 /dev/sda、/dev/sdb 等),也可以是磁盘分区(如 /dev/sda1、/dev/sda2 等)。LVM 会在物理卷的开头写入特定的标识信息,用于标记这是一个 LVM 物理卷。这些信息包含了物理卷的大小、物理卷的标识符(UUID)等。
示例:假设我们有一个新的磁盘 /dev/sdb,我们可以使用pvcreate /dev/sdb命令将其初始化为物理卷。这个命令会在 /dev/sdb 磁盘上写入 LVM 相关的元数据,使其能够被 LVM 系统识别和管理。
卷组(Volume Group,VG)
原理:卷组是由一个或多个物理卷组成的存储池。它就像是一个大的磁盘空间容器,把多个物理磁盘或者分区的空间整合在一起。在卷组中,物理卷的空间被统一管理和分配。可以从卷组中划分出不同大小的逻辑卷,用于不同的用途,如创建文件系统来存储数据、作为交换空间等。
示例:如果我们已经创建了两个物理卷/dev/sdb和/dev/sdc,可以使用vgcreate vg_data /dev/sdb /dev/sdc命令创建一个名为vg_data的卷组。这个卷组的总容量就是/dev/sdb和/dev/sdc两个物理卷容量之和。
逻辑卷(Logical Volume,LV)
原理:逻辑卷是从卷组中划分出来的一块空间,是真正用于存储数据或者挂载文件系统的部分。它的大小可以根据需要在卷组的可用空间范围内灵活调整。逻辑卷对于操作系统来说就像是一个普通的磁盘分区,用户可以在逻辑卷上创建文件系统(如 ext4、xfs 等),然后挂载到文件系统目录树中进行数据存储和访问。
示例:在刚才创建的vg_data卷组中,我们可以使用lvcreate -L 10G -n lv_mydata vg_data命令创建一个名为lv_mydata、大小为 10GB 的逻辑卷。这个逻辑卷就可以像普通分区一样被格式化并挂载使用。
动态调整优势
空间调整:LVM 的一个重要优势是能够动态调整逻辑卷的大小。如果一个逻辑卷的空间不够用,可以从卷组的剩余空间中分配更多的空间给它。例如,对于前面创建的lv_mydata逻辑卷,如果卷组vg_data还有剩余空间,我们可以使用lvextend -L +5G /dev/vg_data/lv_mydata命令为其增加 5GB 的空间。
灵活性:可以方便地在不重新分区和格式化整个磁盘的情况下,对存储布局进行调整。比如将一个逻辑卷从一个卷组移动到另一个卷组(虽然这个操作相对复杂,但 LVM 提供了这样的可能性),或者重新分配逻辑卷在卷组中的空间比例等操作,这为系统的存储管理提供了很大的灵活性。
对LVM的创建和磁盘扩容的实验
创建物理卷/dev/sdb5和/dev/sdc
创建卷组vg_test和创建逻辑卷mysql_lv、log_lv
编辑/etc/fstab,使分区永久有效
挂载所有逻辑卷,查看卷组信息
卷组有剩余空间,逻辑卷扩容
添加物理块/dev/sdb6,卷组扩容
6. 总结程序包管理器有哪些,以及包中包含什么内容的文件,尝试这些文件如何获取命令获取? yum/dnf/apt总结程序包获取途径,以及rpm, yum, apt命令选项示例
程序包管理器及其包含的文件内容
程序包管理器是操作系统中用于管理软件包的工具,它们能够将编译好的应用程序及其相关文件打包成一个或几个程序包文件,并提供安装、卸载、查询、升级和校验等功能。常见的程序包管理器有RPM(Redhat、CentOS)、DPKG(Debian、Ubuntu)等。
一个软件包中通常包含以下内容的文件:
源代码文件:包含用特定编程语言(如Python、Java、C++等)编写的实际代码。
配置文件:用于配置程序的各种参数和设置,如数据库连接参数、API密钥等。
资源文件:如图像、视频、音频等多媒体文件,以及文本文件、语言资源文件等。
构建和编译文件:如Makefile、build.gradle等,定义了如何编译和构建项目。
依赖管理文件:如requirements.txt(Python)、package.json(Node.js)等,用于列出和管理项目依赖的第三方库和工具。
文档和帮助文件:详细描述程序功能、使用方法的文件,以及FAQ、教程等帮助用户理解和使用程序的文件。
程序包获取命令及途径
yum/dnf/apt程序包获取途径
yum:主要用于RedHat、CentOS等系统。yum可以从配置的软件仓库中自动下载并安装所需的软件包,同时处理依赖关系。软件包通常来源于系统发行版的光盘、官方的文件服务器(或镜像站点)、第三方组织(如EPEL)等。
dnf:是Fedora 18+及CentOS 8+系统中rpm包管理器的前端管理工具,功能与yum类似,但提供了一些改进和额外的功能。
apt:主要用于Debian、Ubuntu等系统。apt可以从配置的软件仓库中下载并安装deb软件包,同时处理依赖关系。软件包通常来源于系统发行版的官方仓库、第三方仓库等。
rpm、yum、apt命令选项示例
rpm:
安装软件包:rpm -ivh package.rpm
卸载软件包:rpm -e package_name
查询软件包:rpm -qa | grep httpd(查询所有名称中包含"httpd"的软件包)
校验软件包:rpm -V package_name
yum:
安装软件包:yum install package_name
更新软件包:yum update package_name
卸载软件包:yum remove package_name
列出所有软件包:yum list
搜索软件包:yum search package_name
apt:
安装软件包:apt-get install package_name 或 apt install package_name
更新软件包列表:apt-get update 或 apt update
升级所有已安装的软件包:apt-get upgrade 或 apt upgrade
卸载软件包:apt-get remove package_name 或 apt remove package_name
搜索软件包:apt-cache search searched-package
综上所述,程序包管理器是操作系统中不可或缺的工具,它们能够方便地管理软件包及其依赖关系。不同的程序包管理器有不同的命令选项和获取途径,用户需要根据自己的操作系统和需求选择合适的工具和方法。
Rcoky软件安装实例
安装软件,启动服务,并查看相关信息,编写软件源
在线安装软件和卸载软件
离线安装软件
Ubuntu软件安装实例
查看软件信息,编写和更新软件源
apt安装和卸载软件
7. 简要总结yum/dnf工作原理。并搭建私有yum仓库(base, epel源)给另一个虚拟机使用。
yum工作原理
仓库配置:yum使用仓库(Repository)来管理软件包,这些仓库包含了软件包及其相关信息(如名称、版本、依赖关系等)的集合。yum需要配置一个或多个仓库来获取软件包,这些仓库可以存在于本地路径、HTTP、HTTPS或FTP服务器上。
元数据下载:当yum客户端需要安装包时,它会首先从配置的仓库中下载元数据。这些元数据被存储在特定目录repodata下,包含了软件包及其依赖关系的信息。
依赖解析:yum会解析下载的元数据,以确定软件包之间的依赖关系。如果某个软件包依赖于其他未安装的软件包,yum会自动下载并安装这些依赖的软件包。
软件包下载与安装:一旦依赖关系解析完毕,yum会根据用户的请求从仓库中下载所需的软件包,并进行安装或更新。
事务处理:yum使用事务(Transaction)来管理软件包的安装和更新。事务是一个操作的集合,可以包括多个软件包的安装、更新或删除。yum会在事务中执行所有的操作,以确保软件包的一致性和完整性。
dnf工作原理
dnf作为yum的继任者,在Linux系统中也扮演着包管理的角色。dnf的工作原理与yum类似,但有一些改进和增强:
仓库与元数据处理:dnf同样使用仓库来管理软件包,并会下载和处理仓库中的元数据。这些元数据包含了软件包及其依赖关系的信息。
依赖解析与安装:dnf会解析元数据中的依赖关系,并根据用户的请求下载并安装所需的软件包及其依赖项。
性能优化:dnf在性能上进行了优化,比yum更快且更高效。这得益于dnf使用更现代的编程语言和算法来处理包管理任务。
模块化:dnf引入了模块化的概念,允许用户更好地管理和控制软件包及其依赖项。这有助于减少软件包之间的冲突和依赖问题。
总结
yum和dnf都通过C/S模式来管理软件包,它们会下载并处理仓库中的元数据,解析软件包之间的依赖关系,并根据用户的请求下载并安装所需的软件包。dnf作为yum的继任者,在性能、模块化和用户能够更方便地安装、更新和删除软件包。
搭建私有yum仓库
服务器安装apache,关闭防火墙,启动apache,挂载光盘/dev/sr0/,拷贝文件
客户端编辑软件源test.repo,更新软件源,安装nginx
8. 总结系统安装之后的常用初始化步骤。rocky/ubuntu
Linux系统安装之后,常用初始化步骤通常包括以下几个方面:
一、网络配置
配置静态IP:
通过ifconfig命令查找网络配置,确定需要修改的网卡。
编辑网卡配置文件(如/etc/sysconfig/network-scripts/ifcfg-ensXX,其中ensXX是网卡名称),设置静态IP地址、子网掩码、网关、DNS等参数。
重启网络服务使配置生效。
配置主机名:
使用hostnamectl set-hostname命令设置主机名,并使其立即生效。
更新/etc/hosts文件,添加主机名和对应IP地址的映射。
二、安全配置
关闭防火墙:
使用systemctl命令查看防火墙状态,并关闭防火墙。
如果需要永久关闭防火墙,可以使用systemctl disable命令禁用防火墙服务。
关闭SELinux:
编辑/etc/selinux/config文件,将SELINUX的值设置为disabled。
重启系统使SELinux配置生效。
配置SSH免密登录:
在需要操作的机器上生成公钥和私钥对。
将公钥拷贝到目标机器上,以实现SSH免密登录。
三、系统优化
时间同步:
使用ntpdate命令临时同步系统时间。
使用crontab设置定时任务,实现系统时间的永久同步。
关闭交换分区:
使用swapoff -a命令临时关闭交换分区。
编辑/etc/fstab文件,注释掉与交换分区相关的行,以实现永久关闭。
修改内核参数:
根据需要加载内核模块(如br_netfilter)。
编辑/etc/sysctl.d/目录下的配置文件(如docker.conf),修改内核参数。
使用sysctl -p命令使配置生效。
四、其他配置
配置系统服务:
根据需要启用或禁用系统服务。
设置服务开机自启动。
更新系统:
使用yum或dnf命令更新系统软件包和依赖项。
重启系统以应用更新。
备份重要数据:
定期备份系统配置文件、用户数据等重要信息。
确保备份数据的可靠性和可恢复性。
这些初始化步骤有助于确保Linux系统的安全、稳定和高效运行。然而,具体的初始化步骤可能因系统版本、应用场景和用户需求而有所不同。因此,在进行初始化配置时,建议参考官方文档或相关教程,并根据实际情况进行调整和优化。
9. 总结开放系统互联OSI模型,每层作用及对应的协议。
开放系统互联(OSI)模型是一个概念框架,用于描述计算机网络中通信的结构和功能。它由七层组成,每一层都执行特定任务并使用特定的协议。以下是OSI模型的每层作用及对应的协议总结:
一、物理层
作用:主要负责将数字信号转换为物理信号,并在网络中进行传输。这包括电缆、光缆、中继器、集线器等物理设备,以及它们之间的接口标准和传输速率等。
协议:常见的物理层协议有以太网、令牌环、FDDI(光纤分布式数据接口)等。此外,还包括RS-232、V.35、RJ-45等物理接口标准。
二、数据链路层
作用:在物理层之上,以帧为单位传输数据。具体功能有误码检测、帧同步、流量控制、差错控制等,并控制对物理介质的访问。
协议:数据链路层常见的协议有以太网MAC、令牌环MAC、点对点协议(PPP)等。此外,还有HDLC(高级数据链路控制)、ATM(异步传递方式)等协议。
三、网络层
作用:负责数据的路由和转发,实现主机之间的通信。这包括IP地址的分配、路由的计算等。
协议:网络层的主要协议有IP(互联网协议)、ICMP(互联网控制报文协议)、ARP(地址解析协议)等。此外,还有IGMP(网际组管理协议)、RIP(路由信息协议)、OSPF(开放式最短路径优先)、BGP(边界网关协议)等协议。
四、传输层
作用:提供端到端的通信服务,确保数据可靠传输并按顺序接收。传输层还要处理端到端的差错控制和流量控制问题。
协议:传输层的主要协议有TCP(传输控制协议)和UDP(用户数据报协议)。此外,还有RTP(实时传输协议)、SCTP(流控制传输协议)、DCCP(数据报拥塞控制协议)等协议。
五、会话层
作用:负责建立、管理和结束会话,实现应用程序之间的通信以及数据的传输与共享。
协议:会话层常见的协议有NetBIOS(网络基本输入/输出系统)和SPX(序列交换协议)等。此外,还有RPC(远程过程调用协议)等协议。
六、表示层
作用:负责数据格式的转换,使得不同的系统能够互相理解,并将数据转换成应用程序能够识别的格式。
协议:表示层常见的协议有ASN.1(抽象语法标记法)和XML(可扩展标记语言)等。此外,还有JPEG、ASCII、GIF等数据格式转换协议。
七、应用层
作用:为用户提供特定的应用服务,包括电子邮件、网页浏览、文件传输等。应用层是OSI模型中最靠近用户的层次。
协议:应用层常见的协议有HTTP(超文本传输协议)、SMTP(简单邮件传输协议)、FTP(文件传输协议)等。此外,还有TFTP(简单文件传输协议)、DHCP(动态主机配置协议)、Telnet(远程登录)、DNS(域名系统)、SNMP(简单网络管理协议)、SSH(安全外壳协议)、POP3(邮局协议版本3)等协议。
综上所述,OSI模型的每一层都承担着不同的功能和任务,并使用特定的协议来实现这些功能。这些层次共同协作,确保了计算机网络中的通信能够顺利进行。
10. 调整动态端口范围为20000-60000
1、编辑/etc/sysctl.conf, 在配置文件/etc/sysctl.conf的最后一行添加
net.ipv4.ip_local_port_range = 20000 60000
2、运行sysctl命令,更新端口配置
sysctl -p
3、cat命令,查看更新是否生效
cat /proc/sys/net/ipv4/ip_local_port_range
11. 总结TCP包头结构,TCP三次握手,4次挥手。
TCP(Transmission Control Protocol)传输控制协议是一种面向连接的、可靠的、基于字节流的传输层协议。TCP包头结构是TCP协议实现数据传输和连接管理的重要部分,其详细结构可以归纳如下:
一、固定字段
TCP协议的首部前20个字节是一些固定的字段,这些字段在TCP报文中始终存在,具体如下:
源端口(Source Port):占2个字节,用于标识发送端进程的端口号。端口是传输层与应用层的服务接口,传输层的复用和分用功能都要通过端口才能实现。
目的端口(Destination Port):占2个字节,用于标识接收端进程的端口号。
序号(Sequence Number):占4个字节,用于标识从TCP源端向目的端发送的字节流中的起始字节序号。TCP连接中传送的数据流中的每一个字节都编上一个序号,保证数据的顺序。序号字段的值则指的是本报文段所发送的数据的第一个字节的序号。
确认号(Acknowledgment Number):占4个字节,是期望收到对方的下一个报文段的数据的第一个字节的序号。接收方收到分包之后,将会给发送方发送一个确认ACK包,用于告知发送方下一个要发送的分包将从此序号开始。
数据偏移(Data Offset):占4位(即0.5个字节),也称为首部长度,它指出TCP报文段的数据起始处距离TCP报文段的起始处有多远,或指示TCP报文段的首部长度。该字段的单位是32位字(4字节),因此数据偏移的最大值为15,即首部最大长度为60字节(包含20字节的固定字段和最多40字节的可选字段)。
保留字段(Reserved):占6位,目前尚未定义功能,通常置为0。
控制位(Control Flags):占6位(即0.75个字节),每一位都是一个控制标志,包括URG(紧急指针有效)、ACK(确认序号有效)、PSH(接收方应尽快将这个报文交给应用层)、RST(重置连接)、SYN(同步序号,用于连接建立)、FIN(释放连接)六个标志位。
窗口(Window):占2个字节,用于告知对方从本TCP报文中的确认号开始,允许发送方发送多少数据。这个字段的意义是为了保证接收速度变慢时,让发送方的速度也缓慢下来,接收方可能随时会动态调整窗口值,从而让发送方也能动态按需发送一定量的数据。
校验和(Checksum):占2个字节,用于对TCP首部和TCP数据部分进行校验,以保证数据的完整性。
紧急指针(Urgent Pointer):占16位,当URG=1时,该字段有效,指出在本报文段中紧急数据共有多少个字节(紧急数据放在本报文段数据的最前面)。
二、可选字段
在TCP报头的20字节固定字段之后,有一段可选字段,也称为选项(Options),其长度可变。TCP最初只规定了一种选项,即最大报文段长度MSS(Maximum Segment Size),它告诉对方TCP:“我的缓存所能接收的报文段的数据字段的最大长度是MSS个字节”。此外,可选字段还可以包含其他信息,如时间戳、窗口扩大选项等。
综上所述,TCP包头结构由固定的20个字节字段和长度可变的可选字段组成,这些字段共同实现了TCP协议的数据传输和连接管理功能。
TCP 三次握手是 TCP 协议建立连接的过程,通过三次报文交换来确保通信双方能够可靠地建立连接。以下是三次握手的具体过程:
第一次握手:
客户端动作:客户端向服务器发送一个 SYN 包(Synchronize Sequence Numbers,同步序列编号),请求建立连接。在 TCP 头部中,将 SYN 标志位设置为 1,表示这是一个连接请求报文。同时,客户端会选择一个初始序号(Initial Sequence Number,ISN),假设为 x,并将其放入报文的序列号(seq)字段中。这个 SYN 包不携带数据,但要消耗掉一个序号。此时,客户端进入 SYN_SENT(同步已发送)状态。
第二次握手:
服务器动作:服务器收到客户端的 SYN 包后,必须确认客户端的请求。服务器会向客户端发送一个 SYN+ACK 包,即同时设置 SYN 和 ACK 标志位为 1。其中,ACK 的值为客户端发送的序号 x 加 1,即 ack = x + 1,表示服务器已经收到了客户端的 SYN 包;服务器也会选择自己的初始序号,假设为 y,并将其放入报文的序列号(seq)字段中。这个 SYN+ACK 包也不携带数据,但同样要消耗掉一个序号。此时,服务器进入 SYN_RECV(同步收到)状态。
第三次握手:
客户端动作:客户端收到服务器的 SYN+ACK 包后,会向服务器发送一个确认包 ACK。在 TCP 头部中,将 ACK 标志位设置为 1,确认号(ack)字段的值为服务器发送的序号 y 加 1,即 ack = y + 1,同时,客户端此次发送报文的序列号 seq 为 x + 1(如果第三次握手的 ACK 报文不携带数据的话)。此包发送完毕,客户端进入 ESTABLISHED(已建立连接)状态。
服务器动作:服务器收到客户端的 ACK 包后,也进入 ESTABLISHED 状态。至此,TCP 三次握手完成,客户端和服务器之间的连接建立,可以开始进行数据传输。
TCP 三次握手的主要目的是为了对每次发送的数据量进行跟踪与协商,确保数据段的发送和接收同步。它还可以防止已失效的连接请求报文段突然又传送到了服务器,从而产生错误。
TCP 四次挥手是 TCP 连接终止的过程,以下是其具体步骤:
第一次挥手:
客户端动作:客户端完成数据传输任务后,向服务器发送一个 FIN 报文(FIN = 1),表示客户端希望关闭从客户端到服务器这个方向的连接。FIN 报文会消耗一个序列号,假设此时客户端的序列号为 x,那么这个报文的序列号 seq = x。发送完 FIN 报文后,客户端进入 FIN_WAIT_1(终止等待 1)状态,等待服务器的确认。
第二次挥手:
服务器动作:服务器收到客户端的 FIN 报文后,知道客户端想要关闭连接,于是向客户端发送一个 ACK 报文(ACK = 1)作为应答,表示服务器已经收到了客户端的关闭请求。确认号 ack = x + 1,其中 x 是客户端发送的 FIN 报文的序列号。同时,服务器会选择自己的一个序列号,假设为 y,将其放入报文的序列号 seq = y 字段中。此时服务器进入 CLOSE_WAIT(关闭等待)状态,在这个状态下,服务器还可以继续向客户端发送数据,但客户端不能再向服务器发送数据。
第三次挥手:
服务器动作:当服务器完成所有数据的发送后,也想要关闭连接,就会向客户端发送一个 FIN 报文(FIN = 1),告知客户端服务器的数据也发送完毕,可以关闭连接了。FIN 报文的序列号 seq = w(w 是服务器之前发送数据的最后一个字节的序号加 1),确认号 ack = x + 1(与第二次挥手的确认号相同,因为在这期间客户端没有再发送新的数据)。发送完这个报文后,服务器进入 LAST_ACK(最后确认)状态,等待客户端的最后确认。
第四次挥手:
客户端动作:客户端收到服务器的 FIN 报文后,知道服务器也想要关闭连接,于是向服务器发送一个 ACK 报文(ACK = 1)作为应答,表示客户端已经收到了服务器的关闭请求。确认号 ack = w + 1,其中 w 是服务器发送的 FIN 报文的序列号,客户端自己的序列号 seq = x + 1(这里的 x 是第一次挥手时客户端发送的 FIN 报文的序列号,因为在整个四次挥手过程中,客户端的序列号是在不断递增的)。发送完这个报文后,客户端进入 TIME_WAIT(时间等待)状态。服务器收到客户端的 ACK 报文后,就进入 CLOSED(关闭)状态,完成了服务器端的连接关闭。客户端在 TIME_WAIT 状态下会等待 2 倍的最大段生存时间(2MSL),如果在这段时间内没有收到服务器的重传请求,就认为服务器已经成功收到了自己的 ACK 报文,然后客户端也进入 CLOSED 状态,完成整个连接的关闭。
TCP 四次挥手的目的是确保双方都能正确地关闭连接,并且在关闭连接之前,保证所有的数据都已经传输完毕。这种机制可以有效地避免数据丢失和连接异常关闭等问题。
12. 总结主机到主机的包传递过程。
主机到主机的包传递完整过程涉及多个网络层和相关协议的协同工作,以下是一般情况下的完整过程:
同一局域网内主机间的包传递:
应用层数据生成:源主机上的应用程序生成需要传输的数据,例如在浏览器中输入网址请求网页时,浏览器应用程序会生成相应的请求数据。
传输层封装:
源主机的传输层(通常是 TCP 或 UDP 协议)会在应用层数据的基础上添加传输层头部信息。如果是 TCP 协议,会进行三次握手建立连接,并设置序列号、确认号等信息,确保数据的可靠传输;如果是 UDP 协议,则相对简单,直接添加 UDP 头部,不保证数据的可靠交付。
网络层封装:
网络层会为数据添加 IP 头部,其中包含源 IP 地址和目标 IP 地址。源 IP 地址是发送数据的主机的 IP 地址,目标 IP 地址是接收数据的主机的 IP 地址。通过 IP 地址,数据包可以在不同的网络之间进行路由和转发。
数据链路层封装:
数据链路层会为数据包添加帧头和帧尾,形成数据帧。帧头中包含源 MAC 地址和目标 MAC 地址。源 MAC 地址是源主机的网卡物理地址,目标 MAC 地址是目标主机的网卡物理地址。
如果源主机已知目标主机的 MAC 地址(例如之前通信过且缓存中有记录),则可以直接使用该 MAC 地址进行封装;如果不知道目标主机的 MAC 地址,源主机会发送 ARP 广播请求,询问目标 IP 地址对应的 MAC 地址。其他主机收到 ARP 广播请求后,如果 IP 地址与请求中的目标 IP 地址不匹配,则忽略该请求;如果匹配,则会返回自己的 MAC 地址给源主机。源主机收到回应后,将目标 MAC 地址添加到数据帧中。
物理层传输:
数据帧经过数据链路层封装后,会被转换为比特流,通过物理介质(如网线、无线信号等)传输到目标主机所在的局域网内。
目标主机接收:
目标主机的网卡接收到物理信号后,将其转换为数据帧,并在数据链路层进行校验,检查帧的完整性和正确性。如果校验通过,则将数据帧向上传递到网络层。
网络层根据 IP 头部中的目标 IP 地址判断该数据包是否是发送给自己的,如果是,则将数据包向上传递到传输层。
传输层根据协议类型(TCP 或 UDP)进行相应的处理。如果是 TCP 协议,会进行确认、重传等机制,确保数据的可靠接收;如果是 UDP 协议,则直接将数据传递给应用层。
应用层程序接收到数据后,进行相应的处理,例如浏览器显示网页内容。
不同局域网内通过路由器连接的主机间的包传递:
源主机处理(同上述同一局域网内的前四步):源主机上的应用程序生成数据,经过传输层封装、网络层封装和数据链路层封装后,准备发送数据包。在数据链路层封装时,如果源主机不知道网关(连接本局域网和其他网络的路由器接口)的 MAC 地址,也需要通过 ARP 广播获取网关的 MAC 地址。
路由器接收和转发:
路由器的某个端口接收到源主机发送的数据帧后,首先在数据链路层进行校验和解析,提取出数据包的 IP 头部。
路由器根据 IP 头部中的目标 IP 地址,在自己的路由表中查找对应的转发路径和下一跳 IP 地址。
如果找到了合适的路由表项,路由器会重新封装数据帧。将源 MAC 地址改为自己转发端口的 MAC 地址,目标 MAC 地址改为下一跳设备(可能是另一个路由器或目标主机所在网络的网关)的 MAC 地址,然后将数据帧发送出去。
中间路由器的处理(如果有多个路由器):中间的路由器接收到数据包后,重复上述路由器接收和转发的步骤,直到数据包到达目标主机所在的局域网的网关路由器。
目标主机所在局域网的网关路由器处理:
网关路由器接收到数据包后,同样进行数据链路层的校验和解析,提取 IP 头部。
根据目标 IP 地址在本地网络中进行查找,如果目标主机在该局域网内,路由器会通过 ARP 广播获取目标主机的 MAC 地址(如果之前未获取过)。
最后,路由器将数据包重新封装,发送到目标主机。
目标主机接收(同上述同一局域网内的目标主机接收步骤):目标主机接收到数据包后,经过数据链路层、网络层、传输层的处理,最终将数据传递给应用层程序。
13. 总结IP地址 A, B, C, D 类,并解析IP地址的组成
IP地址是全世界范围内唯一的32位(4个字节×8位)的标识符,用于标识网络上的设备。以下是对A、B、C、D四类IP地址的总结以及IP地址组成的解析:
一、IP地址的组成
IP地址由两部分组成,即网络地址和主机地址,二者是主从关系。
网络号(net-id):它标志主机(或路由器)所连接到的网络,网络地址表示其属于互联网的哪一个网络。
主机号(host-id):它标志该主机(或路由器),主机地址表示其属于该网络中的哪一台主机。
具体来说,IP地址由四段组成,每个字段是一个字节(即4个字节),每个字节有8位,最大值是255(=2^8-1,即0~255)。这四段以点号分隔,共同构成了IP地址的唯一标识。
二、IP地址分类
A类地址
范围:1.0.0.1到127.255.255.254(二进制表示为:00000001 00000000 00000000 00000001~01111111 11111111 11111111 11111110)。
特点:第一段号码为网络号码,剩下的三段号码为本地计算机的号码。如果用二进制表示IP地址的话,A类IP地址就由1字节的网络地址和3字节主机地址组成,网络地址的最高位必须是“0”。
应用:一般用于大型网络。
网络数量和主机数量:A 类地址的网络位占 1 字节(8 位),主机位占 3 字节(24 位)。所以它可提供(减去两个特殊地址)2^7个网络,每个网络可以容纳(减去网络地址和广播地址)2^24-2个主机。这使得 A 类地址适用于拥有大量主机的大型网络,比如大型企业的内部网络。
B类地址
范围:128.0.0.1到191.255.255.254(二进制表示为:10000000 00000000 00000000 00000001~10111111 11111111 11111111 11111110)。
特点:前两段号码为网络号码。如果用二进制表示IP地址的话,B类IP地址就由2字节的网络地址和2字节主机地址组成,网络地址的最高位必须是“10”。
应用:一般用于中等规模的网络,如大学、科研所等。
网络数量和主机数量:B 类地址的网络位占 2 字节(16 位),主机位占 2 字节(16 位)。它可提供2^14个网络,每个网络可以容纳2^14-2个主机。
C类地址
范围:192.0.0.1到223.255.255.254(二进制表示为:11000000 00000000 00000000 00000001~11011111 11111111 11111111 11111110)。
特点:前三段号码为网络号码,剩下的一段号码为本地计算机的号码。如果用二进制表示IP地址的话,C类IP地址就由3字节的网络地址和1字节主机地址组成,网络地址的最高位必须是“110”。
应用:一般用于小型网络,如公司、家庭网络(WiFi)。
网络数量和主机数量:C 类地址的网络位占 3 字节(24 位),主机位占 1 字节(8 位)。可以提供2^21个网络,每个网络能够容纳个2^8-2主机。C 类地址适用于小型的局域网络,如家庭网络或者小型办公室网络。
D类地址
范围:224.0.0.0到239.255.255.255。
特点:第一个字节以“1110”开始,是一个专门保留的地址。
应用:D类IP地址在历史上被叫做多播地址(multicast address),即组播地址,用于与网络上多台主机同时进行通信。
综上所述,IP地址的分类和组成是理解网络通信的基础。不同类型的IP地址适用于不同规模的网络,并有着各自的特点和应用场景。
14. 201.222.200.111/18所在网段主机数?子网掩码?说明计算方法。
201.222.200.111/18 所在网段前18位为1,后14位为0,子网掩码为:
11111111 11111111 11000000 00000000 = 255.255.192.0
考虑广播地址和网段地址的可用主机数: 2^(32-18)-2= 2^14 -2 =16382
15. 当A(10.0.1.1/16)与B(10.0.2.2/24)通信,A如何判断是否在同一个网段?A和B能否通信?
将A的子网掩码255.255.0.0与A的IP、B的IP进行与运算
A的IP 10.0.1.1 = 00001010 00000000 00000001 00000001
A的子网掩码 255.255.0.0 = 11111111 11111111 00000000 00000000
网络地址 10.0.0.0 = 00001010 00000000 00000000 00000000
B的IP 10.0.2.2 = 0001010 00000000 00000010 00000010
B的子网掩码 255.255.0.0 = 11111111 11111111 00000000 00000000
网络地址 10.0.0.0 = 00001010 00000000 00000000 00000000
由于网络地址相同,根据A的子网掩码判断,A与B处于同一网段
将B的子网掩码255.255.255.0与A的IP、B的IP进行与运算
A的IP 10.0.1.1 = 00001010 00000000 00000001 00000001
A的子网掩码 255.255.0.0 = 11111111 11111111 111111111 00000000
网络地址 10.0.1.0 = 00001010 00000000 00000000 00000000
B的IP 10.0.2.2 = 0001010 00000000 00000010 00000010
B的子网掩码 255.255.0.0 = 11111111 11111111 11111111 00000000
网络地址 10.0.2.0 = 00001010 00000000 00000010 00000000
由于网络地址不相同,根据B的子网掩码判断,A与B不处于同一网段
A和B能进行通信,但是B不能和A通信
16. 如何将10.0.0.0/8划分32个子网?求每个子网的掩码,主机数。
IP地址由网络号和主机号构成,32=2^5,划分32个子网,网络号需要从主机号借5位
10.0.0.0/8=00001010 00000000 00000000 00000000
第1个子网 IP地址 10.0.0.0/13=00001010 00000000 00000000 00000000
子网掩码:255.248.0.0
可用主机数:2^19 - 2 = 524286
第2个子网 IP地址 10.8.0.0/13=00001010 00001000 00000000 00000000
子网掩码:255.248.0.0
可用主机数:2^19 - 2 = 524286
第3个子网 IP地址 10.16.0.0/13=00001010 00010000 00000000 00000000
子网掩码:255.248.0.0
可用主机数:2^19 - 2 = 524286
第4个子网 IP地址 10.24.0.0/13=00001010 00011000 00000000 00000000
子网掩码:255.248.0.0
可用主机数:2^19 - 2 = 524286
第5个子网 IP地址 10.32.0.0/13=00001010 00100000 00000000 00000000
子网掩码:255.248.0.0
可用主机数:2^19 - 2 = 524286
第6个子网 IP地址 10.40.0.0/13=00001010 00101000 00000000 00000000
子网掩码:255.248.0.0
可用主机数:2^19 - 2 = 524286
第7个子网 IP地址 10.48.0.0/13=00001010 00110000 00000000 00000000
子网掩码:255.248.0.0
可用主机数:2^19 - 2 = 524286
第8个子网 IP地址 10.56.0.0/13=00001010 00111000 00000000 00000000
子网掩码:255.248.0.0
可用主机数:2^19 - 2 = 524286
第9个子网 IP地址 10.64.0.0/13=00001010 01000000 00000000 00000000
子网掩码:255.248.0.0
可用主机数:2^19 - 2 = 524286
第10个子网 IP地址 10.72.0.0/13=00001010 01001000 00000000 00000000
子网掩码:255.248.0.0
可用主机数:2^19 - 2 = 524286
第11个子网 IP地址 10.80.0.0/13=00001010 01010000 00000000 00000000
子网掩码:255.248.0.0
可用主机数:2^19 - 2 = 524286
第12个子网 IP地址 10.88.0.0/13=00001010 01011000 00000000 00000000
子网掩码:255.248.0.0
可用主机数:2^19 - 2 = 524286
第13个子网 IP地址 10.96.0.0/13=00001010 01100000 00000000 00000000
子网掩码:255.248.0.0
可用主机数:2^19 - 2 = 524286
第14个子网 IP地址 10.104.0.0/13=00001010 01101000 00000000 00000000
子网掩码:255.248.0.0
可用主机数:2^19 - 2 = 524286
第15个子网 IP地址 10.112.0.0/13=00001010 01110000 00000000 00000000
子网掩码:255.248.0.0
可用主机数:2^19 - 2 = 524286
第16个子网 IP地址 10.120.0.0/13=00001010 01111000 00000000 00000000
子网掩码:255.248.0.0
可用主机数:2^19 - 2 = 524286
第17个子网 IP地址 10.128.0.0/13=00001010 10000000 00000000 00000000
子网掩码:255.248.0.0
可用主机数:2^19 - 2 = 524286
第18个子网 IP地址 10.136.0.0/13=00001010 10001000 00000000 00000000
子网掩码:255.248.0.0
可用主机数:2^19 - 2 = 524286
第19个子网 IP地址 10.144.0.0/13=00001010 10010000 00000000 00000000
子网掩码:255.248.0.0
可用主机数:2^19 - 2 = 524286
第20个子网 IP地址 10.152.0.0/13=00001010 10011000 00000000 00000000
子网掩码:255.248.0.0
可用主机数:2^19 - 2 = 524286
第21个子网 IP地址 10.160.0.0/13=00001010 10100000 00000000 00000000
子网掩码:255.248.0.0
可用主机数:2^19 - 2 = 524286
第22个子网 IP地址 10.168.0.0/13=00001010 10101000 00000000 00000000
子网掩码:255.248.0.0
可用主机数:2^19 - 2 = 524286
第23个子网 IP地址 10.176.0.0/13=00001010 10110000 00000000 00000000
子网掩码:255.248.0.0
可用主机数:2^19 - 2 = 524286
第24个子网 IP地址 10.184.0.0/13=00001010 10111000 00000000 00000000
子网掩码:255.248.0.0
可用主机数:2^19 - 2 = 524286
第25个子网 IP地址 10.192.0.0/13=00001010 101000000 00000000 00000000
子网掩码:255.248.0.0
可用主机数:2^19 - 2 = 524286
第26个子网 IP地址 10.200.0.0/13=00001010 11001000 00000000 00000000
子网掩码:255.248.0.0
可用主机数:2^19 - 2 = 524286
第27个子网 IP地址 10.208.0.0/13=00001010 11010000 00000000 00000000
子网掩码:255.248.0.0
可用主机数:2^19 - 2 = 524286
第28个子网 IP地址 10.216.0.0/13=00001010 11011000 00000000 00000000
子网掩码:255.248.0.0
可用主机数:2^19 - 2 = 524286
第29个子网 IP地址 10.224.0.0/13=00001010 11100000 00000000 00000000
子网掩码:255.248.0.0
可用主机数:2^19 - 2 = 524286
第30个子网 IP地址 10.232.0.0/13=00001010 11101000 00000000 00000000
子网掩码:255.248.0.0
可用主机数:2^19 - 2 = 524286
第31个子网 IP地址 10.240.0.0/13=00001010 11110000 00000000 00000000
子网掩码:255.248.0.0
可用主机数:2^19 - 2 = 524286
第32个子网 IP地址 10.248.0.0/13=00001010 11111000 00000000 00000000
子网掩码:255.248.0.0
可用主机数:2^19 - 2 = 524286
32个子网络的子网掩码 255.248.0.0= 11111111 11111000 00000000 00000000
子网掩码:255.248.0.0
可用主机数:2^19 - 2 = 524286
计算32个子网络的可用主机数考虑网段地址和广播地址,所以每个子网可用主机数为2^19-2
评论记录:
回复评论: