Linux学习历程(3)
1、自建yum仓库,分别为网络源和本地源
- 挂载光盘配置本地源
[root@centos8 ~]#rpm -q autofs || yum -y install autofs [root@centos8 ~]#systemctl enable --now autofs
如图,为本地挂载CDROM的yum源以及网络源
2、编译安装http2.4,实现可以正常访问,并将编译步骤和结果提交
- 先关掉防火墙和SELinux
[root@centos8 ~]# systemctl disable --now firewalld [root@centos8 ~]# selinux vim /etc/selinux/config SELINUX=disable
- 提前安装httpd需要的依赖包
[root@centos8 ~]# dnf install gcc make autoconf apr-devel apr-util-devel pcre-devel openssl-devel redhat-rpm-config
- 下载httpd源码包
[root@centos8 ~]# wget https://dlcdn.apache.org//httpd/httpd-2.4.53.tar.bz2
- 解压httpd源码包到/usr/local/src
[root@centos8 ~]# tar xvf httpd-2.4.53.tar.bz2 -C /usr/local/src
- 进入到解压生成的文件夹内配置
[root@centos8 ~]# cd /usr/local/src/httpd-2.4.53/ [root@centos8 httpd-2.4.53]#./configure --prefix=/apps/httpd --sysconfdir=/etc/httpd --enable-ssl
- 接着进行编译并安装
[root@centos8 httpd-2.4.53]# make -j 1 && make install #其中1为查询当前cpu核数(lscpu查看)
- 配置环境
[root@centos8 ~]# echo 'PATH=/apps/httpd/bin/:$PATH' > /etc/profile.d/httpd.sh [root@centos8 ~]# . /etc/profile.d/httpd.sh
- 运行
[root@centos8 ~]# apachectl start
- 可以进入网站
3、利用sed 取出ifconfig命令中本机的IPv4地址
[root@centos8 ~]#ifconfig #查看网卡名称 [root@centos8 ~]#ifconfig ens160|sed -n '2p'|tr -s ' '|cut -d ' ' -f3
4、删除/etc/fstab文件中所有以#开头,后面至少跟一个空白字符的行的行首的#和空白字符
[root@centos8 ~]#cat /etc/fstab | sed 's/^# *//' [root@centos8 ~]#cat /etc/fstab | sed 's/^#[[:space:]]*//'
5、处理/etc/fstab路径,使用sed命令取出其目录名和基名
#目录名 [root@centos8 ~]#echo /etc/fstab | sed -nr 's/(^\/.*)(\/.*)/\1/p' #基名 [root@centos8 ~]#echo /etc/fstab | sed -nr 's/(^\/.*)(\/.*)/\2/p'
6、列出ubuntu软件管理工具apt的一些用法(自由总结)
apt install #安装软件包 apt remove #删除软件包 apt purge #删除软件包和配置文件 apt update #刷新存储库索引 apt upgrade #升级所有可升级的软件包 apt autoremove #自动删除不需要的包 apt full-upgrade #在升级软件包时自动处理依赖关系 apt search #搜索应用程序 apt show #显示安装细节 apt list #列出已经安装的包 apt edit-sources #修改更新源地址 apt depends #查看软件依赖哪些包 apt redepends #查看软件被哪些包依赖
7、简述osi七层模型和TCP/IP五层模型
七层模型:
应用层 ----> 为应用程序提供服务
表示层 ----> 数据格式转化、数据加密
会话层 ----> 建立、管理和维护会话
传输层 ----> 建立、管理和维护端到端的连接
网络层 ----> IP选址及路由选择
数据链路层 ---->提供介质访问和链路管理
物理层 ----> 物理层
五层模型:
应用层 --\
表示层 ----> 应用层
会话层 --/
传输层 ----> 传输层
网络层 ----> 网络层
数据链路层 ---->数据链路层
物理层 ----> 物理层
8、总结描述TCP三次握手四次挥手
-
第一次握手:
客户向服务器发送连接请求段:SYN 报文段:(SYN=1,seq=n)
SYN=1:建立连接请求控制段。
seq=n:表示传输的报文段的第 1 个数据字节的序列号是 n,并以此序列号代表
整个报文段的序号(补充:sequence number,序号的意思。)
客户端进入 SYN_SENT(同步发送)。 -
第二次握手:
服务器收到 TCP 连接请求段后,如果同意,则发回确认报文段:
(SYN=1,ACK=1,seq=m, ack_seq=n+1)。
SYN=1:同意建立新连接的确认段。
ack_seq=n+1:表示已经收到了序列号为 n 的报文段,准备接收序列号为 n+1
的报文段。
seq=m:服务器告诉客户确认报文段的第 1 个数据字节的序列号是 m。
服务器由 LISTEN 进入 SYN_RCVD(同步收到)。 -
第三次握手:只有第三次握手可携带数据。
客户对服务器的 同意连接报文段 进行确认(ACK=1,seq=n+1,ack_seq=m+1)。
seq=n+1:客户传输的报文段的第一个数据字节的序列号是 n+1。
ack_seq=m+1:客户期望接收服务器序列号为 m+1 的报文段。当客户发送 ACK 时,客户端进入 ESTAB-LISHED 状态;当服务收到 ACK 后,也进入 ESTAB-LISHED 状态; -
第一次挥手:
客户向服务器发送释放连接报文段:(FIN=1,seq=j)。
首部的 FIN=1:TCP 报文段的发送端数据发送完毕,请求释放连接。
序号 seq=j:表示传输的第一个数据字节的序号是 j 客户端状态ESTABLISHED 进入 FIN_WAIT_1(终止等待 1 状态)。 -
第二次挥手:
服务器向客户发送确认段:(ACK=1,seq=k,ack_seq=j+1) 。
ACK=1:标识确认字号段有效。
确认序号 ack_seq=j+1:表示服务器期望接收客户数据包序号为 j+1 的包。
序号 seq=k:表示服务器传输的第一个数据字节的序号是 k。
服务器状态由 ESTABLISHED 进入 CLOSE_WAIT(关闭等待) 客户端收到 ACK 段后,由 FIN_WAIT_1 进入 FIN_WAIT_2。 -
第三次挥手:
服务器向客户发送释放连接报文段:(FIN=1,ACK=1,seq=o,ack_seq=j+1)。
FIN=1:请求释放连接。
ACK=1:标识确认字号段有效。
确认序号 ack_seq=j+1:表示服务器期望接收客户数据包序号为 j+1 的包。
序号 seq=o:表示自己传输的第一个数据字节的序号是 o。
服务器状态由 CLOSE_WAIT 进入 LAST_ACK(最后确认状态)。 -
第四次挥手:
客户向服务器发送确认段:(ACK=1,seq=j+1,ack_seq=o+1) 。
ACK=1:标识确认字号段有效。
确认序号 ack_seq=o+1:表示客户期望接收服务器数据包序号为 o+1 的包。
序号 seq=j+1:表示客户传输的第一个数据字节的序号是 j+1 客户端状态由FIN_WAIT_2 进入 TIME_WAIT,等待 2MSL 时间,进入 CLOSED状态,释放连接。
服务器在收到最后一次 ACK 段后,由 LAST_ACK 进入 CLOSED,释放连接。
9、描述TCP和UDP区别
- TCP 提供面向连接、可靠、有序、字节流传输服务; UDP 提供无连接、不可靠的数据报尽力传输服务。
- UDP 具有较好的实时性,工作效率比 TCP 高,适用于对高速传输和实时性 较高的通信或广播通信。
- UDP 没有拥塞控制,因此网络出现拥塞不会使源主机的发送速率降低。
- 每一条 TCP 连接只能是点到点的; UDP 支持一对一、一对多、多对一和多对多的交互通信。
- TCP 首部开销 20 字节;UDP 的首部开销小,只有 8 个字节。
- TCP 对系统资源要求较多; UDP 对系统资源要求较少。
- TCP 的逻辑通信信道是全双工的可靠信道。 UDP 则是不可靠信道。
10、网卡绑定bond0的实现
- 模拟设备两个网卡
- 添加bonding接口
[root@centos8 ~]#nmcli connection add type bond con-name testbond0 ifname bond0 mode active-backup ipv4.method manual ipv4.address 192.168.198.135/24
- 添加从属接口
[root@centos8 ~]#nmcli connection add type bond-slave ifname ens224 master bond0 #将eth0添加到bond0 [root@centos8 ~]#nmcli connection add type bond-slave ifname ens160 master bond0 #将eth1添加到bond0
- 启动从属接口
[root@centos8 ~]#nmcli connection up bond-slave-ens224 [root@centos8 ~]#nmcli connection up bond-slave-ens160
- 启动bond0接口
[root@centos8 ~]#nmcli connection up testbond0
- bonding后的接口
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 如何调用 DeepSeek 的自然语言处理 API 接口并集成到在线客服系统
· 【译】Visual Studio 中新的强大生产力特性
· 2025年我用 Compose 写了一个 Todo App