目录

  • 一、DHCP协议学习
    • 1.1 定义
      • 1.1.1 使用DHCP的优点
    • 1.2 DHCP客户端
    • 1.3 DHCP服务器
    • 1.4 端口
    • 1.5 DHCP中继
    • 1.6 报文格式及其类型
    • 1.7 DHCP协议中的报文
  • 二、DHCP交互过程以及抓包分析
    • 2.1 接线准备
    • 2.2 DHCP连接抓包分析
      • 2.2.1 DHCP DISCOVER(搜索阶段)
      • 2.2.2 DHCP OFFER(提供阶段)
      • 2.2.3 DHCP REQUEST(选择阶段)
      • 2.2.4 DHCP ACK(确认阶段)
      • 2.2.5 DHCP RELEASE(释放)
    • 2.3 地址获取状态
  • 三、PPPoE协议
    • 3.1 定义
    • 3.2 PPPoE数据包封装
    • 3.3 PPPoE建立流程
      • 3.3.1 PADI(PPPoE Active Discovery Initiation)
      • 3.3.2 PADO(PPPoE Active Discovery Offer)
      • 3.3.3 PADR(PPPoE Active Discovery Request)
      • 3.3.4 PADS(PPPoE Active Discovery Session-confirmation)
      • 3.3.5 PADT(PPPoE Active Discovery Terminate)
    • 3.4 PPP会话阶段(PPPoES:PPPoE Session)
      • 3.4.1 LCP协商阶段(LCP:Link Control Protocol)
      • 3.4.2 认证阶段(PPP Authentication:PAP/CHAP)
      • 3.4.3 NCP协商阶段(NCP:Network Control Protocol)
      • 3.4.4 会话维持(Session Keep-alive)
    • 3.5、PPP协议与PPPOE协议有什么不同?

一、DHCP协议学习

1.1 定义

DHCP(动态主机配置协议):是一个局域网的网络协议。指的是由服务器控制一段IP地址范围,客户机登录服务器时就可以自动获得服务器分配的IP地址和子网掩码。默认情况下,DHCP作为Windows Server的一个服务组件不会被系统自动安装,还需要管理员手动安装并进行必要的配置。

1.1.1 使用DHCP的优点

  1. 自动化配置:DHCP 可以自动为计算机、手机、平板等设备分配 IP 地址、子网掩码、网关和 DNS 服务器等网络参数,避免了手动配置的繁琐和出错。

  2. 管理方便:DHCP 服务器可以为大量的设备分配 IP 地址,同时也可以轻松地管理这些地址的使用情况。在需要更改网络参数时,管理员只需要更改 DHCP 服务器的配置即可,而无需逐个修改每个设备的网络参数。

  3. 防止 IP 地址冲突:使用 DHCP 可以避免因手动分配 IP 地址而导致的地址冲突问题,DHCP 服务器会自动检测已分配的 IP 地址是否已被使用,避免了因地址冲突而导致的网络故障。

  4. 管理 IP 地址池:DHCP 服务器可以管理 IP 地址池,确保每个设备都有一个可用的 IP 地址。DHCP 服务器可以为不同的子网分配不同的 IP 地址池,避免了 IP 地址不足或浪费的问题。

  5. 网络安全性:DHCP 可以通过 MAC 地址绑定和 IP 地址租用时间等方式提高网络安全性。通过 MAC 地址绑定,可以限制只有指定的设备才能获得 IP 地址,从而防止未授权的设备接入网络。通过 IP 地址租用时间,可以定期刷新 IP 地址,从而避免未经授权的设备长时间占用 IP 地址。

1.2 DHCP客户端

通常为网络中的PC、打印机等终端设备,使用从DHCP服务器分配下来的IP信息,包括IP地址、DNS、子网掩码、默认网关等。

1.3 DHCP服务器

所有的IP网络设定信息都由DHCP服务器集中管理,并处理客户端的DHCP请求。
DHCP服务器为客户端分配IP地址有三种形式:
自动分配方式(Automatic Allocation),DHCP服务器为主机指定一个永久性的IP地址,一旦DHCP客户端第一次成功从DHCP服务器端租用到IP地址后,就可以永久性的使用该地址。
动态分配方式(Dynamic Allocation),DHCP服务器给主机指定一个具有时间限制的IP地址,时间到期或主机明确表示放弃该地址时,该地址可以被其他主机使用。
手工分配方式(Manual Allocation),客户端的IP地址是由网络管理员指定的,DHCP服务器只是将指定的IP地址告诉客户端主机。

