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後的介面