路由器DHCP服務(wù)器分配給手機(jī)IP地址過程,光貓路由器PPPOE撥號建立連接過程,IP、VLAN報(bào)文分析
附全部wireshark抓包分析,如有疑問,歡迎評論區(qū)留言;
一、DHCP通信過程
DHCP通信過程,通過 bootp 過濾
DHCP服務(wù),獲取IP的四個(gè)過程
一、發(fā)現(xiàn),Discover向整個(gè)網(wǎng)絡(luò)廣播:IP信息-源 0.0.0.0 目標(biāo) 255.255.255.255(自己沒有合法IP,也不知道服務(wù)器IP)
二、提供,offer網(wǎng)絡(luò)上的DHCP服務(wù)器收到廣播后檢查自己的地址池是否有可用IP,如有就回答:
IP信息-192.168.1.1-- 192.168.1.100
三、選擇,request網(wǎng)絡(luò)上可能有多個(gè)DHCP服務(wù)器都會(huì)對Discover廣播回應(yīng),客戶機(jī)總是選擇最先回應(yīng)的那臺(tái)服務(wù)器分配的IP
IP信息-0.0.0.0 => 255.255.255.255 (分配的IP還不能使用,仍使用 0.0.0.0)
四、確認(rèn),ack
第一個(gè)回應(yīng)的DHCP服務(wù)器看到選擇廣播后IP信息-192.168.1.100 <= 192.168.1.1
二、PPPOE的交互過程
PPPOE(Point-to-Point Protocol Over Ethernet)基于以太網(wǎng)的點(diǎn)對點(diǎn)通訊協(xié)議
交互過程 ,PPPOE鏈接建立的過程包括PPPOE發(fā)現(xiàn)階段以及PPPOE會(huì)話階段;
1、發(fā)現(xiàn)階段是一個(gè)無狀態(tài)的階段,該階段只要是接入服務(wù)器,確定所要建立的PPP會(huì)話標(biāo)識符Session ID,同時(shí)獲得對方點(diǎn)到點(diǎn)的連接信息(通過pppoed過濾)
1.1 PADI(PPPoE Active Discovery Initiation):發(fā)現(xiàn)階段的第一步,用戶主機(jī)以廣播的方式發(fā)送PADI數(shù)據(jù)包,請求建立鏈路,code 為 0×09,會(huì)話ID 為0×0000;
1.2 PADO(PPPoE Active Discovery Offer):發(fā)現(xiàn)階段的第二步
設(shè)備收到服務(wù)范圍內(nèi)的PADI包后,發(fā)送PADO包響應(yīng)其請求,其code 為0×07,Session ID仍為0×0000;PADO包必須包含一個(gè)接入設(shè)備名稱類型AC-Name(netcore)的標(biāo)簽,以及一個(gè)或者多個(gè)服務(wù)名稱類型標(biāo)簽,表明可以向用戶主機(jī)提供的服務(wù)種類;
1.3 PADR (PPPoE Active Discovery Request) 用戶在可能收到的多個(gè)PADO包中選擇一個(gè)合適的接入設(shè)備,選擇的原則是根據(jù)PADO中接入設(shè)備名稱類型標(biāo)簽,服務(wù)名稱類型標(biāo)簽的內(nèi)容,然后向所選擇的設(shè)備發(fā)送PADR包,其code 字段為0×19,Session ID仍為0×0000,PADR包必須包含一個(gè)服務(wù)名稱類型標(biāo)簽,確定向接入設(shè)備請求的服務(wù)種類,當(dāng)一個(gè)用戶主機(jī)在確定時(shí)間沒有收到PADO,它會(huì)從發(fā)一個(gè)PADI,同時(shí)等待兩倍的時(shí)間,可能需要重復(fù)多次;
1.4 PADS (PPPoE Active Discovery Session-confirmation)
服務(wù)設(shè)備收到PADR包后準(zhǔn)備開始ppp會(huì)話 ,它發(fā)送一個(gè)pppoe有效發(fā)現(xiàn)會(huì)話確認(rèn)(PADS)包,其code字段為0×65,session ID 為接入設(shè)備所產(chǎn)生的唯一的pppoe會(huì)話標(biāo)識號碼
發(fā)現(xiàn)階段的任務(wù):1、尋找可用的服務(wù)器
2、得到session ID,開始ppp的建立過程;
2會(huì)話階段
2.1.1 協(xié)商階段 LCP(鏈路控制協(xié)議) 通過 ppp&&lcp 過濾
此階段主要是協(xié)商鏈路的一些參數(shù),如最大接收單元MRU、Magic Number,以及后續(xù)認(rèn)證時(shí)使用的協(xié)議等。LCP協(xié)商分為LCP Configuration Request和 LCP Configuration Ack
客戶端發(fā)送數(shù)據(jù)到服務(wù)端協(xié)商請求
可以看到,Session ID就是之前PPPOE發(fā)現(xiàn)階段獲得的那個(gè),這邊協(xié)商了MRU,并且提出認(rèn)證使用的Magic number。一般而言,MRU和MTU取值相同,PPPOE的最大MTU不能超過1492。
服務(wù)端到客戶端請求回應(yīng)給客戶端一個(gè) Magic Number數(shù)據(jù)
ACK 客戶端給服務(wù)端發(fā)送確認(rèn)。
ACK 確認(rèn) 服務(wù)端給客戶端 給出確認(rèn)
2.2 認(rèn)證階段 通過 ppp&&chap 過濾
會(huì)話雙方通過LCP協(xié)商好的認(rèn)證方法進(jìn)行認(rèn)證,如果認(rèn)證通過了,才可以進(jìn)行下面的網(wǎng)絡(luò)層的IPCP協(xié)商.認(rèn)證階段務(wù)器端將驗(yàn)證客戶端的合法性。最常見的兩種就是PAP和CHAP;
PAP認(rèn)證:發(fā)送的認(rèn)證信息是明文,可以通過抓包工具看到用戶名、密碼;
CHAP認(rèn)證:發(fā)送的認(rèn)證信息是密文,抓包工具無法解析出來真正的用戶名、密碼。
下面抓個(gè)CHAP認(rèn)證的包:
服務(wù)設(shè)備給一個(gè)響應(yīng)
2.2.1用戶端發(fā)送認(rèn)證數(shù)據(jù)到服務(wù)設(shè)備
2.2.2設(shè)備服務(wù)端給客戶端回應(yīng)成功消息
2.3 IPCP階段 通過 ppp&&ipcp 過濾
Configuration Request:(s->c) : 服務(wù)端給客戶端一個(gè)IP地址(網(wǎng)關(guān)地址)
Configuration Request:(c->s) : 客戶端告知服務(wù)器端 本機(jī)IP,主要DNS,次要DNS(地址都是0000)
Configuration Nak:(s->c) : 服務(wù)端表示拒絕,于是就給客戶端分配IP,主要DNS,次要DNS
Configuration Ack:(c->s) : 客戶端表示確認(rèn)一下,
Configuration Request:(c->s) : 客戶端告知服務(wù)器端 本機(jī)IP,主要DNS,次要DNS(server端分配的)
Configuration Ack:(c->s) : 服務(wù)端表示同意客戶端就可以使用分配的ip上網(wǎng)了.
2.3.1 Configuration Request:(s->c) : 服務(wù)端給客戶端一個(gè)IP地址(網(wǎng)關(guān)地址)
2.3.2 Configuration Request:(c->s) : 客戶端告知服務(wù)器端本機(jī)IP,主要DNS,次要DNS(地址都是0.0.0.0)
2.3.3Configuration Nak:(s->c) : 服務(wù)端表示拒絕,于是就給客戶端分配IP,主要DNS,次要DNS
2.3.4客戶端對服務(wù)端確認(rèn)
2.3.5客戶端告知服務(wù)器端 本機(jī)IP,主要DNS,次要DNS(server端分配的)
2.3.6Configuration Ack:(c->s) : 服務(wù)端表示同意客戶端就可以使用分配的ip上網(wǎng)了
注意:SessionID 用來確定一個(gè)會(huì)話, Identifier可以用來確定一組應(yīng)答(雙方的request中Identifier都是從1開始遞增的, Identifier最早出現(xiàn)在LCP協(xié)商的request中,比如說 A->B的request中Identifier為1,那么B->A的應(yīng)答中Identifier也為1)
三、IP報(bào)文
0100前四位二進(jìn)制轉(zhuǎn)16進(jìn)制為4,代表IPV4。
四、VLAN的報(bào)文