手機從路由器獲取IP-路由器獲取手機號
路由器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。
四、VLAN的報文

