1. 磁盘存储术语总结: head, track, sector, sylinder.
- head:磁头,一个盘面对应一个磁头
- track:磁道,盘面上的每一圈就是一个磁道
- sector:扇区,把每个磁道按512bytes大小再进行划分,就是扇区
- sylinder:柱面,磁头移动的时候,是一起移动的,如果是6个盘面,则6个磁头对应的磁道是一致的,这就是柱面
2. 总结MBR,GPT结构。
- MBR结构
0磁道0扇区 | 主分区 | 扩展分区 | (逻辑分区) |
---|---|---|---|
512bytes, | 最多4个主分区 | 3主+1扩展 | 在扩展分区下 |
446bytes:启动相关 | /dev/sda1-4 | 扩展:/dev/sda4 | /dev/sda5 |
64bytes:分区表 | 每16字节存储一个分区信息 | ||
2bytes:55AA,标识位 | 单分区不能超过2T |
-
MBR由4个部分组成
-
MBR中DPT结构
- GPT结构
GTP头 | 分区表 | GTP分区 | 备份区域 |
---|---|---|---|
支持128个分区 | 使用128位UUID表示磁盘和分区 | 自动备份头尾两份 |
3. 总结学过的分区,文件系统管理,SWAP管理相关的命令及示例(加注释)
- 分区相关命令
fdisk
#显示所有设备
fdisk -l
#显示指定设备
fdisk -l /dev/sda
#显示指定列
fdisk -lo id,size,type /dev/sda
#常用子命令:
p #输出分区列表
t #更改分区类型
n #创建新分区
d #删除分区
v #校验分区
u #转换单位
w #保存并退出
q #不保存退出
x #高级功能(专家模式)
-------------------------------------------------------------------
gdisk
#常用子命令
b #备份分区表到指定文件
c #修改分区名
d #删除分区
i #显示分区详细信息
l #列出所有分区类型
n #新建分区
o #创建新的分区表
p #查看分区
q #退出
r #恢复和转换选项,非专业人士勿用
s #排序
t #修改分区类型,默认 8300,表示普通分区
v #检测硬盘是否有问题
w #保存退出
x #额外功能,专家模式
? #显示帮助
-----------------------------------------------------------------------
- parted
#显示所有分区信息
parted -l
#显示指定磁盘设备分区信息
parted /dev/sdb print
#在磁盘上创建GPT分区
parted /dev/sdb mklable gpt
#创建分区,从1MB到1001MB
parted /dev/sdb mkpart primary 1 1001
#删除分区,指定Number 2
parted /dev/sdb rm 2
- 文件系统管理
1、创建文件系统
mkfs
#创建ext4 文件系统
mkfs.ext4 /dev/sdc1
#创建xfs 文件系统
mkfs.xfs /dev/sdc2
#查看指定设备
lsblk -f /dev/sdc
#查看已挂载的设备
df -l
--------------------------------------------------------------
tune2fs
#重新设定ext系列文件系统可调整参数的值
#查看指定文件系统信息
tune2fs -l /dev/sdc1
#修改卷标为TEST
tune2fs -L TEST /dev/sdb2
---------------------------------------------------------------
xfs_info
#显示已挂载的xfs文件系统信息
xfs_info /dev/sda1
--------------------------------------------------------------
fsck
#文件系统检测和修复,不要在挂载状态下执行命令修复
fsck.ext4 /dev/sdc1
mount
#挂载文件系统
#只读挂载光驱
mount /dev/sr0 -o ro /mnt/cdrom
#挂载分区
mount --source /dev/sdc2 /data
umount
#卸载文件系统,可使用设备,也可使用挂载点
umount /mnt/cdcom
swapon
#启用交换分区
swapon -a
swapoff
#禁用交换分区
swapoff -a
#永久禁用swap
sed -i.bak '/swap/s@^@#@' /etc/fstab
4. 总结raid 0, 1, 5, 10, 01的工作原理。总结各自的利用率,冗余性,性能,至少几个硬盘实现。
- 工作原理:
- RAID 0:以chunk为单位读写数据,可并行处理,速度最快,但没有冗余和容错能力。
- RAID 1:通过镜像方式,将数据复制到两个硬盘上,提供冗余和容错功能。
- RAID 5:使用分布式奇偶校验,将数据分割并存储在多个硬盘上,同时用一个额外硬盘存储奇偶校验信息,以提供中至高的冗余性。
- RAID 10:结合了RAID 1和RAID 0的特点,将数据分成两部分,每部分都复制到两个硬盘上,并提供更高的性能。
- RAID 01:也结合了RAID 0和RAID 1的特点,但每个条带都使用不同的硬盘来提供冗余和容错功能
RAID级别 | 利用率 | 冗余性 | 性能 | 最少硬盘 |
---|---|---|---|---|
0 | 100% | 无 | 读写性能↑ | 1 |
1 | 50% | 1 | 读性能↑,写性能↓ | 2 |
5 | (N-1) / N | 1 | 读写性能↑ | 3 |
10 | 50% | 1/组 | 读写性能↑ | 4 |
01 | 50% | 1/组 | 读写性能↑ | 4 |
5. 总结LVM的基本原理,完成实验对LVM的创建和磁盘扩容。
- LVM的基本原理:
- 抽象封装:LVM通过将底层的物理硬盘抽象封装起来,以逻辑卷的方式呈现给上层应用,实现了对硬盘分区设备的动态调整。
- 三个重要概念:LVM的架构体系中,有三个很重要的概念,分别是物理卷(PV)、卷组(VG)和逻辑卷(LV)。
- 动态管理:LVM允许用户对磁盘进行动态管理,包括动态扩展和缩小逻辑卷的空间,而无需关心物理硬盘设备的底层架构和布局。
- 实现对LVM的创建和磁盘扩容
#PV Physical Volumes; VG Volume Group;LV Logical Volume
#实现过程:pvcreate ——> vgcreate ——> lvcreate
#热插入添加一块20G硬盘,不重启识别
for i in `ls /sys/class/scsi_host/`;do
echo '- - -' >/sys/class/scsi_host/$i/scan;
done
lsblk #查看新硬盘
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS
sdb 8:16 0 20G 0 disk
#分区
交互式:fdisk /dev/sdb,输入“ p回车,回车,回车,+5G回车,t回车,8E回车,w回车”
非交互式:echo -e 'n\np\n\n\n+2G\nt\n\n8E\nw' | fdisk /dev/sdb
lsblk #查看
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS
sdb 8:16 0 20G 0 disk
├─sdb1 8:17 0 5G 0 part
└─sdb2 8:18 0 2G 0 part
--------------------------------------------------------------------
#安装pv管理工具
apt install lvm2
#显示pv信息
pvs #显示pv简要信息
pvdisplay #显示详细信息
#1、创建pv,pvs查看
pvcreate /dev/sdb1
#2、创建vg,vgs查看,不指定容量vg容量即sdb1和sdb2容量之和5+2=7G
vgcreate vg1 /dev/sdb1 /dev/sdb2
#3、创建逻辑卷
lvcreate -l 100 -n lv1 vg1 #创建lv1 大小为 100个PE
lvcreate -L 5G -n lv2 vg1 #创建lv2 大小为 5G
lvcreate -l 20%free -n lv3 vg1 #创建lv3 大小为剩下可用PE数量的20%
lvcreate -l 10%VG -n lv4 vg1 #创建lv4 大小为指定vg的10%
#4、在线扩展逻辑卷
lvextend -L +1.5G /dev/vg1/lv1
#5、创建文件系统
mkfs.ext4 /dev/vg1/lv1
mkfs.xfs /dev/vg1/lv2
#6、挂载文件系统
mount /dev/vg1/lv1 /test-lv1
mount /dev/vg1/lv2 /test-lv2
#7、扩容vg,testvg容量扩容sdb3的大小,7+3=10G
vgextend vg1 /dev/sdb3
#8、在线扩展逻辑卷,一步实现容量和文件系统的扩展
lvresize -r -l +100%FREE /dev/vg1/lv1
#9、查看逻辑卷、卷组、物理卷
[root@ubuntu150 ~]# lvs /dev/vg1/lv*
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
lv1 vg1 -wi-ao---- <4.99g
lv2 vg1 -wi-ao---- 5.00g
[root@ubuntu150 ~]# vgs /dev/vg1
VG #PV #LV #SN Attr VSize VFree
vg1 3 2 0 wz--n- <9.99g 0
[root@ubuntu150 ~]# pvs /dev/sdb*
Cannot use /dev/sdb: device is partitioned
PV VG Fmt Attr PSize PFree
/dev/sdb1 vg1 lvm2 a-- <5.00g 0
/dev/sdb2 vg1 lvm2 a-- <2.00g 0
/dev/sdb3 vg1 lvm2 a-- <3.00g 0
6. 总结程序包管理器有哪些,以及包中包含什么内容的文件,尝试这些文件如何获取命令获取? yum/dnf/apt总结程序包获取途径,以及rpm, yum, apt命令选项示例。
- 主流的程序包管理器:
redhat:rpm文件, rpm 包管理器,rpm:Redhat Package Manager,RPM Package Manager
debian:deb文件, dpkg 包管理器 - 程序包管理器相关文件
- 1 包文件组成 (每个包独有)
- 包内的文件
- 元数据,如:包的名称,版本,依赖性,描述等
- 可能会有包安装或卸载时运行的脚本
- 2 数据库(公共):/var/lib/rpm
- 程序包名称及版本
- 依赖关系
- 功能说明
- 包安装后生成的各文件路径及校验码信息
- 1 包文件组成 (每个包独有)
- 获取程序包的途径
- 系统发版的光盘或官方网站
- 第三方组织提供
- 软件项目官方站点
- 搜索引擎
- 自己制作
- #rpm 命令选项示例:
rpm -ivh vsftpd #安装
rpm -Uvh vsftpd #升级
rpm -qa | grep passwd #查询包
rpm -q php #查询包是否安装了
rpm -qi nginx #显示详细信息
rpm -qc nginx #查询配置文件
rpm -ql nginx #列出包内所有文件
rpm -qd nginx #查询文档文件
rpm -q --scripts postfix #查询安装脚本
rpm -q vsftpd || rpm -ivh vsftpd-3.0....rpm #短路安装
rpm -evh vsftpd #包卸载
rpm -q vsftpd && rpm -evh vsftpd #短路卸载
- yum/dnf 命令选项示例
yum repolist #显示仓库列表
yum list #显示所有包,包括已经安装的和repo源中的可用包
yum list --avalable php #指定repo 源
yum install httpd #安装
yum remove httpd #卸载
yum erase httpd nginx #卸载多个包
yum update nginx #升级指定包
yum check-update #列出所有可更新的包
yum info nginx #查询包信息
yum info --install httpd #查询已安装的包
yum search redis key-value #在包名和关键字中查询,多个关键字是 且 关系
yum deplist nginx --installed #查看指定包所依赖的库和程序
#dnf 兼容 yum 命令通用, dnf 解决了yum程序在安装的过程中,如果被终止,
#下次再执行将无法解决依赖的问题
- apt命令选项示例
apt list #列出所有包
apt list --installed #列出所有已经安装的包
apt list --upgradeable #列出所有
apt search nginx #在包名和描述信息中搜索
apt search --names-only nginx #仅在包名中搜索
apt info nginx #查询包的具体信息
apt show nginx -a #显示所有版本
apt update #统计源中可更新的信息,并不执行更新
apt upgrade #更新所有已安装的包
apt install --only-upgrade nginx #更新某个具体的包
apt install nginx redis -y #同时安装多个包,自动交互y
apt install nginx --no-upgrade #安装时如果已经存在,则不升级
apt install nginx --only-upgrade #只升级不安装
apt remove nginx -y #仅卸载 包
apt autoremove nginx #卸载所有依赖包
apt edit-sources #编辑源,直接 vim /etc/apt/sources.list即可
apt-cache stats #显示当前系统安装包的统计信息
apt-cache madison nginx #查看源中指定软件的所有版本
apt-cache depends nginx #查看nginx 有哪些依赖
7. 简要总结yum/dnf工作原理。并 搭建私有yum仓库(base, epel源)给另一个虚拟机使用。
- yum/dnf工作原理
- yum/dnf 是基于C/S 模式
- yum 服务器存放rpm包和相关包的元数据库
- yum 客户端访问yum服务器进行安装或查询等
- 搭建私有yum仓库
- 第一步:在 yum server 机上搭建 web 服务,保证其它机器能能过web服务访问本机
- 第二步:在 yum server 机上搭建 yum 仓服务
- 第三步:在 client 机上将yum 的 repos 源指向 yum server 机
#第一步:
yum install -y httpd #安装web服务
systemctl disabled --now firewalld.service #关闭防火墙
systemctl enable --now httpd.service #启动webeb服务
#第二步:将阿里云的extras 源的相关数据下载到本地,给客户端使用
yum reposync --repoid=al-extras --download-metadata -p /var/www/html/
#更改文件夹属主属组让客户端有权限访问下载
chown -R apache.apache al-extras/
#将本地光盘中的内容CP到web目录中,给客户端使用
mkdir /mnt/cdrom
mount /dev/sr0 /mnt/cdrom
cp -r /mnt/cdrom/BaseOS/* /var/www/html/BaseOS
#第三步:客户端配置,将yum 的 repos 源指向 yum server机
vim /etc/yum.repos.d/private-extras.repo
[private-extras]
name=private extras
#指向yum server 10.0.0.154
baseurl=http://10.0.0.154/extras/
gpgcheck=0
#BaseOS 和extras配置类似
#客户端运行
yum repolist
8. 总结系统安装之后的常用初始化步骤。rocky/ubuntu
- rocky:
- 设置管理员密码:
passwd
- 检查系统时间,调整时区:
timedatectl
- 修改网卡名称:
sed -Ei '/^GRUB_CMDLINE_LINUX/s#"$# net.ifnames=0"#' /etc/default/grub
grub2-mkconfig -o /etc/grub2.cfg;reboot;
- 关闭防火墙:
systemctl disable --now firewalld
- 禁用SELinux:
sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
- 安装常用工具:
dnf install tree lrzsz
- 安装编译环境:
dnf install -y make gcc libpcre3 libpcre3-dev openssl libssl-dev zlib1g-dev
- 设置管理员密码:
- ubuntu:
- 修改配置允许root远程连接
vim /etc/ssh/sshd_config
添加一行PermitRootLogin yes
- 其他参照rocky修改
- 修改配置允许root远程连接
9. 总结开放系统互联OSI模型,每层作用及对应的协议。
OSI模型结构 | 作用 | 对应的协议 |
---|---|---|
应用层 | 提供为应用软件而设的接口,以设置与另一应用软件之间的通信。 | HTTP、FTP、TELNET、SSH、SMTP、POP3 |
表示层 | 转换数据格式,确保不同系统间的数据理解。 | ASN.1、XML |
会话层 | 管理会话状态,同步数据传输。 | NetBIOS、SPX |
传输层 | 提供端到端的通信服务,确保数据可靠传输。 | TCP UDP |
网络层 | 基于IP地址路由数据包,实现不同网络间的数据传输。 | IP ICMP ARP |
数据链路层 | 负责网络寻址、错误侦测和改错。 | MAC、PPP |
物理层 | 在局部局域网上传送数据帧(Data Frame),它负责管理电脑通信设备和网络媒体之间的互通。 | Ethernet、Wi-Fi |
10. 调整动态端口范围为20000-60000
-
查看当前系统默认的动态端口范围:
sudo sysctl net.ipv4.ip_local_port_range
-
永久生效:修改配置文件
- vim /etc/sysctl.conf #添加以下一行
net.ipv4.ip_local_port_range = 20000 60000
- vim /etc/sysctl.conf #添加以下一行
-
临时生效:
sudo sysctl -w net.ipv4.ip_local_port_range="20000 60000"
-
执行
sudo sysctl -p
重新加载sysctl.conf,使修改生效
11. 总结TCP包头结构,TCP三次握手,4次挥手。
-
TCP包头结构
- 源端口、目标端口:用16位表示,端口个数为2^16,65536。
- 序列号:用32位表示,表示本报文段所发数据的第一个字节的编号。2^32个字节
- 确认号:表示接收方期望收到发送方下一个报文段的第一个字节数据的编号。
- 数据偏移:表示TCP报文段的首部长度,共4位
- URG:表示本报文段中发送的数据是否包含紧急数据。
- ACK:表示是否前面确认号字段是否有效。只有当ACK=1时,前面的确认号字段才有效。
- PSH:提示接收端应用程序应该立即从TCP接收缓冲区中读走数据,为接收后续数据腾出空间
- RST:如果收到一个RST=1的报文,说明与主机的连接出现了严重错误(如主机崩溃),必须释放连接,然后再重新建立连接。
- SYN:在建立连接时使用,用来同步序号。当SYN=1,ACK=0时,表示这是一个请求建立连接的报
文段;当SYN=1,ACK=1时,表示对方同意建立连接。SYN=1,说明这是一个请求建立连接或同意建立连接的报文。只有在前两次握手中SYN才置为1,带SYN标志的TCP报文段称为同步报文段 - FIN:表示通知对方本端要关闭连接了,标记数据是否发送完毕。
- 窗口大小:表示现在允许对方发送的数据量,也就是告诉对方,从本报文段的确认号开始允许对发送的数据量,达到此值,需要ACK确认后才能再继续传送后面数据
- 校验和:提供额外的可靠性
- 紧急指针:标记紧急数据在数据字段中的位置。只有当URG为1时,才有效
- 选项部分:其最大长度可根据TCP首部长度进行推算
-
TCP三次握手
-
- 第一次握手 ——客户端发送SYN包:
- 客户端向服务器发送一个SYN(同步序列编号Synchronize Sequence Numbers)包,并将SYN标志位设置为1。
- 客户端随机生成一个序列号(seq=x),并将这个序列号放在SYN包中发送给服务器。
- 客户端进入SYN_SENT状态,等待服务器的确认。
- 第二次握手——服务器回复SYN+ACK包:
- 服务器收到客户端的SYN包后,知道客户端请求建立连接。
- 服务器将SYN和ACK标志位都设置为1。ACK的确认号(ack)为客户端的序列号加1,即ack=x+1,表示对客户端的SYN包的确认。
- 服务器随机生成一个自己的序列号(seq=y),并将这个序列号放在SYN+ACK包中发送给客户端。
- 服务器进入SYN_RCVD(同步收到) ,等待客户端的确认。
- 第三次握手——客户端回复ACK包:
- 客户端收到服务器的SYN+ACK包后,检查ack是否为x+1,ACK是否为1,以确认服务器的SYN包已被接收。
- 客户端将ACK标志位设置为1,并将确认号设置为服务器的序列号加1,即ack=y+1,表示对服务器SYN包的确认。
- 此时,客户端的序列号也自增1,变为x+1,但此序列号在ACK包中通常不携带实际数据,而是作为下一个数据包的序列号准备。
- 客户端发送ACK包给服务器。
- 客户端和服务器都进入ESTablished(已建立连接)状态,完成三次握手。随后,客户端和服务器之间可以开始传输数据。
- 第一次握手 ——客户端发送SYN包:
-
TCP四次挥手
-
- 第一次挥手:主动关闭方(通常是客户端)发送一个FIN(Finish)报文给被动关闭方(通常是服务器),请求关闭连接,进入FIN_WAIT_1状态。
- 第二次挥手:被动关闭方收到FIN报文后,发送一个ACK(Acknowledgement)报文作为应答,进入CLOSE_WAIT状态,表示准备关闭连接,但仍然可以接收来自对方的数据。
- 第三次挥手:在完成自己的数据传输后,被动关闭方也会发送一个FIN报文给主动关闭方,请求关闭连接,进入LAST_ACK状态。
- 第四次挥手:主动关闭方收到FIN报文后,发送一个ACK报文作为应答,进入TIME_WAIT状态,等待2MSL时间后(即两倍的报文最大生存时间),以确保被动关闭方收到了确认报文。经过这段时间后,主动关闭方关闭连接,被动关闭方收到 ACK后也关闭连接。
12. 总结主机到主机的包传递过程。
- 应用层数据处理
应用层数据首先被准备好,这些数据可能来自用户的输入、文件内容或其他应用程序的输出。 - 传输层封装
应用层数据传递到传输层(TCP或UDP),TCP会为数据添加传输层头部,包括源端口号、目的端口号、序列号、确认号、数据偏移量、控制位(如SYN、ACK、FIN等)、窗口大小、校验和和紧急指针等。
TCP通过序列号确保数据的顺序,通过确认号实现可靠传输,控制位用于管理连接的建立、维护和断开。 - 网络层封装
传输层报文传递到网络层(IP层),IP层为报文添加网络层头部,包括版本、头部长度、服务类型、总长度、标识、标志、片偏移、生存时间(TTL)、协议类型(TCP或UDP)、头部校验和以及源IP地址和目的IP地址。
如果数据包大小超过了网络的最大传输单元(MTU),IP层还会进行分片处理。 - 数据链路层封装
网络层数据包传递到数据链路层,数据链路层根据网络类型(如以太网)添加帧头部和尾部。帧头部通常包括目的MAC地址、源MAC地址、类型字段等,帧尾部可能包括循环冗余校验(CRC)等信息。
在发送之前,如果源主机不知道目的主机的MAC地址,它会发送ARP(地址解析协议)请求来获取目的MAC地址。 - 物理层传输
数据链路层帧通过物理层在物理媒体(如网线、光纤等)上传输,转换为电信号或光信号。
信号在物理媒体上传输到目的主机。 - 接收过程
目的主机的物理层接收到信号后,将其转换为比特流传递给数据链路层。
数据链路层剥去帧头部和尾部,将数据包传递给网络层。
网络层剥去IP头部,根据协议类型将数据包传递给相应的传输层协议(TCP或UDP)。
传输层剥去传输层头部,将应用层数据传递给应用进程。
应用进程处理接收到的数据。 - 连接的建立和断开(TCP特有)
在TCP连接中,还需要经过三次握手建立连接和四次挥手断开连接的过程。
三次握手包括:客户端发送SYN包,服务器回应SYN-ACK包,客户端再发送ACK包确认。
四次挥手包括:一方发送FIN包请求断开连接,另一方回应ACK包确认,并可能在发送完剩余数据后也发送FIN包请求断开,最后由发起方发送ACK包确认。
13. 总结IP地址 A, B, C, D 类,并解析IP地址的组成
- IP地址分类
IP类别 | 1-8位 | 9-16位 | 17-24位 | 25-32位 |
---|---|---|---|---|
A类 | 网络ID 0-127 | 主机ID | 主机ID | 主机ID |
B类 | 网络ID 128-191 | 网络ID | 主机ID | 主机ID |
C类 | 网络ID 192-223 | 网络ID | 网络ID | 主机ID |
D类(多播组播) | 网络ID 224-239 |
- 解析IP地址的组成
- IP地址由两部分组成:网络地址(Network Address)和主机地址(Host Address),也称为网络号(NetID)和主机号(HostID)。
- 网络地址(Network Address):
- 用于标识设备所在的网络。
- 在IP地址中,网络地址占据了地址的一部分,其长度根据IP地址的类别(A、B、C等)而有所不同。
- 例如,在A类IP地址中,第一个字节代表网络地址;在B类IP地址中,前两个字节代表网络地址;在C类IP地址中,前三个字节代表网络地址。
- 主机地址(Host Address):
- 用于标识网络中的具体设备。
- 在IP地址中,主机地址占据了地址的另一部分,其长度同样根据IP地址的类别而有所不同。
- 例如,在A类IP地址中,后三个字节代表主机地址;在B类IP地址中,后两个字节代表主机地址;在C类IP地址中,最后一个字节代表主机地址。
14. 201.222.200.111/18计算主机数?子网掩码?说明计算方法。
计算方法:将IP地址和子网掩码转换为2进制,再做与运算得到网络ID
网络ID: 201.222.200.111/18 = 201.222.200.111/ 255.255.192.0
# 201=128+64+8+1, 222=128+64+16+8+4+2,200=128+64+8,111=64+32+8+6+1
# 子网18位,18=8+8+2,1-18位全1,19-32位是主机位。
# 11001000.11011100.11001000.01101000 IP
# 11111111.11111111.11000000.00000000 network
# 11001000.11011100.11000000.00000000 网络ID 201.222.192.0
#网络ID是18位,32-18可知 主机位ID数是14
主机数量 : 2^14-2 = 2^14-2 = 16384-2 = 16382
子网掩码 : 255.255.192.0
15. 当A(10.0.1.1/16)与B(10.0.2.2/24)通信,A如何判断是否在同一个网段?A和B能否通信?
A判断是否在同一个网段,用A自己的子网掩码分别和自己的IP及对方的IP相与,
比较结果 ,相同则同一网络,不同则不同网段
-
A的子网掩码:255.255.0.0
-
B 的 IP10.0.2.2,
-
IP地址 和子网掩码转换二进制:再做与操作。
- A: 00001010.00000000.00000001.00000001 #A IP 10.0.1.1 - 11111111.11111111.00000000.00000000 #A 子网掩码 - 计算 00001010.00000000.00000000.00000000 #A 网络ID 10.0.0.0 - B: 00001010.00000000.00000010.00000010 #B IP - 11111111.11111111.00000000.00000000 #A 子网掩码 - 计算 00001010.00000000.00000000.00000000 #B 网络ID 10.0.0.0
-
结论1:A的网络ID是10.0.0.0,B的网络ID是10.0.2.0。但是A 用自己的子网掩码判断B和自己在同一个网段。
-
结论2:因为实际A和B并不在同一网段,如果不借助其他网络设备路由,AB之间无法通信
16. 如何将10.0.0.0/8划分32个子网?求每个子网的掩码,主机数。
#划分32个子网,大网络(主机数多)——>小网络(主机数少),主机ID位数变少,
#网络ID位数变多,网络ID位向主机ID位借 n 位,将划分 2^n个子网
IP地址:
转换二进制 : 00001010.00000000.00000000.00000000 #10.0.0.0
11111111.00000000.00000000.00000000 #255.0.0.0
#要划分32个子网即( 2^n=32),n=5,网络位向主机位借5位。
8+5=13 位网络ID,
32-13=19 位主机ID
每个子网主机数为:2^19-2=524286
借位后的子网掩码:
11111111.11111000.00000000.00000000 #255.248.0.0
每个子网的网络地址如下:
#借的5位全为0 00001010.00000 000.00000000.00000000 #10.0.0.0/13
00001010.00001 000.00000000.00000000 #10.8.0.0/13
00001010.00010 000.00000000.00000000 #10.16.0.0/13
00001010.00011 000.00000000.00000000 #10.24.0.0/13
00001010.00100 000.00000000.00000000 #10.32.0.0/13
00001010.00101 000.00000000.00000000 #10.40.0.0/13
00001010.00110 000.00000000.00000000 #10.48.0.0/13
00001010.00111 000.00000000.00000000 #10.56.0.0/13
00001010.01000 000.00000000.00000000 #10.64.0.0/13
00001010.01001 000.00000000.00000000 #10.72.0.0/13
00001010.01010 000.00000000.00000000 #10.80.0.0/13
00001010.01011 000.00000000.00000000 #10.88.0.0/13
......
......省略10.96.0.0~10.240.0.0之间的网络......
......
#借的5位全为1 00001010.11111 000.00000000.00000000 #10.248.0.0/13