DHCP原理及報文格式
DHCP原理及報文格式
DHCP(Dynamic Host Configuration Protocol,動態(tài)主機配置協(xié)議)是IETF為實現(xiàn)IP的自動配置而設(shè)計的協(xié)議,它可以為客戶機自動分配IP地址、子網(wǎng)掩碼以及缺省網(wǎng)關(guān)、DNS服務(wù)器的IP地址等TCP/IP參數(shù)。了解DHCP工作過程可以幫助我們排除有關(guān)DHCP服務(wù)遇到的問題。DHCP 協(xié)議是基于UDP層(這也就是說在snort檢測過程中,只能看UDP的包)之上的應(yīng)用,dhcp使用udp攜帶報文,udp封裝在ip數(shù)據(jù)包中發(fā)送。我們先來看下dhcp報文格式
OP:若是client送給server的封包,設(shè)為1,反向為2;
Htype:硬件類別,ethernet為1;
Hlen:硬件長度,ethernet為6;
Hops:若數(shù)據(jù)包需經(jīng)過router傳送,每站加1,若在同一網(wǎng)內(nèi),為0;
Transaction ID:事務(wù)ID,是個隨機數(shù),用于客戶和服務(wù)器之間匹配請求和相應(yīng)消息;
Seconds:由用戶指定的時間,指開始地址獲取和更新進行后的時間;
Flags:從0-15bits,最左1bit為1時表示server將以廣播方式傳送封包給 client,其余尚未使用;
Ciaddr:用戶IP地址;
Yiaddr:客戶IP地址;
Siaddr:用于bootstrap過程中的IP地址;
Giaddr:轉(zhuǎn)發(fā)代理(網(wǎng)關(guān))IP地址;
Chaddr:client的硬件地址;
Sname:可選server的名稱,以0x00結(jié)尾;
File:啟動文件名;
Options:,廠商標識,可選的參數(shù)字段
下面我們主要說下客戶機從dhcpserver獲取ip的過程,它處于6中狀態(tài)分別是初始狀態(tài),選擇狀態(tài),請求狀態(tài),綁定狀態(tài),重新獲取狀態(tài),重新綁定狀態(tài)。我們就結(jié)合我下面畫的這張圖好好說下
1.主機啟動,dhcp處于INI狀態(tài)為了獲取ip地址,DHCP客戶機初始化TCP/IP,通過UDP端口67向網(wǎng)絡(luò)中發(fā)送一個DHCPDISCOVER廣播包,請求租用IP地址。該廣播包中的源IP地址為0.0.0.0,目標IP地址為255.255.255.255;包中還包含客戶機的MAC地址和計算機名,本地所有的dhcpserver會收到這個報文,數(shù)據(jù)包中的目標端口設(shè)為BOOTP67端口。這時dhcp會處于select狀態(tài)。
2.處于select狀態(tài)的主機會接受dhcpserver發(fā)來的dhcpoffer報文,每個報文中會包含為客戶機配置的信息以及server為客戶機提供的租用ip,一般主機會受到零個或者多個offer報文(一般主機會響應(yīng)第一個offer報文),并與server協(xié)商相關(guān)事宜,為此主機會發(fā)送一個dhcpquest報文,并進入request狀態(tài)。
3.dhcpserver會給客戶機一個ack的確認信息,這時一個dhcp獲取過程結(jié)束。主機進入BIND穩(wěn)定狀態(tài)。
4.假如主機不需要ip地址或者需要換個ip,這時主機會發(fā)送一個dhcprelease報文向dhcpserver,這時主機重新處于初始狀態(tài)。
5.一般服務(wù)器給客戶機的ip地址都有租期,時間長短不等,而dhcp主機會有3個計時器,當擇期過半50%,這時主機會發(fā)送一個 dhcprequest報文要求續(xù)租進入renew狀態(tài),serverdhcp會響應(yīng)這個報文發(fā)送ack確認信息,這時dhcp會重新進入BOND狀態(tài)。
6.假如dhcpserver沒有響應(yīng)主機的請求,等租期到了87.5%這時主機會重新發(fā)送dhcprequest報文要求續(xù)租,主機進入 rebind狀態(tài),假如這時候dhcpserver不高興(ip地址不夠用)發(fā)送來一個否確認信息,這時主機會重新進入初始狀態(tài)再次按照1——4步驟重新申請ip。假如收到ack老大的確認續(xù)租成功,說明這個ip我們還可以繼續(xù)使用。沒有響應(yīng),我們的主機只有等到我們ip租期耗盡,重新進入初始狀態(tài)重新獲取。
報文類型:
1)DHCPDISCOVER(0x01),此為Client開始DHCP過程的第一個報文
2)DHCPOFFER(0x02),此為Server對DHCPDISCOVER報文的響應(yīng)
3)DHCPREQUEST(0x03),此報文是Client開始DHCP過程中對server的DHCPOFFER報文的回應(yīng),或者是Client續(xù)延IP地址租期時發(fā)出的報文
4)DHCPDECLINE(0x04),當Client發(fā)現(xiàn)Server分配給它的IP地址無法使用,如IP地址沖突時,將發(fā)出此報文,通知Server禁止使用IP地址
5)DHCPACK(0x05),Server對Client的DHCPREQUEST報文的確認響應(yīng)報文,Client收到此報文后,才真正獲得了IP地址和相關(guān)的配置信息。
6)DHCPNAK(0x06),Server對Client的DHCPREQUEST報文的拒絕響應(yīng)報文,Client收到此報文后,一般會重新開始新的DHCP過程。
7)DHCPRELEASE(0x07),Client主動釋放server分配給它的IP地址的報文,當Server收到此報文后,就可以回收這個IP地址,能夠分配給其他的Client。
8)DHCPINFORM(0x08),Client已經(jīng)獲得了IP地址,發(fā)送此報文,只是為了從DHCP SERVER處獲取其他的一些網(wǎng)絡(luò)配置信息,如route ip,DNS Ip等,這種報文的應(yīng)用非常少見。
如:運行IPCONFIG/RELEASE后,PC會發(fā)出釋放IP的報文,DHCP Message Type是7,他的作用是主動釋放server分配給它的IP地址的報文,Server收到此報文后,就可以回收這個IP地址,能夠分配給其他的Client。
如果一臺客戶機未從該DHCP服務(wù)器獲取過地址,或者它獲得的地址已過期,那么它將需要經(jīng)過全部四個步驟才能得到一個IP地址。
原文地址:https://www.2cto.com/net/201303/197467.html