1.DHCP in IPv4
DHCP(Dynamic Host Configuration Protocol),動態主機配置協議,分配IP地址和其他網絡參數;
DHCP三種角色:DHCP Client、DHCP Relay和DHCP Server;
DHCP端口:Client UDP68---->Server,Server UDP67---->Client;
DHCP8種報文:DHCP DISCOVER、DHCP OFFER、DHCP REQUEST、DHCP ACK、DHCP NAK、DHCP DECLINE、DHCP RELEASE、DHCP INFORM
OP(OP code):1字節,OP=1客戶端請求報文,OP=2服務器響應報文;
htype(Hardware Type):1字節,硬件類型
hlen(Hardware Length):1字節,硬件地址長度,以太網為6,48位;
hops:1字節,表示DHCP報文經過的DHCP Relay的數目,hops≤16;
xid:4字節,DHCP客戶端選取的隨機數,使DHCP服務器的回復與DHCP客戶端的報文相關聯
secs(seconds):2字節,表示客戶端從開始獲取地址或地址續租更新后所用的時間,單位是秒。
flags:2字節,16bit,只有最高位有意義;0表示客戶端請求服務器以單播形式發送響應報文;1表示客戶端請求服務器以廣播形式發送響應報文;
ciaddr(client ip address):客戶端IP;
yiaddr(your ip address):服務器分配給客戶端IP;
siaddr (server ip address):DHCP客戶端獲得啟動配置信息的服務器的IP地址;
giaddr(gateway ip address):表示第一個DHCP中繼的IP地址;
chaddr (client hardware address):表示客戶端的MAC地址;
sname (server host name):表示客戶端獲取配置信息的服務器名字;
file (file name):表示客戶端需要獲取的啟動配置文件名;
options:表示DHCP的選項字段,最多為312字節;1字節Type+1字節Length+Value(由Length決定)
options53決定了DHCP報文了類型,很多option代碼代表了不同的意思;
1.1客戶端首次接入網絡DHCP無中繼工作過程
第一階段:Client廣播Discover---->同網段所有設備或Relay;
第二階段:Server會比較一下Client希望的租期和自己配置的租期,提供一個時間短的租期;
第三階段:如收到多個Offer,只接第一個,Request(Server標識符、客戶端IP地址)廣播通知所有Server;
第四階段:Client收到ACK,發送免費ARP確認是否地址沖突;
如沖突Client發送Decline---->Server,之前過程重來;
如Server收到Request,發現無法提供這個IP了,Server發送NAK---->Client,之前過程重來;
1.2客戶端首次接入網絡DHCP有中繼工作過程
過程與無中繼基本相同,不同點如下:
第一階段:收到Discover,檢查hops,大於16則丟棄;giaddr=0,填入接收Discover接口的IP,否則不修改;修改DHCP目的IP為下一跳Relay或DHCP Server;
第二階段:提供giaddr同網段IP地址,向giaddr標識的Relay單播發送Offer,Relay檢查廣播標志位如置1,則廣播Offer,如未置1,則單播發給Client;
第三、四階段同上;
1.3客戶端重用曾用過的IP地址DHCP工作過程
Client 發送Request(Option50填入之前用過的IP)---->Server;
Server通過查看自身MAC和IP對應記錄決定是否給Client續用,如果可以---->ACK,否則沉默,直到客戶端重新發送Discover報文;
1.4客戶端更新租期DHCP工作過程
Client 租期50%單播發送Request---->Server,Server 發送ACK---->Client,則續租成功;
Client 租期87.5%如還未收到ACK,廣播發送Request---->Server,Server 發送ACK---->Client,則續租成功;
Client 租期100%如還未收到ACK,或者在以上過程種收到NAK,Client重新發送DHCP DISCOVER報文請求新的IP地址;
Client 租期到期前不想繼續使用IP,DHCP RELEASE---->Server; Client 發送DHCP INFORM---->請求更新配置信息;
2.DHCPv6
類似IPv4中DHCP,基於UDP,IPv6不使用廣播,使用組播報文;
分配類型:
1、手動配置
2、無狀態自動地址分配(利用NDP)
3、DHCPv6有狀態自動配置
4、DHCPv6無狀態自動配置(利用NDP獲取地址,利用DHCPv6獲取除地址以外的其他參數)
報文:
msy-type報文類型,總共13種;1Solicit2Advertise3Request4Confirm5Renew6Rebind7Reply8Release9Decline10Reconfigure11Information-Request12Relay-Forward13Relay-Reply
transaction-ID:DHCPv6交互ID,這是個隨機值,要保證服務器響應和客戶端請求兩者交互ID一致,如果服務器主動發起的報文ID為0;
options:DHCPv6的選項字段;
2.1無狀態自動地址分配
無狀態自動配置:即插即用,可以配置多個地址進行網絡無縫遷移,利用RS、RA報文實現。
無狀態自動配置,沒有DHCP的情況下,設備自己生成IPv6地址
路由器發現功能用來發現與本地鏈路相連的設備,並獲取與地址自動配置相關的前綴和其他配置參數。
在IPv6中,IPv6地址可以支持無狀態的自動配置,即主機通過某種機制獲取網絡前綴信息,然后主機自己生成地址的接口標識部分。路由器發現功能是IPv6地址自動配置功能的基礎,主要通過以下兩種報文實現:
- 路由器請求RS(Router Solicitation)報文:Type=133,主機接入網絡后希望盡快獲取網絡前綴進行通信,此時主機立刻發送RS報文。(地址解析和DAD中用的那個叫NS,Type=135)
- 路由器通告RA(Router Advertisement)報文:Type=134,每台設備為了讓二層網絡上的主機和設備知道自己的存在,定時都會組播發送RA報文,RA報文中會帶有網絡前綴信息,及其他一些標志位信息。(地址解析和DAD中用的那個叫NA,Type=136)
IPv6主機無狀態自動配置過程:
- 根據接口標識產生鏈路本地地址。
- 發出鄰居請求,進行重復地址檢測。
- 如地址沖突,則停止自動配置,需要手工配置。
- 如不沖突,鏈路本地地址生效,節點具備本地鏈路通信能力。
- 主機會發送RS報文(或接收到設備定期發送的RA報文)。
- 根據RA報文中的前綴信息和接口標識得到IPv6地址。
2.2DHCPv6有狀態地址分配
2.2.1DHCPv6四步交互(多用於存在多個DHCPv6服務器的情況下)
利用Solicit報文來定位DHCPv6服務器,收到Advertise報文后根據優先級確定使用哪個DHCPv6服務器,接着通過Request/Reply報文交互完成地址申請和分配。
2.2.2DHCPv6兩步交互

