远程用户拨号认证系统 RADIUS记帐协议( 五 )


长度
长度域占有一个字节,表示包括类型、长度、属性值在内的属性的长度 。假如收到的记帐请求属性的长度无效,整个请求必须直接丢弃 。

属性值域有零个或者更多的字节,包含有属性信息的具体描述 。值域的格式和长度是由类型和长度域决定的 。
注重,在RADIUS中没有任何的类型是以NUL(十六进制的00)结尾的 。在RADIUS中非凡是“text”和“string"类型不能以NUL(十六进制的00)结尾 。属性具有长度域,因而不必使用中止符号 。文本(text)含有用UTF-8编码的10646【7】的特性,字符串(string)含有8位二进制数据 。服务器和客户端必须能够处理嵌入的null 。
在使用C语言编写RADIUS程序时,注重不要使用strcpy()来处理字符串 。
值域的格式是五种数据类型之一 。注重:类型“text”是类型“string"的一个子集 。
text 1-253个字节,包含UTF-8编码的1046【7】特性 。长度为零的文本(text)不必发送;取而代之的是,整个属性域会被直接忽略 。
string 1-253个字节,包含二进制数据(数值值从0到十进制数255) 。长度为零的字符串(string)不必发送;取而代之的是,整个属性域会被直接忽略 。
address 32位的数值,最重要的字节优先 。
integer 32位的无符号数,最重要的字节优先 。
time 32位的无符号数,最重要的字节优先——seconds since 00:00:00 UTC, January 1, 1970 。标准的属性是不使用该数据类型的,但是在这里提到该数据类型主要是以备在将来的属性中使用 。
5.1 记帐状态类型
描述
该属性表明当前的记帐请求是表示用户服务开始(start)还是结束(stop) 。
它可能被客户端通过指出记帐开始的方式来表示开始记帐(例如:在启动之前),或者通过指明记帐完成的方式来结束记帐(例如:在预定的重新启动之前) 。
记帐状态类型的格式概况如下所示 。各个域是按照自左向右的顺序发送的 。
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
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
类型长度值
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
值(cont)
- - - - - - - - - - - - - - - -
类型
40表示记帐状态
长度
6

值域占有四个字节 。
1 Start(开始)
2 Stop(停止)
3 Interim-Update(过渡更新)
7 Accounting-On(开始记帐)
8 Accounting-Off(结束记帐)
9-14 Reserved for Tunnel Accounting(为隧道记帐保留)
15 Reserved for Failed(为记帐失败预留)
5.2 记帐延迟时间
描述
该属性表明客户端试图发送该记录所用的时间 。用该数据包到达服务器端的时间减去记帐延迟时间就可以知道生成该数据包的大概时间 。(网络传输时间被忽略了) 。
注重,记帐延迟时间的改变会引起鉴别码的变化;具体资料参见上面关于鉴别码的讨论 。
记帐延迟时间的格式概况如下所示 。各个域是按照自左向右的顺序发送的 。
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
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
类型长度值
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
值 (cont)
- - - - - - - - - - - - - - - -
类型
41代表记帐延迟时间
长度
6

值域共占有四个字节
5.3 输入字节数
描述
该属性表明在提供用户所需的服务的过程中从端口接收到的字节总数 。该属性只有在要求停止记帐的记帐请求数据包中才会出现 。

推荐阅读