主頁 > 作業系統 > 動態主機配置協議——DHCP詳解

動態主機配置協議——DHCP詳解

2022-06-22 07:32:15 作業系統

目錄
  • 一、DHCP簡介
    • 二、DHCP作用及特點
  • 三、DHCP服務器IP分配三種方式
  • 四、DHCP協議中的報文
  • 五、DHCP服務作業流程
      • 第一步:搜索階段
      • 第二步:提供階段
      • 第三步:選擇階段
  • 第四步:確認階段
  • 六、安裝和配置DHCP服務
    • 七、DHCP中繼代理

一、DHCP簡介

DHCP(Dynamic Host Configuration Protocol),動態主機配置協議,是一個應用層協議,當我們將客戶主機ip地址設定為動態獲取方式時,DHCP服務器就會根據DHCP協議給客戶端分配IP,使得客戶機能夠利用這個IP上網,

DHCP前身是BOOTP,在Linux的網卡配置中也能看到顯示的是BOOTP,DHCP引進一個bootp沒有的概念:租約,bootp分配的地址是永久的,而dhcp分配的地址是可以有期限的,

DHCP分為兩個部分:一個是服務器端,另一個是客戶端,

二、DHCP作用及特點
  • DHCP可以自動分配IP、子網掩碼、網關、DNS,
  • DHCP客戶端使用的埠68,服務端使用埠67,使用的UDP應用層的協議,
  • DHCP一般不為服務器分配IP,因為他們要使用固定IP,所以DHCP一般只為辦公環境的主機分配IP,
  • DHCP服務器和客戶端需要在一個局域網內,在為客戶端分配IP的時候需要進行多次廣播,但DHCP也可以為其他網段內主機分配IP,只要連接兩個網段中間的路由器能轉發DHCP配置請求即可,但這要求路由器配置中繼功能,

三、DHCP服務器IP分配三種方式

1)自動分配(Automatic Allocation)(MAC地址與IP系結)

自動分配是當DHCP客戶端第一次成功地從DHCP服務器端分配到一個IP地址之后,就永遠使用這個地址,

2)動態分配(Dynamic Allocation)常用方式

動態分配是當DHCP客戶端第一次從DHCP服務器分配到IP地址后,并非永久地使用該地址,每次使用完后,DHCP客戶端就得釋放這個IP地址,以給其他客戶端使用,

3)手動分配

手動分配是由DHCP服務器管理員專門為客戶端指定IP地址,

三種方式的區別:

1、自動分配和手動分配都是分配靜態ip
2、自動分配需要在組態檔中配置IP與MAC對應關系,在在靜態表中,獲取IP必須通過DHCP服務器
3、手動分配需要人工操作,不需要通過DHCP服務器
4、動態分配有時效性

四、DHCP協議中的報文

  • DHCP DISCOVER :客戶端開始DHCP程序發送的包,是DHCP協議的開始
  • DHCP OFFER :服務器接收到DHCP DISCOVER之后做出的回應,它包括了給予客戶端的IP(yiaddr)、客戶端的MAC地址、租約過期時間、服務器的識別符以及其他資訊
  • DHCP REQUEST :客戶端對于服務器發出的DHCP OFFER所做出的回應,在續約租期的時候同樣會使用,
  • DHCP ACK :服務器在接收到客戶端發來的DHCP REQUEST之后發出的成功確認的報文,在建立連接的時候,客戶端在接收到這個報文之后才會確認分配給它的IP和其他資訊可以被允許使用,
  • DHCP NAK :DHCP ACK的相反的報文,表示服務器拒絕了客戶端的請求,
  • DHCP RELEASE :一般出現在客戶端關機、下線等狀況,這個報文將會使DHCP服務器釋放發出此報文的客戶端的IP地址
  • DHCP INFORM :客戶端發出的向服務器請求一些資訊的報文
  • DHCP DECLINE :當客戶端發現服務器分配的IP地址無法使用(如IP地址沖突時),將發出此報文,通知服務器禁止使用該IP地址,

五、DHCP服務作業流程

5.1、作業流程細節

第一步:搜索階段

