在这篇文章中,作者介绍了绕过Cisco设备的 TACACS 的三种方式。
No.1 利用DoS攻击绕过 Cisco TACACS+
No.2 本地爆破PSK绕过 Cisco TACACS+
No.3 利用中间人攻击绕过 Cisco TACACS+
一般来说,在一个大型网络中会有很多网络设备,如何管理这些网络设备的访问权限可能是个大问题。因此,大多数公司都会实现集中化的权限访问协议。Cisco 设备支持 TACACS+ 和 RADIUS 协议。
0x00 TACACS 协议简介
TACACS(Terminal Access Controller Access Control System,终端访问控制器控制系统协议)是一种用于认证的计算机协议,在 UNIX 网络中与认证 服务器 进行通信,TACACS 允许远程访问服务器与认证服务器通信,以决定用户是否有权限访问网络。
TACACS 允许客户端接受用户名和口令,并发往通常称作 TACACS 守护进程(或者简单地称作 TACACSD )的 TACACS 认证服务器,这个服务器一般是在主机上运行的一个程序。主机将决定是否接受或拒绝请求,并发回一个响应。 TIP(用户想要登录的接受拨入链接的路由节点)将基于这个响应接受或拒绝访问。这样,做出决定的过程是”向上开放”(opened up)的,做出决定所用的算法和数据完全由 TACACS 守护进程的运行者控制。
Cisco 在 1990 引进的最近的 TACACS 版本称作 XTACACS(扩展 TACACS)。在较新的或更新过的网络中,这两个版本大多被 TACACS+ 和 RADIUS 所取代。
TACACS 在RFC 1492中定义,默认使用 TCP 或 UDP 协议的 49 端口。
0x01 TACACS+ 协议简介
TACACS+ 是一个全新的协议,与 TACACS 和 XTACACS 并不兼容。TACACS+ 所使用的端口为 TCP/49。
TACACS+(Terminal Access Controller Access Control System Plus)是在 TACACS 协议的基础上进行了功能增强的安全协议。该协议与 RADIUS 协议的功能类似,采用客户端/服务器模式实现 NAS 与 TACACS+ 服务器之间的通信。
TACACS+ 协议主要用于 PPP 和 VPDN(Virtual Private Dial-up Network,虚拟私有拨号网络)接入用户及终端用户的 AAA。
AAA 是 Authentication、Authorization、Accounting(认证、授权、计费)的简称,是网络安全的一种管理机制,提供了认证、授权、计费三种安全功能。
认证:确认访问网络的远程用户的身份,判断访问者是否为合法的网络用户。
授权:对不同用户赋予不同的权限,限制用户可以使用的服务。例如用户成功登录服务器后,管理员可以授权用户对服务器中的文件进行访问和打印操作。
计费:记录用户使用网络服务中的所有操作,包括使用的服务类型、起始时间、数据流量等,它不仅是一种计费手段,也对网络安全起到了监视作用。
0x02 TACACS+ 认证过程
TACACS+ 服务通常会有一个特殊的服务器,所有的网络设备都会被配置成使用 TACACS+ 服务器进行身份验证。当一个用户在交换机,路由器或其他网络设备上进行认证时,网络设备会发送该用户的凭证到 TACACS+ 服务器进行验证,然后决定分配访问相关设备的权限,并将这些决定的结果包含在应答数据包中并发送到网络设备上,再由网络设备发送到用户终端。
图 1 : TACACS+ 认证过程
这是一个非常方便和集中化的做法。可以在不同的设备上为用户设置不同的权限。还有就是记录访问和操作均在服务器端。也可以在当前这种模式下再添加一种集中化式的管理方式,如 Active Directory 或 LDAP。不过,思科已将 TACACS+ 协议规范公开,所以现在有了一种 TACACS+ 服务的开源实现。
0x03 绕过 Cisco TACACS+ 的三种攻击方式
No.1 利用 DoS 攻击绕过 Cisco TACACS+
第一种攻击方式并不是一种攻击类型,准确的说是一个技巧,但是有时候在某些情况下是非常有用的。
让我们假定这么一个场景:
某渗透人员在目标公司的 TFTP 服务器中下载到了 Cisco 设备的配置文件,但是即使利用该配置文件破解出了设备的登陆账户信息,也依旧无法登陆到该设备中,原因就在于该设备将会使用 TACACS+ 服务验证本地账户。
使用 TACACS+ 进行身份验证是网络设备的一种典型配置。让我们继续假设,在 TACACS+ 服务器与网络设备之间发生了点什么,导致网络设备无法访问 TACACS+ 服务器。在这种情况,连管理员自己都不可能登录到网络设备中。为了解决这样的典型情况,Cisco 设备支持认证方式的回退,管理员可以设置不同的认证配置。
在 Cisco 设备中,一种使用 TACACS+ 进行身份验证的典型配置如下:
aaa authentication login default group tacacs+ local
上述配置表明,首选的身份验证为 TACACS+,之后才会使用本地验证方式(查询本地数据库)进行身份验证。同时,要注意,即使 TACACS+ 服务没有发现一个用户的认证凭证,设备也不会使用本地验证方式。
也就是说,只有在 TACACS+ 服务不可用时,才会使用本地验证方式。
所以,第一种攻击思路很简单。我们只要对 TACACS+ 服务发动 DoS 攻击,之后连接到 Cisco 设备的本地帐户中(从 TFTP 服务器中下载并破解得到)。由于 TACACS+ 服务遭到 DoS 攻击无法访问,所以网络设备会提供给我们所期望的访问权限。我们可以使用多种 DoS 攻击。例如,我们可以发动临时的 DoS 攻击,对 TACACS+ 服务器创建大量基于 TCP 的连接。
图 2 :对 TACACS+ 服务器发动 DoS 攻击
在介绍第二种和第三种攻击方式前需要了解的知识
在介绍第二种和第三种攻击方式前,我们需要了解一下 TACACS+ 协议。该协议的数据是明文或者是加密后传输的。采用了基于PSK(预共享密钥)的自定义加密方式。管理员可以在 TACACS+ 服务器上设置加密密钥,只要能够访问到 TACACS+ 服务器的网络设备都会在身份验证时使用这个加密密钥。
有一点值得注意的是,只有用户的凭证数据是加密的, TACACS+ 协议的报头信息并没有加密。
加密的具体细节如下:
加密的结果(enc_data)是未加密的用户的凭证数据 (data)与一个特殊的字符串(pseudo_pad)进行XOR操作后得到的。
data^pseudo_pad = enc_data
pseudo_pad 是几个拼接的 MD5 哈希。
pseudo_pad = {MD5_1 [,MD5_2 [ ... ,MD5_n]]}
MD5 哈希的值是对 TACACS+ 数据包报头信息,密钥(PSK)和前一个 MD5 哈希值加密的结果。因此,可以看到,第一个 MD5 是没有前一个 MD5 哈希值的。
MD5_1 = MD5{session_id, key, version, seq_no}MD5_2 = MD5{session_id, key, version, seq_no, MD5_1}....MD5_n = MD5{session_id, key, version, seq_no, MD5_n-1}
SESSION_ID – 是一个会话的随机标识符;
version – TACACS+ 协议的版本;
seq_no – 会话数据包的增量;
加密的数据如下图所示:
图 3 :数据包中的加密数据
No.2 爆破 PSK 绕过 Cisco TACACS+
OK,了解了上面的一些知识后,我们就可以理解后面两种攻击方式了。
假设现在有一台 Cisco 网络设备和一台 TACACS+ 服务器,我们已经得到了这两台服务器之间传输的 TACACS+ 协议的加密数据(可以通过中间人攻击得到)。现在,我们只要得到了 PSK 就可以解密已加密的数据,之后,我们就可以得到一个有效的账户了。
现在,让我们看看该如何做到这一点。首先,我们可以看到,任何一个 MD5 哈希(尤其是第一个 MD5)都是由几个固定的值组成的。但是,其中只有一个是未知的 —— PSK。所有其它的值(SESSION_ID,version,seq_no),我们都可以从 TACACS+ 数据包的报头中获取到。因此,我们可以使用本地离线暴力破解攻击的方式获得 PSK。而我们知道,暴力破解 MD5 是很快的。但在开始爆破前,我们需要得到第一个 MD5 哈希(MD5_1)。
我们知道,XOR 是一种可逆性的操作。所以,我们可以这样做
data^pseudo_pad = enc_data
将其转换为
pseudo_pad =>图 4 : TACACS+ 服务器响应的第一个数据包因此,从目前来看,我们几乎总是可以知道任何数据包的前 16 字节解密后的数据。所以我们就可以得到MD5_1,并使用本地离线暴力破解进行攻击。如果爆破成功了,我们就能够解密整个通信的数据。为了简化数据包的接收并解析出MD5_1,我写了一个小脚本 —— tac2cat.py。它是TacoTaco 项目的一部分。
No.3 利用中间人攻击 绕过 Cisco TACACS+
对于最后一种攻击方式,我们可以利用中间人攻击篡改 TACACS+ 服务器和 Cisco 设备之间传输的数据。我们的目的是获取到 Cisco 设备的所有权限。
在重新审查 TACACS+ 协议时,我发现了两个额外的”特点”。
第一个是在 TACACS+ 协议传输过程中并没有检查数据包的完整性。所以,如果我们利用中间人攻击改变了传输中的加密的部分,那么也就改变了解密的结果 (因为它只进行了 XOR 操作),但 TACACS+ 服务器并不会发现所做的更改,并以正常的方式处理已经被修改过的传输数据。
图 5 : TACACS+ 协议数据包
第二个特点是关于 TACACS+ 数据包的格式。在身份验证和授权的过程中,应答的数据包中的第一个字节指示了访问权限授予的结果。
例如,”0x01″代表了用户通过了服务器的身份验证过程 (授予访问权限) ,”0x02″代表了用户的凭据是无效的。
总之,我们只需要更改服务器应答的数据包的一个字节即可!
获取该字节的pseudo_pad: 将加密的字节和解密的字节进行 XOR 操作 (我们知道解密的字节的值,因为如果我们输入不正确的凭据后,服务器会拒绝访问并设置第一个字节为 0x02。
将这个pseudo_pad与成功的身份验证标识 (0x01) 进行 XOR 操作
将新的字节加入到加密的数据包中并发送给服务器。
因此,利用中间人攻击,我们可以对任何使用无效凭证的用户的传输数据和访问权限授予(身份认证和授权)进行更改。此外,我们也可以绕过 Cisco 设备中特权用户提升(“enable” 密码)的身份验证过程。
为了方便进行中间人攻击,我写了一个小脚本——tacflip.py,是 TacoTaco 项目的一部分。
我已经在 Cisco 7200 路由器的 GNS3 模拟器和开源实现的 TACACS+ 服务器——tac_plus 中成功验证了这种(绕过身份验证,特权用户提升授权)攻击方式,下面是路由器中配置文件的一部分:
aaa authentication login default group tacacs+ localaaa authentication enable default group tacacs+aaa authorization exec default group tacacs+ localtacacs-server host 192.168.182.136tacacs-server directed-requesttacacs-server key 12345这个小视频演示了在 Cisco 路由上进行绕过身份验证/授权、特权提权和命令执行的攻击过程。
点我看小视频
0x04 一点儿题外话
在 2000 年,Solar Designer 针对 TACACS+ 协议做了一个很有趣的研究(链接在此),例如,他发现了重放攻击,用户密码长度信息泄漏,位翻转攻击等漏洞。但我并没有找到 这些漏洞的 PoCs。
对于我对 TACACS+ 协议所做的”研究”,都是在与协议进行了随机的互动操作后的很长一段时间里的一些想法。正因为如此,我忘了有关 Solar Designer 研究的结果并且重新了解了他的一些发现。
因此,可能我工作的最重要的结果就是 TacoTaco 项目。它是这篇文章所讲述的攻击方式的具体实现。
0x05 总结
从目前来看,我认为,TACACS+ 协议并没有针对中间人攻击提供必要的保护级别。
不过话又说回来,有时很难在实战中执行所有这些攻击操作,因为 Cisco 建议将 TACACS+ 服务器放置在一个特殊的管理方式中 —— VLAN (只有管理员和网络设备才能访问) 。当然,也有方法可以渗透到 VLAN 中并控制它,不过这就是另一码事儿了。
0x06 参考及引用
原文地址:3 attacks on cisco tacacs bypassing
服务器被ddos攻击?要怎么办
DoS(Denial of Service)是一种利用合理的服务请求占用过多的服务资源,从而使合法用户无法得到服务响应的网络攻击行为。 被DoS攻击时的现象大致有:* 被攻击主机上有大量等待的TCP连接;* 被攻击主机的系统资源被大量占用,造成系统停顿;* 网络中充斥着大量的无用的数据包,源地址为假地址;* 高流量无用数据使得网络拥塞,受害主机无法正常与外界通讯;* 利用受害主机提供的服务或传输协议上的缺陷,反复高速地发出特定的服务请求,使受害主机无法及时处理所有正常请求;* 严重时会造成系统死机。 到目前为止,防范DoS特别是DDoS攻击仍比较困难,但仍然可以采取一些措施以降低其产生的危害。 对于中小型网站来说,可以从以下几个方面进行防范:主机设置:即加固操作系统,对各种操作系统参数进行设置以加强系统的稳固性。 重新编译或设置Linux以及各种BSD系统、Solaris和Windows等操作系统内核中的某些参数,可在一定程度上提高系统的抗攻击能力。 例如,对于DoS攻击的典型种类—SYN Flood,它利用TCP/IP协议漏洞发送大量伪造的TCP连接请求,以造成网络无法连接用户服务或使操作系统瘫痪。 该攻击过程涉及到系统的一些参数:可等待的数据包的链接数和超时等待数据包的时间长度。 因此,可进行如下设置:* 关闭不必要的服务;* 将数据包的连接数从缺省值128或512修改为2048或更大,以加长每次处理数据包队列的长度,以缓解和消化更多数据包的连接;* 将连接超时时间设置得较短,以保证正常数据包的连接,屏蔽非法攻击包;* 及时更新系统、安装补丁。 防火墙设置:仍以SYN Flood为例,可在防火墙上进行如下设置:* 禁止对主机非开放服务的访问;* 限制同时打开的数据包最大连接数;* 限制特定IP地址的访问;* 启用防火墙的防DDoS的属性;* 严格限制对外开放的服务器的向外访问,以防止自己的服务器被当做工具攻击他人。 此外,还可以采取如下方法:* Random Drop算法。 当流量达到一定的阀值时,按照算法规则丢弃后续报文,以保持主机的处理能力。 其不足是会误丢正常的数据包,特别是在大流量数据包的攻击下,正常数据包犹如九牛一毛,容易随非法数据包被拒之网外;* SYN Cookie算法,采用6次握手技术以降低受攻击率。 其不足是依据列表查询,当数据流量增大时,列表急剧膨胀,计算量随之提升,容易造成响应延迟乃至系统瘫痪。 由于DoS攻击种类较多,而防火墙只能抵挡有限的几种。 路由器设置:以Cisco路由器为例,可采取如下方法:* Cisco Express Forwarding(CEF);* 使用Unicast reverse-path;* 访问控制列表(ACL)过滤;* 设置数据包流量速率;* 升级版本过低的IOS;* 为路由器建立log server。 其中,使用CEF和Unicast设置时要特别注意,使用不当会造成路由器工作效率严重下降。 升级IOS也应谨慎。 路由器是网络的核心设备,需要慎重设置,最好修改后,先不保存,以观成效。 Cisco路由器有两种配置,startup config和running config,修改的时候改变的是running config,可以让这个配置先运行一段时间,认为可行后再保存配置到startup config;如果不满意想恢复到原来的配置,用copy start run即可。 不论防火墙还是路由器都是到外界的接口设备,在进行防DDoS设置的同时,要权衡可能相应牺牲的正常业务的代价,谨慎行事。 利用负载均衡技术:就是把应用业务分布到几台不同的服务器上,甚至不同的地点。 采用循环DNS服务或者硬件路由器技术,将进入系统的请求分流到多台服务器上。 这种方法要求投资比较大,相应的维护费用也高,中型网站如果有条件可以考虑。 以上方法对流量小、针对性强、结构简单的DoS攻击进行防范还是很有效的。 而对于DDoS攻击,则需要能够应对大流量的防范措施和技术,需要能够综合多种算法、集多种网络设备功能的集成技术。 近年来,国内外也出现了一些运用此类集成技术的产品,如Captus IPS 4000、Mazu Enforcer、Top Layer Attack Mitigator以及国内的绿盟黑洞、东方龙马终结者等,能够有效地抵挡SYN Flood、UDP Flood、ICMP Flood和Stream Flood等大流量DDoS的攻击,个别还具有路由和交换的网络功能。 对于有能力的网站来说,直接采用这些产品是防范DDoS攻击较为便利的方法。 但不论国外还是国内的产品,其技术应用的可靠性、可用性等仍有待于进一步提高,如提高设备自身的高可用性、处理速率和效率以及功能的集成性等。 最后,介绍两个当网站遭受DoS攻击导致系统无响应后快速恢复服务的应急办法:* 如有富余的IP资源,可以更换一个新的IP地址,将网站域名指向该新IP;* 停用80端口,使用如81或其它端口提供HTTP服务,将网站域名指向IP:81。
一个合格的网络工程师要具备什么样的能力
首先,要有扎实的硬件基础,包括路由器、交换设备及集线器等硬件的结构、性能指标等。 进行系统设计时,硬件的性能指标都是网络工程师要充分考虑的因素。 进行维护就更不用说了。 其次,要熟悉掌握最常用的网络操作系统,如Win2000、win2003、Unix 和 Linux。 现在架构一个局域网可能会用到多种操作系统,多掌握一些毕竟可以更好地、有更多选择地处理问题。 其三,要掌握路由交换设备的配置方法。 可以说,Internet 就是由路由器和交换机搭建而成的,合格的网络工程师必须能够单独完成局域网的架构工作,如果没有相关的知识是不敢想象的。 其四,还要掌握综合布线和网络集成的相关知识。 在做项目计划时,要充分考虑到设备的选型和拓扑的设计,必须对综合布线有所了解,才可能做到网络畅通,硬件匹配,不产生网络瓶颈,性能价格比最高。 对于这一点,有的人可能不以为然,举个实际的例子吧。 某公司要组建一个局域网,中心骨干设备选择了 Cisco 的 6509 千兆交换机,而接入层则为了省钱,选择使用百兆的单模收发器。 结果,设备买回后却怎么也调不通。 原因很简单,就是因为单模收发器的光纤无法 和 Cisco 的千兆模块相匹配。 最后只能全部改用了 Cisco3600 系列作为接入层交换设备,这样多投入大笔资金,造成了巨大浪费。 当然,以上的知识结构只是针对网络管理和维护的工程师而言,如果在网络中还牵涉到专业的数据库,那么精通 SQL 语句,熟悉某种数据库,如 ORACLE, SYBASE、SQL SEVER 等也是必须的。 再者,网络工程师需要在实践中培养一种创新能力。 网络需求是千变万化的,必须以不变应万变。 同样一个网络设计需求,对于不同层次的网络工程师,其制作的解决方案也不尽相同。 可以说,水平越高的网络工程师越能通过特定的设计最贴切地体现用户的需求。 而相反,有的网络工程师将网络设计当作了一种固定模式。 我认识几位工程师,其中有的就已习惯了照搬方案,对于自己的发展是相当不利的,对于用户而言,也会造成一种资源浪费。 所以,在工作和学习中多思考,才可能走上更高的台阶,在技术发展日新月异的今天,只有不断学习和成长,才能适应企业的需要,巩固并扩展自己的职业空间。 在用人单位,一些手捧各种培训证书的网络工程师在实际工作中的表现却难以令人满意: 一证在手,却连最基本的 T568A、T568B 线都搞 不清,路由器基本的调试与配置命令都不知道,GBIC 的模块没有用过,更不用讲两层交换机、三层交换机以及它们的配置与管理,总之,他们在学习中只注重 了理论而忽略了实战能力的培养。 要想成为合格的网络工程师,参加适当的培训也是未尝不可的,真实的网络环境、经验丰富的培训讲师,还需要以 IT 网络发展的前瞻性和实际应用的现实性为导向的课程。 在学习过程中你必须了解网络的精髓,才有能力搭建合理、高效的网络。 同时,学习过程必须理论与实践相结合,在熟知网络产品的同时,还要深刻理解网络业界相关的标准、相关标准的原理。 通过学习,不仅要掌握学习领域中的内容,更重要的是锻炼从已知领域推知未知领域的一种触类旁通、举一反三的能力。 否则,缺乏真实的网络环境以及动手调试的机会,不能获得足够的应战能力,而在激烈的社会竞争中处于劣势。
以太网帧的格式及各领域的含义?
浅谈以太网帧格式一、Ethernet帧格式的发展1980 DEC,Intel,Xerox制订了Ethernet I的标准1982 DEC,Intel,Xerox又制订了Ehternet II的标准1982 IEEE开始研究Ethernet的国际标准802. 迫不及待的Novell基于IEEE的802.3的原始版开发了专用的Ethernet帧格式1985 IEEE推出IEEE 802.3规范,后来为解决EthernetII与802.3帧格式的兼容问题,推出折衷的Ethernet SNAP格式(其中早期的Ethernet I已经完全被其他帧格式取代了 ,所以现在Ethernet只能见到后面几种Ethernet的帧格式,现在大部分的网络设备都支持这几种Ethernet的帧格式,如:cisco的路由器再设定Ethernet接口时可以指定不同的以太网的帧格式:arpa,sap,snap,novell-ether)二.各种不同的帧格式下面介绍一下各个帧格式 II 就是DIX以太网联盟推出的。 。 。 。 它由6个字节的目的MAC地址,6个字节的源MAC地址, 2个字节的类型域(用于标示封装在这个Frame、里面 数据的类型)以上为Frame Header,接下来是46--1500字节的数据,和4字节的帧校验 Ethernet 它的帧头与Ethernet有所不同其中EthernetII帧头中的类型域变成了长度域,后面接着的两个字节为0xFFFF,用于标示这个帧是Novell Ether类型的Frame,由于前面的0xFFFF站掉了两个字节所以数据域缩小为44-1498个字节,帧校验不变。 802.3/802.2 802.3的Frame Header和Ethernet II的帧头有所不同,EthernetII类型域变成了长度域。 其中又引入802.2协议(LLC)在802.3帧头后面添加了一个LLC首部,由DSAP(Destination Service Access Point)1 byte,SSAP(Source SAP),一个控制域--1 byte! SAP用于标示帧的上层协议。 SNAP SNAP Frame与802.3/802.2 Frame的最大区别是增加了一个5 Bytes的SNAP ID其中前面3个byte通常与源mac地址 的前三个bytes相同为厂商代码!有时也可设为0,后2 bytes与Ethernet II的类型域相同。 。 。 三.如何区分不同的帧格式Ethernet中存在这四种Frame那些网络设备又是如何识别的呢? 如何区分EthernetII与其他三种格式的Frame 如果帧头跟随source mac地址的2 bytes的值大于1500,则此Frame为EthernetII格式的接着比较紧接着的两bytes如果为0xFFFF则为Novell Ether类型的Frame,如果为0xAAAA则为Ethernet SNAP格式的Frame ,如果都不是则为Ethernet 802.3/802.2格式的帧几种以太网帧格式相当长的一段时间里我都没搞明白一个很基础的问题---以太网的封装格式;最近查了查相关文档,总结如下;首先说明一下,Ethernet和802.3并不是一回事,虽然我们经常混用这两个术语;历史上以太网帧格式有五种 V1:这是最原始的一种格式,是由Xerox PARC提出的3Mbps CSMA/CD以太网标准的封装格式,后来在1980年由DEC,Intel和Xerox标准化形成Ethernet V1标准; V2(ARPA):这是最常见的一种以太网帧格式,也是今天以太网的事实标准,由DEC,Intel和Xerox在1982年公布其标准,主要更改了Ethernet V1的电气特性和物理接口,在帧格式上并无变化;Ethernet V2出现后迅速取代Ethernet V1成为以太网事实标准;Ethernet V2帧头结构为6bytes的源地址+6bytes的目标地址+2Bytes的协议类型字段+数据。 常见协议类型如下:0800 IP0806 ARP8137 Novell IPX809b APPle Talk如果协议类型字段取值为0000-05dc(十进制的0-1500),则该帧就不是Ethernet V2(ARPA)类型了,而是下面讲到的三种802.3帧类型之一;Ethernet可以支持TCP/IP,Novell IPX/SPX,Apple Talk Phase I等协议;RFC 894定义了IP报文在Ethernet V2上的封装格式; 802.3:这是1983年Novell发布其划时代的Netware/86网络套件时采用的私有以太网帧格式,该格式以当时尚未正式发布的802.3标准为基础;但是当两年以后IEEE正式发布802.3标准时情况发生了变化—IEEE在802.3帧头中又加入了802.2 LLC(Logical Link Control)头,这使得Novell的RAW 802.3格式跟正式的IEEE 802.3标准互不兼容;可以看到在Novell的RAW 802.3帧结构中并没有标志协议类型的字段,而只有Length字段(2bytes,取值为0000-05dc,即十进制的0-1500),因为RAW 802.3帧只支持IPX/SPX一种协议;4.802.3/802.2 LLC:这是IEEE 正式的802.3标准,它由Ethernet V2发展而来。 它将Ethernet V2帧头的协议类型字段替换为帧长度字段(取值为0000-05dc;十进制的1500);并加入802.2 LLC头用以标志上层协议,LLC头中包含DSAP,SSAP以及Crontrol字段;常见SAP值:0 Null LSAP [IEEE]4 SNA Path Control [IEEE]6 DOD IP [79,JBP]AA SNAP [IEEE]FE Global DSAP [IEEE]SAP值用以标志上层应用,但是每个SAP字段只有8bits长,而且其中仅保留了6比特用于标识上层协议,因此所能标识的协议数有限(不超过32种);并且IEEE拒绝为某些重要的协议比如ARP协议定义SAP值(奇怪的是同时他们却定义了IP的SAP值);因此802.3/802.2 LLC的使用有很大局限性;5.802.3/802.2 SNAP:这是IEEE为保证在802.2 LLC上支持更多的上层协议同时更好的支持IP协议而发布的标准,与802.3/802.2 LLC一样802.3/802.2 SNAP也带有LLC头,但是扩展了LLC属性,新添加了一个2Bytes的协议类型域(同时将SAP的值置为AA),从而使其可以标识更多的上层协议类型;另外添加了一个3Bytes的OUI字段用于代表不同的组织,RFC 1042定义了IP报文在802.2网络中的封装方法和ARP协议在802.2 SANP中的实现;今天的实际环境中大多数TCP/IP设备都使用Ethernet V2格式的帧。 这是因为第一种大规模使用的TCP/IP系统(4.2/3 BSD UNIX)的出现时间介于RFC 894和RFC 1042之间,它为了避免不能和别的主机互操作的风险而采用了RFC 894的实现;也由于大家都抱着这种想法,所以802.3标准并没有如预期那样得到普及;CISCO设备的Ethernet Interface默认封装格式是ARPA(Ethernet V2)不同厂商对这几种帧格式通常有不同的叫法,比如:Frame Type Novel CiscoEthernet Version 2 Ethernet_II arpa802.3 Raw Ethernet_802.3 novell_etherIEEE 802.3/802.2 Ethernet_802.2 sapIEEE 802.3/802.2 SNAP ETHERNET_SNAP snap
发表评论