1、IEEE 802.1x定义了基于端口的网络接入控制协议,需要注意的是该协议仅适用于接入设备与接入端口间点到点的连接方式。为了在点到点链路上建立通信,在链路建立阶段PPP链路的每一端都必须首先发送LCP数据包来对该数据链路进行配置。在链路已经建立起来后,在进入网络层协议之前,PPP提供一个可选的认证阶段。而EAPOL就是PPP的一个可扩展的认证协议。
2、下面是一个典型的PPP协议的帧格式:
Flag | Address | Control Protocol | Information
当PPP帧中的protocol域表明协议类型为C227(PPP EAP)时,在PPP数据链路层帧的Information域中封装且仅封装PPP EAP数据包,此时表明将应用PPP的扩展认证协议EAP。这个时候这个封装着EAP报文的information域就担负起了下一步认证的全部任务,下一步的EAP认证都将通过它来进行。
3、一个典型的EAP认证的过程分为:request、response、success或者failure阶段,每 一个阶段的报文传送都由Information域所携带的EAP报文来承担。
EAP报文的格式为:
|Code|Identifier|Length|Data|
1)Code域为一个字节,表示了EAP数据包的类型,EAP的Code的值指定和意义如下:
Code=1————→Request
Code=2 ————→Response
Code=3 ————→Success
Code=4 ————→Failure
2)Indentifier域为一个字节,辅助进行request和response的匹配————每一个request都应该有一个 response相对应,这样的一个Indentifier域就建立了这样的一个对应关系————相同的Indentifier相匹配。
3)Length域为两个字节,表明了EAP数据包的长度,包括Code,Identifier,Length以及Data等各域。超出Length域范围的字节应该视为数据链路层填充(padding),在接收时应该被忽略掉。
4)Data域为0个或者多个字节, Data域的格式由Code的值来决定。
当code域为1或者2的时候,报文格式为
|Identifier|Length|Type|Type Date|
Code Type域的说明如下:
Type域总共分为6个值域,其中头3种Type被认为特殊情形的Type,其余的Type定义了认证的交换流量。Nak类型仅对Response数据包有效,不允许把它放在Request中发送。
Type=1————→Identifier
Type=2————→Notification
Type=3————→Nak(Response Only)
Type=4————→MD5-Challenge
Type=5————→One-Time Password (OTP)
Type=4————→Generic Token Card
1
.EAP协议
802.1x
协议在实现整个认证的过程中,其三个关键部分(客户端、认证系统、认证服务器)之间是通过不同的通信协议进行交互的,其中认证系统和认证服务器之间是EAP报文。
EAP
帧结构如下表所示:
字段
|
字节
|
Code
|
1
|
Identifier
|
2
|
Length
|
3-4
|
Data
|
5-N
|
EAP
帧格式中各字段含义如下:
字段
|
占用字节数
|
描述
|
Code
|
1
个字节
|
表示EAP帧四种类型:1.Request;2.Response
3
.Success;4.Failure
|
Identifier
|
1
个字节
|
用于匹配Request和Response。Identifier的值和系统端口一起单独标识一个认证过程
|
Length
|
2
个字节
|
表示EAP帧的总长度
|
Data
|
0
或更多字节
|
表示EAP数据
|
其中Code的取值如下:
1
: Request
2
: Response
3
: Success
4
: Failure
2
.EAPoL协议
802.1x
协议定义了一种报文封装格式,这种报文称为EAPoL(EAP over LANs局域网上的扩展认证协议)报文,主要用于在客户端和认证系统之间传送EAP协议报文,以允许EAP协议报文在LAN上传送。
标准EAPoL帧结构如下表所示:
字段
| 字节 |
PAE Ethernet Type |
1-2
|
Protocol Version |
3
|
Packet Type |
4
|
Packet Body Length |
5-6
|
Packet Body |
7-N
|
EAPoL
帧格式中各字段含义如下:
字段
|
占用字节
|
描述
|
PAE Ethernet Type |
2
个字节
|
表示协议类型,802.1x分配的协议类型为888E
|
Protocol Version |
1
个字节
|
表示EAPOL 帧的发送方所支持的协议版本号。本规范使用值为0000 0001
|
Packet Type |
1
个字节
|
表示传送的帧类型,如下几种帧类型:
a) EAP-Packet. 值为 0000 0000
b
)EAPOL-Start.值为0000 0001
b) EAPOL-Logoff. 值为0000 0010 |
Packet Body Length |
2
个字节
|
表示Packet Body的长度
|
Packet Body |
0/
多字节
|
如果Packet Type为EAP-Packet,取相应值。对于其他帧类型,该值为空。
|
EAPOL
帧在二层传送时,必须要有目标MAC地址,当客户端和认证系统彼此之间不知道发送的目标时,其目标MAC地址使用由802.1x协议分配的组播地址01-80-c2-00-00-03。