IP地址分配與釋放

IP 分配我們平時(shí)應(yīng)該接觸比較少。還記得在大學(xué)的時(shí)候,剛?cè)雽W(xué)第一件事就是趕緊交網(wǎng)費(fèi)。交網(wǎng)費(fèi)時(shí)會(huì)有一個(gè)步驟,網(wǎng)管會(huì)讓你提供 MAC 地址,然后把 IP 地址和 MAC 地址綁定,這也就是博主在隔壁宿舍無法通過網(wǎng)線上網(wǎng)的原因。

其實(shí),如果你有相關(guān)的知識(shí)積累,可以用命令行自己配置 IP 地址。當(dāng)然,能不能通信就看你的知識(shí)儲(chǔ)備量了。
除了命令行配置外,我們平時(shí)應(yīng)該對(duì)于 IP 分配應(yīng)該都是用的 "拿來主義"。無論是在學(xué)校還是在辦公室,都會(huì)有網(wǎng)絡(luò)管理員把分配好的 IP 給你,直接使用就可以了。但是有時(shí)候也會(huì)好奇,網(wǎng)管是怎么分配 IP 的呢?難不成通過命令行一個(gè)個(gè)配置?這時(shí)候就要用到動(dòng)態(tài)主機(jī)配置協(xié)議(DHCP)。
IP66在線查IP地址位置、IP應(yīng)用場(chǎng)景、IP風(fēng)險(xiǎn)畫像:https://www.ip66.net/?utm-source=LJ&utm-keyword=?1146

動(dòng)態(tài)主機(jī)配置協(xié)議
這個(gè)協(xié)議的工作原理是怎樣的呢?我們就拿一臺(tái)機(jī)器新加入一個(gè)網(wǎng)絡(luò)為例,來走一遍 DHCP 的工作流程。
當(dāng)一臺(tái)機(jī)器新加入一個(gè)網(wǎng)絡(luò)時(shí),肯定一臉懵逼,啥情況也不知道,只知道自己的 MAC 地址。沒人理你怎么辦?那不管三七二十一,先吼一聲,告訴所有人,我來了,有人嗎?這時(shí)候的溝通基本靠"吼"。這一步,我們稱為 DHCP Discover。
新來的機(jī)器使用 IP 地址 0.0.0.0 發(fā)送了一個(gè)廣播包,目的 IP 地址是 255.255.255.255。廣播包封裝在 UDP 里面,UDP 封裝在 BOOTP 里面。在這個(gè)廣播包里,新人大喊:我是新來的(Boot Request),我的 MAC 地址是 xxx,我還沒有 IP,誰能給我個(gè) IP 地址?格式就像下面這樣:

這時(shí)候,網(wǎng)絡(luò)里的 DHCP Server 就相當(dāng)于這個(gè)局域網(wǎng)的管理員。他知道來了一個(gè)"新人",需要給它分配一個(gè) IP 地址,這個(gè)過程就是 DHCP Offer。同時(shí),DHCP Server 保留為此機(jī)器提供的 IP 地址,從而不會(huì)再將相同的 IP 地址分配給其它的機(jī)器。而 DHCP Offer 的格式就像下圖,里面有給新人分配的地址。

DHCP Server 仍然使用廣播地址作為目的地址,因?yàn)?,此時(shí)請(qǐng)求分配的新人還沒有自己的 IP 地址。如果一個(gè)局域網(wǎng)中有多個(gè) DHCP Server,這臺(tái)新機(jī)器會(huì)收到多個(gè) DHCP Offer。
它會(huì)選擇其中一個(gè) DHCP Offer,一般是最先到達(dá)的那個(gè),并且會(huì)向網(wǎng)絡(luò)發(fā)送一個(gè) DHCP Request 廣播數(shù)據(jù)表,包中包含客戶端的 MAC 地址、接受分配的 IP 地址、提供此 IP 的 DHCP 服務(wù)器地址等,并告訴所有的 DHCP Server 它將接受哪一臺(tái)服務(wù)器提供的 IP 地址,告訴其他 DHCP 服務(wù)器撤銷它們提供的 IP 地址,以便提供給下一個(gè) IP 請(qǐng)求分配者。新人廣播包格式如下:

此時(shí),由于還沒有得到 DHCP Server 的最后確認(rèn),新機(jī)器仍然使用 0.0.0.0 為源 IP 地址、255.255.255.255 為目標(biāo)地址進(jìn)行廣播。
當(dāng) DHCP Server 接收到新機(jī)器的 DHCP Request 之后,會(huì)廣播返回給新機(jī)器一個(gè) DHCP ACK 消息包,表明已經(jīng)接受新機(jī)器的選擇,并將這一 IP 地址分配信息和其他配置信息都放入該廣播包,發(fā)給新機(jī)器。DHCP ACK 格式如下:

新機(jī)器收到 DHCP ACK 后,會(huì)檢測(cè)分配的 IP 地址是否能夠適應(yīng),如果不能使用,它就會(huì)給 DHCP Server 發(fā)出 DHCP Decline 消息,通知 DHCP Server 禁用這個(gè) IP 地址,然后新機(jī)器就開始新的地址申請(qǐng)過程。
在新機(jī)器使用 IP 租期超過 50% 時(shí),DHCP Client 會(huì)以單播形式向 DHCP Server 發(fā)送 DHCP Request 報(bào)文來續(xù)租 IP 地址。如果 DHCP Client 成功收到 DHCP Server 發(fā)送的 DHCP ACK 報(bào)文,則按相應(yīng)時(shí)間延長(zhǎng) IP 地址租期;如果沒有收到 DHCP Server 發(fā)送的 DHCP ACK 報(bào)文,則 DHCP Client 繼續(xù)使用這個(gè) IP 地址。
在新機(jī)器使用 IP 租期超過 87.5% 時(shí),DHCP Client 會(huì)以廣播形式向 DHCP Server 發(fā)送 DHCPRequest 報(bào)文來續(xù)租 IP 地址。如果 DHCP Client 成功收到 DHCP Server 發(fā)送的 DHCP ACK 報(bào)文,則按相應(yīng)時(shí)間延長(zhǎng) IP 地址租期;如果沒有收到 DHCP Server 發(fā)送的 DHCP ACK 報(bào)文,則 DHCP Client 繼續(xù)使用這個(gè)IP地址,直到 IP 地址使用租期到期時(shí),DHCP Client 才會(huì)向 DHCP Server 發(fā)送 DHCP Release 報(bào)文來釋放這個(gè) IP 地址,并開始新的 IP 地址申請(qǐng)過程。