当前位置: 首页 > news >正文

ISO 15765-2(网络层服务)

ISO 15765-2(网络层服务)

  • 1、网络层协议数据单元的格式(N_PDU)
  • 2、四种网络层协议数据单元类型
    • 2.1、单帧( SF N_PDU)
    • 2.2、首帧( FF N_PDU)
    • 2.3、后续帧( CF N_PDU)
    • 2.4、流控帧( FC N_PDU)
  • 3、单帧、多帧传输时的传输模型
    • 3.1、单帧传输
    • 3.2、多帧传输

1、网络层协议数据单元的格式(N_PDU)

        不同节点网络层对等实体之间的通信是通过网络层协议数据单元的交互完成的。其格式如下:

在这里插入图片描述

        (1)、地址信息N_AI标识了网络层之间进行信息交互的对等实体。 N_AI的地址信息由消息地址组成,这些地址信息标识了交互消息的类型以及发生数据交换的接收端与发送端。
        (2)、协议控制信息N_PCI标识了相互交换的N_PDU类型;同时,它还可以用于通信网络层实体之间其它控制参数的交换。关于N_PDU的分类,可以分成以下四类:单帧( SF N_PDU)、首帧( FF N_PDU)、后续帧( CF N_PDU)及流控帧( FC N_PDU)。其类别区分就是通过N_PCI这一信息进行区分的,具体如下:

在这里插入图片描述
通过上述表格,可以知道:

  • 第一个字节的高位是0的为单帧信息;
  • 第一个字节的高位是1的为多帧中的首帧
  • 第一个字节的高位是2的为多帧中的后续帧
  • 第一个字节的高位是3的为流控帧
    在这里插入图片描述

        (3)、数据场N_Data用来传输服务用户的数据,其大小取决于N_PDU类型及选定的地址格式。
        

2、四种网络层协议数据单元类型

        在上面小节关于协议控制信息(N_PCI)的介绍中,我们已经知道了四种协议数据单元类型及其区分(通过第一个字节高位);接下来我们就针对这四种类型进行进一步的介绍。

2.1、单帧( SF N_PDU)

        单帧报文的N_PCI由第一个字节表示;其格式如下:
在这里插入图片描述
        其中,SF_DL表示服务用户数据(N_Data)字节的数量;其取值只能为0-7(且只有该协议数据单元是标准地址的形式才能是7;若为扩展或混合地址,该值最大只能为6)。
        关于首帧SF_DL的出错处理如下:若接收到的单帧的SF_DL为0或者大于7(若为扩展或混合地址且该值大于6)的情况;网络层应忽略该单帧信息

2.2、首帧( FF N_PDU)

        当我们要发送超过7个字节信息的数据时,则只能通过报文分割将要发送的数据拆分为多个网络协议数据单元(N_PDU)去发送;其中,第一个协议数据单元叫做首帧;接下来的协议数据单元叫做后续帧。接下来,我们就对首帧的格式进行分析。
        首帧报文的N_PCI由第一、二个字节表示;其格式如下:
在这里插入图片描述
        其中,FF_DL表示服务用户数据(N_Data)字节的数量;由12位构成(最低位为N_PCI第2个字节中的第0位),即最大可支持4095个用户数据字节。注意该值正常范围为0x8-0xFFF(若为扩展编址或混合编址模式下FF_DL范围可为0x7-0xFFF);小于这个值的FF_DL是无效值(因为小于这个值就变成单帧的FF_DL了)。
        
        关于首帧FF_DL的出错处理如下:
        (1)、如果接收到一个FF_DL大于接收端可用缓存大小(这种情况被当作一个错误条件)的首帧( FF)。那么网络层应终止消息接收,并发送一个流状态( FlowStatus)参数为溢出( Overflow)的FC N_PDU(流控制)
        (2)、如果接收到一个FF_DL小于8且使用标准地址(或者小于7且使用扩展或混合地址)的首帧( FF),那么网络层应忽略接收该首帧,且不必发送FC N_PDU(流控帧)。

2.3、后续帧( CF N_PDU)

        后续帧报文的N_PCI由第一个字节表示;其格式如下:
在这里插入图片描述

        其中,SN表示后续帧的帧序号;关于SN需注意如下规则:
        (1)、紧跟在首帧( FF)之后的第一个后续帧( CF)的SN为1(虽然首帧( FF)中的N_PCI场没有包含一个明确的序列号,但是首帧( FF)的SN仍被当作0);
        (2)、在分段消息传输过程中,每发送一个新的CF, SN的值应加1;
        (3)、SN的值不会受到流控帧的影响;
        (4)、当SN的值计到0xF时,SN的值在发送的下一个后续帧时重置为0。再依次往上计数。

2.4、流控帧( FC N_PDU)

        在前面小节里我们介绍了多个网络协议数据单元的发送(首帧、后续帧);对于接收端,其需要将自身的接收能力反馈给到发送端;防止发送端发送得太快自己接收处理不过来的情况。这一小节介绍的流控帧,正是用于这个功能的;用于接收端调节发送端的数据传输以适应自身接收能力

        流控帧报文的N_PCI由前三个字节表示;其格式如下:
在这里插入图片描述

        (1)、FS(FlowStatus)参数表示接收端告知发送端网络实体能否继续执行消息的传输。FS的有效取值定义如下:

FS值值描述定义
0ContinueToSend (CTS)/继续发送告知发送端可继续发送后续帧(还表示接收端已准备好接收最大数量为BS的后续帧)
1Wait (WT)/等待告知发送端应继续等待新的流控帧,并重新设置N_BS定时器
2Overflow (OVFLW)/溢出发送端应终止发送分段消息,并通过调用<N_Result>=N_BUFFER_OVFLW参数,使用N_USData.confirm服务原语给邻近的上一层以确认

        且需注意FS为2(即OVFLW)的这种情况只允许在紧跟首帧之后的流控帧中进行传输并且,仅当在接收的首帧中的FF_DL超过了接收端实体缓存大小的情况下才能使用。

        (2)、BS(BlockSize)参数的大小表示每个数据块中CF N_PDU的数目。其取值范围及定义如下:

