文章目錄
- Linux CentOS 面試知識點整理
- 速查復習
- ? 一、Linux 高頻面試題
- ? 二、MySQL 高頻面試題
- ? 三、計算機網絡(OSI四層模型)高頻面試題
- 🔗 鏈路層(Link Layer)
- 🌐 網絡層(Internet Layer)
- 🚚 傳輸層(Transport Layer)
- 🌐 應用層(Application Layer)
- ? 面試小貼士
- 📦 附:快速記憶口訣
- 一、Linux 基礎命令
- (一)文件和目錄操作
- (二)文件查看和編輯
- (三)系統信息和進程管理
- (四)網絡相關命令
- (五)用戶和權限管理
- (六)其他常用命令
- 二、數據庫安裝與配置
- (一)MySQL 安裝
- (二)MySQL 配置
- (三)MySQL 文件路徑
- 三、計算機網絡
- 各層詳細知識點總結
- 一、鏈路層(Link Layer)
- 1. **核心概念**
- 2. **常見協議**
- 3. **面試問題**
- 二、網絡層(Internet Layer)
- 1. **核心概念**
- 2. **常見協議**
- 3. **面試問題**
- 三、傳輸層(Transport Layer)
- 1. **核心概念**
- 2. **常見協議**
- TCP/IP 協議
- UDP 協議
- 3. **面試問題**
- 四、應用層(Application Layer)
- 1. **核心概念**
- 2. **常見協議**
- HTTP協議
- 3. **面試問題**
Linux CentOS 面試知識點整理
速查復習
? 一、Linux 高頻面試題
問題 | 標準答案 |
---|---|
如何查找當前目錄下最大的5個文件? | du -ah . | sort -rh | head -n 5 |
如何查看某個端口是否被占用? | ss -tuln | grep 端口號 或 lsof -i:端口號 |
如何查看某個進程是否存在? | ps aux | grep 進程名 |
如何遞歸刪除某個目錄下所有.log 文件? | find /path -type f -name "*.log" -exec rm -f {} \; |
如何查看系統負載? | top 或 uptime |
如何設置一個用戶的密碼? | passwd 用戶名 |
如何查看某個命令的幫助文檔? | man 命令名 |
如何查看當前用戶是誰? | whoami |
如何修改文件權限為755? | chmod 755 文件名 |
如何查看某個目錄的磁盤使用情況? | du -sh 目錄名 |
? 二、MySQL 高頻面試題
問題 | 標準答案 |
---|---|
如何查看MySQL當前連接數? | SHOW STATUS LIKE 'Threads_connected'; |
如何查看MySQL字符集? | SHOW VARIABLES LIKE 'character_set_server'; |
如何修改MySQL最大連接數? | 修改 /etc/my.cnf 中 max_connections=數值 后重啟服務,或使用 SET GLOBAL max_connections=1000; |
MySQL的數據文件默認存放路徑? | /var/lib/mysql |
MySQL的配置文件路徑? | /etc/my.cnf |
如何安全初始化MySQL? | 執行 mysql_secure_installation |
如何查看MySQL錯誤日志路徑? | SHOW VARIABLES LIKE 'log_error'; |
如何查看MySQL服務狀態? | systemctl status mysqld |
如何設置MySQL開機自啟? | systemctl enable mysqld |
如何查看MySQL版本? | mysql -V 或登錄后 SELECT VERSION(); |
? 三、計算機網絡(OSI四層模型)高頻面試題
🔗 鏈路層(Link Layer)
問題 | 標準答案 |
---|---|
以太網幀的最小長度是多少? | 64字節(含FCS) |
MAC地址是多少位?格式? | 48位,格式為 XX:XX:XX:XX:XX:XX |
CSMA/CD的作用? | 檢測并避免以太網中數據碰撞 |
CRC的作用? | 用于錯誤檢測 |
🌐 網絡層(Internet Layer)
問題 | 標準答案 |
---|---|
IPv4和IPv6的區別? | IPv4是32位,IPv6是128位;IPv6支持自動配置、更高安全性 |
子網掩碼的作用? | 劃分網絡位和主機位 |
CIDR表示法中 /24 是什么意思? | 子網掩碼為 255.255.255.0 |
NAT的作用? | 將私有IP轉換為公網IP,節省地址資源 |
如何查看本機路由表? | ip route 或 route -n |
ARP協議的作用? | 將IP地址解析為MAC地址 |
🚚 傳輸層(Transport Layer)
問題 | 標準答案 |
---|---|
TCP和UDP的區別? | TCP:面向連接、可靠、有流量控制;UDP:無連接、不可靠、快 |
TCP三次握手過程? | SYN → SYN-ACK → ACK |
TCP四次揮手過程? | FIN → ACK → FIN → ACK |
TCP如何實現可靠傳輸? | 序列號、確認應答、重傳機制、滑動窗口 |
UDP適用于哪些場景? | 視頻、語音、DNS、游戲等實時性高的場景 |
什么是滑動窗口? | 控制發送方在未收到確認前可發送的數據量 |
🌐 應用層(Application Layer)
問題 | 標準答案 |
---|---|
HTTP和HTTPS的區別? | HTTPS加了SSL/TLS加密,端口443,HTTP端口80 |
HTTP狀態碼分類? | 1xx信息,2xx成功,3xx重定向,4xx客戶端錯誤,5xx服務器錯誤 |
常見狀態碼? | 200成功,301/302重定向,404資源不存在,500服務器錯誤 |
DNS的作用? | 將域名解析為IP地址 |
RESTful API的特點? | 無狀態、資源導向、統一接口、支持HTTP方法 |
什么是Web緩存? | 臨時存儲資源副本,減少請求、加快響應 |
? 面試小貼士
場景 | 建議 |
---|---|
不會的問題 | 誠實說“這個我不太確定,但我理解是……”并嘗試推理 |
被問到項目經驗 | 用 STAR 法則(情境-任務-行動-結果)描述 |
Linux命令不熟 | 說“我可以查man手冊或用–help” |
MySQL調優 | 提到:索引優化、慢查詢日志、連接池、緩存 |
網絡故障排查 | 說“先ping,再traceroute,再看端口和防火墻” |
📦 附:快速記憶口訣
- TCP三次握手:SYN → SYN-ACK → ACK(“三次握手,確認連接”)
- TCP四次揮手:FIN → ACK → FIN → ACK(“四次揮手,斷開連接”)
- HTTP狀態碼:2xx成功,3xx跳轉,4xx你錯了,5xx我掛了
- Linux權限:755=所有者可寫可執行,組和其他只讀可執行
一、Linux 基礎命令
(一)文件和目錄操作
命令 | 功能 | 常用選項 | 示例 |
---|---|---|---|
ls | 列出目錄內容 | -l (長格式)、-a (顯示隱藏文件)、-h (易讀格式) | ls -lh |
cd | 切換目錄 | 無 | cd /etc |
pwd | 顯示當前工作目錄 | 無 | pwd |
mkdir | 創建目錄 | -p (遞歸創建) | mkdir -p dir1/dir2/dir3 |
rm | 刪除文件或目錄 | -r (遞歸刪除)、-f (強制刪除) | rm -rf file.txt |
cp | 復制文件或目錄 | -r (遞歸復制) | cp -r file1 file2 |
mv | 移動或重命名文件或目錄 | 無 | mv file1 /dir |
面試知識點補充:
- 批量刪除特定文件類型:在實際工作中,可能需要批量刪除某個目錄下的特定文件類型。例如,刪除所有
.log
文件,可以使用rm -f *.log
。面試中可能會問到如何刪除多個目錄下的特定文件類型,可以使用find
命令結合rm
命令,例如find /path/to/directory -type f -name "*.log" -exec rm -f {} \;
。 rm -rf
的謹慎使用:rm -rf
命令非常強大,但也非常危險,因為它會強制刪除文件或目錄,且不會提示確認。面試官可能會問到如何避免誤刪除重要文件。一個常見的做法是使用rm -i
(交互模式)進行刪除,或者在腳本中添加額外的檢查邏輯。cp
和mv
的區別:cp
用于復制文件或目錄,而mv
用于移動或重命名文件或目錄。面試中可能會問到它們的區別以及使用場景。cp
適用于需要保留原始文件的情況,而mv
適用于需要移動文件或重命名文件的情況。
(二)文件查看和編輯
命令 | 功能 | 示例 |
---|---|---|
cat | 查看文件內容 | cat file.txt |
more 和 less | 分頁查看文件內容 | less file.txt |
head 和 tail | 查看文件頭部和尾部內容 | head -n 5 file.txt 、tail -f file.log |
vi 或 vim | 文本編輯器 | 命令模式(i 進入插入模式,Esc 退出,:wq 保存退出) |
面試知識點補充:
vim
編輯器的高級用法:在面試中,可能會被問到vim
編輯器的一些高級功能,例如使用正則表達式批量替換文本。可以使用:s/old/new/g
命令替換文件中的所有old
為new
,或者使用:g/pattern/s/old/new/g
命令只替換匹配pattern
的行。- 日志文件的實時監控:
tail -f
命令用于實時查看文件的新增內容,常用于監控日志文件。面試中可能會問到如何結合grep
命令過濾特定內容。例如,tail -f file.log | grep "error"
可以實時顯示包含error
的日志內容。 less
和more
的區別:less
比more
更強大,支持上下翻頁和搜索功能。面試中可能會問到如何在less
中搜索特定內容,可以使用/pattern
向前搜索,使用?pattern
向后搜索。
(三)系統信息和進程管理
命令 | 功能 | 示例 |
---|---|---|
uname | 顯示系統信息 | uname -a |
df | 顯示磁盤空間使用情況 | df -h |
du | 顯示目錄或文件的磁盤使用情況 | du -sh /dir |
ps | 顯示當前運行的進程 | ps aux |
top | 實時顯示系統中資源占用最高的進程 | top |
kill | 終止進程 | kill -9 PID |
nice 和 renice | 調整進程優先級 | nice -n 10 command |
systemctl | 管理服務和系統狀態 | systemctl restart service |
面試知識點補充:
- 查找占用磁盤空間最大的目錄:面試中可能會問到如何查找占用磁盤空間最大的前幾個目錄。可以使用
du -sh /dir/* | sort -rh | head -n 5
命令。這個命令會列出指定目錄下所有子目錄的大小,并按降序排列,顯示前5個最大的目錄。 - 使用
ps
和grep
查找特定進程:面試中可能會問到如何查找特定進程。可以使用ps aux | grep process_name
命令。例如,查找名為httpd
的進程,可以使用ps aux | grep httpd
。 kill
命令的信號類型:kill
命令可以發送不同的信號給進程。面試中可能會問到常見的信號類型,例如SIGTERM
(默認信號,請求進程終止)、SIGKILL
(強制終止進程,kill -9
)和SIGINT
(中斷信號,通常由Ctrl+C
產生)。
(四)網絡相關命令
命令 | 功能 | 示例 |
---|---|---|
ifconfig 或 ip | 查看和配置網絡接口 | ip a |
ping | 測試網絡連通性 | ping -c 4 8.8.8.8 |
netstat 或 ss | 查看網絡連接和監聽端口 | ss -tuln |
curl 或 wget | 下載文件或測試HTTP請求 | curl -O http://example.com/file.zip |
面試知識點補充:
- 查看所有監聽端口:面試中可能會問到如何查看當前系統的所有監聽端口。可以使用
ss -tuln
命令。這個命令會列出所有TCP、UDP和監聽狀態的端口。 - 使用
ping
和traceroute
定位網絡故障點:面試中可能會問到如何排查網絡問題。可以使用ping
命令測試網絡連通性,使用traceroute
命令查看數據包的傳輸路徑。例如,traceroute 8.8.8.8
可以顯示到達目標IP的路徑。 curl
命令的高級用法:curl
命令不僅可以下載文件,還可以用于測試HTTP請求。面試中可能會問到如何使用curl
發送POST請求。例如,curl -X POST -d "key=value" http://example.com/api
可以發送一個POST請求。
(五)用戶和權限管理
命令 | 功能 | 示例 |
---|---|---|
whoami | 顯示當前登錄用戶 | whoami |
who | 顯示當前登錄的用戶信息 | who |
su | 切換用戶 | su - |
useradd | 創建用戶 | useradd username |
passwd | 設置用戶密碼 | passwd username |
chmod | 修改文件或目錄的權限 | chmod 755 file.txt |
chown | 修改文件或目錄的所有者 | chown user:group file.txt |
面試知識點補充:
- 批量創建用戶:面試中可能會問到如何批量創建用戶。可以使用
useradd
命令結合循環腳本實現。例如,使用for i in {1..10}; do useradd user$i; done
可以批量創建user1
到user10
。 - 設置目錄的特殊權限:面試中可能會問到如何設置目錄的特殊權限,例如
setuid
、setgid
和sticky bit
。可以使用chmod
命令。例如,chmod +s file.txt
可以設置setuid
權限,chmod g+s dir
可以設置setgid
權限,chmod +t dir
可以設置sticky bit
權限。 - 用戶組管理:面試中可能會問到如何管理用戶組。可以使用
groupadd
命令創建用戶組,使用usermod
命令將用戶添加到用戶組。例如,groupadd groupname
可以創建一個用戶組,usermod -aG groupname username
可以將用戶添加到用戶組。
(六)其他常用命令
命令 | 功能 | 示例 |
---|---|---|
grep | 在文件中搜索文本 | grep "pattern" file.txt |
find | 查找文件或目錄 | find / -name "file.txt" |
history | 顯示命令歷史 | history |
man | 查看命令的手冊頁 | man ls |
面試知識點補充:
- 使用
find
命令查找特定權限的文件:面試中可能會問到如何查找具有特定權限的文件。可以使用find
命令結合權限選項。例如,find / -perm 777
可以查找權限為777
的文件。 - 清空命令歷史:面試中可能會問到如何清空命令歷史。可以使用
history -c
命令。此外,還可以通過編輯~/.bash_history
文件來手動清空歷史記錄。 man
命令的高級用法:面試中可能會問到如何查看特定章節的手冊頁。可以使用man
命令的章節選項。例如,man 1 ls
可以查看ls
命令的手冊頁,man 5 crontab
可以查看crontab
文件格式的手冊頁。
二、數據庫安裝與配置
(一)MySQL 安裝
- 使用
yum
安裝MySQLsudo yum install -y mysql-community-server
- 啟動MySQL服務并設置開機自啟
sudo systemctl start mysqld sudo systemctl enable mysqld
- 檢查MySQL服務狀態
sudo systemctl status mysqld
面試知識點補充:
- 查看MySQL服務是否已經安裝成功:面試中可能會問到如何查看MySQL服務是否已經安裝成功。可以使用
rpm -q mysql-community-server
命令。如果返回mysql-community-server-版本號
,則表示已安裝成功。 - 服務管理:面試中可能會問到如何查看服務的依賴關系。可以使用
systemctl list-dependencies service
命令。例如,systemctl list-dependencies mysqld
可以查看MySQL服務的依賴關系。
(二)MySQL 配置
- 安全配置
sudo mysql_secure_installation
- 修改配置文件
- 配置文件路徑:
/etc/my.cnf
- 常見配置項:
datadir
、port
、bind-address
- 配置文件路徑:
- 字符集配置
[client] default-character-set = utf8mb4[mysql] default-character-set = utf8mb4[mysqld] character-set-server = utf8mb4 collation-server = utf8mb4_unicode_ci
面試知識點補充:
- 查看MySQL的當前字符集:面試中可能會問到如何查看MySQL的當前字符集。可以使用
SHOW VARIABLES LIKE 'character_set_server';
命令。 - 動態修改MySQL配置:面試中可能會問到如何動態修改MySQL配置而無需重啟服務。可以使用
SET GLOBAL
命令。例如,SET GLOBAL max_connections = 1000;
可以動態修改最大連接數。
(三)MySQL 文件路徑
- 數據文件路徑:
/var/lib/mysql
- 配置文件路徑:
/etc/my.cnf
- 日志文件路徑:
/var/log/mysql/
面試知識點補充:
- 查看MySQL的錯誤日志文件路徑:面試中可能會問到如何查看MySQL的錯誤日志文件路徑。可以使用
SHOW VARIABLES LIKE 'log_error';
命令。 - 日志文件的自動輪轉:面試中可能會問到如何設置日志文件的自動輪轉。可以使用
logrotate
工具。例如,可以編輯/etc/logrotate.d/mysql
文件,配置日志輪轉策略。
三、計算機網絡
各層詳細知識點總結
一、鏈路層(Link Layer)
1. 核心概念
- 功能:
- 將數據封裝成幀(Frame)。
- 負責物理傳輸,包括信號的編碼和解碼。
- 錯誤檢測和糾正(通過CRC校驗等)。
- 流量控制(如滑動窗口機制)。
- 提供硬件地址(MAC地址)。
- 硬件地址(MAC地址):
- 48位的唯一標識符,用于在局域網內識別設備。
- 格式:
XX:XX:XX:XX:XX:XX
。
2. 常見協議
- 以太網(Ethernet):
- 最常用的鏈路層協議,支持多種物理介質(如雙絞線、光纖)。
- 以太網幀結構:
- 前導碼(Preamble):用于同步。
- 目標MAC地址(Destination MAC Address):6字節。
- 源MAC地址(Source MAC Address):6字節。
- 類型/長度字段(Type/Length):2字節。
- 數據負載(Payload):46-1500字節。
- 幀校驗序列(FCS):4字節。
- 無線局域網(WLAN):
- 使用無線信號進行通信,遵循IEEE 802.11標準。
- 支持多種加密方式(如WEP、WPA、WPA2)。
- 點對點協議(PPP):
- 用于點對點連接,常用于撥號上網。
- 提供鏈路控制協議(LCP)和多種網絡控制協議(NCP)。
3. 面試問題
- 問題1:以太網幀的結構是什么?
- 答案:以太網幀包括前導碼、目標MAC地址、源MAC地址、類型/長度字段、數據負載和幀校驗序列(FCS)。
- 問題2:如何檢測和糾正鏈路層的錯誤?
- 答案:使用循環冗余校驗(CRC)進行錯誤檢測,通過重傳機制進行錯誤糾正。
- 問題3:什么是MAC地址?它的作用是什么?
- 答案:MAC地址是網絡設備的唯一標識符,用于在鏈路層識別設備。它是一個48位的地址,通常以十六進制表示。
- 問題4:以太網中的最小幀大小是多少?
- 答案:以太網中的最小幀大小是64字節,包括8字節的前導碼和4字節的FCS。
- 問題5:什么是碰撞檢測(CSMA/CD)?它在以太網中的作用是什么?
- 答案:CSMA/CD(Carrier Sense Multiple Access with Collision Detection)是一種介質訪問控制方法,用于檢測和避免數據沖突。在以太網中,當多個設備嘗試同時發送數據時,CSMA/CD機制可以檢測到沖突并重新發送數據。
二、網絡層(Internet Layer)
1. 核心概念
- 功能:
- 尋址:為每個網絡設備分配一個唯一的IP地址。
- 路由:根據IP地址將數據包從源主機發送到目標主機。
- 分片和重組:將大數據包分割成小片段,以便在不同網絡中傳輸。
- 提供邏輯地址(IP地址)。
- IP地址:
- IPv4:32位地址,格式為
A.B.C.D
,分為A、B、C、D、E五類。 - IPv6:128位地址,格式為
A:B:C:D:E:F:G:H
,提供更多的地址空間。
- IPv4:32位地址,格式為
- 子網掩碼:
- 用于將IP地址劃分為網絡部分和主機部分。
- 常見的子網掩碼:
255.255.255.0
(/24)。
2. 常見協議
- IP(Internet Protocol):
- 網絡層的核心協議,負責數據包的尋址和路由。
- IPv4:32位地址,格式為
A.B.C.D
。 - IPv6:128位地址,格式為
A:B:C:D:E:F:G:H
。
- ICMP(Internet Control Message Protocol):
- 用于發送錯誤消息和操作信息。
- 常見的ICMP消息類型:回顯請求(ping)、回顯應答、目的不可達。
- ARP(Address Resolution Protocol):
- 將IP地址解析為MAC地址。
- 常見的ARP消息類型:ARP請求、ARP應答。
3. 面試問題
- 問題1:IPv4和IPv6的主要區別是什么?
- 答案:IPv4使用32位地址,而IPv6使用128位地址,提供了更多的地址空間。IPv6還支持無狀態地址自動配置(SLAAC)和更好的安全性。
- 問題2:什么是子網掩碼?它的作用是什么?
- 答案:子網掩碼用于將IP地址劃分為網絡部分和主機部分。它幫助路由器確定數據包是否屬于同一網絡或需要轉發到其他網絡。
- 問題3:如何查看當前主機的路由表?
- 答案:在Linux系統中,可以使用
route -n
或ip route
命令查看路由表。
- 答案:在Linux系統中,可以使用
- 問題4:什么是CIDR(無類別域間路由)?它的作用是什么?
- 答案:CIDR是一種IP地址的表示方法,通過子網掩碼的位數來表示網絡部分和主機部分。例如,
192.168.1.0/24
表示網絡部分為192.168.1.0
,子網掩碼為255.255.255.0
。CIDR的作用是提高IP地址的利用率,減少路由表的大小。
- 答案:CIDR是一種IP地址的表示方法,通過子網掩碼的位數來表示網絡部分和主機部分。例如,
- 問題5:什么是NAT(網絡地址轉換)?它的作用是什么?
- 答案:NAT是一種將一個IP地址空間轉換為另一個IP地址空間的技術,常用于將私有IP地址轉換為公共IP地址。NAT的作用是節省公共IP地址資源,提高網絡安全性。
三、傳輸層(Transport Layer)
1. 核心概念
- 功能:
- 提供可靠的、面向連接的傳輸服務(如TCP)。
- 提供無連接的、不可靠的傳輸服務(如UDP)。
- 流量控制和擁塞控制。
- 提供端到端的通信。
- 端口號:
- 用于標識主機上的應用程序。
- 范圍:0-65535。
- 常見的端口號:80(HTTP)、443(HTTPS)、22(SSH)、25(SMTP)。
2. 常見協議
TCP/IP 協議
- 定義:TCP/IP 是一組用于互聯網及相關網絡的通信協議,包括 TCP 和 IP。
- 層次結構:
- 鏈路層:負責物理鏈路的管理,如以太網。
- 網絡層:負責數據包的路由和轉發,主要協議是 IP。
- 傳輸層:負責端到端的數據傳輸和可靠性保證,主要協議是 TCP 和 UDP。
- 應用層:負責處理特定的應用程序之間的通信,主要協議是 HTTP、FTP、SMTP 等。
- TCP 協議特點:
- 面向連接:在數據傳輸之前,必須建立一個可靠的連接。
- 可靠傳輸:通過確認(ACK)、重傳機制、滑動窗口等技術,確保數據的完整性和順序性。
- 應用場景:文件傳輸、網頁瀏覽、郵件傳輸等。
面試知識點補充:
- TCP 的三次握手和四次揮手過程:面試中可能會問到 TCP 的三次握手和四次揮手過程。三次握手過程如下:
- 客戶端發送一個 SYN 包到服務器,請求建立連接。
- 服務器收到 SYN 包后,回復一個 SYN-ACK 包,確認客戶端的請求。
- 客戶端收到 SYN-ACK 包后,發送一個 ACK 包到服務器,完成連接建立。
四次揮手過程如下: - 客戶端發送一個 FIN 包到服務器,請求關閉連接。
- 服務器收到 FIN 包后,回復一個 ACK 包,確認客戶端的請求。
- 服務器發送一個 FIN 包到客戶端,請求關閉連接。
- 客戶端收到 FIN 包后,發送一個 ACK 包到服務器,完成連接關閉。
- 查看本機的 IP 地址:面試中可能會問到如何查看本機的 IP 地址。可以使用
ifconfig
或ip a
命令。ip a
命令是現代 Linux 系統中推薦使用的命令。
UDP 協議
- 定義:UDP 是一種無連接的、不可靠的傳輸層協議。
- 特點:
- 無連接:不需要建立連接,開銷較小。
- 不可靠:不提供確認和重傳機制。
- 應用場景:視頻流、語音通話、游戲、DNS 查詢等。
面試知識點補充:
- UDP 和 TCP 的主要區別:面試中可能會問到 UDP 和 TCP 的主要區別。TCP 是面向連接的、可靠的傳輸協議,而 UDP 是無連接的、不可靠的傳輸協議。TCP 適用于對可靠性要求較高的場景,如文件傳輸和網頁瀏覽;UDP 適用于對實時性要求較高的場景,如視頻流和語音通話。
- 使用 UDP 協議實現簡單的數據傳輸:面試中可能會問到如何使用 UDP 協議實現簡單的數據傳輸。可以使用
netcat
工具。例如,服務器端可以使用nc -u -l 1234
監聽 UDP 端口 1234,客戶端可以使用nc -u server_ip 1234
發送數據到服務器。
3. 面試問題
- 問題1:TCP和UDP的主要區別是什么?
- 答案:TCP是面向連接的、可靠的傳輸協議,提供流量控制和擁塞控制,適用于對可靠性要求較高的應用。UDP是無連接的、不可靠的傳輸協議,適用于對實時性要求較高的應用。
- 問題2:TCP的三次握手和四次揮手過程是什么?
- 答案:
- 三次握手:
- 客戶端發送一個SYN包到服務器,請求建立連接。
- 服務器收到SYN包后,回復一個SYN-ACK包,確認客戶端的請求。
- 客戶端收到SYN-ACK包后,發送一個ACK包到服務器,完成連接建立。
- 四次揮手:
- 客戶端發送一個FIN包到服務器,請求關閉連接。
- 服務器收到FIN包后,回復一個ACK包,確認客戶端的請求。
- 服務器發送一個FIN包到客戶端,請求關閉連接。
- 客戶端收到FIN包后,發送一個ACK包到服務器,完成連接關閉。
- 三次握手:
- 答案:
- 問題3:什么是滑動窗口協議?它的作用是什么?
- 答案:滑動窗口協議是一種流量控制機制,用于控制發送方在等待確認之前可以發送的數據量。它通過動態調整窗口大小來優化網絡利用率,防止發送方發送過多數據導致接收方溢出。
- 問題4:TCP的擁塞控制機制有哪些?
- 答案:TCP的擁塞控制機制包括慢啟動(Slow Start)、擁塞避免(Congestion Avoidance)、快速重傳(Fast Retransmit)和快速恢復(Fast Recovery)。
- 問題5:UDP適用于哪些應用場景?
- 答案:UDP適用于對實時性要求較高的應用,如視頻流、語音通話、游戲和DNS查詢。這些應用對延遲敏感,可以容忍一定程度的數據丟失。
四、應用層(Application Layer)
1. 核心概念
- 功能:
- 提供應用程序之間的通信接口。
- 支持多種應用層協議,如HTTP、FTP、SMTP、DNS等。
- 提供用戶界面和應用程序邏輯。
2. 常見協議
HTTP協議
- HTTP(HyperText Transfer Protocol):
- 定義:HTTP 是一種應用層協議,用于在客戶端和服務器之間傳輸超文本數據。
- 特點:
- 無狀態:每次請求都是獨立的。
- 基于 TCP:確保數據的可靠傳輸。
- 請求/響應模型:客戶端發送請求,服務器返回響應。
- 請求和響應:
- 請求行:包含請求方法(GET、POST、PUT、DELETE等)、請求的URL和HTTP版本。
- 請求頭:包含附加信息,如
Host
、User-Agent
、Content-Type
等。 - 請求體:對于POST請求,包含要提交的數據。
- 響應行:包含HTTP版本、狀態碼和狀態消息。
- 響應頭:包含附加信息,如
Content-Type
、Content-Length
等。 - 響應體:包含服務器返回的數據,如HTML頁面、JSON數據等。
- 狀態碼:
- 1xx:信息性狀態碼。
- 2xx:成功狀態碼,如 200(請求成功)、201(資源已創建)。
- 3xx:重定向狀態碼,如 301(永久重定向)、302(臨時重定向)。
- 4xx:客戶端錯誤狀態碼,如 400(請求格式錯誤)、404(未找到資源)。
- 5xx:服務器錯誤狀態碼,如 500(服務器內部錯誤)、503(服務不可用)。
面試知識點補充:
-
查看 HTTP 請求的詳細信息:面試中可能會問到如何查看 HTTP 請求的詳細信息。可以使用
curl -v
命令。例如,curl -v http://example.com
可以顯示 HTTP 請求和響應的詳細信息。 -
常見的 404 和 500 錯誤的原因及解決方法:面試中可能會問到常見的 404 和 500 錯誤的原因及解決方法。404 錯誤表示請求的資源未找到,可能是因為 URL 錯誤或文件不存在。500 錯誤表示服務器內部錯誤,可能是因為服務器配置錯誤或代碼問題。解決方法包括檢查 URL、檢查服務器日志、檢查應用程序代碼等。
-
HTTPS(HTTP Secure):
- 特點:在HTTP基礎上添加了SSL/TLS加密。
- 應用場景:安全的網頁瀏覽、電子商務、在線銀行。
-
FTP(File Transfer Protocol):
- 特點:用于文件傳輸,支持文件上傳和下載。
- 應用場景:文件服務器、文件共享。
-
SMTP(Simple Mail Transfer Protocol):
- 特點:用于發送電子郵件。
- 應用場景:郵件服務器。
-
DNS(Domain Name System):
- 特點:將域名解析為IP地址。
- 應用場景:域名解析、負載均衡。
3. 面試問題
- 問題1:HTTP和HTTPS的主要區別是什么?
- 答案:HTTPS在HTTP的基礎上添加了SSL/TLS加密,確保數據傳輸的安全性。HTTPS使用端口443,而HTTP使用端口80。
- 問題2:什么是HTTP狀態碼?常見的狀態碼有哪些?
- 答案:HTTP狀態碼是服務器對客戶端請求的響應狀態的描述。常見的狀態碼包括:
- 200:請求成功。
- 301/302:重定向。
- 400:請求格式錯誤。
- 401:未授權。
- 403:禁止訪問。
- 404:未找到資源。
- 500:服務器內部錯誤。
- 503:服務不可用。
- 答案:HTTP狀態碼是服務器對客戶端請求的響應狀態的描述。常見的狀態碼包括:
- 問題3:DNS的作用是什么?它是如何工作的?
- 答案:DNS的作用是將域名解析為IP地址。當客戶端請求一個域名時,DNS服務器會查找該域名對應的IP地址,并將結果返回給客戶端。DNS解析過程包括遞歸查詢和迭代查詢。
- 問題4:什么是RESTful API?它的特點是什么?
- 答案:RESTful API是一種基于HTTP協議的網絡應用程序接口,遵循REST(Representational State Transfer)架構風格。它的特點包括無狀態、統一接口、資源導向、超媒體作為應用狀態的引擎(HATEOAS)。
- 問題5:什么是Web緩存?它的作用是什么?
- 答案:Web緩存是一種存儲機制,用于臨時存儲Web資源的副本。它的作用是減少對服務器的請求次數,提高響應速度,降低網絡帶寬的使用。