美文网首页
radius协议报文格式

radius协议报文格式

作者: 小破孩码农 | 来源:发表于2018-09-26 18:10 被阅读0次

1、RADIUS协议的包格式

RADIUS数据包是被封装在UDP的数据域中的。

RADIUS的包数据格式如下所示,各域(Fields)的先后次序是从左到右。

2、 Code域

Code域有一个字节长度,用来标示RADIUS通信包的类型。当收到一个非法的包类型,将被丢弃。

Code可代表如下类型(十进制):

Code=1 Access-Request

Code=2 Access-Accept

Code=3 Access-Reject

Code=4 Accounting-Request

Code=5 Accounting-Response

Code=11 Access-Challenge

Code=12 Status-Server (experimental)

Code=13 Status-Client (experimental)

Code=65 业务修改请求消息

Code=66 业务修改请求回应消息

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

Code=255 Reserved

其中12 13 255 为保留的Code值一般不会遇到,1 2 3 4 5 11比较常见,分别标明报文类型为认证请求、认证接受、认证拒绝、计费请求、计费回应、计费成功和访问质询。

3、Identifier域

Identifier域长度为1个字节,用于匹配请求的回应。如果在短时间内RADIUS服务器收到从相同的源IP,相同源端口,相同标识域的报文,则认为收到的是重复的请求。

4、Length域

Length域占两个字节,用于指明报文的有效长度,多出长度域的字节部分将被视为填充。在接收时被忽略。如果报文长度小于长度域中的值,整个报文将被丢弃。长度域的范围在20和4096之间。

5、Authenticator

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

访问请求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);

6、Attributes域

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

Type域

Type域长度为一个字节。数值192-223被保留作实验使用;数值224-240被保留作特殊的应用;数值241-255被不建议使用。RADIUS服务器和客户机将可能忽略未知的Type值。被定义的值如下所列:

1User-Namestring

2Use-Passwordstring

3CHAP-Passwordstring

4NAS-IP-Addressaddress

5NAS-Portstring

6Service-Typeinteger

7Framed-Protocolinteger

8Framed-IP-Addressaddress

9Framed-IP-Netmaskaddress

10Framed-Routinginteger

11Filter-Idstring

12Framed-MTUinteger

13Framed-Compressioninteger

14Login-IP-Hostaddress

15Login-Serviceinteger

16Login-TCP-Portinteger

17(unassigned)

18Reply-Messagestring

19Callback-Numberstring

20Callback-Idstring

21(unassigned)

22Framed-Routeinteger

23Framed-IPX-Networkinteger

24Statestring

25Classstring

26Vendor-Specificstring

27Session-Timeoutinteger

28Idle-Timeoutinteger

29Termination-Actioninteger

30Called-Station-Idstring

31Calling-Station-Idstring

32NAS-Identifierstring

33Proxy-Statestring

34Login-LAT-Servicestring

35Login-LAT-Nodestring

36Login-LAT-Groupstring

37Framed-AppleTalk-Linkinteger

38Framed-AppleTalk-Networkinteger

39Framed-AppleTalk-Zonestring

40Acct-Status-Typeinteger

41Acct-Delay-Timeinteger

42Acct-Input-Octetsinteger

43Acct-Output-Octetsinteger

44Acct-Session-Idstring

45Acct-Authenticinteger

46Acct-Session-Timeinteger

47Acct-Input-Packetsinteger

48Acct-Output-Packetsinteger

49Acct-Terminate-Causeinteger

50Acct-Multi-Session-Idstring

51Acct-Link-Countinteger

52-59(unassigned)

60CHAP-Challengestring

61NAS-Port-Typeinteger

62Port-Limitinteger

63Login-LAT-Portstring

60CHAP-Challengestring

61NAS-Port-Typeinteger

62Port-Limitinteger

63Login-LAT-Portstring

70ARAP-Passwordstring

71ARAP-Featuresstring

72ARAP-Zone-Accessinteger

73ARAP-Securityinteger

74ARAP-Security-Datastring

75Password-Retryinteger

76Promptinteger

77Connect-Infostring

78Configuration-Tokenstring

79EAP-Messagestring

80Message-Authenticatorstring# 18 octets

84ARAP-Challenge-Responsestring# 10 octets

85Acct-Interim-Intervalinteger

87NAS-Port-Idstring

88Framed-Poolstring

Length域

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

Value域

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

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

text 1-253 字节长

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

address 4 字节高位在前

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

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

相关文章

  • radius协议报文格式

    1、RADIUS协议的包格式 RADIUS数据包是被封装在UDP的数据域中的。 RADIUS的包数据格式如下所示,...

  • TCP建立连接和断开连接图解

    TCP报文简介 TCP报文格式TCP/IP协议的详细信息参看《TCP/IP协议详解》三卷本。下面是TCP报文格式图...

  • TCP的三次握手(建立连接)与 四次挥手(关闭连接)

    一、TCP报文格式 TCP/IP协议的详细信息参看《TCP/IP协议详解》三卷本。下面是TCP报文格式图: TCP...

  • FastCGI

    一、FastCGI 协议 1、FastCGI报文格式 FastCGI报文格式如下: FastCGI报文是8字节对齐...

  • yh-radius

    yh-RADIUS系统 yh-radius 是一个使用golang语言开发的radius协议实现,目前已适配华为,...

  • RADIUS(计费:Accounting)

    1. 描述 RADIUS计费协议用于定义和装载位于网络接入服务器(NAS)和RADIUS计费服务器(RADIUS ...

  • iOS开发需掌握的网络基础

    HTTP 超文本传输协议请求报文格式 响应报文格式 常用的请求方式 POST GET HEAD PUT DELET...

  • 简单聊聊Radius的PEAP协议

    简单聊聊Radius的PEAP协议 简述:radius协议很少有人知道,但是生活中还是很常使用的。先看看他的wik...

  • Http协议报文格式

    Http协议概述 HyperText Transfer Tansfer Protocol 超文本传输协议,是一种基...

  • Http协议报文格式

    回车和换行 回车和换行的历史由来在计算机还没有出现之前,有一种叫做电传打字机(Teletype Model 33)...

网友评论

      本文标题:radius协议报文格式

      本文链接:https://www.haomeiwen.com/subject/crjjoftx.html