1.4 端口

DHCP采用UDP作为传输协议,客户端发送消息到DHCP服务器的的 67号端口,服务器返回消息给客户端的 68号端口

1.5 DHCP中继

默认情况下,路由器隔离广播包,不会将收到的广播包从一个子网发送到另一个子网。当DHCP服务器和客户端不在同一个子网时,充当客户端默认网关的路由器将广播包发送到DHCP服务器所在的子网,这一功能就称为DHCP中继
DHCP中继代理,就是在DHCP服务器和客户端之间转发DHCP数据包。当DHCP客户端与服务器不在同一个子网上,就必须有DHCP中继代理来转发DHCP请求和应答消息。DHCP中继代理的数据转发,与通常路由转发是不同的,通常的路由转发相对来说是透明传输的,设备一般不会修改IP包内容。而DHCP中继代理接收到DHCP消息后,重新生成一个DHCP消息,然后转发出去
DHCP中继主机必须自己具有路由能力,且能将双方的数据报互传对方。如果不使用中继,也可以在每一个网络中安装DHCP服务器,但这样的话,一来设备成本会增加,而且管理上面也比较分散。当然,如果在大型的网络中,这样的均衡式架构还是可取的。

1.6 报文格式及其类型


1.7 DHCP协议中的报文

1、DHCP DISCOVER:客户端开始DHCP过程的第一个报文,是请求IP地址和其它配置参数的广播报文。
2、DHCP OFFER:服务器对DHCP DISCOVER报文的响应,是包含有效IP地址及配置的单播(或广播)报文。
3、DHCP REQUEST:客户端对DHCP OFFER报文的响应,表示接受相关配置。客户端续延IP地址租期时也会发出该报文。
4、DHCP DECLINE:当客户端发现服务器分配的IP地址无法使用(如IP地址冲突时),将发出此报文,通知服务器禁止使用该IP地址。
5、DHCP ACK :服务器对客户端的DHCP REQUEST报文的确认响应报文。客户端收到此报文后,才真正获得了IP地址和相关的配置信息。
6、DHCP NAK:服务器对客户端的DHCP REQUEST报文的拒绝响应报文。客户端收到此报文后,会重新开始新的DHCP过程。
7、DHCP RELEASE:客户端主动释放服务器分配的IP地址。当服务器收到此报文后,则回收该IP地址,并可以将其分配给其它的客户端。
8、DHCP INFORM:客户端获得IP地址后,发送此报文请求获取服务器的其它一些网络配置信息,如DNS等。

二、DHCP交互过程以及抓包分析

2.1 接线准备

抓取测试路由相关数据,LAN口直连电脑是为了直接对路由器进行控制。

2.2 DHCP连接抓包分析

2.2.1 DHCP DISCOVER(搜索阶段)

此数据包由DHCP Client发送,采用广播的形式通知网络内的DHCP服务器自己需要获得一个IP地址。
当DHCP客户端第一次登录网络的时候,计算机发现本机上没有任何IP地址设定,将以广播方式发送DHCP discover发现信息来寻找DHCP服务器,即向255.255.255.255发送特定的广播信息。网络上每一台安装了TCP/IP协议的主机都会接收这个广播信息,但只有DHCP服务器才会做出响应。

2.2.2 DHCP OFFER(提供阶段)

在网络中接收到DHCP discover发现信息的DHCP服务器就会做出响应,它从尚未分配的IP地址池中挑选一个分配给DHCP客户机,向DHCP客户机发送一个包含分配的IP地址和其他设置的DHCP offer提供信息。因为此时客户端还没有IP,所以返回信息也是以广播的方式返回的。

2.2.3 DHCP REQUEST(选择阶段)

DHCP客户端接受到DHCP offer提供信息之后,选择第一个接收到的提供信息,然后以广播的方式回答一个DHCP request请求信息,该信息包含向它所选定的DHCP服务器请求IP地址的内容。

2.2.4 DHCP ACK(确认阶段)

