路由器DHCP服务器分配给手机IP地址过程,光猫路由器PPPOE拨号建立连接过程,IP、VLAN报文分析

附全部wireshark抓包分析,如有疑问,欢迎评论区留言;

一、DHCP通信过程

DHCP通信过程,通过 bootp 过滤

路由器连接光猫动态获取ip(手机从路由器获取IP)(1)

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会话阶段;

路由器连接光猫动态获取ip(手机从路由器获取IP)(2)

路由器连接光猫动态获取ip(手机从路由器获取IP)(3)

1、发现阶段是一个无状态的阶段,该阶段只要是接入服务器,确定所要建立的PPP会话标识符Session ID,同时获得对方点到点的连接信息(通过pppoed过滤)

1.1 PADI(PPPoE Active Discovery Initiation):发现阶段的第一步,用户主机以广播的方式发送PADI数据包,请求建立链路,code 为 0×09,会话ID 为0×0000;

路由器连接光猫动态获取ip(手机从路由器获取IP)(4)

1.2 PADO(PPPoE Active Discovery Offer):发现阶段的第二步

设备收到服务范围内的PADI包后,发送PADO包响应其请求,其code 为0×07,Session ID仍为0×0000;PADO包必须包含一个接入设备名称类型AC-Name(netcore)的标签,以及一个或者多个服务名称类型标签,表明可以向用户主机提供的服务种类;

路由器连接光猫动态获取ip(手机从路由器获取IP)(5)

1.3 PADR (PPPoE Active Discovery Request) 用户在可能收到的多个PADO包中选择一个合适的接入设备,选择的原则是根据PADO中接入设备名称类型标签,服务名称类型标签的内容,然后向所选择的设备发送PADR包,其code 字段为0×19,Session ID仍为0×0000,PADR包必须包含一个服务名称类型标签,确定向接入设备请求的服务种类,当一个用户主机在确定时间没有收到PADO,它会从发一个PADI,同时等待两倍的时间,可能需要重复多次;

路由器连接光猫动态获取ip(手机从路由器获取IP)(6)

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

路由器连接光猫动态获取ip(手机从路由器获取IP)(7)

客户端发送数据到服务端协商请求

路由器连接光猫动态获取ip(手机从路由器获取IP)(8)

可以看到,Session ID就是之前PPPOE发现阶段获得的那个,这边协商了MRU,并且提出认证使用的Magic number。一般而言,MRU和MTU取值相同,PPPOE的最大MTU不能超过1492。

服务端到客户端请求回应给客户端一个 Magic Number数据

路由器连接光猫动态获取ip(手机从路由器获取IP)(9)

ACK 客户端给服务端发送确认。

路由器连接光猫动态获取ip(手机从路由器获取IP)(10)

ACK 确认 服务端给客户端 给出确认

路由器连接光猫动态获取ip(手机从路由器获取IP)(11)

2.2 认证阶段 通过 ppp&&chap 过滤

会话双方通过LCP协商好的认证方法进行认证,如果认证通过了,才可以进行下面的网络层的IPCP协商.认证阶段务器端将验证客户端的合法性。最常见的两种就是PAP和CHAP;

PAP认证:发送的认证信息是明文,可以通过抓包工具看到用户名、密码;

CHAP认证:发送的认证信息是密文,抓包工具无法解析出来真正的用户名、密码。

下面抓个CHAP认证的包:

路由器连接光猫动态获取ip(手机从路由器获取IP)(12)

服务设备给一个响应

路由器连接光猫动态获取ip(手机从路由器获取IP)(13)

2.2.1用户端发送认证数据到服务设备

路由器连接光猫动态获取ip(手机从路由器获取IP)(14)

2.2.2设备服务端给客户端回应成功消息

路由器连接光猫动态获取ip(手机从路由器获取IP)(15)

2.3 IPCP阶段 通过 ppp&&ipcp 过滤

路由器连接光猫动态获取ip(手机从路由器获取IP)(16)

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地址(网关地址)

路由器连接光猫动态获取ip(手机从路由器获取IP)(17)

2.3.2 Configuration Request:(c->s) : 客户端告知服务器端本机IP,主要DNS,次要DNS(地址都是0.0.0.0)

路由器连接光猫动态获取ip(手机从路由器获取IP)(18)

2.3.3Configuration Nak:(s->c) : 服务端表示拒绝,于是就给客户端分配IP,主要DNS,次要DNS

路由器连接光猫动态获取ip(手机从路由器获取IP)(19)

2.3.4客户端对服务端确认

路由器连接光猫动态获取ip(手机从路由器获取IP)(20)

2.3.5客户端告知服务器端 本机IP,主要DNS,次要DNS(server端分配的)

路由器连接光猫动态获取ip(手机从路由器获取IP)(21)

2.3.6Configuration Ack:(c->s) : 服务端表示同意客户端就可以使用分配的ip上网了

路由器连接光猫动态获取ip(手机从路由器获取IP)(22)

路由器连接光猫动态获取ip(手机从路由器获取IP)(23)

注意:SessionID 用来确定一个会话, Identifier可以用来确定一组应答(双方的request中Identifier都是从1开始递增的, Identifier最早出现在LCP协商的request中,比如说 A->B的request中Identifier为1,那么B->A的应答中Identifier也为1)

三、IP报文

路由器连接光猫动态获取ip(手机从路由器获取IP)(24)

0100前四位二进制转16进制为4,代表IPV4。

路由器连接光猫动态获取ip(手机从路由器获取IP)(25)

四、VLAN的报文

路由器连接光猫动态获取ip(手机从路由器获取IP)(26)

路由器连接光猫动态获取ip(手机从路由器获取IP)(27)

,