radius协议使用的是UDP传输协议,UDP协议相对于TCP更快速,无连接的不可靠。


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

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

   |     Code      |  Identifier   |            Length             |

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

   |                                                               |

   |                         Authenticator                         |

   |                                                               |

   |                                                               |

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

   |  Attributes ...

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

code:radius报文类型,有效类型值如下:

1 access-request

2 access-accept

3 access-reject

4 accounting-request

5 accounting-response

11 access-challenge

如下不常用,一般不会遇到

12 status-server

13 status-client

255 reserved


identifier:匹配请求的回应



length:报文有效长度,20-4096,多余的视为补充,不足的丢弃整个报文。





authenticator:16字节

用于Radius Client 和Server之间消息认证的有效性,和密码隐藏算法。

访问请求认证字

在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);





http://blog.csdn.net/zhaori/article/details/554004