当DHCP服务器收到DHCP客户端回答的DHCP request请求信息之后,便向DHCP客户端发送一个包含它所提供的IP地址和其他设置的DHCP ack确认信息,确认租约,并指定租约时长。告诉DHCP客户端可以使用它提供的IP地址。然后,DHCP客户机便将其TCP/IP协议与网卡绑定,另外,除了DHCP客户机选中的DHCP服务器外,其他的DHCP服务器将收回曾经提供的IP地址。

2.2.5 DHCP RELEASE(释放)

2.3 地址获取状态

三、PPPoE协议

接线如上,路由器配置如下:

3.1 定义

PPPoE是以太网点对点协议的首字母缩写(Point to Point Protocol over Ethernet)。PPPoE是从另一个称为PPP的旧协议派生的网络协议,即点对点协议。
PPPoE在数据链路层依旧是采用以太网格式的数据帧进行封装,但是在以太网封装完毕后,会进行PPPoE的数据头封装,PPPoE包括PPPoE头和PPPoE数据段两个部分,而PPPoE数据段部分中又包含了PPP帧和正常的数据。
注意:这里的PPP帧并不是一个完整的PPP帧,它只包含了PPP帧的Protocol字段和正常的数据。其他的字段(如FLAG、FCS等)在PPPoE建立过程中并不需要。

3.2 PPPoE数据包封装



Ver: 版本号, 4bit, PPPoE规范的本版本为0x01
Type: 类型, 4bit, PPPoE规范的本版本应设置为0x01
Code: 代码字段、8bit, 根据两阶段中各种数据包的不同功能而值不同
Session_ID: 长度是16比特。是一个网络字节序的无符号值。其值在后面Discovery数据包中定义。
Length: 长度是16比特。该值是PPPoE的Payload长度。它不包括以太网头部和PPPoE头部的长度。
Payload: PPPoE的Payload,包含0个或多个Tag。

3.3 PPPoE建立流程

PPPoE建立过程可以分为Discovery阶段和PPP会话阶段。Discovery阶段是一个无状态的阶段,该阶段主要是选择接入服务器,确定所要建立的PPP会话标识符Session ID,同时获得对方点到点的连接信息;PPP会话阶段执行标准的PPP过程。

3.3.1 PADI(PPPoE Active Discovery Initiation)

主机广播发起分组,以太头中的目的地址是以太广播地址FF:FF:FF:FF:FF:FF,PPPOE头中的CODE为0x09,SESSION_ID值必须为0,负载部分必须只包含一个Service-Name类型的TAG表示请求的服务类型,另外可以包含其他TAG,整个PPPOE包不能超过1484字节,这样省出的16字节可以由ADSL中继设备添加中继TAG。

3.3.2 PADO(PPPoE Active Discovery Offer)

由AC发出,用来回应客户机的PADI包,以太头中的目的地址是客户机的MAC地址,PPPOE头中的CODE为0x07,SESSION_ID值必须为0,负载部分必须包含一个AC-Name类型的TAG,用来指示本AC的名称,一个在PADI包中指定Service-Name的TAG,另外可以包含其他Service-Name的TAG。如果AC不对该客户机提供服务,AC就不回应PADO包。

3.3.3 PADR(PPPoE Active Discovery Request)

由客户机发出,因为可能会有多个AC对客户机发出的PADI包回应了PADO包,客户机从回应的PADO包中选择一个AC发送PADR包,以太头中的目的地址是该AC的MAC地址,PPPOE头中的CODE为0x19,SESSION_ID值必须为0,负载部分必须只包含一个Service-Name类型的TAG表示请求的服务类型,另外可以包含其他TAG。

3.3.4 PADS(PPPoE Active Discovery Session-confirmation)

由AC发出,收到客户机的PADR包后,AC将产生一个SEESSION_ID值用来标志本次PPP会话,以PADR包方式发送给客户机。以太头中的目的地址是客户机的MAC地址,PPPOE头中的CODE为0x65,SESSION_ID值必须为所生成的那个SESSION_ID,负载部分必须只包含一个Service-Name类型的TAG,表示该服务类型被AC接受,另外可以包含其他TAG。如果AC不接受PADR中的Server-Name,PADS中则包含一个Service-Name-Error类型的TAG,这时SESSION_ID设置为0。

3.3.5 PADT(PPPoE Active Discovery Terminate)