當DHCP客戶端第一次登錄網路的時候,計算機發現本機上沒有任何IP地址設定,將以廣播方式發送DHCP discover發現資訊來尋找DHCP服務器,即向255.255.255.255發送特定的廣播資訊,網路上每一臺安裝了TCP/IP協議的主機都會接收這個廣播資訊,但只有DHCP服務器才會做出回應,(DHCP DISCOVER

第二步:提供階段

在網路中接收到DHCP discover發現資訊的DHCP服務器就會做出回應,它從尚未分配的IP地址池中挑選一個分配給DHCP客戶機,向DHCP客戶機發送一個包含分配的IP地址和其他設定的DHCP offer提供資訊,因為此時客戶端還沒有IP,所以回傳資訊也是以廣播的方式回傳的,(DHCP OFFER

第三步:選擇階段

DHCP客戶端接受到DHCP offer提供資訊之后,選擇第一個接收到的提供資訊,然后以廣播的方式回答一個DHCP request請求資訊,該資訊包含向它所選定的DHCP服務器請求IP地址的內容,(DHCP REQUEST

第四步:確認階段

當DHCP服務器收到DHCP客戶端回答的DHCP request請求資訊之后,便向DHCP客戶端發送一個包含它所提供的IP地址和其他設定的DHCP ack確認資訊,確認租約,并指定租約時長,告訴DHCP客戶端可以使用它提供的IP地址,然后,DHCP客戶機便將其TCP/IP協議與網卡系結,另外,除了DHCP客戶機選中的DHCP服務器外,其他的DHCP服務器將識訓曾經提供的IP地址,(DHCP ACK

5.2、重新登錄

以后DHCP客戶端每次重新登錄網路時,就不需要再發送DHCP discover發現資訊了,而是直接發送包含前一次所分配的IP地址的DHCP request請求資訊,當DHCP服務器收到這一資訊后,它會嘗試讓DHCP客戶機繼續使用原來的IP地址,并回答一個DHCP ack確認資訊,如果此IP地址已無法再分配給原來的DHCP客戶機使用時,則DHCP服務器給DHCP客戶機回答一個DHCP nack否認資訊,當原來的DHCP客戶機收到此DHCP nack否認資訊后,它就必須重新發送DHCP discover發現資訊來請求新的IP地址

5.2、續租

DHCP服務器向DHCP客戶機出租的IP地址一般都有一個租借期限,期滿后DHCP服務器便會識訓出租的IP地址,如果DHCP客戶機要延長其IP租約,則必須更新其IP租約,DHCP客戶機啟動時和IP租約期限到達租約的50%時,DHCP客戶機都會自動向DHCP服務器發送更新其IP租約的資訊,

續租的程序(只有最后兩步請求):

Client--> DHCPREQUEST              # 單播:繼續請求使用提供的IP
          DHCPACK <-- Server       # 單播:確認續租

兩個租約表:

  • 靜態租約表:對應一個靜態租約存盤檔案,server運行時從檔案中讀取靜態租約表,
  • 動態租約表:對應一個周期存盤檔案,server周期性將租約表存進該檔案,在程式開始時將會讀取上次存放的租約表,(租約表記錄了當前所有分配的租約,包括靜態鏈接的),

5.3、DHCP服務器要跨網段提供服務

如果DHCP服務器要跨網段提供服務,一樣是四步請求,只不過是每一步中間都多了一個路由器和DHCP服務器之間的單播通信,

1)客戶端廣播方式發送報文,搜索DHCP服務器,所有機器包括路由器都收到報文,路由器配置了中繼,知道搜索訊息后單播給DHCP服務器;

2)DHCP服務器單播回傳資訊給路由器,路由器再廣播給客戶端;

3)客戶端選擇DHCP服務器提供的IP,并廣播資訊告訴它我選好了,路由器單播給DHCP服務器;

4)DHCP服務器收到資訊將確認資訊單播給路由器,路由器單播給客戶端,

5.4、小結:

  • 當計算機從一個子網移到另一個子網,找的DHCP服務器不同,因為舊的租約還存在,會先續租,新的DHCP服務器肯定拒絕它的續租請求,這時將重新開始四步請求,
  • 有些機器希望一直使用一個固定的IP,也就是靜態IP(static),除了手動進行配置,DHCP服務器也可以實作這個功能,DHCP服務器可以根據MAC地址來分配這臺機器固定IP地址(保留地址),即使重啟或重裝了系統也不會改變根據MAC地址分配的地址(MAC地址跟IP系結),
  • 當收到客戶端的首次請求時,DHCP服務器先查找靜態租約表;若存在請求的表項,回傳這個客戶的靜態IP地址;否則,從IP地址池中選擇可用的IP分配給客戶,并添加資訊到動態資料庫中,此外,服務器將會周期性的重繪租約表寫入檔案存檔,在這個程序中會順便對動態租約表進行租期檢查,

