capwap学习笔记——初识capwap(二)(转)
2.5.1 AC发现机制
WTP使用AC发现机制来得知哪些AC是可用的,决定最佳的AC来建立CAPWAP连接。
WTP的发现过程是可选的。如果在WTP上静态配置了AC,那么WTP并不需要完成AC的发现过程。
WTP首先发送一个 Discovery Request message给受限的广播地址,或者CAPWAP的多播地址(224.0.1.140),或者是预配置的AC的单播地址。在IPV6网络中,由于广播并不存在,因此使用"All ACs multicast address" (FF0X:0:0:0:0: 0:0:18C)来代替。
当接收到Discovery Request message消息,AC发送一个单播Discovery Response message给WTP。
WTP可以通过Discovery Response message中所带的AC优先级,支持的CAPWAP binding来选择与哪个AC建立会话。
除了上面的发现机制,WTP还可以使用DNS或者DHCP来发现AC。
2.5.2 DTLS握手
WTP首先发送一个ClientHello消息来发起握手,说明它支持的密码算法列表、压缩方法及最高协议版本和其他一些需要的消息。
AC回复一个HelloVerifyReuqest 消息,client必须重传添加了cookie的ClientHello。server然后验证cookie,如果有效的话才开始进行握手。
AC回应一个ServerHello消息,包含服务器选择的连接参数,源自客户端初期所提供的ClientHello,确定了这次通信所需要的算法,然后发过去自己的证书(里面包含了身份和自己的公钥)。
Client在收到这个消息后会生成一个秘密消息,用SSL服务器的公钥加密后传过去,SSL服务器端用自己的私钥解密后,会话密钥协商成功,双方可以用同一份会话密钥来通信了。
2.5.3 DTLS认证和授权
DTLS支持终端认证方式为:证书(certificate)和预共享密钥(pre-shared key)。
CAPWAP认证中使用证书支持的算法是
¢ TLS_RSA_WITH_AES_128_CBC_SHA [RFC5246](MUST SUPPORT)
¢ TLS_DHE_RSA_WITH_AES_128_CBC_SHA [RFC5246](SHOULD SUPPORT)
¢ TLS_RSA_WITH_AES_256_CBC_SHA [RFC5246](MAY SUPPORT)
¢ TLS_DHE_RSA_WITH_AES_256_CBC_SHA [RFC5246] ](MAY SUPPORT)
在RFC4279中定义了多种预共享密钥的认证方式,CAPWAP中主要关心下面两种:
¢ Pre-Shared Key (PSK) key exchange algorithm
¢ DHE_PSK key exchange algorithm
同样,CAPWAP定义了预共享密钥支持的算法
¢ TLS_PSK_WITH_AES_128_CBC_SHA [RFC5246] (MUST SUPPORT)
¢ TLS_DHE_PSK_WITH_AES_128_CBC_SHA [RFC5246] (MUST SUPPORT)
¢ TLS_PSK_WITH_AES_256_CBC_SHA [RFC5246] ](MAY SUPPORT)
¢ TLS_DHE_PSK_WITH_AES_256_CBC_SHA [RFC5246] ](MAY SUPPORT)
2.5.4 CAPWAP状态机
CAPWAP状态机,是被AC和WTP同时使用的。对于每个定义的状态,只有特定的消息才被允许收发。
因为WTP只会和单个AC通讯,因此只会有一个CAPWAP的状态机。而AC与WTP有很大差别,因为AC同时和许多WTP通讯。
DTLS和CAPWAP的状态机由命令和通告的API接口联系起来。
DTLS状态机的变迁由CAPWAP状态机的命令触发。
CAPWAP状态机的变迁由DTLS状态机的通告触发
CAPWAP状态机:
2.5.4.1 CAPWAP to DTLS Commands
¢ DTLSStart
开启DTLS会话的建立
¢ DTLSListen
监听DTLS会话请求
¢ DTLSAccept
允许DTLS会话建立
¢ DTLSAbortSession
导致正在进行中的DTLS会话的中断
¢ DTLSShutdown
关闭DTLS会话
¢ DTLSMtuUpdate
改变DTLS模块的MTU设定大小。默认大小为1468字节
2.5.4.2 DTLS to CAPWAP Notifications
¢ DTLSPeerAuthorize
DTLS会话建立过程中,通知CAPWAP模块来认证会话。
¢ DTLSEstablished
通知CAPWAP模块DTLS会话已经成功建立
¢ DTLSEstablishFail
DTLS会话建立失败
¢ DTLSAuthenticateFail
DTLS会话建立过程由于认证失败而终止。
¢ DTLSAborted
通知CAPWAP模块它要求的DTLS会话建立过程已经终
¢ DTLSReassemblyFailure
通知CAPWAP模块DTLS分片组装失败
¢ DTLSDecapFailure
通知CAPWAP模块发生了一个解码错误
¢ DTLSPeerDisconnect
通知CAPWAP模块DTLS会话已经关闭
2.5.5 AC线程
AC使用了三个“线程”(thread)的概念。
¢ 监听线程:
通过DTLSlisten命令,AC监听线程处理DTLS会话建立请求。创建的时候,监听线程开启DTLS Setup状态。当状态机进入Authorize状态,且DTLS会话生效之后,监听线程创建一个指定的WTP指定会话服务线程和状态空间。
¢ 发现线程:
AC的发现线程负责接收和响应发现请求消息。
AC的服务进程处理每个WTP的状态和每个WTP连接的线程。这个线程在认证后被监听线程创建。一旦创建,服务线程会继承监听线程的一份状态机空间的拷贝。当与WTP之间的通讯完成后,服务线程关闭,所有的资源都会被释放。
注意,在这里使用了线程这个术语,但是并不代表实现者就必须使用线程。这只是一个实现AC状态机的可用的方法。
capwap学习笔记——初识capwap(二)(转)的更多相关文章
- capwap学习笔记——初识capwap(一)(转)
初识CAPWAP 2.1 CAPWAP简介 CAPWAP——Control And Provisioning of Wireless Access Points Protocol Specificat ...
- capwap学习笔记——初识capwap(一)
2 初识CAPWAP 2.1 CAPWAP简介 说了半天CAPWAP,连全称都还没说,汗-- CAPWAP--Control And Provisioning of Wireless Access P ...
- capwap学习笔记——初识capwap(四)(转)
2.5.7 CAPWAP传输机制 WTP和AC之间使用标准的UDP客户端/服务器模式来建立通讯. CAPWAP协议支持UDP和UDP-Lite [RFC3828]. ¢ 在IPv4上,CAPWAP控制 ...
- capwap学习笔记——初识capwap(四)
2.5.7 CAPWAP传输机制 WTP和AC之间使用标准的UDP客户端/服务器模式来建立通讯. CAPWAP协议支持UDP和UDP-Lite [RFC3828]. ¢ 在IPv4上,CAPWAP控制 ...
- capwap学习笔记——初识capwap(二)
2.5.1 AC发现机制 WTP使用AC发现机制来得知哪些AC是可用的,决定最佳的AC来建立CAPWAP连接. WTP的发现过程是可选的.如果在WTP上静态配置了AC,那么WTP并不需要完成AC的发现 ...
- capwap学习笔记——初识capwap(五)(转)
3. CAPWAP Binding for IEEE 802.11 ¢ CAPWAP协议本身并不包括任何指定的无线技术.它依靠绑定协议来扩展对特定无线技术的支持. ¢ RFC5416就是用来扩展CAP ...
- capwap学习笔记——初识capwap(三)(下)
2.5.6.25 Image Data to Reset WTP下载image后重启,重新设置DTLS连接 ¢ WTP: ü 当image的下载完成,或者ImageDataStartTimer定 ...
- capwap学习笔记——初识capwap(三)(转)
2.5.6 CAPWAP状态机详解 2.5.6.1 Start to Idle 这个状态变迁发生在设备初始化完成. ¢ WTP: 开启CAPWAP状态机. ¢ AC: 开启CAPWAP状态机. ...
- capwap学习笔记——初识capwap(五)
3. CAPWAP Binding for IEEE 802.11 ¢ CAPWAP协议本身并不包括任何指定的无线技术.它依靠绑定协议来扩展对特定无线技术的支持. ¢ RFC5416就是用来扩展CAP ...
随机推荐
- HTTP2概述
HTTP/2 提供了HTTP语义的传输优化.HTTP/2支持所有HTTP/1.1的核心特征,并且在其他方面做的更高效. HTTP/2中基本的协议单位是帧.每个帧都有不同的类型和用途.例如,报头(HEA ...
- 《java入门第一季》之面向对象(继承总结)
继承已经全部写完了,接下来通过几个案例对继承问题做一个总结: /* 看程序写结果: A:成员变量 就近原则 B:this和super的问题 this访问本类的成员 super访问父类的成员 C:子类构 ...
- SpriteBuilder中使用TrueType字体的一些障碍
在实践中,有一些小的陷阱和障碍可能阻止你使用一般的TrueType字体. 第一个,必须要有一个有效的字体文件.在Finder中双击该.ttf文件,应该会打开Font Book app,显示一个象形符号 ...
- LeetCode之“散列表”:Two Sum && 3Sum && 3Sum Closest && 4Sum
1. Two Sum 题目链接 题目要求: Given an array of integers, find two numbers such that they add up to a specif ...
- C++中重载、覆盖与隐藏的区别(转)
本文摘自林锐博士的<高质量C++/C编程指南>. 成员函数的重载.覆盖(override)与隐藏很容易混淆,C++程序员必须要搞清楚概念,否则错误将防不胜防. 1.重载与覆盖 成员函数被重 ...
- struts form表单提交action处理之后没有跳转页面
作为一个ssm新人,对struts的理解也仅仅是书本上一些简单的示例, 对如下这个form进行提交之后,执行完action,并return 一个字符串,在struts配置文件中配置了对应的jsp页面, ...
- 怎样重建一个损坏的调用堆栈(callstack)
原文作者:Aaron Ballman原文时间:2011年07月04日原文地址:http://blog.aaronballman.com/2011/07/reconstructing-a-corrupt ...
- Linux文件系统的简单操作 - df, du, ln
现在我们知道磁盘的整体数据是在 superblock 区块中,但是每个各别文件的容量则在 inode 当中记载的. 那在文字接口底下该如何叫出这几个数据呢?底下就让我们来谈一谈这两个命令: df:列出 ...
- OpenCV——老照片效果
// define head function #ifndef PS_ALGORITHM_H_INCLUDED #define PS_ALGORITHM_H_INCLUDED #include < ...
- wince6.0 编译报错:"error C2220: warning treated as error - no 'object' file generated"的解决办法
内容提要:wince6.0编译报错:"error C2220: warning treated as error - no 'object' file generated" 原因是 ...