客戶端發送Solicit報文中攜帶Rapid Commit選項,DHCPv6支持快速分配就直接回復Reply,如果不支持按照四部交互執行。
2.3DHCPv6無狀態自動配置
IPv6地址獲得過程如2.1描述
客戶端以組播方式發送Information-Request報文,該報文中攜帶Option Request選項,指定DHCPv6客戶端需要從DHCPv6服務器獲取的配置參數。DHCPv6服務器單播發送Reply報文,將網絡配置參數返回給DHCPv6客戶端。
2.4DHCPv6 PD
這個全稱叫DHCPv6前綴代理DHCPv6 PD(Prefix Delegation)是一種前綴分配機制,通俗的說是分配網段的。
過程類似DHCPv6的有狀態地址分配,過程分四步:
1、DHCPv6 PD Client 發送Solicit報文,請求;
2、DHCPv6 PD Server發送Advertise報文確認可以提供前綴;
3、根據收到的多個Advertise報文選優先級高的,並向該服務器發送DHCPv6 request;
4、服務器回復Reply報文將地址前綴分配給客戶端使用。
如果客戶端攜帶了Rapid Commit過程同DHCPv6兩步交互
2.5DHCPv6中繼
1、客戶端先向FF02::1:2(組播地址)的請求報文;
2、中繼將收到的報文封裝在Relay-Forward報文的中繼消息選項(Relay Message Option)中,並將Relay-Forward報文發送給DHCPv6服務器或下一跳中繼;
3、如果客戶端和中繼不在同一鏈路,則重新構造一個新的Relay-Forward報文,並將Relay-Forward報文發送給DHCPv6服務器或下一跳中繼;
4、Server從客戶端收到Relay-Forward后解析出DHCPv6客戶端請求,將應答封裝到Relay-reply的中繼消息選項中,並將Relay-reply發給中繼;
5、DHCPv6中繼從Relay-Reply報文中解析出DHCPv6服務器的應答,轉發給DHCPv6客戶端。
2.6DHCPv6地址續租
DHCPv6服務器為DHCPv6客戶端分配的地址是有租約的,租約由生命期(包括地址的首選生命期和有效生命期構成)和續租時間點(IA的T1、T2)構成。有效生命周期前,續租,否則失效。
客戶端在T1時刻發送Renew(T1推薦為0.5生命期)
服務器回復Reply則可以續約,如果未收到回復,則如下圖
客戶端在T2時刻,向服務器組播發送Rebind(T2推薦0.8生命期),收到回復繼續使用。
否則,在生命周期到達后,地址失效不能再用