六、安裝和配置DHCP服務

6.1、安裝

$ yum -y install dhcp

常用的幾個組態檔

/etc/dhcp/dhcpd.conf    # DHCP組態檔
/usr/sbin/dhcpd         # DHCP服務程式
/usr/sbin/dhcrelay      # 中繼命令程式,用于跨網段提供DHCP服務
/var/lib/dhcpd/dhcpd.leases    # 存放租借資訊(如IP)和租約資訊(如租約時長)
/usr/share/doc/dhcp-4.2.5/dhcpd.conf.example # 組態檔的范例檔案

6.2、首先關閉虛擬機自帶的DHCP功能

6.3、組態檔

cp  -r  /usr/share/doc/dhcp-4.2.5/dhcpd.conf.example /etc/dhcp/dhcpd.conf

dhcpd.conf中部分配置項:

# 每行分號結束
ddns-update-style none;      # 動態dns相關,幾乎不開啟它,也就是不管它,
ignore client-updates;       # 和上面的相關,也不管它
authoritative                # 宣告為權威服務器
next-server marvin.redhat.com;    # PXE環境下指定的提供引導程式的檔案服務器
# DHCP組態檔里必須配置一個地址池,其和DHCP服務器自身IP在同一網段
subnet 192.168.182.0 netmask 255.255.255.0 {
  range 192.168.182.100 192.168.182.150;             # 地址池
  option domain-name-servers ns1.internal.example.org;     # 為客戶端指明DNS服務器地址,可以是多個,最多三個
  option domain-name "internal.example.org";               # 為客戶端指明DNS名字,定義了它會覆寫客戶端/etc/resolv.conf里的配置
  option routers 192.168.182.2;               # 默認路由,其實就是網關
  option broadcast-address 192.168.182.255;    # 廣播地址,不設定時默認會根據A/B/C類地址自動計算
  default-lease-time 600;                # 默認租約時長
  max-lease-time 7200;                   # 最大租約時長
}

#下面的是系結MAC地址設定保留地址,保留地址不能是地址池中的地址
host fantasia {            # 固定地址的配置,host后面的是識別符號,沒意義
  hardware ethernet 00:0c:29:ac:fa:91;
  fixed-address 192.168.182.10;      # 根據MAC地址分配的固定IP 
}

如果不讓dhcp修改/etc/resolv.conf里的內容,就在網卡組態檔/etc/sysconfig/network-scripts/ifcfg-ethX里添加一行選項:PEERDNS=no,
6.4、客戶端dhclient

dhclient是一個DHCP協議客戶端

語法格式:

dhclient [引數] [網路介面]

常用引數:

-p	指定dhcp客戶端監聽的埠號(默認埠號86)
-d	總是以前臺方式運行程式
-q	安靜模式,不列印任何錯誤的提示資訊
-r	釋放ip地址
-n	不配置任何介面
-x	停止正在運行的DHCP客戶端,而不釋放當前租約,殺死現有的dhclient
-s	在獲取ip地址之前指定DHCP服務器
-w	即使沒有找到廣播介面,也繼續運行

dhclient簡單使用:
1)在指定網路介面上發出DHCP請求

$ dhclient ens37

2)釋放IP地址(這里注意一點,靜態ip也會被釋放,小心操作)

# 釋放所有網卡系結的ip
$ dhclient -r
# 指定釋放哪個網卡
$ dhclient -r ens37

3)從指定的DHCP服務器獲取ip地址

$ dhclient -s 192.168.182.149 ens37

4)停止運行dhclient(這里也會釋放所有ip,包括靜態ip,謹慎操作)

$ dhclient -x

5)恢復:

重啟網卡(systemctl restart network),會恢復靜態ip和動態獲取ip
執行dhclient,不會恢復靜態ip,只會動態獲取一個ip

6.5、在客戶端如何獲取動態分配的地址呢?

方法1:systemctl restart network

但是每次重啟網路很麻煩,可以使用客戶端命令dhclient,