PPPOE主动发现停止包表示PPPOE会话过程的结束,AC和客户机都可以主动发出。以太头中的目的地址是对方的MAC地址,PPPOE头中的CODE为0xa7,SESSION_ID值必须为PPPOE会话过程的SESSION_ID,不需要TAG。

3.4 PPP会话阶段(PPPoES:PPPoE Session)

PPP会话的建立,需要两端的设备都发送LCP数据包来配置和测试数据通信链路。
用户主机与接入集中器根据在发现阶段所协商的PPP会话连接参数进行PPP会话。一旦PPPoE会话开始,PPP数据就可以以任何其他的PPP封装形式发送。所有的以太网帧都是单播的。PPPoE会话的SESSION-ID一定不能改变,并且必须是发现阶段分配的值。

在PPP会话阶段,PPP包被封装在PPPOE以太帧中,以太包目的地址都是单一的,以太协议为0x8864,PPPOE头的CODE必须为0,SESSION_ID必须一直为发现阶段协商出的SEESION_ID值,PPPOE的负载是整个PPP包,PPP包前是两字节的PPP协议ID值。
由于PPPOE头是6字节,PPP协议ID号两个字节,一共要占用8个字节,而以太网的MTU值为1500,所以上层PPP负载数据不能超过1492字节,所以PPP协商时协商的最大接收单元值不能超过1492字节,也就是相当于在PPPOE环境下的MTU是1492字节。


下面PPP部分参考如下链接博文
参考链接:pppoe抓包流程和拨号流程

3.4.1 LCP协商阶段(LCP:Link Control Protocol)

LCP的Request主机和AC都要给对方发送,LCP协商阶段完成最大传输单元(MTU),是否进行认证和采用何种认证方式(Authentication Type)的协商。
(1)LCP协议数据报文分类
链路配置报文:用来建立和配置一条链路,主要包括Configure-Request、Configure-Ack、Configure-Nak和Configure-Reject报文;
链路维护报文:用来管理和调试链路,主要包括Code-Reject、Protocol-Reject、Echo-Request、Echo-Reply和Discard-Request报文;
链路终止报文:用来终止一条链路,主要包括Terminate-Request和Terminate-Reply报文。
(2)LCP协商过程
LCP协商的过程如下:协商双方互相发送一个LCP Config-Request报文,确认收到的Config-Request报文中的协商选项,根据这些选项的支持与接受情况,做出适当的回应。若两端都回应了Config-ACK,则标志LCP链路建立成功,否则会继续发送Request报文,直到对端回应了ACK报文为止。

说明:
(1)Config-ACK:若完全支持对端的LCP选项,则回应Config-ACK报文,报文中必须完全协带对端Request报文中的选项。
(2)Config-NAK:若支持对端的协商选项,但不认可该项协商的内容,则回应Config-NAK报文,在Config-NAK的选项中填上自己期望的内容,如:对端MRU值为1500,而自己期望MRU值为1492,则在Config-NAK报文中埴上自己的期望值1492。
(3)Config-Reject:若不能支持对端的协商选项,则回应Config-Reject报文,报文中带上不能支持的选项,如Windows拨号器会协商CBCP(被叫回呼),而ME60不支持CBCP功能,则回将此选项拒绝掉。

3.4.2 认证阶段(PPP Authentication:PAP/CHAP)

1、 PAP(Password Authentication Protocol,口令认证协议)认证
PAP为两次握手协议,它通过用户名及口令来对用户进行验证。PAP验证过程如下:
当两端链路可相互传输数据时,被验证方发送本端的用户名及口令到验证方,验证方根据本端的用户表(或Radius服务器)查看是否有此用户,口令是否正确。如正确则会给对端发送Authenticate-ACK报文,通告对端已被允许进入下一阶段协商;否则发送NAK报文,通告对端验证失败。此时,并不会直接将链路关闭。只有当验证不过次数达到一定值(缺省为10)时,才会关闭链路。
PAP的特点是在网络上以明文的方式传递用户名及口令,如在传输过程中被截获,便有可能对网络安全造成极大的威胁。因此,它适用于对网络安全要求相对较低的环境。

