第一周至第三周
第一周
1.总结计算机发展相关,并且总结服务器硬件相关知识。
计算机发展:
电子计算机兴起:20世纪中叶,电子计算机的诞生标志着现代计算机的开始,例如ENIAC。
个人计算机革命:20世纪70年代末至80年代初,个人计算机开始普及,如Apple II和IBM PC,推动了硬件和软件的快速发展。
互联网的兴起:90年代互联网的普及改变了通信方式,推动了服务器和网络技术的发展。
移动计算时代:21世纪初,移动计算崛起,智能手机和平板电脑改变了人们的生活方式,推动了服务器技术的演进。
服务器硬件:
组成部分:CPU、内存、存储、网络接口、电源等。
类型:网络服务器、数据库服务器、应用服务器、存储服务器等。
架构:标准服务器、刀片服务器、模块化服务器等。
技术:硬件技术包括CPU、存储、网络等方面,软件技术包括操作系统、虚拟化、容器化等。
性能优化:硬件升级、软件优化、负载均衡、容错机制等。
未来趋势:高性能计算、能源效率、智能化管理、自动化运维等。
2. 制作一个教程,说明vmware软件如何下载安装。安装rocky 8.5, ubuntu 22.04,并结合xshell说明如何通过虚拟IP登入系统。
下载安装下一步下一步
3. 结合man命令总结linux常用基本命令用法,以及查看帮助文档的方法。
man\whatis--help\mandb
4. 总结linux文件系统相关知识,并结合操作演示文件操作常见的命令
文件系统:
| 目录 | 描述 |
|---|---|
| / | 根目录 |
| /bin /sbin | 二进制可执行命令 |
| /sbin | 二进制文件 |
| /boot | 内核以及引导操作系统启动的文件/grub |
| /opt | 安装程序 |
| /dev | 设备文件 |
| /etc | 二进制文件 |
| /lib | 标准程序设计库、动态链接共享库,类似windows里.dll |
| /root | root用户家目录 |
| /proc | 内存映射 |
| /usr | 自带程序 |
| /mnt | 挂载目录 |
| /tmp | 临时目录 |
| /home | 其他用户的家 |
| /etc | 系统管理和配置文件 |
5. 总结linux安全模型
6. 总结学过的权限,属性及ACL相关命令及选项,示例。
setfacl -m ugo:name:rwx path
设定相对应的权限d:ugo:name:rwx等于继承
setfacl -x ugo:name path
取消单一属性
setfacl -b path
取消所有权限
getfacl path
读取权限
还有备份读取acl权限配置
7. 结合vim几种模式,学会使用vim几个常见操作。
1)如何打开文件。并在打开文件(命令模式)之后如何退出文件。
vim file
打开文件2)打开文件(命令模式)之后,进入插入模式。并在插入模式中如何回到打开文件的状态(命令模式),并在命令模式之后如何退出文件。
i插入a添加,esc+:,x、wq保存退出,q!不保存退出
3)打开文件(命令模式)之后,进入插入模式,编写一段话,"马哥出品,必属精品", 之后从插入模式中如何回到打开文件的状态(命令模式),并在命令模式之后如何退出文件。
"马哥出品,必属精品"
4)使用cat命令验证文件内容,是刚刚自己写的内容。
cat file
5)(可选),命令模式下,光标在单词,句子上进行前后,上下跳转。行复制粘贴。行删除。
hjkl左下上右,yy+p复制粘贴行,dd删除行
第二周
1. 总结学过的文本处理工具,文件查找工具,文本处理三剑客, 文本格式化命令(printf)的相关命令及选项,示例。
# 文本处理工具
sed # 可以对文本进行流式处理,支持替换、删除、插入等操作
sed 's/../.../g' # 全局搜索替换
sed -n '/.../p' # 显示指定内容
sed -n '3,6p' file # 只输出 3-6 行
sed -i '/1$/a111' file # 在1结尾的行后面一行追加一行11
-n # 不打印
-i.bak # 修改文件的同时备份
-r # 使用扩展正则
-e # 多个参数
# 文件查找工具
find # 用于查找文件及目录,可以根据名称、大小、日期、权限等条件筛选
find -name # 根据文件名
find -type b\d\l\f\s\p # 根据类型查找
find -size # 根据文件大小,+大于、-小于,单位K、M、G
find -user # 根据文件属主
find -group # 根据文件属组
find -mtime\-atime\-ctime # 更改时间、访问时间、创建时间,+大于、-小于,单位天
find -min\-amin\-cmin # 更改时间、访问时间、创建时间,+大于、-小于,单位分钟
find -exec # 找到文件后执行的命令
find -delete # 找到文件后删除
find -nogroup # 查找没有组的文件
find -nouser # 查找没有用户的文件
find -empty # 查找大小为0的文件或目录
# 可以在一条命令单独使用
find /path/to/search -name "*.txt" -exec rm {} \; # 会删除所有匹配 .txt 文件名的文件
locate # 搜索速度快,需要updatedb
locate -c # 返回匹配到的文件数量
locate -b # 返回文件名不包路径
locate -e # 仅显示存在的文件
grep # 用于逐行搜索
# 文本处理三剑客
sed
awk
awk -F":" '{ print $1 $3 }' /etc/passwd # 分隔符为:,打印第一,三列
awk 'BEGIN{count=0} {count++;print $0} END{print "user count is ",count}' /etc/group # 计算用户数,BEGIN初始化变量,END结尾
# {}内多个代码块用分号做分隔
grep
grep -c # 匹配结果的计数
grep -v # 反选匹配结果
grep -n # 输出的时候同时打印所在行号
grep -i # 忽略大小写
grep -wv -e nologin -e bash /etc/passwd
grep -Ewv 'nologin|bash' /etc/passwd
ps -ef | grep root -v
# 多个搜索条件,-E扩展正则
2. 总结文本处理的grep命令相关的基本正则和扩展正则表达式。
-E扩展正则
| 符号 | 解释 |
|---|---|
| + | 匹配前一个字符的一个或多个副本 |
| 匹配前一个字符的恰好 n 个副本 | |
| ? | 匹配前一个字符的零个或一个副本 |
| | | 逻辑或,匹配两边任一模式 |
| () | 用于分组,不需要转义 |
| \1, \2, ... | 反向引用,引用前面的匹配组 |
3. 总结变量命名规则,不同类型变量(环境变量,位置变量,只读变量,局部变量,状态变量)如何使用。
变量命名规则
变量名由字母、数字和下划线组成,不能以数字开头。
变量名区分大小写。
避免使用特殊字符和 Shell 关键字。
命名具有描述性,易于理解。
| 环境变量 | 可以用export导入变量为环境变量,env查询 |
| 位置变量 | 在运行shell时传入的参数,$1、$2、$3调用,$0代表脚本名称,$#参数个数,$@、$*获取所有参数,set --清空所有位置变量 |
| 只读变量 | readonly abc=123,declare -r abc=123 |
| 局部变量 | local abc=123 |
| 状态变量 | $?,结果非零代表成功,其他数字代表失败(小于255),exit [n] 自定义状态码,执行后立即退出脚本 |
4. 通过shell编程完成,30鸡和兔的头,80鸡和兔的脚,分别有几只鸡,几只兔?
#! /bin/bash
for x in {1..30};do
for y in {1..30};do
if ((x+y==30 && 2*x+4*y==80));then
echo "鸡:$x,兔:$y"
fi
done
done
鸡:20,兔:10
5. 结合编程的for循环,条件测试,条件组合,完成批量创建100个用户,
1)for遍历1..100
2)先id判断是否存在
3)用户存在则说明存在,用户不存在则添加用户并说明已添加。
#! /bin/bash
i=0
if [[ i -le 100 ]];then
for i in {1..100};do
if id "user$i" &> /dev/null;then
echo "用户 user$i 已存在"
else
useradd "user$i"
fi
done
fi
echo user{1..100} | xargs -n 1 userdel 删除
6. 磁盘存储术语总结: head, track, sector, sylinder.
7. 总结MBR,GPT结构。
MBR:
位于磁盘0磁道0柱面第一个扇区,占用512个字节包含446个字节的启动代码,剩余66个字节,64个字节的分区表,2个字节签名。每个签名占用16个字节,所以最多只支持四个主分区或者三个主分区+一个扩展分区,扩展分区可以包含多个逻辑分区。
MBR分区方案采用32位标识分区的起始位置,因此每个分区的大小限制在2^32*512字节=2TB,总分区大小是4TB
GPT:
源自EFI标准的磁盘分区结构,最多可以创建128个分区,即分区表中保留了128个项,其中每个都是128字节。(EFI标准要求分区表最小要有16,384字节)
8. 总结学过的分区,文件系统管理,SWAP管理相关的命令及选项,示例
fdisk, parted, mkfs, tune2fs, xfs_info, fsck, mount, umount, swapon, swapoff
新加硬盘分区挂载
gdisk # n选项分区,w 选项保存
mkfs.xfs
mkfs.ext4 # 选择文件系统
vim /etc/fstab
blkid # 查看分区uuid
UUID=id /path/ deafults(ro只读) 0 0
mount -a # 修改完/etc/fstab后同步
禁用与启用swap
# 禁用
sed -i.bak '/swap/s/^/#/' /etc/fstab
swapoff -a
# 启用
sed -i.bak '/swap/s/^#//' /etc/fstab
swapon -a
自动挂载光盘
yum install -y autofs
systemctl enable --now autofs
第三周
1. 总结raid 0, 1, 5, 10, 01的工作原理。总结各自的利用率,冗余性,性能,至少几个硬盘实现。
raid 0
工作原理:数据被分成块,均匀的存在各个硬盘上,相当于提高了访问速度以及带宽。利用率100%,没有冗余性。性能高,可以从多个硬盘同事读写。至少需要两块硬盘
raid 1
工作原理:数据是被镜像到两个或多个硬盘上,具有冗余性,如果是两块硬盘的话利用率只有只有50%多个是1/N。如果一个一盘失效可以从其他硬盘恢复。读性能良好,写性能略低于raid0。至少需要两块硬盘
raid 5
工作原理:将数据进行奇偶校验,并且将数据以及奇偶校验信息交错存储在多个硬盘上。利用率为(N-1)/N,N为硬盘数量,1为存储奇偶校验信息的硬盘。冗余性中等,可以接受一块硬盘损坏。高读性能,中等写性能。至少需要三块硬盘
raid 10
工作原理:实际上是raid1以及raid0的组合。先将原始数据镜像,然后把每个镜像数据分块。利用率50%。冗余性高,可以接受多块硬盘损坏。读写性能高。至少需要四块硬盘
raid 01
工作原理:实际上是raid0以及raid1的组合。先将原始数据分块,然后把块数据镜像。读写性能高,比raid10略低。至少需要四块硬盘
相对来讲,raid10冗余性更好
2. 完成对LVM磁盘扩容及缩容示例。
mkfs.ext4 /dev/sdb # 建立文件系统
[root@localhost yum.repos.d]# blkid #瞄一眼
/dev/mapper/rl-root: UUID="0e8e703c-6a91-4626-a9ed-3a6921a53069" TYPE="xfs"
/dev/sda2: UUID="sbMD3N-6G7A-0QoB-aVWi-Z8nY-oumE-eUicXG" TYPE="LVM2_member" PARTUUID="6ff46da2-02"
/dev/mapper/rl-swap: UUID="1b195915-4a8b-40e0-abe8-3b729d96be3e" TYPE="swap"
/dev/sdd: UUID="39b924a9-41f4-4f79-baef-67ac2e68634b" TYPE="ext4"
/dev/sdb: UUID="a5b759b8-1194-40b1-80b8-7dc0eb9f72df" TYPE="ext4"
/dev/sr0: UUID="2024-05-05-01-12-25-00" LABEL="Rocky-9-4-x86_64-dvd" TYPE="iso9660" PTUUID="849e8820" PTTYPE="dos"
/dev/sdc: UUID="96ae9551-90ea-48a9-8002-191cfb66e8d1" TYPE="ext4"
/dev/sda1: UUID="e840e38d-2e80-4d9b-857f-19c0990aea35" TYPE="xfs" PARTUUID="6ff46da2-01"
pvcreate /dev/sd{b,c,d} -y # 建立pv
vgcreate -s 16M testvg /dev/sdb /dev/sdc # 建立卷组,默认PE为4M,这里指定为16M
[root@localhost yum.repos.d]# vgs
VG #PV #LV #SN Attr VSize VFree
rl 1 2 0 wz--n- <29.00g 0
testvg 2 0 0 wz--n- <29.97g <29.97g
lvcreate -L 20G -n testlv testvg
[root@localhost yum.repos.d]# lvs
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
root rl -wi-ao---- <26.00g
swap rl -wi-ao---- 3.00g
testlv testvg -wi-a----- 20.00g
# 逻辑卷创建完成,把testlv扩容至21G
[root@localhost yum.repos.d]# lvextend -L +1G /dev/testvg/testlv
Size of logical volume testvg/testlv changed from 20.00 GiB (1280 extents) to 21.00 GiB (1344 extents).
Logical volume testvg/testlv successfully resized.
# 把testlv减少10G
[root@localhost yum.repos.d]# lvreduce -L -10G /dev/testvg/testlv
No file system found on /dev/testvg/testlv.
Size of logical volume testvg/testlv changed from 21.00 GiB (1344 extents) to 11.00 GiB (704 extents).
Logical volume testvg/testlv successfully resized.
3. 总结程序包管理器有哪些,以及包中包含什么内容的文件,尝试这些文件如何获取命令获取? yum/dnf/apt总结程序包获取途径,以及rpm, yum, apt命令选项示例。
软件包中包含二进制文件、库文件、配置文件、帮助文件。
rpm -qi package.rpm # 查询包的详细信息
rpm -ql package.rpm # 列出包中的文件
rpm -qd package.rpm # 查看包中的文档
redhat:rpm文件,rpm包管理器
debian:deb文件,dpkg包管理器
包的获取途径:镜像光盘文件、系统官方网站、第三方网站。华为,阿里云,清华源等
rpm -ivh file.rpm # 安装
rpm provides file # 显示文件哪一个包提供的
yum install -y name # dnf等同于yum,-y=yes,-q=静默
yum remove name # 卸载
yum repolist # 显示仓库列表
yum list # 显示包列表
apt-get install -y name
4. 简要总结yum/dnf工作原理。并搭建私有yum仓库(base, epel源)给另一个虚拟机使用。
yum/dnf工作原理:yum/dnf是c/s原理,在yum/dnf服务端存放rpm包和相关的元数据库,在yum/dnf客户端访问服务器进行安装查询。yum实现是现在服务器上创建yum的rpm包仓库,以及相关的元数据,放在指定的repodata目录下,当客户端下载时,会先自动下载repodata中的元数据,然后查询元数据是否存在相关的包以及所需依赖,然后自动下载安装
# 1、先创建一个yum私有仓库
yum install -y httpd #安装httpd
firewall-cmd --zone=public --add-service=http --permanent # 防火墙放行并重启
firewall-cmd --reload
systemctl enable --now httpd
# 2、挂载镜像
yum install -y autofs
mount /dev/sdr0 /mnt/cd
mkdir /var/www/html/rocky/9.4 -p
cp /mnt/cd/* /var/www/html/rocky/9.4 -r
# 3、写入配置文件
[BaseOS]
baseurl=file:///var/www/html/rocky/9.4/BaseOS
gpgecheck=0
name=BaseOS
[extras]
name=extras
baseurl=https://mirrors.aliyun.com/rockylinux/9.4/extras/x86_64/os/
gpgcheck=0
#[PowerTools]
#name=PowerTools
#
#gpgcheck=0
[AppStream]
name=AppStream
baseurl=file:///var/www/html/rocky/9.4/AppStream/
gpgcheck=0
------------
yum clean all # 清除缓存
yum makecache # 简历元数据
yum repolist # 验证
yum reposync --download-metadata /var/www/html/rocky/9.4
# 在另外一台客户端主机
[root@localhost yum.repos.d]# vi baseos.repo
[BaseOS]
baseurl=http://192.168.12.36/rocky/9.4/BaseOS/
gpgcheck=0
name=BaseOS
[extras]
name=extras
baseurl=http://192.168.12.36/rocky/9.4/extras/
gpgcheck=0
[AppStream]
name=AppStream
baseurl=http://192.168.12.36/rocky/9.4/AppStream/
gpgcheck=0
[epel]
name=epel
baseurl=http://192.168.12.36/rocky/9.4/epel/
gpgcheck=0
[root@localhost yum.repos.d]# yum repolist
repo id repo name
AppStream AppStream
BaseOS BaseOS
epel epel
extras extras
[root@localhost yum.repos.d]# yum clean all
25 files removed
[root@localhost yum.repos.d]# yum makecache
BaseOS 12 MB/s | 2.2 MB 00:00
extras 216 kB/s | 15 kB 00:00
AppStream 19 MB/s | 7.9 MB 00:00
epel 40 MB/s | 21 MB 00:00
Metadata cache created.
[root@localhost yum.repos.d]# yum install -y vim
BaseOS 3.1 MB/s | 4.1 kB 00:00
extras 2.7 MB/s | 2.9 kB 00:00
AppStream 4.4 MB/s | 4.5 kB 00:00
epel 3.3 MB/s | 4.3 kB 00:00
Dependencies resolved.
============================================================================================================================================================================================
Package Architecture Version Repository Size
============================================================================================================================================================================================
Installing:
vim-enhanced x86_64 2:8.2.2637-20.el9_1 AppStream 1.8 M
Installing dependencies:
gpm-libs x86_64 1.20.7-29.el9 AppStream 20 k
vim-common x86_64 2:8.2.2637-20.el9_1 AppStream 6.6 M
vim-filesystem noarch 2:8.2.2637-20.el9_1 BaseOS 14 k
Transaction Summary
============================================================================================================================================================================================
Install 4 Packages
Total download size: 8.4 M
Installed size: 34 M
Downloading Packages:
(1/4): vim-filesystem-8.2.2637-20.el9_1.noarch.rpm 283 kB/s | 14 kB 00:00
(2/4): gpm-libs-1.20.7-29.el9.x86_64.rpm 794 kB/s | 20 kB 00:00
(3/4): vim-enhanced-8.2.2637-20.el9_1.x86_64.rpm 11 MB/s | 1.8 MB 00:00
(4/4): vim-common-8.2.2637-20.el9_1.x86_64.rpm 20 MB/s | 6.6 MB 00:00
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Total 26 MB/s | 8.4 MB 00:00
Running transaction check
Transaction check succeeded.
Running transaction test
Transaction test succeeded.
Running transaction
Preparing : 1/1
Installing : gpm-libs-1.20.7-29.el9.x86_64 1/4
Installing : vim-filesystem-2:8.2.2637-20.el9_1.noarch 2/4
Installing : vim-common-2:8.2.2637-20.el9_1.x86_64 3/4
Installing : vim-enhanced-2:8.2.2637-20.el9_1.x86_64 4/4
Running scriptlet: vim-enhanced-2:8.2.2637-20.el9_1.x86_64 4/4
Verifying : vim-filesystem-2:8.2.2637-20.el9_1.noarch 1/4
Verifying : vim-enhanced-2:8.2.2637-20.el9_1.x86_64 2/4
Verifying : vim-common-2:8.2.2637-20.el9_1.x86_64 3/4
Verifying : gpm-libs-1.20.7-29.el9.x86_64 4/4
Installed:
gpm-libs-1.20.7-29.el9.x86_64 vim-common-2:8.2.2637-20.el9_1.x86_64 vim-enhanced-2:8.2.2637-20.el9_1.x86_64 vim-filesystem-2:8.2.2637-20.el9_1.noarch
Complete!
5. 总结系统安装之后的常用初始化步骤。rocky/ubuntu
1、更改主机名
hostname rocky
2、同步时间
timedatectl set-timezone Asia/Shanghai # rocky
timedatectl set-ntp on # ubuntu
3、新建用户并给予权限
useradd dql
usermod -aG wheel dql # rocky
usermod -aG sudo dql # ubuntu
4、配置防火墙
firewall-cmd --permanent --add-port=123/tcp # 根据端口
firewall-cmd --permanent --add-service=ssh # 根据服务
firewall-cmd --reload
5、设置自动挂载光盘
yum install -y autofs # rocky
apt-wget install -y autofs # ubuntu
6、配置固定ip
vim /etc/NetworkManager/system-connections/ens33.nmconnection
[connection]
id=ens33
uuid=f985b8a9-2559-3de7-8967-d6e99aab453c
type=ethernet
autoconnect-priority=-999
interface-name=ens33
timestamp=1715649534
[ethernet]
[ipv4]
method=manual # auto修改为manual
address1=192.168.12.37/24,192.168.12.1 # 新增ip以及网关
dns=119.29.29.29 # 新增dns
[ipv6]
addr-gen-mode=eui64
method=auto
[proxy]
nmcli connection load /etc/NetworkManager/system-connections/ens33.nmconnection 加载配置文件
nmcli connection up /etc/NetworkManager/system-connections/ens33.nmconnection 激活配置文件
6. 解读一键安装httpd脚本,并自行实现一个一键安装脚本,要求
1)基于位置变量传递版本号
2)基于独立函数进行初始化步骤,禁用防火墙,安装开发依赖包。
3)基于独立函数进行下载包,解压包。
4)基于独立函数进行编译,安装包。
5)基于独立函数完成链接包。
6)启动服务,并输出自定义的语句,安装xxx服务
[root@localhost yum.repos.d]# vim install_httpd.sh
#!/bin/bash
# 初始化步骤:禁用防火墙,安装开发依赖包
initialize() {
systemctl stop firewalld
systemctl disable firewalld
yum install -y apr-devel gcc make pcre-devel redhat-rpm-config tar
}
# 下载包,解压包
download_and_extract() {
wget https://mirrors.aliyun.com/apache/httpd/httpd-"$1".tar.gz
tar -xvf httpd-"$1".tar.gz
cd httpd-"$1"
}
# 编译,安装包
compile_and_install() {
./configure --prefix=/apps/httpd/
make -j "$(grep -c processor /proc/cpuinfo)" && make install
}
# 链接包
link_package() {
ln -s /apps/httpd/bin/apachectl /usr/bin/apachectl
}
# 启动服务
start_service() {
systemctl start httpd
}
# 主函数
main() {
version="$1"
initialize
download_and_extract "$version"
compile_and_install
link_package
start_service
echo "Httpd服务安装完成,版本号:$version"
}
# 脚本入口,传入版本号作为参数
main "$1"
# 如果不关闭防火墙还需要编辑这个
vim /usr/lib/firewalld/services/httpd.xml
<?xml version="1.0" encoding="utf-8"?>
<service>
<short>HTTP</short>
<description>Apache HTTP Server</description>
<port protocol="tcp" port="80"/>
</service>
添加服务
[root@localhost yum.repos.d]# vim /etc/systemd/system/httpd.service
[Unit]
Description=The Apache HTTP Server
After=network.target remote-fs.target nss-lookup.target
[Service]
Type=forking
ExecStart=/apps/httpd/bin/apachectl start
ExecReload=/apps/httpd/bin/apachectl graceful
ExecStop=/apps/httpd/bin/apachectl stop
PIDFile=/apps/httpd/logs/httpd.pid
[Install]
WantedBy=multi-user.target
bash install_httpd.sh 2.4.59
7. 总结开放系统互联OSI模型,每层作用及对应的协议。

8. 调整动态端口范围为20000-60000
1、临时调整:
[root@localhost test]# sysctl -w net.ipv4.ip_local_port_range='20000 60000'
net.ipv4.ip_local_port_range = 20000 60000
2、永久调整:
# 编辑配置文件
vim /etc/sysctl.conf
net.ipv4.ip_local_port_range = 20000 60000
# reboot验证
[root@localhost ~]# sysctl -p
net.ipv4.ip_local_port_range = 20000 60000
[root@localhost ~]# cat /proc/sys/net/ipv4/ip_local_port_range
20000 60000
9. 总结TCP包头结构,TCP三次握手,4次挥手。

1、源端口:发送数据的端口号
2、目的端口:接受数据的端口号
3、序列号:
4、确认号:期望接收下一个字节的序列号
5、数据偏移:TCP头部的长度,32位字为单位
6、保留位:凑数的还没用上
7、控制位:SYN:用于建立连接
ACK:确认数据接收
FIN:结束数据接收
RST:用于重置链接
PSH:请求立即推送数据
URG:表示数据有紧急性需要立即处理
8、窗口大小:流量控制字段
9、检验和:错误检测字段
10、紧急指针:紧急数据的结束位置
三次握手:
一、客户端首先向服务端发送SYN=1的信号申请链接,同时附带报文序号seq=x。客户端进入SYN_SENT状态
二、然后服务端在接收到报文以后返回给客户端一个SYN=1的信号,这时就代表双方已经准备开始了链接。以及ACK=1的确认信号,还有序号为seq=y的报文,以及返回ack=x+1的信息用以提示客户端下次应该发送序号为x+1的报文,服务器进入SYN_RECEIVED状态
三、这时客户端在接收到服务端的报文以后,就不用在发送SYN=1的信号了,直接发送ACK=1的确认报文以及序号为seq=x+1的报文返回给服务端,同时响应服务端在之前请求序号为seq=y的报文,返回序号为ack=y+1的报文,客户端在此时进入established状态。服务在接收到ACK报文以后也会进入established状态。此时链接建立完成
四次挥手:
一、客户端与服务端都在established状态时,客户端发送FIN=1的信号同时附带序列号seq=u的报文(u-1是上一个数据报文的最后一个字节的序号),客户端进入FIN_WAIT-1终止等待1状态
二、服务端在接收到传来的报文时返回确认信号ACK=1,以及自己的序列号seq=v,(v是服务端在释放应答报文段的第一个字节序号),确认号ack=u+1(表示已经接收到u之前的所以报文),服务端进入CLOSE_WAIT关闭等待状态,客户端在接收到该报文后立即进入FIN_WAIT-2(在这之前还需要接受服务器发送的最后的数据)。
三、这时服务端不会接受客户端的数据,客户端也没有数据需要发送了。但是服务端依旧可能会给客户端发送数据,在这时的数据发送完毕以后。服务端继续发送释放信号,FIN=1,ACK=1,seq=w,ack=u+1报文,服务端进入LAST_ACK最后确认状态
四、客户端在接收到报文以后发送ACK=1,seq=u+1,ack=w+1,客户端进入TIME_WAIT时间等待状态,等待时长为2MSL
2MSL时长结束以后客户端进入CLOSE状态,服务端在接收到上面的报文以后立即CLOSED
10. 总结主机到主机的包传递过程。
11. 总结IP地址 A, B, C, D 类,并解析IP地址的组成
12. 201.222.200.111/18计算主机数?子网掩码?说明计算方法。
13. 当A(10.0.1.1/16)与B(10.0.2.2/24)通信,A如何判断是否在同一个网段?A和B能否通信?
14. 如何将10.0.0.0/8划分32个子网?
求每个子网的掩码,主机数。




浙公网安备 33010602011771号