大部分人對於DHCP協定可能不陌生,但對於DHCP的認知都還是著重在IPv4的版本,而IPv6的版本有什麼不同呢?本文會針對DHCP協定在IPv6的部分多加介紹。而考慮到某些人可能對於DHCP協定的細節以及IPv6的部分不太了解,因此也會從這些方向多加介紹。
簡單來說,Inside與Outside就是用來反映出電腦實際所在的位置,若是內部網路就是Inside,如果是位於網際網路則是Outside。而Local和Global則是指所使用的IP位址是公有IP位址還是私有IP位址,若是公有IP位址就是Global,若使用私有IP位址則屬於Local。
DHCP協定與NAT網路環境
一般來說,DHCP協定都會搭配NAT網路環境一起使用。從這兩個用途很明顯就可以看出:DHCP協定用於管理可運用的IP位址,而NAT則是用來將已經註冊的IP位址轉換到私有的IP位址。
以一般家庭或是企業為例,ISP業者都只會給予一個(通常是家庭)或是非常少數(例如企業)的公有(Public)IP位址使用量,但是家庭或企業的網路環境裡,為了避免讓上網設備數量因為公用IP位址數量而受到限制,所以使用DHCP協定讓路由器動態分配內部私有IP位址給內部網路的設備,而同時也透過NAT方式對應私有IP位址和公有IP位址,以便於對外聯繫通訊,這種方式可一定程度地提升網路安全性。
DHCP協定詳細運作過程
DHCP協定之所以好用,在於能夠把指派IP位址以及各種相關設定的過程自動化,這種優點使得在網路環境中新增或移除上網設備(手機、平板或是電腦等等)時變得容易許多。
一旦有新的上網設備需要取得新的IP位址,這些上網設備會發送廣播封包(Broadcast)給DHCP伺服器,當然在同一個網路內的其他所有設備也都會收到一模一樣的廣播封包,差異只在於其他上網設備並不會針對這樣的廣播封包進行相對應的處理,但是DHCP伺服器會。
DHCP伺服器收到這樣的廣播封包後,會把以下這些資訊指派回去給發送廣播封包的設備,甚至於很多其他的設定等等:
- 可用的IP位址(包含可使用的時間)
- 預設閘道(Default Gateway)位址
- Domain Name(網域名稱)
- Name Server(名稱伺服器)
- Time Server
- 子網路遮罩(Subnet Mask)
通常這樣的廣播需求會在很早的時候就發送,因為以比較好的情況來說,會希望在用戶端透過IP層協定來啟動任何網路連線之前就先把IP相關資訊與設定準備好。而當用戶端再也不需要此IP位址時(例如關機或是以任何情況離開當前網路),用戶端就會把IP位址還給DHCP伺服器,以便於給其他用戶端所使用。
也許有眼尖的讀者發現了一件事情:「當用戶端還沒有取得IP位址之前,代表用戶端還沒有IP可以上網,那DHCP伺服器是如何事先與用戶端連線並溝通呢?」重點在於DHCP伺服器要發派的資料所屬範圍是網路七層中的IP層,因此代表IP層以下的協定必須事先準備好,這也是DHCP伺服器如何與用戶端溝通的方式,使用IP層以下各層的協定。
DHCP Relay Agent
到目前為止,聽起來都十分有道理。但是這樣的方式在大型的網路環境中要真正運行還是有困難,總不能讓用戶端發送廣播封包給整個大型網路的所有其他用戶端吧?
另外,也很難要求大型網路的所有用戶端都能夠在IP層以下的協定真正全部連結(因為一般都會分很多小型網路)?在這樣的情況之下,會使用DHCP Relay Agent。在大型網路環境之中,會有很多小型網路,每一個小型網路會使用一個或是多個DHCP Relay Agent(s)。
這些DHCP Relay Agents的用途在於接收由用戶端發送的廣播封包,並直接把需求轉給DHCP伺服器,接著DHCP伺服器會把要回傳的資料丟給DHCP Relay Agents,並且DHCP Relay Agents協助傳回給所負責的小型網路的用戶端。因此,DHCP Relay Agents有點像是各個小型網路的DHCP需求代理人。
DHCP伺服器分配IP位址方式
依照環境或是實作方式的不同,DHCP伺服器可能會用「動態分配」、「靜態分配」、「自動分配」等不同的方式來分配(Allocate)IP位址等資訊,以來介紹這三種不同的分配方式。
動態分配方式
在動態分配方式的情況下,網路管理人員會在DHCP伺服器上設定好一個IP位址範圍以及IP位址的使用期限,以便於DHCP伺服器分配IP位址。而DHCP伺服器可以將沒有使用的IP位址收回,好讓其他用戶端使用。
靜態分配方式
在靜態分配方式的情況下,DHCP伺服器會根據已經定義好的MAC位址與IP位址的對應表來分配,而這個對應表格是手動輸入的。只有擁有MAC位址被對應到的用戶端才能夠取得相對應的IP位址。必須注意的是,部分DHCP伺服器並不支援靜態分配方式。
自動分配方式
在自動分配方式的情況下,DHCP伺服器一樣可以針對事先已經定義好的IP位址範圍來分配IP位址給用戶端。但差別在於IP位址的使用是沒有期限,而且採用這種方式時,DHCP伺服器會另外存在一個表格,用來記錄每個用戶端曾經使用過哪些IP位址,以便於不分配重複的IP位址給同樣的用戶端。
從DHCP伺服器取得設定過程
用戶端從DHCP伺服器端取得IP位址以及相關網路設定的過程,可分為四個主要的步驟:
1. Discovery(尋找或是請求)
2. Offer(提供)
3. Request(選擇需求)
4. Acknowledge(最後確認)
在詳細介紹之前,必須知道DHCP所使用的埠(Port)在DHCP伺服器端是UDP 67,而用戶端是UDP 68。
以上四個步驟是有先後順序的,第一步驟和第三步驟都是由用戶端發送到DHCP端,第二步驟和第四步驟則是由DHCP伺服器端發送到用戶端。因此,第一步驟與第三步驟為廣播封包(Broadcast),第二步驟和第四步驟則為單一對象的封包(Unicast)。
第一步驟:Discovery(用戶端→DHCP伺服器)
這個步驟最主要的目的在於尋求DHCP伺服器位置。如同上面所提的,使用廣播封包來完成,當然也可以在各個網路之間設定DHCP Relay Agent,以達到跨網路尋求的步驟。
第二步驟:Offer(DHCP伺服器→用戶端)
一旦DHCP伺服器收到Discovery之後,DHCP伺服器會回傳一個MAC位址、IP位址資料,以及相關網路設定資料,例如子網路遮罩、時效、預設閘道位址、DHCP伺服器位址等等。