2、 CHAP(Challenge Handshake Authentication Protocol,质询握手认证协议)认证
CHAP为三次握手协议。只在网络上传输用户名,并不传输用户口令,因此它的安全性要比PAP高。CHAP的验证过程为:
首先由验证方(Server)向被验证方(Client)发送一些随机产生的报文,并同时将本端的主机名附带上一起发送给被验证方。被验证方接到对端对本端的验证请求(Challenge)时,便根据此报文中验证方的主机名和本端的用户表查找用户口令字,如找到用户表中与验证方主机名相同的用户,便利用报文ID、此用户的密钥用Md5算法生成应答(Response),随后将应答和自己的主机名送回。验证方接到此应答后,用报文ID、本方保留的口令字(密钥)和随机报文用Md5算法得出结果,与被验证方应答比较,根据比较结果返回相应的结果(ACK or NAK)
(1)接受认证端发送Challenge
(2)申请认证端发验证请求报文
(3)接受认证端回应认证接受报文
经过以上三次报文交互后,CHAP认证完成。

3.4.3 NCP协商阶段(NCP:Network Control Protocol)

NCP有很多种,如IPCP、BCP、IPv6CP,最为常用的是IPCP(Internet Protocol Control Protocol)协议。NCP的主要功能是协商PPP报文的网络层参数,如IP地址,DNS Server IP地址,WINS Server IP地址等。PPPoE用户主要通过IPCP来获取访问网络的IP地址或IP地址段。
NCP流程与LCP流程类似,用户与ME设备之间互相发送NCP Config-Request报文并且互相回应NCP Config-Ack报文后,标志NCP己协商完,用户上线成功,可以正常访问网络了。
IPCP的协商过程是基于PPP状态机进行协商的。经过双方协商,通过配置请求、配置确认、配置否认等包文交换配置信息,最终由initial (或closed)状态变为Opened状态。IPCP状态变为Opened的条件必须是发送方和接收方都发送和接收过确认包文。
IPCP协商过程中,协商包文可包含多个选项,即参数。各个选项的拒绝或否认都不能影响IPCP的UP,IPCP可以无选项协商,无选项协商也同样能够UP。选项有IP Address、网关、掩码等,其中IP Address是最重要的一个选项,有些厂家的实现必须这个选项得到确认,大多数厂家的实现允许这个选项为空。
NCP的基本协商流程见下图:

用户和接入设备对IP服务阶段的一些要求进行多次协商,以决定双方都能够接收的约定。
如:IP业务阶段使用的IP压缩协议等。双方的协议是通过报文中包含的Option项进行协商的,每一个Option都是一个需要协商的问题。
最后双方都需要对方答复Configure_Ack的同意报文。

3.4.4 会话维持(Session Keep-alive)

设备主动发送Echo Request进行PPPoE心跳保活,若3次未得到服务器的响应,则设备主动释放地址。发LCP Echo Request 的时候,魔术字字段要和之前通信的Configure_Request使用的魔术字字段保持一致。
有些设备或终端不支持主动发送 Echo-Request 报文, 只能支持回应Echo-Reply报文。


3.5、PPP协议与PPPOE协议有什么不同?

(1)作用不同
1、PPP协议 用来通过拨号或专线方式建立点对点连接发送数据,使其成为各种主机、网桥和路由器之间简单连接的一种共通的解决方案;
2、pppoe协议 实现出传统以太网不能提供的身份验证、加密以及压缩等功能,也可用于缆线调制解调器(cable modem)和数字用户线路(DSL)等以以太网协议向用户提供接入服务的协议体系。
(2)用途不同
1、PPP协议具有动态分配IP地址的能力,允许在连接时刻协商IP地址;支持多种网络协议,比如TCP/IP、NetBEUI、NWLINK等;用于多种类型的物理介质上,包括串口线、电话线、移动电话和光纤(例如SDH),PPP也用于Internet接入。