方法2:接執行dhclient命令

這種方法下會顯示4部請求中需要顯示的步驟資訊,以及最終分配的地址,所以是一個很好的理解dhcp作業的工具,
但是這種方法只能使用一次,第二次執行命令會提示該行程已經在執行,因為dhclient是一個行程,可以kill掉該行程再執行dhclient,或者使用dhclient -d選項,

方法三:dhclient -d

6.5、如何重新獲取IP地址?
每次重啟網卡默認都獲取的同一個ip,有時候想換個ip都很麻煩,在/var/lib/dhclient/目錄下有".leases"檔案,將它們清慷訓者洗掉這些檔案中對應網卡的部分,再重啟網路就可以獲取新的動態ip,

[root@centos7-1 ~]# cat /var/lib/dhclient/dhclient.leases 
lease {
  interface "ens33";
  fixed-address 192.168.182.178;
  option subnet-mask 255.255.255.0;
  option routers 192.168.182.2;
  option dhcp-lease-time 1800;
  option dhcp-message-type 5;
  option domain-name-servers 192.168.182.2;
  option dhcp-server-identifier 192.168.182.254;
  option broadcast-address 192.168.182.255;
  option domain-name "localdomain";
  renew 0 2021/07/11 04:11:04;
  rebind 0 2021/07/11 04:11:04;
  expire 0 2021/07/11 04:11:04;
}
lease {
  interface "ens37";
  fixed-address 192.168.182.248;
  option subnet-mask 255.255.255.0;
  option dhcp-lease-time 1800;
  option routers 192.168.182.2;
  option dhcp-message-type 5;
  option dhcp-server-identifier 192.168.182.254;
  option domain-name-servers 192.168.182.2;
  option broadcast-address 192.168.182.255;
  option domain-name "localdomain";
  renew 0 2021/07/11 04:10:50;
  rebind 0 2021/07/11 04:10:50;
  expire 0 2021/07/11 04:10:50;
}
lease {
  interface "ens37";
  fixed-address 192.168.182.10;
  option subnet-mask 255.255.255.0;
  option routers 192.168.182.2;
  option dhcp-lease-time 600;
  option dhcp-message-type 5;
  option domain-name-servers 120.240.95.33,120.240.95.33;
  option dhcp-server-identifier 192.168.182.244;
  option broadcast-address 192.168.182.255;
  option domain-name "example.org";
  renew 0 2021/07/11 04:23:24;
  rebind 0 2021/07/11 04:27:51;
  expire 0 2021/07/11 04:29:06;
}

或者,在/etc/sysconfig/network-scripts/ifcfg-ens37加入"DHCPRELEASE=yes",
當運行ip link set ens37 down的時候就會發出dhcprelase報文,查看/etc/sysconfig/network-scripts/ifdown-ens37腳本中實際上是呼叫dhclient命令,用下面這個命令應該也可以,

# 釋放ip
$ /sbin/dhclient -r ens37
# 停掉網卡
$ ip link set ens37 down
# 啟動網卡
$ ip link set ens37 up
七、DHCP中繼代理

DHCP中繼被稱為DHCP Relay;是為了實作不同子網和物理網段之間處理和轉發dhcp資訊

作業程序:

  1. DHCP客戶機申請IP租約,發送DHCP-Discover包,
  2. 中繼代理收到該包,并轉發給另一個網段的DHCP服務器,
  3. DHCP服務器收到該包,將DHCP-Offer包發送給中繼代理,
  4. 中繼代理將地址租約(DHCP-Offer)轉發給DHCP客戶端,

轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/494124.html

標籤:Linux

上一篇:WSL 2 的安裝程序(以及介紹)

下一篇:WSL 2 的安裝程序(以及介紹)

標籤雲
其他(157675) Python(38076) JavaScript(25376) Java(17977) C(15215) 區塊鏈(8255) C#(7972) AI(7469) 爪哇(7425) MySQL(7132) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5869) 数组(5741) R(5409) Linux(5327) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4554) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2429) ASP.NET(2402) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) 功能(1967) .NET技术(1958) Web開發(1951) python-3.x(1918) HtmlCss(1915) 弹簧靴(1913) C++(1909) xml(1889) PostgreSQL(1872) .NETCore(1853) 谷歌表格(1846) Unity3D(1843) for循环(1842)

