首页 > 编程知识 正文

如何用canoe解析报文,8583报文解析

时间:2023-05-04 17:14:32 阅读:118433 作者:496

RADIUS是远程认证拨号用户服务的简称。 RADIUS原本是以拨号用户的认证和计费为目的的。 此后,经过多次改进,形成了通用的认证计费协议,主要完成了在网络访问设备和认证服务器之间托管认证、授权、计费和配置信息。 RADIUS是C/S结构协议,客户端最初是NAS服务器,但现在运行RADIUS客户端软件的所有计算机都可以成为RADIUS的客户端。

RADIUS基本原理:用户访问NAS,NAS使用访问请求分组向RADIUS服务器提交用户信息、用户名、密码等相关信息。 在此,用户密码用MD5来加密,双方使用共享密钥,该密钥不通过网络传播。 RADIUS服务验证用户名和密码的有效性,并在必要时提交Challenge,以向NAS返回访问-访问数据包(如果可以进一步请求用户认证或对NAS执行类似认证的合法) 否则,返回访问- reject包并拒绝用户访问。 如果被授权访问,NAS向RADIUS服务器发出计费请求Account-Request,RADIUS服务器响应于Account-Accept开始向用户计费,同时用户可以执行自己的相关操作。

RADIUS协议具有以下特征:

l客户端/服务器结构

l使用共享密钥确保网络传输的安全性

l卓越的可扩展性

l认证机制的灵活性

RADIUS协议安装在UDP上,官方指定的端口号为认证认可端口1812,计费端口1813。 RADIUS协议在RFC2865、RFC2866中定义。 锐捷网络RG-SAM系统与NAS之间的通信采用RADIUS协议。 RADIUS协议的卓越可扩展性使许多制造商扩展了RADIUS,我们也进行了扩展。 使用时,请注意不同的公司与RADIUS协议扩展部分完全不兼容。

2 RADIUS协议消息格式2.1 Radius协议消息格式RADIUS消息格式从左向右传输,如下图所示

0 1 2 3

0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1

-------------请参阅

代码长度

-------------请参阅

|身份验证器|

-------------请参阅

| Attributes .

-----------------

2.2代码域代码域的长度为1字节,用于标识RADIUS消息的类型。 如果代码域的内容为无效值,则该消息显示radius代码域的有效值如下:

代码=1访问请求

代码=2access-accept

代码=3access-reject

代码=4会计-请求

代码=5会计-响应

代码=11访问-挑战

代码=12状态服务器(experimental )

代码=13状态客户端(外部)

代码=65业务修改请求消息

代码=66业务变更请求响应消息

Code=67业务修改请求响应拒绝消息

代码=255保留

其中12 13 255是预留的码值,一般不会遇到。 12-3-4-5-11比较常见,分别表示消息类型为认证请求、认证接受、认证拒绝、计费请求、计费响应、计费成功、接入挑战。

2.3 Identifier域Identifier域的长度为1字节,用于匹配对请求的响应。 如果RADIUS服务器在短时间内从同一源IP、同一源端口和同一id域接收到消息,则视为收到了重复请求。

2.4 Length域Length域占2个字节,用于指示消息的有效长度,额外长度的域的字节部分被视为填充。 接收时被忽略。 如果消息长度小于长度字段中的值,则整个消息将被丢弃。 长度域的范围在20到4096之间。

2.5身份验证字字段占用16个字节,用于radius客户端和服务器之间的消息身份验证有效性和密码隐藏算法。

访问请求Access-Request消息中的认证字的值是16字节的随机数,认证字的值是不可预测的,并且位于共享密钥的生命周期中

内唯一。

访问请求Access-Request认证字

在Access-Request包中认证字的值是16字节随机数,认证字的值要不能被预测,并且在一个共享密钥的生命期内唯一;

访问回应认证字

Access-Accept Access-Reject 和Access-Challenge包中的认证字称为访问回应认证字,访问回应认证字的值定义为MD5(Code+ID+Length+RequestAuth+Attributes+Secret);

计费请求Accounting-Request认证字

在计费请求包中的认证字域称为计费请求认证字,它是一个16字节的MD5校验和,计费请求认证字的值定义为MD5(Code + Identifier + Length + 16 zero octets + request attributes +shared secret);

计费回应Accounting-Response认证字

在计费回应报文中的认证字域称为计费回应认证字,它的值定义为MD5(Accounting-Response Code + Identifier + Length + the RequestAuthenticator field from the Accounting-Request packet being replied to +the response attributes + shared secret);

2.6 Attributes域

0 1 2

0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0

+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-

| Type | Length | Value ...

+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-

属性域的长度是可变的,它是一个由业务类型必需的属性和可选属性组成的属性链。一个属性包含如下三个部分:

2.6.1 Type域

类型域长度为一个字节,RADIUS服务器和客户端当遇到不可识别的属性时,可以将其忽略。常用的属性类型请参见RFC2865 RFC2866;

2.6.2 Length域

长度域长度为一个字节,指明了一个属性的类型、长度和值域的总长度。如果在认证请求报文中携带有属性长度非法的属性,则必须回应访问拒绝报文;如果在访问回应报文中存在非法的属性长度,这个报文必须被直接丢弃或被认为是访问拒绝报文。

2.6.3 Value域

值域由零或多个字节组成包,含详细的属性信息,它的格式由属性的长度和类型域决定。注意RADIUS 中没有一个类型的值域是以NULL(hex 00)结尾,的也就是说值域中是没有结束符的,服务器和客户端需要能够处理内嵌的NULL。

值域的数据类型是下列5 种类型之一。“text”类型是“string”类型的子集:

text 1-253 字节长

string 1-253 字节长可以包含二进制数据

address 4 字节高位在前

integer 4 字节无符号数高位在前

time 4 字节无符号数高位在前表示从1970 年1 月1 日零点零时零秒到现在的秒数

转载于:https://www.cnblogs.com/dancheblog/p/4211088.html

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。