DHCP與PXE IP是怎麼來的,又是怎麼沒的?

2021-09-12 23:19:53 字數 2641 閱讀 5788

如何配置 ip 位址?

那如何配置呢?如果有相關的知識和積累,你可以用命令列自己配置乙個位址。可以使用 ifconfig,也

可以使用 ip addr。設定好了以後,用這兩個命令,將網絡卡 up 一下,就可以開始工作了。

使用 net-tools:

$ sudo ifconfig eth1 10.0.0.1/24

$ sudo ifconfig eth1 up

使用 iproute2:

$ sudo ip addr add 10.0.0.1/24 dev eth1

$ sudo ip link set up eth1

你可能會問了,自己配置這個自由度太大了吧,我是不是配置什麼都可以?如果配置乙個和誰都不搭邊

的位址呢?例如,旁邊的機器都是 192.168.1.x,我非得配置乙個 16.158.23.6,會出現什麼現象呢?

不會出現任何現象,就是包發不出去唄。為什麼發不出去呢?我來舉例說明。

192.168.1.6 就在你這台機器的旁邊,甚至是在同乙個交換機上,而你把機器的位址設為了

16.158.23.6。在這台機器上,你企圖去 ping192.168.1.6,你覺得只要將包發出去,同乙個交換機的另

一台機器馬上就能收到,對不對?

可是 linux 系統不是這樣的,它沒你想得那麼智慧型。你用肉眼看到那台機器就在旁邊,它則需要根據自

己的邏輯進行處理。

還記得我們在第二節說過的原則嗎?只要是在網路上跑的包,都是完整的,可以有下層沒上層,絕對不

可能有上層沒下層。

所以,你看著它有自己的源 ip 位址 16.158.23.6,也有目標 ip 位址 192.168.1.6,但是包發不出去,這

是因為 mac 層還沒填。

自己的 mac 位址自己知道,這個容易。但是目標 mac 填什麼呢?是不是填 192.168.1.6 這台機器的

mac 位址呢?

當然不是。linux 首先會判斷,要去的這個位址和我是乙個網段的嗎,或者和我的乙個網絡卡是同一網段

的嗎?只有是乙個網段的,它才會傳送 arp 請求,獲取 mac 位址。如果發現不是呢?

linux 預設的邏輯是,如果這是乙個跨網段的呼叫,它便不會直接將包傳送到網路上,而是企圖將包發

送到閘道器。

如果你配置了閘道器的話,linux 會獲取閘道器的 mac 位址,然後將包發出去。對於 192.168.1.6 這台機器

來講,雖然路過它家門的這個包,目標 ip 是它,但是無奈 mac 位址不是它的,所以它的網絡卡是不會把

包收進去的。

如果沒有配置閘道器呢?那包壓根就發不出去。

如果將閘道器配置為 192.168.1.6 呢?不可能,linux 不會讓你配置成功的,因為閘道器要和當前的網路至

少乙個網絡卡是同乙個網段的,怎麼可能 16.158.23.6 的閘道器是 192.168.1.6 呢?

所以,當你需要手動配置一台機器的網路 ip 時,一定要好好問問你的網路管理員。如果在機房裡面,要

去網路管理員那裡申請,讓他給你分配一段正確的 ip 位址。當然,真正配置的時候,一定不是直接用命

令配置的,而是放在乙個配置檔案裡面。不同系統的配置檔案格式不同,但是無非就是 cidr、子網掩

碼、廣播位址和閘道器位址。

動態主機配置協議(dhcp)

原來配置 ip 有這麼多門道兒啊。你可能會問了,配置了 ip 之後一般不能變的,配置乙個服務端的機器

還可以,但是如果是客戶端的機器呢?我抱著一台膝上型電腦在公司裡走來走去,或者白天來晚上走,

每次使用都要配置 ip 位址,那可怎麼辦?還有人事、行政等非技術人員,如果公司所有的電腦都需要 it

人員配置,肯定忙不過來啊。

因此,我們需要有乙個自動配置的協議,也就是稱動態主機配置協議(dynamic host configuration

protocol),簡稱dhcp。

有了這個協議,網路管理員就輕鬆多了。他只需要配置一段共享的 ip 位址。每一台新接入的機器都通過

dhcp 協議,來這個共享的 ip 位址裡申請,然後自動配置好就可以了。等人走了,或者用完了,還回

去,這樣其他的機器也能用。

所以說,如果是資料中心裡面的伺服器,ip 一旦配置好,基本不會變,這就相當於買房自己裝修。

dhcp 的方式就相當於租房。你不用裝修,都是幫你配置好的。你暫時用一下,用完退租就可以了。

解析 dhcp 的工作方式

當一台機器新加入乙個網路的時候,肯定一臉懵,啥情況都不知道,只知道自己的 mac 位址。怎麼

辦?先吼一句,我來啦,有人嗎?這時候的溝通基本靠「吼」。這一步,我們稱為dhcp discover。

新來的機器使用 ip 位址 0.0.0.0 傳送了乙個廣播包,目的 ip 位址為 255.255.255.255。廣播包封裝在

udp 裡面,udp 封裝在 bootp 裡面。其實 dhcp 是 bootp 的增強版,但是如果你去抓包的話,很

可能看到的名稱還是 bootp 協議。

在這個廣播包裡面,新人大聲喊:我是新來的(boot request),我的 mac 位址是這個,我還沒有

ip,誰能給租給我個 ip 位址!

**dhcp 協議主要是用來給客戶租用 ip 位址,和房產中介很像,要商談、簽約、續租,廣播還不

能「搶單」;

dhcp 協議能給客戶推薦「裝修隊」pxe,能夠安裝作業系統,這個在雲計算領域大有用處**

效能是怎麼來的

效能是怎麼來的 網際網路的效能可以模擬測試嗎?怎樣保證效能?一 架構 系統架構 分散物理部署 前端層 負載均衡 靜態化 cdn 邏輯層 非同步 服務化 資料層 讀寫分離 快取 訊息佇列 不同資料不同資料引擎 資料同步 二 開發 dba 核心交易表 資料型別拆分 資料列拆分 資料行拆分 索引 開發le...

效能是怎麼來的

效能是怎麼來的 網際網路的效能能夠模擬測試嗎?如何保證效能?一 架構 系統架構 分散物理部署 前端層 負載均衡 靜態化 cdn 邏輯層 非同步 服務化 資料層 讀寫分離 快取 訊息佇列 不同資料不同資料引擎 資料同步 二 開發 dba 核心交易表 資料型別拆分 資料列拆分 資料行拆分 索引 開發le...

promise是怎麼來的?

一 promise是如何產生的 1.promise並不是乙個新的功能,它是乙個類,它只是對 非同步程式設計的 進行整合,它是解決非同步 層層巢狀的這種關係 讓你的 看起來更簡潔。2.在 es6 中 promise是乙個類 建構函式 使用它需要 new 例項。注意 在 es5 裡 類和建構函式是乙個意...