第一周至第三周

第一周

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
image

GPT:

源自EFI标准的磁盘分区结构,最多可以创建128个分区,即分区表中保留了128个项,其中每个都是128字节。(EFI标准要求分区表最小要有16,384字节)
image

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模型,每层作用及对应的协议。

image

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次挥手。

image

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状态。此时链接建立完成
image

四次挥手:

一、客户端与服务端都在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
image

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个子网?

求每个子网的掩码,主机数。

15. 通过网络配置命令,让主机可以上网。 ip, netmask, gateway, dns,主机名。相关命令总结,最终可以通过这些配置让你的主机上网。

16. 解析/etc/sysconfig/network-scripts/ifcfg-eth0配置格式。

17. 基于配置文件或命令完成bond0配置

18. 通过ifconfig命令结果找到ip地址.

19.  使用脚本判断 你主机所在网络内在线的主机IP有哪些? ping通则在线。


posted @ 2024-04-15 17:32  衣袖带花  阅读(84)  评论(0)    收藏  举报