熱門瀏覽
  • CA和證書

    1、在 CentOS7 中使用 gpg 創建 RSA 非對稱密鑰對 gpg --gen-key #Centos上生成公鑰/密鑰對(存放在家目錄.gnupg/) 2、將 CentOS7 匯出的公鑰,拷貝到 CentOS8 中,在 CentOS8 中使用 CentOS7 的公鑰加密一個檔案 gpg -a ......

    uj5u.com 2020-09-10 00:09:53 more
  • Kubernetes K8S之資源控制器Job和CronJob詳解

    Kubernetes的資源控制器Job和CronJob詳解與示例 ......

    uj5u.com 2020-09-10 00:10:45 more
  • VMware下安裝CentOS

    VMware下安裝CentOS 一、軟硬體準備 1 Centos鏡像準備 1.1 CentOS鏡像下載地址 下載地址 1.2 CentOS鏡像下載程序 點擊下載地址進入如下圖的網站,選擇需要下載的版本,這里選擇的是Centos8,點擊如圖所示。 決定選擇Centos8后,選擇想要的鏡像源進行下載,此 ......

    uj5u.com 2020-09-10 00:12:10 more
  • 如何使用Grep命令查找多個字串

    如何使用Grep 命令查找多個字串 大家好,我是良許! 今天向大家介紹一個非常有用的技巧,那就是使用 grep 命令查找多個字串。 簡單介紹一下,grep 命令可以理解為是一個功能強大的命令列工具,可以用它在一個或多個輸入檔案中搜索與正則運算式相匹配的文本,然后再將每個匹配的文本用標準輸出的格式 ......

    uj5u.com 2020-09-10 00:12:28 more
  • git配置http代理

    git配置http代理 經常遇到克隆 github 慢的問題,這里記錄一下幾種配置 git 代理的方法,解決 clone github 過慢。 目錄 git配置代理 git單獨配置github代理 git配置全域代理 配置終端環境變數 git配置代理 主要使用 git config 命令 git單獨 ......

    uj5u.com 2020-09-10 00:12:33 more
  • Linux npm install 裝包時提示Error EACCES permission denied解

    npm install 裝包時提示Error EACCES permission denied解決辦法 ......

    uj5u.com 2020-09-10 00:12:53 more
  • Centos 7下安裝nginx,使用yum install nginx,提示沒有可用的軟體包

    Centos 7下安裝nginx,使用yum install nginx,提示沒有可用的軟體包。 18 (flaskApi) [root@67 flaskDemo]# yum -y install nginx 19 已加載插件:fastestmirror, langpacks 20 Loading ......

    uj5u.com 2020-09-10 00:13:13 more
  • Linux查看服務器暴力破解ssh IP

    在公網的服務器上經常遇到別人爆破你服務器的22埠,用來挖礦或者干其他嘿嘿嘿的事情~ 這種情況下正確的做法是: 修改默認ssh的22埠 使用設定密鑰登錄或者白名單ip登錄 建議服務器密碼為復雜密碼 創建普通用戶登錄服務器(root權限過大) 建立堡壘機,實作統一管理服務器 統計爆破IP [root ......

    uj5u.com 2020-09-10 00:13:17 more
  • CentOS 7系統常見快捷鍵操作方式

    Linux系統中一些常見的快捷方式,可有效提高操作效率,在某些時刻也能避免操作失誤帶來的問題。 ......

    uj5u.com 2020-09-10 00:13:31 more
  • CentOS 7作業系統目錄結構介紹

    作業系統存在著大量的資料檔案資訊,相應檔案資訊會存在于系統相應目錄中,為了更好的管理資料資訊,會將系統進行一些目錄規劃,不同目錄存放不同的資源。 ......

    uj5u.com 2020-09-10 00:13:35 more
最新发布
  • vim的常用命令

    Vim的6種基本模式 1. 普通模式在普通模式中,用的編輯器命令,比如移動游標,洗掉文本等等。這也是Vim啟動后的默認模式。這正好和許多新用戶期待的操作方式相反(大多數編輯器默認模式為插入模式)。 2. 插入模式在這個模式中,大多數按鍵都會向文本緩沖中插入文本。大多數新用戶希望文本編輯器編輯程序中一 ......

    uj5u.com 2023-04-20 08:43:21 more
  • vim的常用命令

    Vim的6種基本模式 1. 普通模式在普通模式中,用的編輯器命令,比如移動游標,洗掉文本等等。這也是Vim啟動后的默認模式。這正好和許多新用戶期待的操作方式相反(大多數編輯器默認模式為插入模式)。 2. 插入模式在這個模式中,大多數按鍵都會向文本緩沖中插入文本。大多數新用戶希望文本編輯器編輯程序中一 ......

    uj5u.com 2023-04-20 08:42:36 more
  • docker學習

    ###Docker概述 真實專案部署環境可能非常復雜,傳統發布專案一個只需要一個jar包,運行環境需要單獨部署。而通過Docker可將jar包和相關環境(如jdk,redis,Hadoop...)等打包到docker鏡像里,將鏡像發布到Docker倉庫,部署時下載發布的鏡像,直接運行發布的鏡像即可。 ......

    uj5u.com 2023-04-19 09:26:53 more
  • 設定Windows主機的瀏覽器為wls2的默認瀏覽器

    這里以Chrome為例。 1. 準備作業 wsl是可以使用Windows主機上安裝的exe程式,出于安全考慮,默認情況下改功能是無法使用。要使用的話,終端需要以管理員權限啟動。 我這里以Windows Terminal為例,介紹如何默認使用管理員權限打開終端,具體操作如下圖所示: 2. 操作 wsl ......

    uj5u.com 2023-04-19 09:25:49 more
  • docker學習

    ###Docker概述 真實專案部署環境可能非常復雜,傳統發布專案一個只需要一個jar包,運行環境需要單獨部署。而通過Docker可將jar包和相關環境(如jdk,redis,Hadoop...)等打包到docker鏡像里,將鏡像發布到Docker倉庫,部署時下載發布的鏡像,直接運行發布的鏡像即可。 ......

    uj5u.com 2023-04-19 09:19:04 more
  • Linux學習筆記

    IP地址和主機名 IP地址 ifconfig可以用來查詢本機的IP地址,如果不能使用,可以通過install net-tools安裝。 Centos系統下ens33表示主網卡;inet后表示IP地址;lo表示本地回環網卡; 127.0.0.1表示代指本機;0.0.0.0可以用于代指本機,同時在放行設 ......

    uj5u.com 2023-04-18 06:52:01 more
  • 解決linux系統的kdump服務無法啟動的問題

    問題:專案麒麟系統服務器的kdump服務無法啟動,沒有相關日志無法定位問題。 1、查看服務狀態是關閉的,重啟系統也無法啟動 systemctl status kdump 2、修改grub引數,修改“crashkernel”為“512M(有的機器數值太大太小都會導致報錯,建議從128M開始試,或者加個 ......

    uj5u.com 2023-04-12 09:59:50 more
  • 解決linux系統的kdump服務無法啟動的問題

    問題:專案麒麟系統服務器的kdump服務無法啟動,沒有相關日志無法定位問題。 1、查看服務狀態是關閉的,重啟系統也無法啟動 systemctl status kdump 2、修改grub引數,修改“crashkernel”為“512M(有的機器數值太大太小都會導致報錯,建議從128M開始試,或者加個 ......

    uj5u.com 2023-04-12 09:59:01 more
  • 你是不是暴露了?

    作者:袁首京 原創文章,轉載時請保留此宣告,并給出原文連接。 如果您是計算機相關從業人員,那么應該經歷不止一次網路安全專項檢查了,你肯定是收到過資訊系統技術檢測報告,要求你加強風險監測,確保你提供的系統服務堅實可靠了。 沒檢測到問題還好,檢測到問題的話,有些處理起來還是挺麻煩的,尤其是線上正在運行的 ......

    uj5u.com 2023-04-05 16:52:56 more
  • 細節拉滿,80 張圖帶你一步一步推演 slab 記憶體池的設計與實作

    1. 前文回顧 在之前的幾篇記憶體管理系列文章中,筆者帶大家從宏觀角度完整地梳理了一遍 Linux 記憶體分配的整個鏈路,本文的主題依然是記憶體分配,這一次我們會從微觀的角度來探秘一下 Linux 內核中用于零散小記憶體塊分配的記憶體池 —— slab 分配器。 在本小節中,筆者還是按照以往的風格先帶大家簡單 ......

    uj5u.com 2023-04-05 16:44:11 more