[售前咨询]虚拟主机独享高级版是否支持APS.NET 4.5版本
虚拟主机独享高级版是否支持APS.NET 4.5版本此前我使用的是 虚拟主机 极速共享版,是阿里云当时搞活动时候送的免费虚拟主机,里面是有ASP.NET 4.5版本的。但是我想帮别人入一台 虚拟主机独享高级版,说明里面却没有写ASP.NET 4.5版本,只显示到4.0以前版本,若是购买了之后没有这个功能那么就很浪费。所以要咨询清楚。售前电话却一直没人接。真是懊恼!
是IIS支持APS.Net
这些天由于在不同的机器安装测试环境,经常遇到这个问题,每次都要去google,看来脑子真的生锈了,就记录在这里吧。
在XP上安装过IIS5.1以后,可以运行asp,但是却不能运行aspx文件。此时要安装.Net Framework。.Net FrameworkSDK 可以从微软的官方网站下载。安装完毕后,运行下面的命令:
C:/WINDOWS/Microsoft.NET/Framework/v2.0.50727>aspnet_regiis.exe -i开始安装 ASP.NET (2.0.50727)。..................ASP.NET (2.0.50727)安装完毕。
如果是1.0或者1.1的版本,目录也可能是:v1.0.3705或者v1.1.4322。
此时再访问aspx文件就可以了。
文章
.NET · 测试技术 · Windows · 开发框架
2009-06-30
iOS 推送通知
引言:
推送通知是移动终端保持永远在线概念的一个核心方式,当人们离开桌面互联网以后想在第一时间收到与之相关的信息时.推送通知的出现就再好不过了.
但是,要注意不可滥用,繁多的非必要性推送消息会给用户造成非常烦躁的心理.作为用户体验的一部分,那就已经在往失败的方向走了.
推送通知共为两种类型,分别是本地推送通知和远程推送通知. 本文将对这两类通知的使用展开详细讨论.
参考资料:
1: ios本地通知和远程通知
http://wangjun.easymorse.com/?p=1482
2: 苹果远程通知服务申请激活例图 (外国佬写的.)
http://mobiforge.com/developing/story/programming-apple-push-notification-services
3:书籍参考:iPhone 开发秘籍 第16章 推送通知.
使用:
首先是申请证书的网址
https://developer.apple.com/ios/manage/overview/index.action
登录成功以后,进入iOS 配置管理的 主页面.
第一步操作是去 创建一个新的App IDs创建成功后,会需要提供安全证书来激动推送服务,如下图:
选择存储到磁盘以后,生成一个文件名称为(简称CSR): CertificateSigningRequest.certSigningRequest
回到Apple页面 将这个提交并提示激动成功.
激活成功后的App IDs 提供下载 开发版或是发布版的主动推送证书(aps_development.cer),如果需要做服务器方面的主动推送的话,就必须要下载这个文件来使用推送服务了.
第二步要为App提供接受推送许可的证书,点击Provisioning进行设置,添加一个新的许可,选择刚刚新创建的App IDs. 再选择可以调试的iPhone 设备.
最后,同样是下载下来: YsyPushMessageDemo.mobileprovision双击该证书,让其加载一次.
接下来,进入iOS工程,选择使用该证书来调试.
红圈中,全部设置刚刚加载的许可证书.
那么到这里,关于证书类的 准备工作,已经全部准备就绪.
在这里再此强调一次,每个文件的具体作用
1: CertificateSigningRequest.certSigningRequest : 为生成App IDs 而用
2: aps_development.cer 为开发主动推送服务而用到的证书
3: YsyPushMessageDemo.mobileprovision 为App 接受推送通知的许可服务
主动推送的Push 代码 及使用,请参考一开始介绍的第一篇博客
这里只附上下载地址: https://github.com/stefanhafeneger/PushMeBaby
接下来,说说收到推送通知代码方面.
1:申请本App需要接受来自服务商提供推送消息,
[[UIApplication sharedApplication] registerForRemoteNotificationTypes:(UIRemoteNotificationTypeBadge | UIRemoteNotificationTypeSound | UIRemoteNotificationTypeAlert)];
2:申请发出后,如果成功,委托会自动返回一个设备令牌(toKen),如果失败,将会进入另外一个失败的委托
//远程通知注册成功委托
- (void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken
{
NSLog(@"%@",deviceToken);
self.viewController.toKenValueTextView.text = [NSString stringWithFormat:@"%@",deviceToken];
self.viewController.pushStatusLabel.text = @"已经注册.";
}
//远程通知注册失败委托
-(void)application:(UIApplication *)application didFailToRegisterForRemoteNotificationsWithError:(NSError *)error
{
self.viewController.toKenValueTextView.text = [error description];
}
3:将设备令牌码提供给服务商,以供推送到具体的手机上面. 如果远程推送消息来了,用户点击了推送消息,或者应用已经处于打开状态,系统都会自动调用以下委托:
//点击某条远程通知时调用的委托 如果界面处于打开状态,那么此委托会直接响应
-(void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo
{
NSLog(@"远程通知");
[self PMD_uesPushMessage:userInfo];
}
4: 第三点里面的介绍的情况是应用程序已经处于运行状态,上面的委托才会被执行,如果应用程序处于未启用状态,此时又需要响应消息,那么需要以下委托处理.
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
//这里处理应用程序如果没有启动,但是是通过通知消息打开的,此时可以获取到消息.
if (launchOptions != nil) {
NSDictionary *userInfo = [launchOptions objectForKey:UIApplicationLaunchOptionsRemoteNotificationKey];
[self PMD_uesPushMessage:userInfo];
}
return YES;
}
5:清空通知中心已有的推送消息,只需要将指定App 的 Badge 设置为 0即可
[[UIApplication sharedApplication ] setApplicationIconBadgeNumber:0];
6:主动推送的字符串必须符合如下Json数组的格式,才能正确推送到手机当中.
@"{
//自定义参数
\"userinfo\":
{
\"name\":\"remote notice\"
},
//标准写法
\"aps\":
{
\"alert\":
{
\"action-loc-key\":\"Open\",//支持多语言
\"body\":\"messgae content\"//消息正文
},
\"badge\":1,//为App 的icon 标记 具体数值
\"sound\":\"default\"
//播放的音频文件,default 表示系统默认的选择列铃声
}
}";
文章
iOS开发 · UED · 自然语言处理 · 安全 · 数据格式 · JSON · 存储
2012-07-30
iOS应用审核的通关秘籍【转】
iOS应用审核的通关秘籍
磨刀不误砍柴工。作为手机应用开发者,你需要向应用商店提交应用审核,迅速通过审核可以让你抢占先机。对苹果iOS应用开发者来说尤其如此。苹果应用商店的审核近乎吹毛求疵,下面这些清单可以让你知道苹果会在哪些地方找茬。
基本要点
首先,你的应用程序:
不能导致手机故障(比如崩溃或屏幕问题)
长时间/过度使用之后反应仍然很快
应用内的所有价格信息中不能用固定值代替可变变量
不要使用任何SDK里面的私人API
不要使用任何SDK文档里面没有列出的功能
不要提及用户设备上不存在的硬件功能
如果需要网络连接,在没有网络的情况下要告知用户
不要(过度)模仿任何本地应用程序
不要(过度)山寨某个本地应用的功能
运行若干次之后不要过期或停止工作
不要使用任何未经批准的硬件配件
不要包含种族主义内容、过长的暴力图片、性和裸体相关的图片
不要“无意中”发生这样的事情:不受限制的网页浏览、显式歌词、未经过滤的图书
不要恶搞知名的公众人物,不管是死是活
不要包含能够执行下载文件的脚本解释器、插件或其它运行时(runtime)
不要使用连续震动
在每个输入区域使用相关的键盘(比如在输入手机号的地方要调出数字键盘)
在表格视图下,如果选中多行会调出另一个视图的话,那么应该取消选中当前视图中的行
仅在连接WiFi的情况下才能播放视频或下载其它大型文件
如需发送私人数据到服务器,需要告知用户,并提供取消选项
不要偷偷使用摄像头或话筒
使用GPS功能是为了给用户带来切实的好处,而不是仅仅是广告或跟踪
绝不要崩溃
遵守苹果的用户界面指南(Human Interface Guidelines)
一定要好好看,以下是一些常见的错误:
应用看上去设计精美、品质上乘
本地按钮图标与其本地动作保持一致
活动指示图标不能转个没完没了
触碰之后可以激活按钮
屏幕布局可以处理好高度加倍的状态栏(比如通话期间)
停止应用时应保存状态,下次启动时可以恢复
如果支持横屏模式,横屏设计也要很美
iPad特别注意事项:
你的应用应该从各个方向都能使用,如果仅支持横屏和竖屏,那么上下两个方向都要支持
弹出窗口里面不应该包含其它弹出窗口,也就是选择弹出窗口里面的东西不会激活另一个弹出窗口Y
一次不能弹出两个及以上窗口
提交应用程序文件时的细节:
程序文件名字和iTunes应用商店里面显示的名字要一致,或者是缩写
iTunes中的描述要准确描述应用的功能,说到做到
iTunes描述不包括价格信息
iTunes描述中不能包括Android、黑莓等苹果竞争对手的名字
iTunes描述不能提及尚未发布的iOS版本
iTunes关键词要和应用功能相匹配
iTunes关键词不能包含其他应用的名称
如果你的应用售价超过100美元或者应用内购买金额超过100美元,那么应该标记为17+
应用截屏不能包含错误状态,包括iAd的错误
应用分类与其功能相符
应用中的彩蛋无伤大雅,需要在演示账户中透露
提供各种尺寸的图标:57,72 (iPad),114,512
不同尺寸的图标都包含同样的内容
版本号大于等于1.0
info.plist文件中所需要的设备功能和应用的实际需求相符
应用使用情况和操作系统版本兼容性相符
NSZombieEnabled设为NO
如使用推送通知,需要在entitlements.plist中添加用于“aps-environment”授权信息
若使用推送通知,你的应用ID必须已经激活推送通知功能
在更新iTunes的“新功能”介绍时,内容要和应用实际变化相符
更新应用时,要做到名副其实,并且更新能够被用户发现
更新后的应用版本号要大于上个版本
杂项:
应用要有足够大的市场,比如不能直供小部分人私下里使用
应用里不能存在已经作废的和未来版本发布有关的按钮和功能
简化(Lite)版应用必须能用;也就是说也要做到名副其实
简化(Lite)版应用不能有时间限制
简化(Lite)版应用不得显示完整版应用的价格
作为应用的一部分,应用加载的网页必须是线上的,并且可用
任何相关的email地址都必须存在并且可用
所有应用升级和其他交易都必须通过苹果应用商店完成
应用不能是一个简单的浏览器窗口中的的网站
应用必须满足任何相关的管制规定,比如涉及医疗的应用
若使用加密,必须已经通过BIS注册,并能提供文档
如果你的应用需要登录,需要提供测试账户
如果应用使用MapKit,不得隐藏或掩饰Google Logo
如果使用摄像头,不得关闭快门声音
版权、商标、所有权
能证明你拥有或有权使用应用中的所有代码
能证明你拥有或有权使用应用中的所有作品
能证明你有权使用应用中的所有品牌名、公众人物名和其他商标材料
比如图片和图标不能有偏光效果的边界
比如图片和图标不能包含iPhone和其他苹果产品
你能证明拥有或有权使用应用中的所有视频、音乐和歌词。
欢迎加群互相学习,共同进步。QQ群:iOS: 58099570 | Android: 330987132 | Go:217696290 | Python:336880185 | 做人要厚道,转载请注明出处!http://www.cnblogs.com/sunshine-anycall/archive/2012/08/27/2658145.html
开放平台:Parse for iOS
引言:
Parse一款基于Baas的后端云存储服务平台,为开发者提供云端数据存储和读取的能力,Parse团队在其SDK方面花费了大功夫,实现了很多非常有用的功能.并且,非常的稳定,兼容和灵活性,相对于其他Baas平台,Parse在上手方面是最为容易的.
Parse的特性如下:
1:自定义数据字典
2:消息推送
3:地理位置
4:数据缓存
5:离线数据同步
6:云端自定义代码
7:二进制文件读取
参考资料:
1:Parse的主页
https://www.parse.com
2:
安装:
1.首选的安装方式是跟着Parse自家提供的官方起步教程即可完成,非常简单!
2.也可以用CocoPods,只是SDK太肥了,而且装的话,还会有一个Facebook SDK的依赖.
使用:
Parse支持的数据类型主要如下:
Number: 对应各种类型,包括:整形,浮点型 转换成NSNumber后存储到Parse Cloud
Date: 对应NSDate
Array:对应NSArray. 万能的数组(Parse的强大之处)
String:对应NSString
Null: 很少用到
Pointer: 指针:相当于表与表之间的外键关系, 只存储着某个对象的ID
Relation:关系:应付多对多关系时的方案,但是可以用Array达到同意的功能.
查询:
Parse设定了尽可能多样的查询方式,并且它还支持NSPredicate. 这对于使用过CoreData的人来说,是比较容易上手的.
首先来说说Parse提供哪些查询接口
时间:
查询创建时间大于某个时间的数据行:
NSDate *lastQueryDate = [self lastQueryTime];
if (lastQueryDate == nil) {
lastQueryDate = [NSDate date];
}
[query whereKey:@"createdAt" greaterThan:lastQueryDate];
查询缓存策略:
kPFCachePolicyIgnoreCache 查询不从缓存加载结果或将结果保存到缓存。默认缓存策略为 kPFCachePolicyIgnoreCache。kPFCachePolicyCacheOnly 查询会忽略网络,仅从缓存加载结果。如果没有缓存的结果,则会引发 PFError。kPFCachePolicyNetworkOnly 查询不从缓存加载结果,但会将结果保存到缓存。kPFCachePolicyCacheElseNetwork 查询首先尝试从缓存加载结果,但如果加载失败则从网络加载结果。如果缓存和网络加载都不成功,则会出现 PFError。kPFCachePolicyNetworkElseCache 查询首先尝试从网络加载结果,但如果加载失败则从缓存加载结果。如果网络和缓存加载都不成功,则会出现 PFError。kPFCachePolicyCacheThenNetwork 查询首先从缓存加载结果,然后再从网络加载。在此情况下,实际上会调用两次回调 - 第一次针对缓存的结果,随后针对网络结果。由于会在不同的时间返回两个结果,因此该缓存策略不能与 findObjects 同时使用。
Push:
官方提供了一个详细的消息推送配置流程:
https://parse.com/tutorials/ios-push-notifications
Parse远程推送教程实在是太详细了,图文并茂.
在这里我简单复述了一下整个过程方便理解:
1.申请苹果的开发者招生计划,并成功激活.
2.通过本地的Mac系统生成一个证书签名请求(Certificate Signing Request),
3:接下去苹果开发者主页的Member Center(会员中心)创建一个新的App IDs. 并通过证书签名请求激活这个App IDs的远程推送服务功能.
4.下载这个App IDs的推送许可服务,并通过钥匙访问串导出密匙(p12).
5.最后生成这个App IDs的描述文件,并应用到工程中.
6.编写Parse所提供的Push的相关API代码. 实现远程消息推送.
其中有一个步骤是当你通过Certificate Signing Request(证书签名请求)激活了苹果的远程推送通知服务以后.
并下载了推送许可证书:aps_development.cer. 教程中要求从钥匙访问串(Keychain Access)中导出.p12后缀的密匙.
在导出时有两点需要注意:
1:请在名称为 Apple Development IOS Push Services : ***** 或 Apple Prodoction IOS Push Services : ***** 的栏位上直接右键,如下图:
图中方框中的三角箭头,请直接无视和忽略他。 里面是证书的创建者信息而已。 虽然也可以导出p12, 但是这个p12是无效(请特别注意)
2:在导出时要求你输入密码,请直接忽视,也就是空密码即可,否则Parse 的 App Settings - Push Notifications里要求上传的p12密匙无法成功.
最后还有一个细节要注意,也就是当你的产品成功发布到应用商店以后,你之前用来测试的开发版本证书,应该替换为发布版本证书(aps_production.cer). 否则从App Store上面下载的应用将无法收到消息推送.. 所以,你需要重新上传发布版本的密匙.跟开发版本的上传方式一样. 成功后如下图所示:
总结:
可能遇到的问题:
1:编译问题.
解决方案:
http://stackoverflow.com/questions/15457136/parse-for-ios-errors-when-trying-to-run-the-app
文章
存储 · 缓存 · 开发工具 · iOS开发 · 开发者 · 数据安全/隐私保护 · Serverless · 定位技术 · API
2013-03-07
【转】APNs消息推送完整讲解
https://developer.apple.com/library/ios/#documentation/NetworkingInternet/Conceptual/RemoteNotificationsPG/IPhoneOSClientImp/IPhoneOSClientImp.html#//apple_ref/doc/uid/TP40008194-CH103-SW1
在项目的AppDelegate中的didFinishLaunchingWithOptions方法中加入下面的代码:
Ios代码
[[UIApplication sharedApplication] registerForRemoteNotificationTypes:(UIRemoteNotificationTypeAlert | UIRemoteNotificationTypeSound | UIRemoteNotificationTypeBadge)];
通过registerForRemoteNotificationTypes方法,告诉应用程序,能接受push来的通知。
在项目的AppDelegate中添加下面的方法来获取deviceToken:
Ios代码
- (void)application:(UIApplication *)app didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken {
NSString *token = [NSString stringWithFormat:@"%@", deviceToken];
NSLog(@"My token is:%@", token);
}
- (void)application:(UIApplication *)app didFailToRegisterForRemoteNotificationsWithError:(NSError *)error {
NSString *error_str = [NSString stringWithFormat: @"%@", error];
NSLog(@"Failed to get token, error:%@", error_str);
}
获取到的deviceToken,我们可以提交给后台应用程序,发送通知的后台应用程序除了需要知道deviceToken之外,还需要一个与APNS连接的证书。
(自iOS开发文档"Local and Push Notification Programming Guide"里与iOS相关的部分翻译)
-----------------------------------------▲客户端处理------------------------------------------
建议每次程序启动的时候都调用registerForRemoteNotificationTypes来重新获取设备相关的token,而不要缓存token.
这是因为,如果用户重装了iOS或者用户换了设备并且恢复程序备份到一个新的设备,都将导致这个token值不一样。
当iOS收到远程消息时,
如果应用程序isn't running in the foreground,iOS会处理这个消息,比如弹出一个框、在应用程序的icon上显示红色数字。
然后如果用户通过点击弹框进入程序,iOS会启动程序并调用application:didFinishLaunchingWithOptions并且拿远程消息的payload进行传参.
如果用户直接点击app icon进入程序,iOS会启动程序并同样调用application:didFinishLaunchingWithOptions,但是传参将不会有远程消息的任何信息。
如果应用程序is running in the foreground,就会调用application:didReceiveRemoteNotification.
----------------------------------------------▲APNs----------------------------------------------
IOS设备会持久连接APNs以接受远程消息。
provider发送消息到APNs,然后APNs再发送到目标IOS设备。(这个传输是单向的。)
这个消息的内容含两部分:设备token和payload.
反馈服务--
有时候APNs发送消息到某设备(token)某程序(bundle identifier)但是该设备并没有这个程序,多次这种情况之后,APNs会通知provider,通过其连接的一个反馈服务(a feedback service)。
反馈服务为每一个程序维护了一个失效设备列表,provider应该获取这个列表从而停止向APNs发送以这些设备为目的地的某程序的远程消息。
APNs的安全架构--
provider需要一个有效证书才能和APNs连接(这个证书有目标程序的Bundle identifier信息)。
与APNs连接后,provider向APNs发送的消息带有设备token(由目标程序连接provider然后发来token),APNs以此找到目标设备,然后看目标设备里的目标程序有接受推送的证书,APNs以此验证给目标设备的目标程序发送的消息是合法的。
注意:远程消息是不可靠的。
----------------------------------------▲Provider-------------------------------------------
Payload--
最多256bytes。
本地化alert:
eg:"alert" : {"loc-key":"GAME_PLAY_REQUEST_FORMAT","loc-args":["Jenna","Frank"]},
程序包里面的本地化字符串如下:
"GAME_PLAY_REQUEST_FORMAT" = "%@ and %@ have invited you to play Monopoly";
这样,最后显示alert的字符串就是:
"Jenna and Frank have invited you to play Monopoly"
一个JSON Payload的完整例子(为了性能,建议去掉空白字符)
{
"aps" :
{
"alert" : "Message received from Bob",
"badge" : 5,
"sound" : "bingbong.aiff"
},
"myCustomData" : ["bang", "bang、bang、bang"],
"myCustomData2": 42
}
----------------------------------------▲部署-------------------------------------------
要部署provider端client/server程序,需要来自苹果的SSL证书。下称provider证书。
provider证书对应于特定的iOS Application(Bundle identifier)。
同时,provider证书分为开发测试和产品两种版本,对应于两种APNs环境:
Sandbox(Development) :可用模拟器测试。地址是gateway.sandbox.push.apple.com: TCP 2195
Production(Distribution):gateway.push.apple.com: TCP 2195
同 时,provision profile也对应了两个版本:Development和Distribution.(The Distribution provision profile is a requirement for submitting your application to the App Store.)
可以在xcode里看iOS application所处何环境:看编译选项里的code-signing identity,如果是"iPhone Developer:Firstname Lastname"证书与provisioning profile匹配成对,说明是sandbox环境。如果是"iPhone Distribution:Companyname"证书与provision profile匹配成对,说明是production环境。根据release和debug分别配置code-signing identity选项的证书将会是一个好主意。
注意:尽管SSL证书(即provider证书)没有放到iOS application的providion profile里,但是ios application是否支持远程消息推送依然取决于profile,因为profile内含开发者证书、设备ID、application ID(Bundle identifier)、"是否支持推送"(在苹果开发者网站上配置证书的时候配置的)等信息。(The provisioning profile is a collection of assets that associates developers of an application and their devices with an authorized development team and enables those devices to be used for testing.The profile contains certificates,device identifiers,the application's bundle ID,and all entitlement,including <aps-environment>.)
以文本方式打 开*.mobileprovision,会看到里面类似xml格式,其中<key>Entitlements</key>里包含 了<key>aps-environment</key>,说明支持远程消息推送,<key>aps- environment</key>下面的<string>说明是调试版本还是发布版本(对应于Sandbox环境和 Production环境)。
●安装证书到服务端
你应该安装SSL证书和私匙到你的provider程序运行的服务器上。
步骤如下:
0.安装该证书到mac电脑的钥匙串。
1.打开钥匙串,在左侧面板上点击我的证书栏。
2.找到这个SSL证书,展开会看到证书和私匙。
3.我们选中证书和私匙,然后导出为"个人信息交换文件"--即扩展名为p12的文件。
4.provider服务器程序最好用Ruby和Perl这类语言,可以方便的处理"个人信息交换文件"里的证书。mac下打开终端输入以下命令以把证书转换为这类语言乐于交流的格式:
openssl pkcs12 -in CertificateName.p12 -out CertificateName.pem -nodes
5.把这pem文件拷到服务器上并安装到某个适当的位置。
----------------------------------------▲Provider与APNs连接----------------------------------------
●连接APNs之前provider需要具备什么
APNs提供的连接接口是二进制的、streaming TCP socket、异步 的。
Production环境是通过gateway.push.apple.com:2195,Development环境是gateway.sandbox.push.apple.com:2195。
Provider可以建立多个与APNs的连接。每个都得用TLS(or SSL)来建立安全通道,需要用到SSL证书(就是上面提到的provider连接APNs要用到的SSL证书)。
----------------------
Note 要建立与APNs的TLS会话,需要在provider服务器上安装Entrust Secure CA根证书。Moa OS X是默认已安装的,其他系统的话,可以没有安装,可以从Entrust SSL Certificates的网站http://www.entrust.net/下载安装根证书。
----------------------
●发送消息的二进制接口和消息的数据包格式
消息须是网络字节顺序(即大尾顺序),消息里面的payload部分不可以超过256字节,且不得以'\0'结尾。
消息格式见"The Binary Interface and Notification Formats"章节。
●The Feedback Service
feedback service包含了这样的列表:某iOS应用程序对应的"设备"("设备"用二进制格式的设备token来标识)。--这些设备是由于各种原因而不能接收APNs发来的消息。
Provider应该定期查询这个列表,并且作出对应处理,如:停止向这些的设备发送消息。
provider访问feedback server通过一个与发送消息类似的二进制接口。
Production环境通过feedback.push.apple.com:2196来建立连接,Development通过feedback.sandbox.push.apple.com:2196。
feedback service和发送消息是不同的服务接口(但都属于APNs),他的连接方式和发送消息是一样的。也要通过证书建立SSL连接,连接后你不需要发送任何命令,直接开始读取流一直读完为止,然后provider要解析读到的数据。
数据是由多个这样的格式组成的:
| 四字节时间 | 2字节的token 长度 | 32字节的设备token |
关 于"四字节时间":Provider需要判断对应设备的这个iOS应用程序有没有在该时间之后重新像provider发送注册推送消息所获得的设备 token。如果没有,就认为该设备失效了,需停止向该设备发送消息。如果有,那就是这个设备失效过,但是现在又有效了,只是feedback service还没来得及刷新列表。
本文转自编程小翁博客园博客,原文链接:http://www.cnblogs.com/wengzilin/archive/2012/05/02/2479241.html,如需转载请自行联系原作者
文章
网络协议 · 网络安全 · iOS开发 · 安全 · 开发者 · 数据格式 · 缓存 · Ruby · 流计算 · XML
2017-11-23
三大方案推进 | 带你读《5G承载关键技术与规划设计》之五
5G 承载的标准化与进展
2.1 5G 承载的标准化进展
| 2.3 SPN 方案推进 |
2017 年 6 月,受中国多个成员单位文稿驱动,ITU-T SG15 正式启动了 5G传送需求和架构方面的研究工作,包括 5G 传输带宽需求、5G 业务时延需求和时延指标分配、5G 传输网络架构、传送网支持 5G 切片、时间同步性能指标和分配、网络 SDN 管控等多方面内容。中国移动联合中国信息通信研究院、华为技术有限公司、中兴通讯股份有限公司和烽火科技集团等提交了 5G 传送需求、SPN 技术方案架构等多篇文稿,推动 SG15 的第三工作组(WP3,WorkingProject 3)立项的技术报告《支持 IMT-2020/5G 的传送网络》。2018 年 1 月的 ITU-T SG15 全会,重点对由中国运营商提出的 SPN 技术方案以及围绕该方案的诸多文稿进行了详细讨论和分析。经过积极有效的讨论,会议接受了由中国移动、科研机构、设备制造商提交的众多文稿提案。全会对5G 传送技术报告《支持 IMT-2020/5G 的传送网络》的内容达成一致,并发布了第一版本;另外,新立项了《支持 IMT-2020/5G 的传送网特性》(G.ctn5g)新标准项目,标志着 ITU-T 在 5G 传送标准研究进入了新阶段,中国移动和相关单位将继续联合推动 SPN 技术作为该标准的重要研究内容。由于 SPN 是一项新技术,其得到国内外多厂家支持。会议讨论非常热烈,中国移动的专家和国内其他单位的专家针对会议提出的争论焦点进行了详细、准确的分析和完整的回答,消除和辨明了争论中的疑虑。这些问题将在今后的设备开发中予以考虑和解决。
2.3.1 G.ctn5g 5G 传送架构标准
G.ctn5g 5G 传送架构标准计划完成时间是 2019 年 7 月,研究范围包括规范支持 5G 前传、中传和回传的 5G 传送需求、网络架构、接口、OAM、同步和可靠性等传送功能特性。项目的主要内容如下:(1)研究 5G 前传、中传和回传需求;(2)研究 5G 传送组网架构;(3)研究支持 5G 网络切片的传送网方案;(4)研究传送网络 OAM 功能要求;(5)研究 5G 传送网络的频率和时间同步;(6)研究 5G 传送网络的可靠性技术。
2.3.2 G.mtn 城域传送网接口标准
G.mtn 城域传送网接口标准的立项时间是 2018 年 10 月,计划完成时间是2020 年,其研究范围包括规范城域传送网新接口的段层和通道层,采用 50GE/100GE/200GE/400GE 可插拔以太网光模块,支持 5G 前传和回传网络。该标准的主要研究内容如下。(1)通道层支持灵活连接、OAM(包括 CC/CV、DM/PM 和 SNCP)保护。(2)帧格式将最大化重用灵活以太网(FlexE,Flex Ethernet)逻辑,支持 50GE/100GE/200GE/400GE 多端口绑定,使用有效的 IEEE 802.3 第 82 章的64B/66B 块,并允许以与 FlexE 相同的方式使用较低层的以太网堆栈。(3)支持任意 N×5 Gbit/s 客户速率,支持对 FlexE 进行运营管理与维护(OAM,Operation Administration and Maintenance) 和 自 动 保 护 切 换(APS,Automatic Protection Switching)的必要扩展来支持网络应用功能。
| 2.4 M-OTN 方案推进 |
在 2016 年 9 月的 ITU-T SG15 全会上,有些厂商提出在 Q11 小组内启动使用 OTN 承载无线信号的研究,号召大家提出提案讨论这个话题。在随后的 Q11中间会议上,中兴通讯等多家厂商提出了关于 OTN 承载 5G 信号的需求以及考虑,为了深入探讨这些需求以及解决方案,Q11 启动了为期两个月的通信活动来号召各厂商参与讨论,期间中兴通讯股份有限公司输出一篇提案,从应用场景、参考模型、业务类型、性能需求等方面描述了 OTN 承载 5G 所需要解决的问题。在 2017 年 6 月 ITU-T SG15 全会上,越来越多的厂商参与到 5G 传送的研究中,在 OTN 方向上,多个成员提出了组织一个关于 OTN 承载 5G 信号的项目。针对越来越多关于承载 5G 信号的提案,由于这些提案涉及 Q11、Q12、Q13 等多个研究小组,会上决定在 WP3 内协调这些工作,由 Q11 与 Q12 牵头,收集5G 承载的需求,同时正式通过了《支持 IMT-2020/5G 的传送网络》技术报告的立项及 5G 传送标准的研究计划,将主要工作集中在《支持 IMT-2020/5G 的传送网络》报告的完善和表决上。《支持 IMT-2020/5G 的传送网络》报告表决后,会驱动针对解决方案的立项,因此,在此次会议上,关于解决方案的立项提议并未得到通过。尽管此次会议大部分提案是关于需求的,也有厂商提出了基于OTN 的 5G 前传解决方案,在现有的灵活光传送网(FlexO)基础上进行优化,在 FlexO 中增加时隙,减少映射复用层次,优化 OTN 的 OAM 功能,进一步满足 5G 前传苛刻的需求。在 2017 年 10 月的 ITU-T SG15 Q11&Q12 联合会议上,中国电信等提出了 M-OTN 的概念以及基于 FlexO 技术的解决方案。在 5G 前传场景下,为了降低时延,只需要一层的复用结构。业务信号首先映射进路径中,路径可以是灵活光数据单元(ODU,Optical Data Unit)、FlexO 时隙等,然后所有的路径信号复用到通道中,通道可以是 OTU、FlexO 等。M-OTN 在未来会进一步扩展,不仅要满足前传低时延需求,还会考虑如何满足中传以及回传灵活组网的需求,需要考虑在增强 OTN 分组处理能力的基础上,增强路由转发功能。
2.4.1 G.sup.5gotn 增补文件
G.sup.5gotn 增补文件的计划完成时间是 2019 年 7 月,其研究范围包括OTN 在 5G 传送中的应用,现有 OTN 技术在 5G 承载中的应用方式,满足 5G承载需求。同时分析现有 OTN 技术在 5G 承载中存在的不足之处,为后续的标准化工作提供依据。该标准项目研究的主要内容如下。(1) 5G 传送网络架构。(2) OTN 支持的网络切片。(3) OTN 网络的频率和时间同步。(4)支持 5G 的 OTN 网络可靠性技术。
2.4.2 G.709.25-50 标准建议
G.709.25-50 标准建议的立项时间是 2018 年 10 月,完成时间为 2020 年。标准的研究范围包括定义新的 25G 和 50G OTN 帧格式、映射和复用方式等内容,以便使用可插拔以太网模块来降低设备和网络成本。这些接口将主要用于城域网,包括但不限于承载 5G、专线等业务。标准的主要内容如下。(1) 25G 和 50G OTN 接口应用场景描述:5G 前传、5G 回传接入层和部分汇聚层帧格式的选择:OTUk vs. FlexO。(2) OAM 和 开 销 选 择:OTUk 段 层 开 销 融 合 简 化 现 有 OTU/HO ODU/FlexO 的开销,ODU 层开销保持不变。
| 2.5 G.metro 方案 |
2011 年,中国联通首次在 ITU-T SG15 Q6 提出低成本城域 WDM 需求;DT、BT、AT&T 和软银等运营商根据自身网络提出不同需求。2014 年 4 月,在ITU-T SG15 Q6 立项成功。2014—2018 年,经过多次中间会议和全会,包括中国联通、AT&T、DT 等在内的 10 余个国际上主流运营商以及业内主要设备商和主流模块供应商参与了标准细节的讨论,并提供需求、技术分析、测试及仿真结果等文稿数百篇。2018 年 2 月 9 日,在日内瓦举行的 ITU-T SG15 全会上,中国联通牵头制定的 ITU-T G.698.4 标准(即 G.metro)正式通过,这标志着城域接入型 WDM 技术从标准逐步走向实际应用,期望为 4G/5G 前传网络快速部署提供经济合理和便于运维的方案。G.metro 规范了基于 10 Gbit/s 波长速率下的 20 km WDM 系统的应用标准,采用单纤双向和波长可调谐光模块,支持 20 波和 40 波配置,主要面向 4G 前传应用。计划下一版本规范 25 Gbit/s 波长速率,主要面向 5G 前传应用。G.metro 的技术特征如下。(1)高带宽并可自适应适配:利用可调激光器技术,可实现端口无关,波长自动适配;提供波长级连接,波道间独立工作,端口可独立升级。(2)时延小:采用零层 WDM 透明技术,对业务信号完全透明的类光纤传输,减少了电层封装和处理带来的时延和抖动,满足低时延业务的传送需求。(3)业务对称性好:G.698.4 标准采用单纤双向透明传输,支持业务信号的对称传输,可较好地支持移动前传以及时间同步信号的对称传递。
| 2.6 2019—2020 年 5G 传送标准的推进工作计划 |
2019—2020 年 5G 传送标准的推进工作规划见表 2.3。
| 3.1 大带宽增长需求 |
文章
运维 · 5G · SDN · 网络架构 · 计算机视觉
2019-12-20
分分钟搞定IOS远程消息推送
分分钟搞定IOS远程消息推送
一、引言
IOS中消息的推送有两种方式,分别是本地推送和远程推送,本地推送在http://my.oschina.net/u/2340880/blog/405491这篇博客中有详细的介绍,这里主要讨论远程推送的流程与配置过程。
二、远程推送机制的原理
1、从一张很火的图说起
搜索IOS远程推送,你总能看到一张如下的流程示意图,因为这张图确实很火,所以我也将它引用在此:
这张图示意的很清晰,大致意思是这样:你的应用服务端将消息发送到apple的APNS服务器,APNS服务器将消息推送到指定的Iphone,最后由Iphone负责将消息推送至你的APP。在此先不说这个过程是如何实现的,仅仅看这个流程,你可能会觉得,在你们服务端和客户端之间增加了一个apple的APNS,不是增加开发者的负担么?其实结果恰恰相反,因为apple对推送的统一管理,使我们开发者的工作变得异常简单。
2、服务端如何连接到客户端的
如果你是做android开发的,你一定非常了解长链接与心跳包。事实上,大部分的android应用的推送也确实是通过长链接来实现的。因为android系统的开放性,APP是很容易做到自启动和后台长链接的,而心跳验证,就是始终保证长链接属于接通状态,然后由服务端直接推送消息。如果IOS开发者也采用这种思路,就十分困难了,在IOS中想要保持一个APP服务始终不被系统杀死,我只能说太难了。通过上面的流程图,对比android的推送思路,我们很容易明白,IOS中其实也始终有一个长链接,那就是系统本身,这个长链接始终与APNS服务器相连,然后统一管理所有应用程序的推送。
3、这是IOS推送机制的优势?
下面的这些,只是我个人的一些看法。系统并无优劣,优劣在于个人喜好。
1、因为推送的服务端是appleID的验证用户,推送可靠性会高。
2、所有推送消息由APNS统一管理,效率高。
3、在客户端只需系统维护一个长链接,节省了用户流量消耗和手机的性能消耗,并且提高了安全性,使得有恶意推送和流氓软件的几率降低。
三、分分钟让你的APP收到远程推送
1、工欲善其事、必先利其器——创建推送证书
(1)请求CSR文件
在MAC应用程序中找到钥匙串访问,打开它。
点击选项栏中的钥匙串访问中的证书助理:
选择从证书颁发机构申请证书:
填写电子邮件和名称,选择储存到磁盘,然后继续。
这时,我们存储的地方有了这样一个文件:CertificateSigningRequest.certSigningRequest。
(2)导出密钥文件
打开钥匙串,会发现多了一对密钥,名字就是上面你填写的常用名称。
我们选择专用密钥进行导出,然后设置一个我们自己的密码:
这时候我们又有了一个后缀名为.p12的文件。
(3)创建AppId
到https://developer.apple.com的member Center:
用你付过费的开发者appleID登陆后,选择Certificates:
如果你的项目已经创建了APP id,则可以不用重新创建,但是你创建的APP id必须要支持远程推送。如果还没有创建,点击加号,创建一个:
之后的界面中APP ID有两种类型:Explicit和Wildcard,分别是特殊的和通配的,我们需要推送功能,这个ID不能是通配的,所以我们选择第一个。
这里需要填的的Bundle ID必须和我们App中的一致:
在APP ID的服务设置中,将Push Notification勾选上,点击continue。
之后点击submit,最后点击Done。这时我们的APP IDs列表中会出现我们刚才创建的APP ID。
(4)创建证书
点击我们刚才创建的APP ID,你会看到Push Notification一行为未设定的。我们点击Edit。
在Push Notifications设置里是如下界面,development是开发证书,Production是产品证书,我们现在需要测试,所以用Development证书,上线时要使用Production证书。点击Create Certificate。
接着点击continue,如下界面会让我们选择一个CSR文件,我们第一步创建的文件在这里派上用场了,选择那个文件,点击Generate。
将创建好的证书下载到电脑中:
至此,我们已经有了三个文件了,分别是CSR文件,.p12文件,.cer文件。要将这三个文件放在同一个目录下。.cer文件分为测试和产品两个,需要哪个自行选择。写了这么多,我们的准备工作可算是做完了,不要灰心,其实你的推送工作基本上也就做完了。只是申请过程麻烦了一些,但工程的代码,我们几乎不用怎么配置。
2、兵马未动、粮草先行——服务端进行信息推送的设置
(1)处理证书
打开终端cd到我们上面得到的三个文件所在的目录。
在终端执行如下命令:
?
1
$ openssl x509 -in aps_development.cer -inform der -out PushCert.pem
aps_development.cer是刚才生成的.cer文件的文件名。会在当前文件夹中生成一个pem文件,这是我们服务端对应的证书。
再执行如下命令:
?
1
$ openssl pkcs12 -nocerts -out PushKey.pem -in key.p12
key.p12是上面生成的.p12文件的文件名。这时终端会让输入密码,这里的密码就是上面我们设置的密钥的密码。输入密码后回车,如果密码正确,会让我们输入新密码(一定切记),输入两次后,终端会提示成功创建PushKey.pem文件。
最后一步,将我们生成的两个pem文件和成为一个:
?
1
$ cat PushCert.pem PushKey.pem > ck.pem
(2)测试证书是否可用
在终端执行下面的命令:
?
1
$ telnet gateway.sandbox.push.apple.com 2195
等一小会,如果终端显示下面的情形,则证书正常。
然后执行如下命令:
?
1
openssl s_client -connect gateway.sandbox.push.apple.com:2195 -cert PushChatCert.pem -key PushKey.pem
输入密码后回车显示如下的结果则连接成功:
3、天涯海角、一步之遥——应用程序中的配置
在我们项目的AppDelegate中添加如下代码:
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
double version = [[UIDevice currentDevice].systemVersion doubleValue];//判定系统版本。
if(version>=8.0f){
UIUserNotificationSettings *settings = [UIUserNotificationSettings settingsForTypes:(UIRemoteNotificationTypeBadge|UIRemoteNotificationTypeSound|UIRemoteNotificationTypeAlert) categories:nil];
[[UIApplication sharedApplication] registerUserNotificationSettings:settings];
}else{
UIRemoteNotificationType myTypes = UIRemoteNotificationTypeBadge | UIRemoteNotificationTypeAlert | UIRemoteNotificationTypeSound;
[[UIApplication sharedApplication] registerForRemoteNotificationTypes:myTypes];
}
}
- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo{ // 处理推送消息
NSLog(@"userinfo:%@",userInfo);
NSLog(@"收到推送消息:%@",[[userInfo objectForKey:@"aps"] objectForKey:@"alert"]);
}
- (void)application:(UIApplication *)application didFailToRegisterForRemoteNotificationsWithError:(NSError *) error {
NSLog(@"Registfail%@",error);
}
-(void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken{
NSLog(@"%@",deviceToken);//这里的Token就是我们设备要告诉服务端的Token码
}
下面是网上搜的PHP服务端的代码:
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
<?php
//这里填写设备的Token码
$deviceToken = '74314cc9e8f747e2fa96c2c1585c830cdf994de6b453ce9fa1c09ba396b2f9e9';
//这里是密钥密码
$passphrase = 'abcabc';
//推送的消息
$message = '这是一条推送消息';
////////////////////////////////////////////////////////////////////////////////
$ctx = stream_context_create();
stream_context_set_option($ctx, 'ssl', 'local_cert', 'ck.pem');//ck文件
stream_context_set_option($ctx, 'ssl', 'passphrase', $passphrase);
// Open a connection to the APNS server
$fp = stream_socket_client(
'ssl://gateway.sandbox.push.apple.com:2195', $err,
$errstr, 60, STREAM_CLIENT_CONNECT|STREAM_CLIENT_PERSISTENT, $ctx);
if (!$fp)
exit("Failed to connect: $err $errstr" . PHP_EOL);
echo 'Connected to APNS' . PHP_EOL;
// Create the payload body
$body['aps'] = array(
'alert' => $message,
'sound' => 'default'
);
// Encode the payload as JSON
$payload = json_encode($body);
// Build the binary notification
$msg = chr(0) . pack('n', 32) . pack('H*', $deviceToken) . pack('n', strlen($payload)) . $payload;
// Send it to the server
$result = fwrite($fp, $msg, strlen($msg));
if (!$result)
echo 'Message not delivered' . PHP_EOL;
else
echo 'Message successfully delivered' . PHP_EOL;
// Close the connection to the server
fclose($fp);
?>
把上面的PHP文件和我们的ck文件放在同一目录下。在终端的当前目录下,执行如下命令:
?
1
$php push.php
如果我们的设备王略正常,就可收到推送的消息了:
四、几点注意
1、如果终端发送信息时提示密钥不可访问之类的错误,请检查是否cd到了当前目录,如果还存在问题,将密钥部分从新生成一次。
2、注意PHP代码中的字符为英文字符。
文章
PHP · 数据安全/隐私保护 · Android开发 · iOS开发 · 开发者
2016-05-06
ASP.NET Web应用程序和ASP.NET网站的区别
WebApplication编程模型的优点: ●网站编译速度快,使用了增量编译模式,仅仅只有文件被修改后,这部分才会被增量编译进去。 ●生成的程序集 WebSite:生成随机的程序集名,需要通过插件WebDeployment才可以生成单一程序集 WebApplication:可以指定网站项目生成单一程序集,因为是独立的程序集,所以和其他项目一样可以指定应用程序集的名字、版本、输出位置等信息 ●可以将网站拆分成多个项目以方便管理 ●可以从项目中和源代码管理中排除一个文件 ●方便的支持VSTS的Team Build方便每日构建 ●更强大的代码检查功能,并且检查策略受源代码控制 ●可以对编译前后进行自己规定的处理 WebSite编程模型的优点: ●动态编译该页面,马上可以看到效果,不用编译整个站点(主要优势) ●同上,可以使错误的部分和使用的部分不相干扰(可以要求只有编译通过才能签入) ●可以每个页面生成一个程序集(一般不会采用这种方式) ●可以把一个目录当做一个Web应用来处理,直接复制文件就可以发布,不需要项目文件(适合小站点) ●可以把页面也编译到程序集中(应该用不到,而且WebApplication也可以通过WebDeployment插件来实现) 还有一些不同和相同的地方: 都是设计网页的。 都可以添加ASP.Net文件夹 web应用程序Default.aspx显示有两个原有文件及Default.aspx.cs和Default.aspx.designer.cs;Web网站Default.aspx显示 有一个原有文件Default.aspx.cs。 web应用程序有重新生成和发布两项;Web网站只有一个发布网站。 web应用程序和一般的winform没有什么区别都有引用的是命名空间等; Web网站在引用后出现一个bin文件夹那里存放dll和pdb文件。 web应用程序可以作为类库被引用;Web网站则不可以作为类库被引用。 web应用程序可以添加ASP.Net文件夹中不包括bin、App_Code;Web网站可以添加ASP.Net文件夹包括bin、App_Code。 web应用程序还可添加组件和类;Web网站则没有。 源文件虽然都是Default.aspx.cs但是web应用程序有命名空间,多了一项System.Collections空间引用。 Web应用程序在修改了页面底层的代码之后需要重新进行编译, 而网站不需要重新编译 网站可以添加APS文件夹,Web应用程序不可以 Web应用程序的项目会生成Dll文件 网站在发布的时候,会自动生成Dll文件,但是每次的Dll文件名都不一样 Web应用程序会有解决方案和项目文件 最表面的区别就是你部署的时候 方式不同 应用程序你只需要页面和bin文件夹里面的dll文件 网站你则还需要把页面的后台文件一起部署 相对而言,大网站比较适合Web Application项目,小网站比较适合Web Site项目。
《无线网络:理解和应对互联网环境下网络互连所带来的挑战》——3.2 ZigBee
本节书摘来自华章出版社《无线网络:理解和应对互联网环境下网络互连所带来的挑战》一书中的第3章,第3.2节,作者:(美)杰克L.伯班克(Jack L. Burbank)等著,更多章节内容可以访问云栖社区“华章计算机”公众号查看
3.2 ZigBee
3.2.1 IEEE 802.15.4IEEE 802.15.4-2006标准[13]定义了低速率无线个域网(Low-Rate Wireless Personal Area Networks,LR-WPAN)的MAC层和PHY层规范。这种技术适合于数据传感器、无线自动化,或其他不需要高数据速率的应用,如高质量的视频会议。相比之下,IEEE 802.11系列技术运行在更高的数据速率上,可以很容易地支持带宽密集型应用。上述标准是IEEE 802.15.4-2003(ZigBee产品采用的主要技术)的修订版本。IEEE 802.15.4的主要目标包括:用户安装方便可靠的数据传输低成本短距离低功耗简单、灵活的协议设计和实现这些目标对于IEEE 802.15.4兼容产品的商业可行性是至关重要的。WPAN技术常应用于小型设备上,这些设备需要这些特点来实现可接受的用户体验。IEEE 802.15.4定义了一些关键技术特点:无线数据速率从20到250 kbps对等或星型拓扑操作灵活的16或64位寻址方案支持可选分配保护时隙(guaranteed time slots,GTS)载波监听多路接入/冲突避免(Carrier sensing multiple access with collision avoidance,CSMA/CA)的媒体接入方法可靠的协议功能,包括完整的确认低功耗能量等级检测链路质量评估和指示16个信道在2.4GHz频段,30个信道在915MHz频段,3个信道在868MHz频段本节所述的大部分内容均是基于或取自IEEE 802.15.4-2006标准[13]或ZigBee标准[64]。在IEEE 802.15.4协议中,有两种类型的设备:全功能设备(full-function device,FFD)和精简功能设备(reduced-function device,RFD)。在WPAN中,至少必须有一个FFD。FFD可以工作在三种模式下,而RFD只能在一种模式下工作。FFD的工作模式如下:PAN协调器:负责初始PAN网络的建立,并作为网络中的主要协调器。协调器:能够中继消息的设备。设备:不中继消息的设备。所有的FFD都可以与RFD或其他FFD通信,但RFD却只能与FFD通信。因此,RFD是简单设备。RFD的例子包括被动传感器,它不发送大量的数据,也不需要在多个设备之间协调网络功能。图3-15[13]说明了设备的类型和拓扑结构。
图3-15 IEEE 802.15.4规定的拓扑和设备类型,摘自参考文献[13]在星形拓扑中,所有设备都必须通过PAN协调器FFD进行通信,并且所有的星形拓扑相互之间都独立工作。然而,在对等拓扑中,FFD可以直接相互通信,而图中显示的RFD则只能与PAN协调器通信。虽然图中没有显示,对等PAN网络可以扩展到集群。可以确定FFD网关并在网络集群中分配角色,以便将数据从一个集群(包含一台单FFD的PAN协调器和至少一台其他设备)传递到另一个集群。IEEE 802.15.4标准规定了LR-WPAN技术规范的PHY和MAC层。图3-16[13]描绘了该标准的分层架构。可以看出物理层有两个服务接入点(SAP),用于与本地MAC层和远程PHY或MAC层交互:PHY数据服务接入点(PHY data service access point,PD-SAP)和物理层管理实体SAP(physical layer management entity SAP,PLME-SAP)。PD-SAP支持通过MAC协议数据单元(MAC protocol data units,MPDU)进行数据传输,而PLME-SAP允许与MAC层之间传输管理和协调指令。服务特定的汇聚子层SSCS定义在MAC层之上,用于处理特定的服务。例如,ZigBee联盟定义了特殊的SSCS和网络层来支持他们所需的应用。IEEE 802.2逻辑链路控制层(Logical Link Control,LLC)可以应用在SSCS之上,由一台设备实现,来为其他高层协议提供公共接口。
PHY层定义包含以下功能:激活和关闭RF收发信机、在一个定义的信道内检测能量、接收数据包的链路质量估计、为CSMA/CA提供空闲信道评估、信道频率选择,以及数据的传输与接收。此外,IEEE 802.15.4-2006还定义了4种PHY层方案:直接序列扩频(Direct sequence spread spectrum,DSSS)和二进制相移键控(binary phase-shift keying,BPSK)调制,工作频段为868MHz(数据速率为20kbps)和915 MHz(数据速率为40 kbps)。DSSS和偏移正交相移键控(offset quadrature phase-shift keying,O-QPSK)调制,工作频段为868MHz(100kbps)和915MHz(250kbps)。并行序列扩频(Parallel sequence spread spectrum,PSSS)、BPSK和幅移键控(amplitude shift keying,ASK)调制,工作频段为868和915MHz(两种频段的数据速率均为250 kbps)。DSSS和O-QPSK调制,工作频段为2.4 GHz(250 kbps)。最初的IEEE 802.15.4-2003规范定义了一种工作在868MHZ和915MHz频段的BPSK PHY,数据速率分别为20kbps和40kbps,和一种工作在2450MHz频段的O-QPSK PHY。这些规范形成了当今ZigBee设备的基础。表3-10[13]总结了IEEE 802.15.4-2006的工作频段和数据速率。摘自参考文献[13]。IEEE 802.15.4的信道分配由信道“页面”的分配来决定,每个页面都对信道分配有一个特殊的定义。信道页面的使用是因为考虑到预期增加的频段和为这些设备分配的频段。信道页面0目前包含最多的信道分配,也最为常见。信道页面0在两个频段上总共定义了kmax = 27个信道,其中16个信道定义在2450MHz频段,10个定义在915 MHz,1个定义在868MHz。信道页面0的中心频率定义如下所示:
其他信道页面在参考文献[13]中均有相应的定义,文中期望随着频率分配方案的改变将会定义更多的信道页面。868/915 MHz BPSK PHY采用一个码片调制序列和差分比特编码。这是通过图3-17[13]所示的三阶段操作实现的。
图3-17 868/915 MHz BPSK PHY实现框图,摘自参考文献[13]在第一阶段,差分编码器将当前输入比特与前一输入比特做异或操作。比特到码片转换器以比用户数据速率快得多的速率将输入比特转换为DSSS码片。在这种情况下,868 MHz频段的码片速率是300kchips/s,915MHz频段的码片速率为600 kchips/s。868MHZ和915MHz频段的符号速率分别为20和40 ksymbols/s。输入比特“0”的码片表示为{111101011001000},输入比特“1”的码片表示为{000010100110111},其为输入比特“0”的码片表示的二进制补码。最后,BPSK调制器使用升余弦滤波器对信号做成形处理。868/915 MHz ASK PHY使用一个多码调制方法,称为并行序列扩频(PSSS)。在每个数据符号传输期间,868MHZ和915MHz频段分别有20和5个信息比特,每个符号均被调制为长度为20或5的正交伪随机(pseudorandom,PN)序列。每一个PN序列线性相加,构成一个32码片符号。对于868MHz频段,32码片符号为一个多级64码片半符号,而对于915 MHz频段,则是一个完整的32码片符号。图3-18[13]描绘了这种结构的实现框图。
图3-18 868/915 MHz ASK PHY实现框图,摘自参考文献[13]如图中所示,PHY包头和有效载荷比特的发送首先通过比特到符号转换器,然后通过符号到码片转换器,最后到ASK调制器。然而,同步头的发送则是单独通过BPSK调制器。相对于其他模块,符号到码片映射在这个结构中是较为复杂的。图3-19[13]描绘了符号到码片映射。在图中,每一比特(0或1)转换为一个数据值,{?1}对应比特0,而{+1}对应比特1。对应的数据值乘以集合中的序列。然后将这些相乘得到的序列线性叠加,并采用预编码操作。之后,采用平方根升余弦脉冲成形方法对得到的码片序列做ASK调制。868 MHz频段的ASK符号速率为12.5 ksymbol/s,915 MHz频段为50ksymbol/s。这种方法的更多细节,包括实际序列值、升余弦滤波器公式,可以参见参考文献[13]。
图3-19 868/915 MHz ASK PHY中的符号到码片映射,摘自参考文献[13]868/915 MHz O-QPSK PHY配置工作在100 kbps的数据速率,并使用16阶调制方式。在每个数据符号周期,利用4个信息比特从16个PN序列中选取1个发送。然后,将这些连续符号对应的PN序列串接在一起,并采用O-QPSK调制方法对聚合生成的序列进行调制。图3-20[13]给出了这种PHY的实现框图。应该指出的是,2450 MHz O-QPSK PHY具有相同的实现流程。
图3-20 868/915和2450 MHz O-QPSK PHY实现框图,摘自参考文献[13]表3-11提供了4比特数据符号与相应码片值之间的映射关系。这些序列采用半正弦脉冲成形方法调制在O-QPSK载波上。具有偶数索引值的码片调制在同相(I)载波上,而具有奇数索引值的码片调制在正交(Q)载波上。868 MHz频段的码片速率为400kchips/s,915MHz频段的码片速率为1Mchips/s。相比I相码片,Q相码片延迟了一个码片周期。
摘自参考文献[13]。相比于868/915MHz O-QPSK PHY,2450MHz O-QPSK PHY使用了类似的16阶调制方法,只是码片有32个值,而不是16个值。表3-12总结了2450MHz O-QPSK PHY的符号到码片的映射[13]。在PHY层,储存数据的主要单元称为PHY协议数据单元(PHY protocol data unit,PPDU)。这个数据包由3个基本部分构成:同步头(Synchronization header,SHR):用于接收机同步和锁定PHY头(PHY header,PHR):包含帧长信息可变长有效载荷:包含其他层包头和用户数据
摘自参考文献[13]。图3-21[13]说明了PPDU的结构。如图所示,前导码字段用于码片与符号同步,并且根据所使用的频段和调制方式,其长度在3.75~5字节之间可变。帧起始分隔符(start-of-frame delimiter,SFD)字段指示SHR的结束和数据包数据的起始。该字段的长度也是可变的,在0.625~2.5字节之间。有效载荷是PHY服务数据单元(PHY service data unit,PSDU),包含用户数据和在设备上实现的通信协议栈的相关层的包头。
图3-21 PPDU结构,摘自参考文献[13]表3-13[13]总结了标准中定义的前导码以及SFD字段的字节长度和符号数。
摘自参考文献[13]。在PHY层,每个SAP是通过一组原语指定的,这些原语具有SAP所支持的特定功能。例如,为PD-SAP定义了如下原语:请求将MPDU从MAC层传输到PHY层,确认从一个本地节点(本地PHY实体)传输一个MPDU到一个远端节点(对等PHY实体)的结束,或对一条从MAC层通过SAP发送到PHY层的请求原语进行确认。这些原语提供了在可控方式下在MAC层和PHY层之间传输用户数据的基本功能。与其他技术(如IEEE 802.16)相比,IEEE 802.15.4的原语集规模很小,这使得协议的复杂性和实现成本较低。表3-14[13]总结了PD-SAP原语及其功能。在每一条原语项中,原语类型用斜体表示,原语类型后面是每种类型功能的简要说明。
摘自参考文献[13]。表3-15[13]总结了PLME-SAP原语和相关功能。在每一条原语项中,原语类型用斜体表示,原语类型后面是每种类型功能的简要说明。
改编自参考文献[13]。IEEE 802.15.4-2006中的MAC层规范分为两个部分:MAC公共部分子层(MAC common part sublayer,MCPS)和MAC层管理实体(MAC layer management entity,MLME)。以下是MAC层的部分功能:网络信标的协调器产生与网络信标同步支持PAN关联和取消关联安全性CSMA/CA信道访问机制处理/维护GTS对设备的可用性维护对等设备之间的可靠链路(MAC层)
图3-22[13]详细说明了MAC层的高级架构。这里,MLME包含MAC PIB,它是一组以通过MLME的两个SAP访问或设置的属性。MAC层提供的服务主要有2个:数据服务:通过CPS和相关联的SAP(MCPS、PD)访问管理服务:通过MLME-SAP访问摘自参考文献[13]。PD-SAP和PLME-SAP与PHY通过接口相连,而MCPS-SAP和MLME-SAP与服务特定汇聚子层(service-specific convergence sublayer,SSCS)通过接口相连,如ZigBee规范[64]中所定义的那样。在SSCS子层,数据单元以SSCS协议数据单元(SSCS protocol data units,SPDU)的形式在对等SSCS实体之间传递。应当指出的是,这些SPDU被封装在由MAC层处理的MAC服务数据单元(MAC service data unit,MSDU)中。图3-23[13]描绘了MAC帧的一般格式。MAC帧头(MAC header,MHR)由帧控制字段、序列号、目的PAN ID、目的地址、源PAN ID、源地址和辅助安全报头组成。MAC有效载荷包含帧有效载荷以及MAC帧尾(MAC footer,MFR),其中,帧有效载荷中包含用户数据在内的高层信息,MAC帧尾中包含帧校验序列信息。
图3-23 IEEE 802.15.4-2006中MAC格式。摘自参考文献[13]帧控制表征帧的类型、地址字段和其他控制标志。主要有四种帧类型:信标、数据、确认和MAC命令。不是所有的帧都包含图3-22所示的所有字段。关于帧类型更详细的内容见参考文献[13]。序列号字段表征每个帧的序列ID。对于信标帧,它指定信标序列号(beacon sequence number,BSN),而对于数据、确认或MAC命令帧,它指定数据序列号(data sequence number,DSN)。当目标PAN ID字段存在时,它表征用于预定接收机PAN标识符的唯一ID。当目的地址字段存在时,它表征接收机设备的唯一地址ID。当源PAN ID字段存在时,它指定用于发射机PAN标识符的唯一ID。当源地址字段存在时,它表征发射机设备的唯一地址ID。当辅助安全报头字段存在时,它提供安全机制所处理的信息,包括帧保护(安全级别)信息和在MAC安全PIB中使用的密钥。帧有效载荷字段包含四类帧的特定信息。它可能包括用户数据、信标标识符信息或MAC命令。帧校验序列(frame check sequence,FCS)字段长为16比特,并且采用ITU-T的CRC,计算帧中MHR和MAC有效载荷部分的CRC。它用于错误检测。MAC命令帧为IEEE802.15.4中的MAC控制提供了主要方法。具体而言,共有9种MAC命令帧:关联请求:请求通过PAN协调器或协调器关联到PAN。关联响应:允许PAN协调器或协调器对关联请求做出响应。取消关联通知:PAN协调器、协调器或关联设备可以发送取消关联通知,以通知设备与PAN取消关联数据请求:由设备发送,向PAN协调器或协调器请求数据PAN ID冲突:当PAN ID已被使用或冲突时,由设备发送给PAN协调器孤立通知:已关联的设备与协调器失去同步时使用。信标请求:设备在扫描过程中用来查找范围内的所有协调器。协调器重置:由PAN协调器或协调器在收到孤立通知后或者当任何PAN配置属性由于MLME-START/Request原语而发生改变时发送。GTS请求:已关联设备发给PAN协调器,用来请求分配一个新GTS,或释放已经存在的GTS。对于数据服务,有两条原语可以使用。表3-17[13]总结了这两条原语。
改编自参考文献[13]。MCPS的主要功能是数据传输。图3-24[13]描绘了从发射机到接收机的数据传输过程。这里,发送设备生成从上一层到MAC层的MCPS-DATA.request,然后创建一个数据帧,并通过其PHY层将这个帧传送到接收设备的MAC层。如果收到请求,接收设备的MAC层将发回一个确认,并传送一条MCPS-DATA.indication消息,指示MAC层已经传送一个SPDU到上一层。
图3-24 MAC数据传输序列,摘自参考文献[13]对于管理服务,有15条原语可供使用。表3-18[13]总结了这些原语。表3-19[13]总结了可被访问以执行MAC功能的MAC PIB属性。
改编自参考文献[13]。
摘自参考文献[13]。图3-25[13]详细阐述了IEEE 802.15.4标准中新设备通过关联方式加入一个特定PAN网络的具体流程。设备高层发送关联请求到设备MLME,然后设备MLME在MAC层形成相应的关联请求发送至协调器MLME。一旦协调器接收到该请求,将反馈确认信息并发送MLME.ASSOCIATE.indication消息到其高层。协调器高层确认收到该指示消息后,发送MLME.ASSOCIATE.response消息加以响应。等待一段时间后,协调器接收到设备MLME发送的数据请求,并且其MLME反馈ACK。然后,协调器MLME发送给设备MLME关联响应以确认关联。正处于关联的设备MLME发送针对该响应的ACK,同时将MLME-ASSOCIATE.confirm消息传送给设备高层。最后,协调器MLME向高层发送MLME-COMM-STATUS.indication消息,通知其有新的设备成功关联。相应地,设备发起的取消关联过程[13]如图3-26所示。
图3-25 关联过程,摘自参考文献[13]为建立PAN,FFD必须将自己作为PAN的协调器并创建PAN。该过程如图3-27所示[13],其中PAN通过PHY层、MAC层和高层实体之间的消息交换和事件驱动来完成建立。高层产生MLME-RESET.request消息并发送给FFD MAC层,然后MAC层发送PLME-SET-TRX-STATE.request消息关闭接收机。一旦该消息得到确认,高层确认该RESET信息后,发送含有PAN ID的MLME-SET.request消息到MAC层以建立初始PAN ID。一旦该消息得到确认,高层将发送MLME-SCAN.request消息来扫描潜在的信道和检测已存在的PAN。一旦该扫描得到了确认,其他检测能量的扫描将开始执行。此时,高层将发送其他具有地址分配机制(短地址示于图中)的MLME-SET.request消息,且基于扫描结果决定如何分配逻辑信道。一旦该命令得到确认,高层通过向MAC层发送MLME-START.request 消息开始运行这个新的PAN。MAC层发送PLME-SET.requset消息到PHY层以请求一个特定的物理信道,物理层发送PLME-SET.confirm消息指示成功。然后,MAC层将发送PLME-SET-TRX-STATE.request消息打开发射机并且接收确认消息。然后,发送PD-DATA.request和确认消息使得信标得以传输。另外,MAC层发送MLME-START.confirm消息到高层,并根据PLME-SET-TRX-STATE.request消息打开接收机然后确认。此时,完全建立了一个节点可加入的PAN网络,并能够发送/接收消息。
图3-26 设备发起的取消关联过程,摘自参考文献[13]
图3-27 FFD建立PAN的消息交换过程,摘自参考文献[13]3.2.2 ZigBee联盟和规范ZigBee联盟成立于2002年,是一个商界、学术界和政府机构的非盈利组织,其目的是开发“使智能设备更自由、更灵活,使世界更可持续”的标准[16]。具体地,联盟关注于为传感器、控制和监测应用开发绿色、低功耗和开放性低功耗的全球无线网络标准,同时具有高度的简单性和易用性。ZigBee联盟制定了多种规范和协议栈,ZigBee PRO利用IEEE 802.15.4-2003标准作为PHY层和MAC层的基准,同时定义了MAC层以上各层的规范,而ZigBee RF4CE利用IEEE 802.15.4-2006标准。本节其他部分将更详细地讨论ZigBee PRO规范[64]以详细论述IEEE 802.15.4。2011年,市场上55%以上的IEEE 80215.4兼容设备都是ZigBee设备,并且数量还在增加(请参考ZigBee官网,http://www.ZigBee.org)。图3-28阐述了ZigBee分层架构[64]。注意PHY层和MAC层是根据IEEE 802.15.4-2003标准定义的,而网络层和上层是由ZigBee规范定义的。在此我们讨论网络(NWK)层和应用(APL)层,并提供一些实例说明现在是如何使用该技术的。
图3-28 ZigBee分层架构,摘自参考文献[64]在ZigBee PRO中,NWK层用于将IEEE 802.15.4标准中的MAC层连接到相关联的APL层。同IEEE 802.15.4标准的MAC层和PHY层一样,NWK层存在两个主要的服务实体:网络层数据实体(Network layer data entity,NLDE)和网络层管理实体(Network layer management entity,NLME),前者用于传递数据,后者用于管理。SAP用于将上述这些实体连接到MAC层,NLDE提供如下服务:网络层分组数据单元(Network-level packet data unit,NPDU)的产生;基于网络拓扑的路由。NLME提供如下服务:新设备配置;网络初始化;加入、离开和重新加入网络;寻址;邻居发现;路由发现;接收控制;路由。ZigBee规范详细阐述了NWK层的服务原语,大致与IEEE 802.15.4标准的原语相似,只是增加了网络路由功能和特性,具体细节请参考文献[64]。表3-20总结了NWK层的NLDE原语[64],表3-21总结了NLME原语[64],表3-22总结和说明了NIB属性[64]。
图3-29阐述了NPDU的帧格式。图中,帧控制字段表示帧类型,包括数据帧和NWK命令帧两种,并且每一种帧都可以是单播帧、广播帧、多播帧和源路由帧。目的和源地址字段包括16位的网络地址(单播或多播)。半径字段指定传输范围的限制,序列号标识NPDU,且每额外产生一个NPDU,该数增加1。目的和源IEEE地址字段包含与16位网络层地址对应的64位 IEEE 802.15.4 MAC地址。若16位目的网络地址是广播或多播,那么目的IEEE地址不存在。多播控制字段若存在,则为8位长并且处理与多播相关的参数,包括范围、半径、特定的多播模式等。源路由子帧的长度是可变的,并包含中继消息相关的信息,包括中继计数与中继列表。最后,帧有效载荷包括用户数据或NWK层命令信息。
图3-29 NPDU帧格式,摘自参考文献[64]图3-30中列出了创建网络需要的消息序列[64]。图中,APL形成的网络信息请求在NWK层和MAC层启动过程,用于创建网络和执行所需的功能,请注意调用的MAC层原语。
图3-30 ZigBee网络的生成,摘自参考文献[64]图3-31列出了利用关联过程加入网络的消息序列[64]。其中,NLME-NETWORK-DISCOVERY原语启动加入过程后,NWK层发送MLME-SCAN请求通知MAC层在一定范围内搜索可用网络。当接收到用于广播有可用网络的信标后,该请求结果将发送至APL层。然后APL层发送NLME-JOIN请求给NWK层,NWK层形成MLME-ASSOCIATE请求并发送至MAC层,请求与一个特定网络关联。若设备是路由器或协调器,那么一旦NLME-JOIN请求得到确认,它就可以请求启动路由功能。ZigBee NWK层提供的主要功能之一是路由。每个规范中的路由算法都是基于链路成本度量。成本函数定义如公式(3-5)[64]所示:
图3-31 加入ZigBee网络,摘自参考文献[64]
其中C是单个链路的成本。C可定义为固定成本7,或取7与取整数后的两者的最小值,p是该链路发送数据包的概率。采用何种取值由实现者决定,若使用后者,则需估计和提供链路的p值,可利用链路质量指示(Link quality indicator,LQI)进行估计。网络路由取决于最低成本的路径。ZigBee规范中定义的APL层包括应用支持子层(Application support sublayer,APS)、ZigBee设备对象(ZigBee device object,ZDO)和制造商定义的应用对象。制造商定义的应用对象提供使用ZigBee的应用特定功能。APL层支持两种服务:数据服务和管理服务。同ZigBee定义的NWK层和IEEE 802.15.4定义的PHY/MAC层一样,APL层也有两个服务实体:应用层服务数据实体(Application layer service data entity,APSDE)和应用层服务管理数据实体(Application layer service management data entity,ASMDE)。APS信息库(APS information base,AIB)是该层属性的集合,通过访问/控制它可支持APL层的多种功能。应用协议数据单元(Application protocol data unit,APDU)通过APSDE传递给NWK层,反之亦然。APSDE负责APDU的生成、绑定设备间的数据传输、基于端点关系的组地址过滤、可靠传输、重复帧的拒收和长于单个NWK层帧的帧分段。APSME支持应用与协议栈交互,APSME提供的功能包括绑定管理,是一种基于服务和需求来匹配设备的能力,也具有AIB管理、安全和组管理的功能。表3-23和表3-24中分别列出了与APSDE和APSME相关的原语[64]。表3-25中总结了可用的AIB属性[64]。
摘自参考文献[64]。
摘自参考文献[64]。
摘自参考文献[64]。图3-32阐述了APDU帧格式。其中,帧控制字段定义了APDU的类型,包括数据帧、命令帧和确认帧。目的端点字段指定帧的最终目的端点,但不用于间接帧或组寻址帧。组地址字段用于组寻址帧且包含特定的一组设备的唯一标识符。簇标识符字段指定帧应用特定规范簇的标识符,但不用于命令帧。规范标识符字段仅用于数据帧和确认帧,用于在接收帧的设备上过滤消息且对ZigBee规范而言是唯一的。源端点字段指定帧的发起端点,APS计数器用来防止接收重复帧,扩展头子字段用于分段或扩展帧控制。最后,帧有效载荷域包含用户数据或其他3种帧类型的指定信息。
图3-32 APDU帧格式,摘自参考文献[64]ZigBee规范提供了应用规范,这些规范是有关消息格式、处理方法和消息类型的协议,帮助开发人员创建互操作的、分布式应用程序。从这个意义上说,不同的厂商开发出的符合特定应用规范的设备具有一定的互操作性,因此改善和丰富了ZigBee产品的市场。一些规范的实例如下所示:家庭自动化、设备发现和语音呼叫。ZigBee定义了制造商特定和公共两种类型的规范。设备描述符和簇标识符在同一个规范内定义,ZigBee联盟负责分配特定的规范ID。与TCP/UDP/IP中的端口机制相似,不同应用类型之间的ZigBee应用层必须加以区分。ZigBee中特定应用“流”称为簇(cluster)。对于一个特定应用的规范而言,簇标志符是唯一的。由于每个规范内定义有簇ID子集,因此单个设备可能支持多种规范,并且能够支持多种设备描述。利用唯一的IEEE MAC层地址、NWK层地址和端点标识符的分层寻址来区分设备。图3-32阐述了描述单个无线电支持的不同应用的端点值。端点值0x00用于寻址设备规范,0xff用于寻址所有有效端点,端点值0xf1~0xfe保留。单个无线电在端点0x01~0xf0上能够支持240个应用。在服务发现的情况下,规范ID、输入簇和输出簇ID列表作为特定设备服务可用性的基础。可以由ZigBee描述符完成发现服务。节点描述符包含有关ZigBee设备功能的信息,并且每个节点都必须有。节点功率描述符指示每个节点功率状态的动态变化;简单描述符包含节点中每个端点的特定信息,包括应用规范ID;复杂描述符包含节点内包含的每个设备描述的扩展信息,包括制造商信息。另外,用户描述符能够提供其他信息。这些描述符在服务发现过程中传输。ZigBee设备规范(ZigBee device profile,ZDP)提供3种设备间的通信功能:设备和服务发现:确定其他设备和网络关联服务设备的身份信息。绑定和关联功能:是指创建、添加和删除将控制消息映射到特定目的节点的绑定表表项。网络管理:是指获取设备管理信息的能力,包括网络发现结果、与邻居的链路质量、路由表、绑定表、发现缓存和能量检测扫描信息;为设备提供离开或加入网络的能力;若设备为协调器,允许加入自身网络的能力和提供错误通知。设备规范使用了客户端/服务器的方法。例如,通过发送设备规范消息执行发现功能的设备为客户端,响应这些消息的设备为服务器。设备规范消息包括获取网络地址或服务描述等其他参数。使用ZDP实现低层原语,为ZigBee设备提供特定应用功能。表3-26[64]总结了ZDP,ZDP的作用如下:初始化APS层、NWK层和安全服务提供者(SSP)。利用终端应用配置信息实现多种应用层功能,包括ZigBee路由器、协调器和设备的实例化。
摘自参考文献[64]。ZigBee联盟官网(http://www.ZigBee.org)列出了多种不同应用的ZigBee认证产品,且定义的应用标准包括医疗保健、建筑/家庭自动化、照明、远程控制和零售服务。在医疗保健方面,ZigBee联盟定义了一个ZigBee Health Care?标准。根据参考文献[16],该标准“为互操作产品提供了一个全球性标准。针对慢性疾病、老年人独立性和常规性保健、健康和健身,此类产品能够为非严重、低危险的保健服务提供安全、可靠的监控和管理。”在家庭自动化方面,ZigBee联盟已经定义一个ZigBee Home Automation?标准。支持此规范的设备包括以下几种:智能电子插座:无线监控能量负载和开/关电源。家庭自动化控制器:用于能量管理、安全和媒体管理。小型开关:安装在普通墙壁开关中,无线控制打开/关闭墙壁开关的驱动电路。门感应器:用无线方式向中央控制器指示门是打开还是关闭状态。智能门锁:可通过连接到互联网的家庭控制器无线访问以实现远程锁/开门。灯开/关和调节开关:本地或通过无线家庭自动化控制器控制灯的开/关和调节。内置无线电台的家庭自动化控制器:通过USB接口连接标准的个人电脑。连接温控器:通过家庭自动化控制器实现本地或无线控制。ZigBee Remote Control标准是由ZigBee RF4CE标准支持的另外一个规范。与ZigBee PRO相比,ZigBee RF4CE更简单,也更轻量级。在此应用中,远程控制器根据ZigBee Remote Control标准,可将命令无线传输到电视或电缆盒等设备。使用RF代替红外将会使远程控制系统的性能和特性集得到极大的丰富。ZigBee联盟还定义了ZigBee Telecom Services标准来丰富用户服务,如移动支付、游戏网络的生成、不使用GPS进行公共空间信息的收集,是地铁隧道或地下区域等地点的理想选择。另外,ZigBee语音簇定义可使ZigBee设备作为耳机、扬声器和麦克风使用。3.2.3 802.15.4的性能在参考文献[65]中,随着设备数目和数据有效载荷大小的变化,作者分析了有效数据速率的性能参数。图3-33阐述了参考文献[65]中的一个结论:因为共享媒体的竞争增加,正如预期的一样,有效数据速率随着设备数目的增加而减小;同时因为开销的减小(包头和每个单元时间内较少的保护间隔),MDSU越大,性能越好,可达到的数据速率适用于家庭安全传感器等低速应用场景。在高速视频的特定场景下,性能较差。这是因为IEEE 802.15.4标准正是用于低速PHY/MAC层,而通过其他协议标准实现高速(如3.3节提到的WiMedia方案)。
图3-33 相应设备数目和MSDU大小的802.15.4性能,摘自参考文献[65]