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