BACnet网络讲义(DOC)(4)
传输层实现,而是由应用层来完成。并且,在BACnet中只有Confirmed-Request和Complex-ACK报文可能需要分段,因此分段还是BACnet的一个可选特性。
1.报文分段的原则
每个由BACnet报文编码而成的数据流序列,按下面规则进行分段,然后再在网上传输。
① 一个完整的报文尽可能作为一个APDU发送。
② 当一个完整的报文不可能作为一个APDU发送时,则应分段成最少个数的多个APDU发送。
③ 一个报文分段的长度(以bit为单位)应是8的整数倍,即对报文进行分段时,字节是最小的分割单位。
2.BACnet APDU最大长度的确定
在BACnet中,APDU的长度也是没有固定的,而是定义了一个确定APDU最大长度的原则,即APDU最大长度应是以下长度值中的最小值:
① 设备所能发送的APDU的最大长度。一般与本地设备的缓冲区大小等本地因素有关。
② BACnet网际网所能传输到远地设备的APDU的最大长度。一般由本地、远地,以及中间传输网络的数据链路所决定。
③ 远地设备所能接收的APDU的最大长度,其值不能小于50个字节。 3.与分段有关的协议控制信息(PCI)
为了支持报文分段,BACnet 协议在BACnet-Confirmed-Request-PDU和BACnet-ComplexACK-PDU的头部,定义了四个与分段有关的协议控制信息参数。其中两个是布尔型参数,另两个是八位二进制无符号整数。这些参数可以使接收方对到达的分段进行正确的重组,从而保证端到端的可靠传输。
§2.4 BACnet APDU的传输
BACnet的APDU收发协议的详细细节,包含在BACnet复杂的事务状态机制(TSM:Transaction State Machine)中,以下的讨论旨在对几种主要APDU的传输过程有整体的认识。
2.4.1证实请求报文的传输
客户端设备在传输了一个完整未分段的证实请求报文(Confirmed-Request Message)后,或在等待接收分段证实请求报文最后一个分段所对应的确认信息时,将启动一个计时器。该计时器用来计量对请求报文回应的时间。一旦收到了针对该请求报文所发的出错APDU、拒绝APDU、放弃APDU、简单回应APDU或复杂回应APDU,则停止计时,同时通知客户应用程序。如果计时器的时间值超出了客户设备对象的APDU_TimeOut属性值,则整个报文重新发送,计时器重新计时。所有报文的超时重传均按此过程进行,直至重传次数超出了客户端设备对象?APDU重传次数?属性所规定的次数。若超出规定值仍未收到响应,该报文将被丢弃,同时通知客户应用程序。
2.4.2分段证实请求报文的传输
客户端设备在发送分段证实请求(Segmented Confirmed-Request Message)PDU的第一个分段之前,首先选择一个预设窗口值,以表示它在收到一个分段回应之前,一次准备发送的报文分段最大个数。它通常由报文分段的?建议窗口尺寸?参数表示,取值范围为1至127,在该处其具体取值只与客户端有关。在传输完第一个分段后,客户端设备将启动一个计时器,用来计量对报文分段回应的时间。一旦收到了针对该报文分段所发的拒绝APDU、放弃APDU或分组回应APDU,则停止计时,同时通知客户应用程序。如果计时器的时间值超出了客户设备对象的APDU_Segment_TimeOut属性值,则这个分段将重新发送,计时器重新计时。所有报文分段的超时重传均按此过程进行,直至重传次数超出了客户端设备对象中?APDU重传次数?属性所规定的次数。若超出规定值仍未收到响应,该报文将被丢弃,同时通知客户应用程序。
当服务端设备收到分段证实请求PDU的第一个分段后,将会选择一个实际窗口值,以表示它在发送一个分段回应前,一次准备接收的报文分段最大个数。同样,该值的取值范围也规定在1至127之间,同时它还不能大于证实请求PDU中的预设窗口值,在该处其具体取值只与服务器端有关。
在收到第一个分组回应APDU后,客户端设备从中得到服务器端设备的实际窗口值,并将该值设置成它的实际窗口值。这样,客户端设备和服务器端设备的实际窗口值大小一致。客户端便可以在收到一个分段回应APDU之前,一次发送多个分段;服务器端也可以在发送一个分段回应APDU之前,一次接收多个分段。客户端发送完整个报文或发送了窗口值个数的多个分段后,将启动一个计时器,用来计量对这些报文分段回应的时间。一旦收到了针对这些报文分段所发的拒绝APDU、放弃APDU或分组回应APDU,则停止计时。如果计时器的时间值超出了客户设备对象的APDU_Segment_TimeOut属性值,则这些分段将重新发送,计时器重新计时。所有报文分段的超时重传均按此过程进行,直至重传次数超出了客户端设备对象中?APDU重传次数?属性所规定的次数。若超出规定值仍未收到响应,该报文将被丢弃,同时通知客户应用程序。
客户端在发送分段的过程中,可能会收到拒绝APDU、放弃APDU或分段回应APDU。在这种情况下,收到拒绝APDU或放弃APDU将会中止请求的传输;收到分段回应APDU,将会作为序号等于或小于该APDU中分段数参数值的所有分段的确认,而那些没有被确认的分段将按上述过程重传。
2.4.3分段复杂回应报文的传输
分段复杂回应报文(Segmented ComplexACK Message)的传输过程与分段证实请求报文的传输过程相类似,主要不同之处在于:
① 在分段复杂回应报文的传输过程中,由服务器端设备发送复杂回应报文的分段,由客户端设备接收并发分段回应APDU
② 在分段复杂回应报文的传输过程中,客户端设备只能回应放弃APDU或分段回
应
APDU,而不能回应拒绝APDU。 2.4.4分段回应APDU的传输
分段回应APDU是分段接收方设备用来回应发送方的信息。在以下四种情况下,设备需传输一个SegmentACK。
① 设备收到报文的第一个分段。
② 设备收到未确认的、有序的、数量为实际窗口值的多个报文分段构成的序列。 ③ 设备收到一个乱序分段报文(可能表明丢失了某个分段)。 ④ 设备收到报文的最后一个分段。
§2.5 与传输有关的其它问题 2.5.1事务状态机制的中止
在一个证实请求的服务过程中,客户端与服务器端都将创立各自的事务状态机制,以便针对各种情况分别进行处理。该事务状态机制的终止由一些条件所决定。
对于客户端,当出现以下几种情况时,事务处理终止,同时结束该事务状态机制。 ① 当收到服务器端设备发来的简单回应、不分段复杂回应、出错、拒绝或放弃APDU时。
② 收到服务器发来的分段复杂回应APDU的最后一个分段,并发送了相应的分段回应APDU后。
③ 当超时重传次数用尽后。
④ 在向服务器发送了包含该事务处理过程标志符的放弃APDU后。 对于服务器端当出现以下几种情况时,将终止事务处理,同时结束该事务状态机制。 ① 当向客户端设备发送完简单回应、不分段复杂回应、出错、拒绝或放弃APDU后。 ② 当收到客户端设备发来的针对分段复杂回应APDU的最后一个分段的回应APDU后。
③ 当接收到客户端发来的包含该事务处理过程标志符的放弃APDU后。 ④ 在传输一个分段复杂回应APDU的过程中,超时重传次数达到规定值仍未成功时。
2.5.2重复报文的处理
在一个事务处理过程中,由于使用了BACnet的出错重传机制,设备不可避免的会接收到重复的报文或报文分段。对此,BACnet协议中是按以下各种可能出现的情况分别处理的。
① 服务器接收到一个重复的证实请求报文。这时,如果服务器具 …… 此处隐藏:1996字,全部文档内容请下载后查看。喜欢就下载吧 ……
相关推荐:
- [综合文档]应答器设备技术规范(征求意见稿)A1
- [综合文档]教师 2012年高考政治试题按考点分类汇
- [综合文档]保险公司的总经理助理竞职演说
- [综合文档]卫生应急大练兵大比武活动考试--题库(
- [综合文档]徐州经济技术开发区总体规划环境影响报
- [综合文档]汉语拼音表(带声调)
- [综合文档]二年级 上 思维训练( 1~18)
- [综合文档]特色学校五年发展规划
- [综合文档]机床经常出现报警“X1轴定位监控”
- [综合文档]《电子技术基础》21.§5—2、3、4 习题
- [综合文档]浙江省深化普通高中课程改革
- [综合文档]CRISP原理 - 图文
- [综合文档]2017年电大社会调查研究与方法形考答案
- [综合文档]浅析建筑施工安全毕业论文
- [综合文档]《回忆我的母亲》名师教案
- [综合文档]装饰装修工程监理规划
- [综合文档]三下乡心得体会-文艺
- [综合文档]柱计算长度系数 - 图文
- [综合文档]全流程思考,提高燃电系统热电转换率--
- [综合文档]2018年嘉定区中考物理一模含答案
- 433M车库门滚动码遥控器
- 8、架空线路施工规范
- 大学四年声乐学习的体会
- 新北师大版五年级数学上册《轴对称再认
- 部编版五年级上册语文第六单元小结复习
- 小学六年级英语形容词用法
- 第2课 抗美援朝保家卫国 课件01(岳麓版
- 2015年天津大学运筹学基础考研真题,考
- 微机计算机控制技术课后于海生(第2版)
- 安全教育实践活动
- Delphi程序设计教程_第1章_Delphi概述
- 第八讲 工业革命与启蒙运动
- 《中华人民共和国药典》2005年版二部勘
- 科粤版九年级化学2.3构成物质的微粒(1)
- 西师大版数学三年级下册《长方形、正方
- ch6_冒泡排序演示
- 第4章 冲裁模具设计
- 浙江中小民营企业员工流失论文[终稿]
- 再议有线数字电视市场营运模式
- 昆明供水工程监理大纲