BS值定义
0x00告知发送端在其发送分段消息期间,接收端不会发送后续的FC;发送端网络应一次性把所有后续帧发送出去,而不用停下来等待接收端网络实体发送的FC
0x01-0xff告知发送端,其在没有接收到接收端的流控帧期间;最多能发送的连续帧数量

        (3)、STmin(SeparationTime)参数用于表示发送相邻的后续帧所允许的最小时间间隔(一个后续帧发送完开始,到请求下一个后续帧时的间隔时长)。其取值范围及定义如下:

STmin值定义
0x00-0x7F该范围内的值单位为ms;即对应表示0ms–127ms
0x80-0xF0预留
0xF1-0xF9该范围内的值单位为us;且0xF1表示100us,0xF2表示200us…,0xF9表示900us
0xFA-0xFF预留

        如果发送端接收到的流控帧消息中,STmin参数值为预留值,那么发送端网络实体应使用127ms(最长的ST值)来替代从接收端网络实体接收的值,并在后续分段消息传输中使用该时间间隔。
        

3、单帧、多帧传输时的传输模型

        经过前面的介绍,我们已经了解了四种网络层协议数据单元类型(单帧、首帧、后续帧、流控帧)的格式。那么,接下来,我们就来看下单帧传输及多帧传输的情况下,其传输模型是怎样的。

3.1、单帧传输

        若要发送的用户数据字节数不大于7个的情况下(标准地址格式);则可通过发送一个网络层协议数据单元,我们称之为单帧( SF)。关于单帧的传输示意图如下:
在这里插入图片描述

3.2、多帧传输

        当我们要发送超过7个字节信息的数据时,则只能通过报文分割将要发送的数据拆分为多个网络协议数据单元(首帧、后续帧)去发送;在发送期间,接收端还需要通过发送流控帧去调节发送端的数据传输,以适应自身的接收能力。关于多帧传输的传输示意图情况如下:
在这里插入图片描述
        需注意,在首帧后面,接收端需回复一个流控帧;然后发送端根据接收到的流控帧中FS(是否继续发送)、BS(应该发送多少个后续帧)、STmin(每个后续帧的发送间隔)的信息;去进行后续帧的发送若BS不为0,则在对应BS个后续帧发送完成后;此时接收端再进行流控帧的发送。除最后一个数据块以外,其余数据块包含协议数据单元的数量为BS。

相关文章:

  • 关于自动化诊断测试(CANoe.Diva的应用)
  • ISO14229之概述
  • 需求增加也要走保证金流程——CSDN外包实践(62)
  • DBC文件解析
  • Sun中国工程研究院院长王星耀:开源策略是为了挤掉微软
  • 使用DBCView编辑DBC文件过程(一)
  • 使用DBCView编辑DBC文件过程(二)
  • DBC和EXCEL相互转换
  • 中小企业需要什么样的软件服务?
  • DBC文件编辑——基于DBCVIew4.3
  • 最近在研究的一个东东-移动证券
  • libcurl随笔
  • 2021-04-21
  • DBCExcel 上线了
  • 网页元素位置(scroll、client、offsetWidth等)获取、设置详解
  • 【node学习】协程
  • 【跃迁之路】【463天】刻意练习系列222(2018.05.14)
  • 【跃迁之路】【733天】程序员高效学习方法论探索系列(实验阶段490-2019.2.23)...
  • 4个实用的微服务测试策略
  • 78. Subsets
  • Android单元测试 - 几个重要问题
  • CSS实用技巧干货
  • export和import的用法总结
  • HTML5新特性总结
  • javascript 总结(常用工具类的封装)
  • JWT究竟是什么呢?
  • mysql外键的使用
  • Stream流与Lambda表达式(三) 静态工厂类Collectors
  • Swift 中的尾递归和蹦床
  • Synchronized 关键字使用、底层原理、JDK1.6 之后的底层优化以及 和ReenTrantLock 的对比...
  • 大数据与云计算学习:数据分析(二)
  • 工作中总结前端开发流程--vue项目
  • 前端面试之闭包
  • 如何用vue打造一个移动端音乐播放器
  • 深入浅出Node.js
  • 中国人寿如何基于容器搭建金融PaaS云平台
  • const的用法,特别是用在函数前面与后面的区别
  • TPG领衔财团投资轻奢珠宝品牌APM Monaco
  • zabbix3.2监控linux磁盘IO
  • ​iOS安全加固方法及实现
  • #[Composer学习笔记]Part1:安装composer并通过composer创建一个项目
  • $.each()与$(selector).each()
  • $.proxy和$.extend
  • (01)ORB-SLAM2源码无死角解析-(66) BA优化(g2o)→闭环线程:Optimizer::GlobalBundleAdjustemnt→全局优化
  • (12)Hive调优——count distinct去重优化
  • (20050108)又读《平凡的世界》
  • (4)事件处理——(7)简单事件(Simple events)
  • (delphi11最新学习资料) Object Pascal 学习笔记---第2章第五节(日期和时间)
  • (附源码)计算机毕业设计SSM基于健身房管理系统
  • (每日持续更新)jdk api之StringBufferInputStream基础、应用、实战
  • (原創) 未来三学期想要修的课 (日記)
  • .net framework 4.0中如何 输出 form 的name属性。
  • .net FrameWork简介,数组,枚举
  • .NET LINQ 通常分 Syntax Query 和Syntax Method
  • .NetCore项目nginx发布