Application DHCP

BOOTP(bootstrap protocol)
在1985年定義在rfc951
用途:伺服端指派ip等資訊讓客戶端取得
BOOTP用於無磁碟主機(用BOOT ROM)連網用,可自動設定TCP/IP環境,但需取得client硬體位址
BOOTP與DHCP的封包格式極為相似,有的DHCP server也支援BOOTP protocol,也能夠回應BOOTP cilent的request
利用udp,客戶端送資料時用port67.伺服端送資料時用port68

IP只對應為靜態,且不支援lease time
當client提出IP的要求時過程如下:
1BOOTP server依照該client的MAC地址,在事前定義好的表格當中尋找符合的項目
2若找到符合的項目,則該項目當中對應的IP地址,將回傳給該用戶端電腦
3因bootp不支援lease time,所以發IP給client時假設lease time無限,也就是不回收cilent的IP 

…………………

DHCP(Dynamic Host Configuration Protocol)
bootp的繼起者
主要功能是讓一部機器能夠透過自己的廣播,向DHCP server取得有關ip,mask,default gateway,dns,wins等TCP/IP環境設定
伺服端:集中管理所有的IP網路設定資料,負責處理客戶端的DHCP要求
客戶端:使用從伺服器分配下來的IP環境資料
使用udp:客戶端送資料時用port67.伺服端送資料時用port68
ps:port67,68現在仍稱為bootp

優點
可自動分配ip位址等網路相關參數給主機
可幫主機自動更新網路相關設定
避免ip位置重覆設定的錯誤
提高ip位址的使用率 

IP分配方式
Automatic Allocation:第一次租到後便永遠使用
Dynamic Allocation:非永久的使用,lease time已到就停用,但可優先renew(延續)租約
Manual allocation:由管理者自行設定,依硬體位址固定分配IP位址

dhcp role
DHCP server:用來配發ip等網路資訊 
DHCP client:請求ip等網路資訊的主機 
DHCP Agent(或DHCP Proxy,dhcp relay agent):將client送來的dhcp request送到其他dhcp server,可處理跨網路問題

相關名詞 
DHCP scope:DHCP伺服器所能發放IP 的範圍
DHCP Reservation:DHCP 伺服器的保留IP
DHCP Options:DHCP 伺服器的額外設定
lease time:DHCP決定一個IP在使用多久後回收

DHCP運作
客戶端第一次登錄網路(無IP資料設定)
1.cleint送出dhcp discover broadcast
發出DHCPDISCOVER廣播封包(含MAC位址,XID編號),來源0.0.0.0目的255.255.255.255(次數:1,9,13,16秒,5分)
2.server送出dhcp offer broadcast
伺服端收到後,將可用的IP,網路相關設定,dhcp本身ip,租約期限,..等,放進DHCPOFFER廣播封包給client
ps:伺服器若無法提供此項服務,則將此項要求轉送到其他的DHCP伺服器
3.client送出dhcprequest broadcast
client選其中一個Dhcpoffer後,發送Dhcprequest廣播封包(描述用誰的dhcp設定)ARP廣播封包(ip重覆則發送Dhcpdiscover信息)
ps:採用廣播的原因是可以讓其他dhcp server知道用戶端電腦的選擇是什麼
4.server送出dhcpack or dhcpnack broadcast
伺服端收到後,若確認IP租約正式生效則向client發出DHCPACK回應,否則送dhcpnack
若client收到dhcpnack則會從步驟1開始重做
5.client送出dhcpdecline
如果client在所屬本地網段中發現所分配的ip已被其他client使用,就送DHCPDECLINE,然後從步驟1開始重做
6.client送出dhcprelease
client不再需要使用IP時,送出一個DHCPRELEASE訊息給伺服器釋放自己的ip

dhcp agent運作
1. DHCP client送出要求ip的packet給dhcp server時,會被dhcp relay agent攔截 
2. dhcp Relay agent將information放進此packet的option82 filed後,轉送給dhcp server處理
information包含switch自己的mac,client目前port,client目前vlan,…等
3. DHCP server收到後根據option82 field內的information分配給client適當的IP 

renew續約
客戶端送Dhcprequest,伺服端回DHCPACK
ps:退租用DHCPLEREASE
若ip使用中,伺服端回DHCPNACK(要求從DHCPDISCOVER開始)
ps:在win下使用ipconfig /release可釋放ip位置

DHCP封包格式
OP client:送給server為1反為2
HTYPE:硬體類別(Ethernet=1)
HLEN:硬體位址長度(Ethernet=6)
HOPS:需經router傳,每站加1,同網內為0
TRANSACTION ID:用DHCPREQUEST時產生的數值,以作DHCPREPLY時的依據
SECONDS:Client端啟動時間(秒)
FLAGS:16bits 開頭bit為1表以廣播傳給client
ciaddr:用於想繼續使用之前IP位址
yiaddr:給client的IP位址(在DHCPOFFER,DHCPACK封包內)
siaddr:給client網路開機的開機程式碼server位址(在DHCPOFFER、DHCPACK、DHCPNACK內)
giaddr:跨網用relay agent位址
chaddr:Client硬體位址
sname:Server名稱字串,以0x00結尾
file:給client的網路開機程式名,稍後以TFTP傳送
options:允許Vendor-Specific Area(廠商定議選項),長度可變可帶多選項,兼容BOOTP,格式為code,len,value

…………………… 

bootp和dhcp的比較

 bootpdhcp 
分配方式 manual manual,automatic,dynamic 
可設定組態IP address
Gateway address
Subnet mask
DNS server address 
IP address
Gateway address
Subnet mask
DNS server address
WINS,domain name,…等 
使用協定udp port 67,68udp port 67,68