DHCP和PPPoE协议以及抓包分析相关推荐

  1. 互联网协议IP抓包分析 -- wireshark

    互联网协议IP抓包分析 – wireshark 互联网协议IP是Internet Protocol的缩写,中文缩写是网协 互联网协议也就是为计算机相互连接进行通信而设计的协议. IP地址协议报文首部 ...

  2. 实战录 | 基于openflow协议的抓包分析

    <实战录>导语 云端卫士<实战录>栏目定期会向粉丝朋友们分享一些在开发运维中的经验和技巧,希望对于关注我们的朋友有所裨益.本期分享人为云端卫士安全SDN工程师宋飞虎,将带来基于 ...

  3. ICMP协议及其抓包分析

    ICMP协议及其抓包分析 Internet消息控制协议(ICMP)指定了多种消息类型,其目的就是管理网络. ICMP的消息分为错误信息.请求信息和响应消息. 一般ICMP数据包格式 ICMP数据包类型 ...

  4. 抓包红色_抓包三部曲 WebSocket 协议原理抓包分析

    这篇文章通过抓包分析 WebSocket 协议的细节,学习一下 WebSocket 执行流程. 1.WebSocket 流程说明 (1)客户端和服务器之间完成三次握手建立 TCP 连接(TLS/SSL ...

  5. 接口协议之抓包分析 TCP 协议

    TCP 协议是在传输层中,一种面向连接的.可靠的.基于字节流的传输层通信协议. 环境准备 对接口测试工具进行分类,可以如下几类: 网络嗅探工具:tcpdump,wireshark 代理工具:fiddl ...

  6. iOS 之 Bonjour 协议简单抓包分析

    引子 因在学习iOS编程之bonjour编程的过程中,对bonjour产生了一些些的好奇,因此就查阅了各种资料以及自己抓包分析该协议. 注:文章作为个人学习记录,不一定准确,如有错误请多多指教,共同进 ...

  7. tcpdump抓包ftp协议_tcpdump抓包分析详解

    简介 用简单的话来定义tcpdump,就是:dump the traffic on a network,根据使用者的定义对网络上的数据包进行截获的包分析工具. tcpdump可以将网络中传送的数据包的 ...

  8. java实现FTP协议:wireshark抓包解析

    本节我们看看ftp协议的数据包格式,同时使用代码加以实现.首先我们现在机器上安装ftp服务器,我在自己的机器上安装了QuickFTP Server,它是我随便找来的一款Mac ftp服务器,如下图所示 ...

  9. PXE+VMware主机模式+KickStart脚本 自动安装ESXi 并试用WireShark抓包分析其中的协议TFTP,DHCP

    1 安装 1.1 实验环境: Windows 10 (主机) VMWare workstation 15  (运行于主机上) Tiny PXE Server 1.0.0.21   (官网地址,下载地址 ...

最新文章

  1. .NET面向上下文、AOP架构模式(实现)
  2. C#多线程编程实战1.1创建线程
  3. 长沙医学院计算机系怎么样,长沙医学院有哪些专业及什么专业好
  4. docker hub 国内镜像_Mac设置docker国内镜像源
  5. 大数据谋定农业发展路径-丰收节贸易会:全球十大经典案例
  6. javaScript第六天(2)
  7. 它是世界上最轻的固体!1000℃下不会熔化,上过火星,还能进你家......
  8. 前端学习(1682):前端系列实战课程之让蛇改变方向
  9. 一键安装lnmp脚本(包括软件版本)
  10. RocketMQ单机版本安装(windows环境)
  11. 阶段1 语言基础+高级_1-3-Java语言高级_08-JDK8新特性_第1节 常用函数接口_12_常用的函数式接口_Predicate接口...
  12. 打出租辆来回机场好贵
  13. 网络攻防实战研究 漏洞利用与提权读书笔记二
  14. 机器学习-西瓜书-模型评估
  15. 枚举类型是什么意思,怎么用?
  16. 转转后台 最新转转源码
  17. win7升级win10方法
  18. HeidiSQL安装和使用教程
  19. java 鼠标悬停显示文字_IntelliJ在鼠标悬停时显示JavaDocs工具提示
  20. 【2019.07-2020.06】这一年的心路历程

热门文章

  1. 【C语言】字符串(main函数参数)
  2. 远程安装Linux操作系统
  3. electron中app.quit和app.exit有什么不同
  4. APP 开发中的费用一般用在哪里?
  5. python爬虫(常见爬取失败问题)
  6. 冬日娜刻薄提问雷哭史冬鹏 无厘头堪比韩乔生
  7. 教我网页设计中的“切图”
  8. 白盒测试方法之判定覆盖测试/分支覆盖测试
  9. 一款php后门 phpspy的情况
  10. Opencv 以指定格式保存图片