eap报文格式

802.1x协议用于无线和有线局域网接入认证,EAP作为其扩展认证协议,不直接提供认证,而是规范信息交换。EAP报文包括认证请求、身份请求、MD5挑战等步骤,封装在以太帧中。EAP框架允许扩展以适应不同认证需求,如锐捷认证对EAP的定制化应用。
上世纪90年代后期,为了解决无线局域网(WLAN)接入控制的问题(包括安全问题,信息资源盗用的问题),IEEE提出了802.1x协议族,采用基于端口的控制方法来实现接入端认证。后来,由于802.1x的成功,有线接入的局域网也开始广泛使用该协议来进行接入认证和计费。

    EAP最早是用于点到点传输的扩展认证协议,它本身并不提供认证功能,而只是提供了一种客户端同认证服务器之间的信息交换协议。认证服务器(通常为AP或者是接入交换机)本身的认证功能是通过后台的RADIUS服务器来完成。
    
    目前,使用802.1x认证的系统,几乎都是使用EAP来做信息交换。

    EAP认证的过程包括:
    1. 认证请求端(supplicant)发起认证请求(有的交换机设备也支持自动对接入端发起身份查询)
    2. 认证服务器向认证请求端发出CODE为IDENTITY的身份请求 
    3. 认证请求端响应请求,并发送用户名
    4. 认证服务器向认证请求端发出CODE为MD5CHALLENGE的认证请求 
    5. 认证请求端响应请求,并发送加密后的认证密码(通常采用MD5加密)
    6. RADIUS服务器认证后,通过认证服务器转发成功或者失败的报文,如果是成功报文,认证服务器会同时打开认证请求端端口.

    在基于802.1X的有线接入网络中,EAP报文直接封装在数据链路层上(以太帧),我们可以定义数据帧如下:

typedef struct _EAP_FRAME{

    unsigned char  desmac[6];  // 目的MAC(会话发起时是多播地址)
    unsigned char  soumac[6];  // 本地MAC
    unsigned short type;       // 类型(EAP, 0x888E)
    unsigned char  version;    // 协议版本(1)
    unsigned char  ptype;      // EAP包类型
    unsigned short length;     // EAP包长度
    unsigned char  body[256];  // EAP包数据

} EAP_FRAME, * PEAP_FRAME;

其中,以太包总长度不应超过1500字节.

    对EAP包数据,我们可以进一步定义如下

typedef struct _EAP_PACKET{

    unsigned char  code;         // CODE域
    unsigned char  identifier;   // IDENTIFIER域
    unsigned short length;       // 长度
    unsigned char  type;         // 类型(IDENTITY,NOTIFICATION,
                                 // NAK,MD5-CHANLLENGE,ONE-TIME)
    unsigned char  data[256];    // 数据域

}EAP_PACKET, * PEAP_PACKET;

    原始的EAP协议,data域常常没有传递太多的数据,因此,我们可以在EAP的框架上作进一步扩展,实现我们自己的接入认证协议,并做到同802.1x完全兼容.

    实际上锐捷认证就是采用了自己扩展的EAP协议.是的,你看了标题可能会觉得EAP跟自己没什么关系,真实的情况是川大的很多人每天要上网,需要做的第一件事情就是向交换机发送ptype为1的EAP报文.
 
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值