精华内容
下载资源
问答
  • CAN总线多帧连续帧数据发送 拆包与重装

    万次阅读 多人点赞 2017-09-13 20:42:31
    1939协议支持多帧数据发送即数据超过8个的帧发送 用户可以通过ID来识别当前是否为多帧发送连续帧),如果是多帧发送ID,举例:1C EC F4 56 其中 F4和56为目标地址和源地址,重点关注1C和EC,通过ID的这两个字节...

    1939协议支持多帧数据发送即数据超过8个的帧发送

    用户可以通过ID来识别当前帧是否为多帧发送(连续帧),如果是多帧发送ID,举例:1C EC F4 56 其中 F4和56为目标地址和源地址,重点关注1C和EC,通过ID的这两个字节来判断是否为连续帧。

    当通过ID判断该帧为连续帧后,开始解析这一帧的数据。举例:10 0D 00 02 FF 00 06 00,其中10为控制字,0D 00为整个消息的字节数 低位在前,02为数据包个数,即这个连续帧数据包含2个标准帧组成,FF 保留 默认即为FF,00 06 00 消息的参数组编号 即 这个消息识别码 用户可以通过这个消息识别码来确定如何来解析这组数据。那么,这帧数据最后表示含义即为:我要向你发送一个 消息参数组编号为(00 06 00),总字节数为(0D),帧数为(02)的一个连续帧。

    控制字的含义:

    10:向目标地址请求发送数据;

    11:用于响应源地址的发送请求,即告诉源地址 你可以给我发数据了;

    13:消息结束,即目标地址已经从源地址将数据收过来了;

    FF:放弃连接。

    控制字不同 后边的 数据含义也不同:

    11:以前边的发送数据举例 11 02 01 FF FF 00 06 00,02  可以发送的数据包数 即 告诉源地址我可以接收2帧数据,01  下一个要发送的数据包编号,两个FF为 保留字节,00 06 00 消息的参数组编号。整个帧的意思即  我可以接收消息参数据组编号(00 06 00)的(02)帧数据,你从(01)开始发送数据吧

    13:还是以前边的发送数据举例 13 0D 00 02 FF 00 06 00,0D 00 接收到的整个消息的字节数,02 接收到的全部数据包数,FF 保留,00 06 00消息的参数组编号。整个帧的意思即 我收到了消息参数组编号(00 06 00)的(02)个标准帧数据,共计(0D)个字节。


    展开全文
  • 四、 后退 N 帧协议 发送方数据分类、 五、 后退 N 帧协议 发送方 需要 响应的事件、 六、 后退 N 帧协议 接收方 需要 响应的事件、 七、 后退 N 帧协议 运行细节、 八、 后退 N 帧协议 滑动窗口长度、 九、 ...





    一、 滑动窗口协议引入



    "停止-等待" 协议 弊端 : 信道利用率低 , 发送完一帧后等待 , 这个时候信道完全是空闲的 ;


    为了提高信道利用率 , 发送端 发送完一帧后 , 不用等待 接收端的 ACK 确认帧 , 立刻发送 第二帧 , 第三帧 , 这样信道的利用率就提高了 ;


    相应协议也要做一些更改 :

    ① 增加 发送方 的 帧 序号范围 ;

    ② 发送方 缓存 多个 帧分组 ; 连续发送 N N N 帧 , 其中某一帧 可能需要重传 , 但不知道哪一帧需要重传 , 这里 需要将这 N N N 帧全部缓存下来 ;


    这里有引出了两个在 “停止-等待” 协议基础上 , 改进的两个协议 :

    • 后退 N N N 帧协议 ( GBN )
    • 选择重传协议 ( SR )




    二、 后退 N 帧协议 ( GBN ) 滑动窗口



    后退 N 帧协议 滑动窗口 :

    ① 发送窗口 : 发送方 维持的 一组 连续的 允许发送的 帧序号 ; ( 本质是 序号 ) , 可以有多个 ;

    ② 接收窗口 : 接收方 维持的 一组连续的 允许接受的 帧序号 ; ( 本质是 序号 ) , 只有 1 1 1 个 ;





    三、 后退 N 帧协议 ( GBN ) 运行过程



    后退 N 帧协议 运行过程 :

    ① 初始发送方滑动窗口 : { 0 , 1 , 2 , 3 , 4 , 5 } \{ 0 , 1 , 2 , 3 , 4, 5 \} {0,1,2,3,4,5}

    ② 发送备份 0 0 0 帧 : 发送方 发送 0 0 0 号帧 , 同时 建立 0 0 0 帧副本 , 为后面可能需要重传做准备 ;

    ③ 发送备份 1 1 1 帧 : 发送方 紧接着 发送 1 1 1 号帧 , 建立 1 1 1 帧 副本 ;

    ④ 接收方 滑动窗口 : { 0 } \{ 0 \} {0}

    ⑤ 接收确认 0 0 0 帧 : 接收方 接收到了 0 0 0 号帧 , 回复 ACK 0 0 0 给发送方 , 表示收到 0 0 0 帧 ;

    ⑥ 接收窗口滑动 : 接收方 将 接收窗口 向前滑动一格 ;

    ⑦ 接收方 滑动窗口 : { 1 } \{ 1 \} {1}

    ⑧ 发送窗口 滑动 : 发送方 收到 ACK 0 0 0 , 此时 0 0 0 号帧已经发送完毕 , 将滑动窗口向前移动一格 ;

    ⑨ 发送方滑动窗口 : { 1 , 2 , 3 , 4 , 5 , 6 } \{ 1 , 2 , 3 , 4, 5 , 6 \} {1,2,3,4,5,6}





    四、 后退 N 帧协议 ( GBN ) 发送方数据分类



    发送方 根据 滑动窗口 状态 , 将数据分为以下 四类 :

    ① 发送完确认的帧 : 数据发送完毕 , 已经收到了接收端确认信息 ;

    ② 发送完等待确认的帧 : 数据发送完毕 , 还没有收到确认信息 ;

    ③ 还能发送的帧 : 滑动窗口中 , 还没有发送的帧 ;

    ④ 还不能发送的帧 : 滑动窗口 后面的帧 ;





    五、 后退 N 帧协议 ( GBN ) 发送方 需要 响应的事件 ( 累计确认 、超时发送机制)



    上层调用事件 : 上层发送数据时 , 先检查 发送窗口 ;

    ① 如果 发送窗口 未满 : 则 生成 数据帧 , 发送数据 ;

    ② 如果 发送窗口 已满 : 发送方将该信息通知上层 , 让 上层 延迟发送 ;



    A C K ACK ACK 确认帧 事件 :

    ① 累计确认 : GBN 协议中 , 采用 累计确认 方式 , 如果收到一个确认帧 , 默认已经收到了 该帧 , 及之前的全部帧 ;

    ② 不逐一确认 : 接收方 不用 对每个 数据帧 逐一返回确认帧 , 可以每隔一段时间返回一个确认帧 ;



    超时事件 : “后退 N 帧协议” 顾名思义 , 如果出现 帧丢失 , 帧延迟 等错误 , 就会回退到 上一个 确认的帧 后面的第一帧位置 , 重传 N N N 帧 ;

    ① 重发 1 1 1 帧 : 停止-等待协议 只会 重发 没有确认的 一帧 数据 ;

    ② 重发 N N N 帧 : 后退 N N N 帧协议 , 会重发 没有收到确认的 N N N 帧数据 ;





    六、 后退 N 帧协议 ( GBN ) 接收方 需要 响应的事件 ( 按序接收 、确认帧发送机制 )



    后退 N 帧协议 接收方 需要 响应的事件 :

    ① 收到正确帧 : 收到的帧 正确 , 并且顺序正确 ; 为接收的 N N N 帧发送 ACK 确认信息 , 将该帧的数据交给上层 ;

    ② 没有收到正确帧 : 收到错误帧 , 或 顺序错误 ; 接收方 为 最近的 正确的帧 发送 ACK , 丢弃错误帧 ;


    示例 :

    ① 出错场景 : 接收端 成功接收了 1 , 2 , 3 1,2,3 1,2,3 号帧 , 等待接收 4 4 4 号帧 , 但是直接接收到了 5 , 6 5,6 5,6 号帧 , 此时 4 4 4 号帧丢失 ;

    ② 处理方案 : 5 , 6 5,6 5,6 号帧 丢弃 , 重新发送 最近 正确的帧序号 , 将 A C K 3 ACK 3 ACK3 会送给发送端 , 通知发送端从 4 4 4 号帧开始发送 ;





    七、 后退 N 帧协议 ( GBN ) 运行细节



    后退 N 帧协议 运行细节 :

    ① 发送端连续发送 :

    • 发送窗口 大小为 4 4 4 , 可以一次性发送 4 4 4 帧数据 , { 0 , 1 , 2 , 3 } \{ 0, 1, 2, 3 \} {0,1,2,3} ;

    • 发送端 发送 0 0 0 帧 , 接收方 接收到 0 0 0 帧 , 返回 ACK 0 0 0 ;

    • 发送端 发送 1 1 1 帧 , 接收方 接收到 1 1 1 帧 , 返回 ACK 1 1 1 ;


    ② 丢失 2 2 2 帧 : 发送端 发送 2 2 2 帧 , 2 2 2 号帧 半路丢失 , 接收方 没有收到 2 2 2 帧 ;


    ③ 期待 2 2 2 帧 :收方 的 期待帧是 第 2 2 2 帧 ;


    ④ 接收方 获知 丢帧 : 发送方 发送 3 3 3 帧 , 接收方 接收到 3 3 3 帧 , 此时发现 2 2 2 帧丢失 , 直接丢弃 3 3 3 帧 , 并向接收方 发送 上一个成功接收的帧的确认信息 ACK 1 1 1 , 让发送方从 第 2 2 2 帧开始发送 ;


    ⑤ 发送方 收到 ACK 确认帧 :

    • 发送方 收到 ACK 0 0 0 之后 , 发送窗口 向后 滑动一位 , 变成 { 1 , 2 , 3 , 4 } \{ 1, 2, 3 , 4 \} {1,2,3,4} ;

    • 发送方 收到 ACK 1 1 1 之后 , 发送窗口 向后 滑动一位 , 变成 { 2 , 3 , 4 , 5 } \{ 2, 3 , 4 , 5\} {2,3,4,5} ;


    ⑥ 发送超时处理 : 如果 发送方 一直 没有收到 ACK 2 2 2 , 等待时间超时 , 就会 后退 N N N 帧 , 重发 2 , 3 , 4 , 5 2 , 3, 4, 5 2,3,4,5 帧 ;





    八、 后退 N 帧协议 ( GBN ) 发送窗口长度



    后退 N 帧协议 滑动窗口长度 :

    使用 n n n 比特 对 帧进行编号 , 发送窗口的尺寸 W T W_T WT 满足如下公式要求 :

    1 ≤ W T ≤ 2 n − 1 1 \leq W_T \leq 2^{n} - 1 1WT2n1


    如果不满足上述公式 , 就会因为 发送窗口 过大 , 接收方 无法识别 新帧 和 旧帧 ;


    滑动窗口示例 :

    如使用 2 2 2 比特 进行帧编号 , 那么滑动窗口大小是 1 ≤ W T ≤ 3 1 \leq W_T \leq 3 1WT3 ;

    如果滑动窗口有 4 4 4 比特 , 那么发送 0 , 1 , 2 , 3 0 , 1, 2, 3 0,1,2,3 四帧数据 给 接收端 , 四个帧全部丢失 , 此时就会将 四个帧 再次重传 , 4 4 4 帧数据 , 是重发的旧的帧 还是下一个滑动窗口 新的帧 , 无法确定 ;





    九、 后退 N 帧协议 ( GBN ) 重点



    发送方 累计确认 机制 : 收到 ACK N N N , 就表示 N N N 号帧及之前的帧 , 全部正确 ;


    接收方 按序接收 : 接收方 只能 按照顺序接收 , 人如果中间有帧丢失 , 那么后续帧全部丢弃 ;


    接收方 确认帧 : 接收方 如果 收到错误帧 , 失序帧 , 那么查找最近成功接收的正确的帧的最大的 , 按序到达的帧 序号是多少 , 发送该帧对应的 ACK 确认帧 ;


    发送窗口 : n n n 是帧序号编码长度 , 发送窗口大小 最大是 2 n − 1 2^n - 1 2n1 , 最小 1 1 1 ;





    十、 后退 N 帧协议 ( GBN ) 计算示例



    数据链路层 采用 后退 N N N 帧协议 , 发送方 发送了 0 , 1 , 2 , 3 , 4 , 5 , 6 , 7 0,1,2,3,4,5,6,7 0,1,2,3,4,5,6,7 编号的数据帧 , 当计时器超时时 , 只接收到了 0 , 2 , 3 0 , 2, 3 0,2,3 帧的确认帧 , 发送方需要重发的帧数时 4 , 5 , 6 , 7 4,5,6,7 4,5,6,7 帧 ;


    计时器超时 , 发送方 发送 已发送 , 但是没有被 确认 的帧 ;

    确认机制 是 累计确认 的 , 发送方 接收到了 3 3 3 确认帧 , 说明 3 3 3 之前的帧已经成功接收了 , 虽然没有收到 1 1 1 确认帧 , 但是该帧已经默认接收成功 ;

    重发 没有被确认的帧 , 即 4 , 5 , 6 , 7 4,5,6,7 4,5,6,7 帧 ;





    十一、 后退 N 帧协议 ( GBN ) 协议性能



    后退 N 帧协议 ( GBN ) 协议性能 :

    ① 优点 : 发送端可以先 连续 发送 滑动窗口中的 N N N 帧 数据帧 , 提高了信道利用率 ;

    ② 缺点 : 选择重传时 , 将某些正确发送的数据帧进行了重传 , 降低了传输效率 ;


    为了解决上述弊端 , 引入了 选择重传协议 ;

    展开全文
  • 在后退N式ARQ中,发送方不需要在收到上一的ACK后才能开始发送下一,而是可以连续发送帧。当接受方检测出失序的信息后,要求发送方重发最后一个正确接受的信息之后的所有未确认的;或者当发送方发送了N个...

    在后退N帧式ARQ中,发送方不需要在收到上一帧的ACK后才能开始发送下一帧,而是可以连续发送帧。当接受方检测出失序的信息帧后,要求发送方重发最后一个正确接受的信息帧之后的所有未确认的帧;或者当发送方发送了N个帧后,若发现该N个帧的前一个帧在计时器超时后仍未返回其确认信息,则该帧被判为出错或丢失,此时发送方就不得不又重传该出错帧及随后的N个帧。换句话说,接受帧只允许按顺序接受帧。

    源站向目的站发送数据帧。当源站发完0号帧后,可以继续发送后续的1号帧、2号帧等。源站每发送一帧就要为该帧设置超时计时器。由于连续发送了许多帧,所以确认帧必须要指明是对哪一帧进行确认。为了减少开销,GBN协议还规定接受端不一定每收到一个正确帧就必须发回一个确认帧,而是可以在连续收到好几个正确的确认帧后,才对最后一个数据帧发确认信息,或者可以在自己有数据要发送时才将对以前正确收到的帧加以捎带确认。这就是说,对某一数据帧的确认就表明该数据帧和这以前所有的数据帧均已正确无误地收到了。

    ACK(n+1)表示对第n号帧的确认,表明接受方已正确收到第n帧及以前的所有帧,下一次期望收到第n+1号帧(也可能是第0号帧)。接受端只按序接受数据帧。虽然在有差错的2号帧之后接着又收到了正确的6个数据帧,但接收端必须将这些帧丢弃。接收端虽然丢弃了这些不按序的无出错帧,但应重复发送已经发送过的最后一个确认帧ACK1(这是为了防止已经发送过的确认帧ACK1丢失)。

    展开全文
  • 文章目录数据链路层的概念透明传输差错检测数据链路层可靠传输协议滑动窗口(连续 ARQ 协议)解决发送帧出错的协议 数据链路层 数据链路层的功能 为网络层提供服务: 链路管理 :数据链路的建立、维持和释放。 ...

    数据链路层

    数据链路层的功能
    为网络层提供服务:

    • 链路管理 :数据链路的建立、维持和释放。
    • 寻址:保证每一帧都能正确到达目的站。

    保证数据传输的有效、可靠:

    • 帧定界:将物理层的比特封装成帧,确定帧的开始和结束。
    • 透明传输 :指不管数据是什么样的比特组合,都应当能在链路上传输。
    • 差错检测:能对物理信道传输的比特流检测出差错。
    • 流量控制:控制发送方的发送数据速率使接收方来得及接收。

    帧的概念

    链路和帧
    链路(物理链路)(link)是一条无源的点到点的物理线路段,中间没有任何其他的交换结点。
    一条链路只是一条通路的一个组成部分。
    在这里插入图片描述

    数据链路(逻辑链路)(data link) 除了物理线路外,还必须有通信协议来控制这些数据的传输。若把实现这些协议的硬件和软件加到链路上,就构成了数据链路。

    现在最常用的方法是使用适配器(即网卡)来实现这些协议的硬件和软件。
    一般的适配器都包括了数据链路层和物理层这两层的功能。

    数据链路层传送的是帧
    常常在两个对等的数据链路层之间画出一个数字管道,而在这条数字管道上传输的数据单位是帧。
    在这里插入图片描述
    帧的封装(帧定界)
    封装成帧(framing)就是在一段数据的前后分别添加首部和尾部,然后就构成了一个帧。确定帧的界限。
    首部和尾部的一个重要作用就是进行帧定界。
    在这里插入图片描述
    常用成帧方法
    1.字节/字符填充的定界符法
    (让每一帧用一些特殊的字节作为开始和结束标志。)
    2.比特填充的标志法(也称零比特填充法)

    透明传输

    字节填充法
    在这里插入图片描述
    如果数据部分出现EOF,就会出现问题
    在这里插入图片描述
    解决方案:
    发送端的数据链路层在数据中出现控制字符“SOH”或“EOT”的前面插入一个转义字符“ESC”(其十六进制编码是 1B)。
    接收端的数据链路层在将数据送往网络层之前删除插入的转义字符。
    如果转义字符也出现数据当中,那么应在转义字符前面插入一个转义字符。当接收端收到连续的两个转义字符时,就删除其中前面的一个。
    在这里插入图片描述
    零比特填充
    以01111110作为一帧的开始和结束标志F字段
    在发送端,只要发现有 5 个连续 1,则立即填入一个 0。
    接收端对帧中的比特流进行扫描。每当发现 5 个连续1时,就把这 5 个连续 1 后的一个 0 删除。
    在这里插入图片描述

    差错检测

    出错情况:在传输过程中可能会产生比特差错:1 可能会变成 0 而 0 也可能变成 1。帧(包括发送帧和响应帧)出错或者帧(包括发送帧和响应帧)丢失。

    误码率:在一段时间内,传输错误的比特占所传输比特总数的比率称为误码率 BER (Bit Error Rate)。为了保证数据传输的可靠性,在计算机网络传输数据时,必须采用各种差错检测措施。

    差错检测编码分类
    纠错码:前向纠错技术:发现错误,从错误中恢复出正确

    • 纠错码需要较多的冗余位,信道利用率不高。
    • 适用无线网络

    检错码: 只能发现错误,不能从错误中恢复,但可采用重传。

    • 适用局域网
    • 循环冗余码(CRC)。

    海明码
    海明距离
    两个码字(codeword)的海明距离 : 两个码字之间不同位的数,也就是异或(非进位加法)的结果中,1的个数。
    例: 10001001 和10110001 的海明距离为?

    # 非进位加法(二进制):1+1=0,1+0=1,0+1=1,0+0=0
    
    	1 0 0 0 1 0 0 1
    +	1 0 1 1 0 0 0 1
    -------------------------
    	0 0 1 1 1 0 0 0
    	
    # 1 的个数为3
    

    解析:10001001 和10110001 的海明距离为3

    海明距离与检错的关系
    海明距离为d+1的编码能检测出d位差错

    奇偶校验码
    校验位的值取“0”还是“1”,取决于整个码字的总的“1” 的个数。(奇数还是偶数)

    原理:如果是奇校验加上校验位后,编码中1的个数为奇数个。如果是偶校验加上校验位后,编码中1的个数为偶数个。

    例: Data: 1011010(7位原码)
    Even: 1011010 0 (7 + 1位 偶校验)
    Odd: 1011010 1 (7 + 1位 奇校验)

    海明距离与纠错的关系
    海明距离为2d+1的编码,能纠正d位差错。
    如果一个码字有d位发生差错,距离原来的码字距离最近的可以直接恢复为该码。
    当接收到码字后,先比对是否合法,如果不合法,则恢复为海明距离最短的合法码字
    例:
    一个系统有4个合法码字: 0000000000, 0000011111, 1111100000 和 1111111111
    码字之间最短海明距离是 5=2*2+1,所以可纠正2位错误
    例:发送: 0000011111
    接收: 0000000111(不合法,海明距离依次为[])
    收方纠正后: 0000011111
    练习:发送:0000000000
    接收: 0000000111
    收方纠正后: 0000011111

    纠1位错,需要多少位冗余位?
    要传输的数据(原码字)是 m 位,冗余位 r ,总长度 n
    在这里插入图片描述
    海明纠错码
    每一个码字从左到右编号,最左边为第1位
    校验位和数据位
    凡编号为2的乘幂的位是校验位,如1、2、4、8、16、…
    其余是数据位,如3、5、6、7、9、…
    每一个校验位设置根据:包括自己在内的一些位的集合的奇偶值(奇数或偶数)。
    计算过程移步:https://blog.csdn.net/lycb_gz/article/details/8214961

    纠1位错的海明码的基本方法
    发送方:根据校验集合填充校验位。
    接收方:根据校验集合判定校验位是否出错,出错的位编号累加到累加器上,所有的校验位都检查完成后,通过读取累加器的值来确定码字中出错的那一位的编号。

    循环冗余检验 CRC
    循环冗余检验的原理
    信息位:发送端要发送的数据
    冗余位:发送端在向信道发送信息位之前,先按照某种关系加上一定的冗余位
    发送与接收的过程:

    • 发送时:信息位+冗余位构成码字发送;
    • 接收时:收到码字后查看信息位和冗余位,并检查它们之间的关系(校验过程),以发现传输过程中是否有差错发生。

    CRC码又称为多项式码。任何一个由二进制数位串组成的代码都可以和一个只含有0和1两个系数的多项式建立一一对应的关系。
    长度为最高次幂+1
    在这里插入图片描述
    例如:
    假设系统使用的生成多项式为G(x) = X4+X+1 (10011)
    要发送的码为1101011011(长度为10)
    对应的多项式为X9+X8+X6+X4+X3+X+1,设为 M(x)

    首先将发送码字的多项式乘上生成多项式的最大阶:
    T(x) = X4 M(X)

    在这里插入图片描述
    乘上多少阶等于向左移动多少位
    再将移位后的码字按照(模2运算法则)计算如果有余数,则将码字减去余数
    最后得到的码字就是可以发送的码字
    在这里插入图片描述
    当这个码字到达接收方时:
    如CRC码在接收端能被10011整除,则说明接收正确。
    在这里插入图片描述

    数据链路层可靠传输协议

    停止等待协议(肯定确认重传请求ARQ(也叫PAR))
    每次发送帧的时候都会启动一个定时器
    在这里插入图片描述
    注意:
    在发送完一个帧后,必须暂时保留已发送的帧的副本。
    发送帧和确认帧都必须进行编号。
    超时计时器的重传时间应当比数据在传输的平均往返时间更长一些。
    在这里插入图片描述

    停止等待协议的优点是简单,但缺点是信道利用率太低。

    信道利用率计算公式:
    RTT(来回时间)TD (发送数据时间) TA(接收数据时间)
    在这里插入图片描述
    如果忽略处理时间:假设
    信道传输速率是: b bps
    每帧的大小是: k bits
    来回时间是: R sec
    则信道的利用率是:k/(k + bR)
    如何优化?
    使用滑动窗口技术

    滑动窗口(连续 ARQ 协议)

    发送方有一个发送窗口,存放依据发送未被确认的数据,当数据确认后,滑动到下一个数据
    接收方有一个接收窗口,存放期望接收的数据,当期望的数据接收后、滑动到下一个期望接收的数据
    在这里插入图片描述
    使用滑动窗口技术,批量发送数据,就是发送方可以利用等待接收方的确认数据的时间,继续发送数据直到接收到接收方发送的确认数据,再这段时间里发送的数据称为一个窗口。
    在这里插入图片描述
    发送过程图解:
    在这里插入图片描述
    发送方可连续发送多个帧,不必每发完一个帧就停顿下来等待对方的确认。
    由于信道上一直有数据不间断地传送,这种传输方式可获得很高的信道利用率。

    如何计算最大的窗口数量?
    设窗口数量为 W
    假设信道的传输利用率达到100%,W * k /(k + bR)= 1
    即可得到W的值(b为传输速率(带宽),R 为RTT往返时间,k为每个数据包bit大小)

    还有一种计算W值得方法,也是信道利用率 100%:
    W = 2 * 时延带宽积 + 1

    但是利用率100 % 一般不可能达到。实际的W值会比计算出来的W值小

    累积确认
    接收方一般采用累积确认的方式。即不必对收到的分组逐个发送确认,而是对按序到达的最后一个帧发送确认,这样就表示:到这个帧为止的所有帧都已正确收到了。

    小结
    滑窗技术可以批量收发数据,提高了信道利用率。
    发送窗口对应着已经发送但还未被确认的帧。

    • 滑动条件:收到了帧的确认。

    接收窗口对应着期待接收的帧。

    • 滑动条件:收到了期待接收的帧。

    窗口数的确认跟带宽-延迟积正相关。

    解决发送帧出错的协议

    Go-back-N(回退 N帧)
    如果发送方发送了前 5 个分组,而中间的第 3 个分组丢失了。这时接收方只能对前两个分组发出确认。发送方无法知道后面三个分组的下落,而只好把后面的三个分组都再重传一次。
    这就叫做 Go-back-N(回退 N),表示需要再退回来重传已发送过的 N 个分组。

    选择重传协议
    连续发送W个数据帧,其中有一帧出错,但其后续帧被成功发送
    接收窗口存储差错帧后继的所有正确帧
    发送方只重传差错帧
    接收方接收重传帧,按正确顺序将分组提交网络层

    展开全文
  •  ISO 15765协议是一种CAN总线上的诊断协议。其中ISO 15765-1包括物理层和数据链路层,ISO 15765-2对网络层进行说明,ISO 15765-3则是规定到应用层的具体服务。  下面重点看下网络层,根据ISO 15765-2中的定义,...
  • TCP连续ARQ协议和滑动窗口协议TCP协议通过使用连续ARQ协议和滑动窗口协议,来保证数据传输的正确性,从而提供可靠的传输。一、ARQ协议ARQ协议,即自动重传请求(Automatic Repeat-reQuest),是OSI模型中数据链路层...
  • C#串口通讯时,已经实现正确发送...如何实现若发送失败最多发送5次,并且发送多个数据包时,发送数据和回复数据在界面的显示不串行;我尝试做过,会出现数据串行,或者一数据已成功发送、回复还继续发送的情况,如图
  • 停止等待协议连续ARQ协议

    千次阅读 2017-12-23 00:44:00
    协议:两台计算机通信时对传送信息...收方收到数据发送应答(ACK)发送方,发送方再发送下一个数据。 问题解决: 1. Data出错:收方用NAK应答。 2. Data丢失:使用定时器,一定时间未收到ACK
  • 但此时必须加大接受窗口,以便先收下发送序号不连续但仍处在接受窗口中的那些数据。等到所缺序号的数据收到后再一并送交主机。这就是选择重传ARQ协议。 在选择重传协议中,每一个发送缓冲区对应一个计时器,当...
  • 一、 选择重传协议 ( SR ) 引入、 ...三、 发送方 事件 ( 确认、超时事件 )、 四、 接收方 事件 ( 接收 )、 五、 滑动窗口长度、 五、 选择重传协议 SR 重点、 六、 选择重传协议 SR 计算示例、
  • 思考<<ISO15765标准协议传输层>>的作用?单、首诊、连续帧、流控、定时参数的...答:发送端会使用类型进行标识:单、首连续帧 2.接收端疑问:你到底需要发送多大的数据包?接受完你这包数据后
  • 连续ARQ协议

    2008-04-01 19:37:00
    以下摘自笔者编著的《网络工程师必读——网络工程基础》图书:7.4.6 连续ARQ协议连续重发请求ARQ方案是指发送方可以连续发送一系列信息,即不用等前一被确认便可继续发送下一,效率大大提高。但在这种重发...
  • 1.停等ARQ协议 停等ARQ协议是停等流控技术和请求重发技术的组合。...接收方有一个固定大小的窗口,接收方在收到一个以前不会移动窗口,发送方可以发送连续而形成流动,因此称为连续ARQ协...
  • 后退N帧协议-GBN

    2020-11-21 14:09:57
    GBN发送方要做的事: 1.上层的调用: 上层要发送的数据的时候,发送方先检查窗口有没有满,如果...协议的名字为后退N帧协议,来源于出现丢失和时延过长发送方的行为,就像在停等协议中一样,定时器将再次用于恢复数
  • 前言:在学习tcp三次握手的过程之中,由于一直无法解释tcpdump命令抓的包中seq和ack的含义,就将tcp协议往深入的了解了一下,了解到了几个协议,做一个小结. 先来看看我的问题: 这是用tcpdump命令抓的三次握手的包,...
  • 停止等待协议连续 ARQ 协议

    千次阅读 2019-06-27 00:43:24
    一、停止等待协议 停止等待”就是每发送完一个分组就停止发送,等待对方的确认。在收到确认后再发送下一个分组。 全双工通信的双方既是发送方也是接收方。 为了讨论问题的方便,我们仅考虑 A 发送数据,而 B 接收...
  • PPP协议格式

    万次阅读 多人点赞 2016-02-04 11:53:30
    PPP协议格式 1. PPP各字段的意义 PPP的首部和尾部分别为四个字段和两个字段。 1.1 PPP的首部 首部中的标志字段F(Flag),规定为0x7E(符号0x表示它后面的字符是用十六进制表示的。十六进制的7E的二...
  • 后退N帧协议(GBN)

    千次阅读 2020-03-26 09:45:32
    1.发送方需要缓存个分组,可以发送多个分组。 2.如果发生丢失或者差错,那么就会用到的副本。(后文会提及)。我们需要更大的空间来存放这些副本。   后退N帧协议中的滑动窗口 建议大家认真看下图: ...
  • 串口成帧协议

    千次阅读 2018-01-30 12:09:57
    串口成帧协议  串口接收中的问题 在电子系统中,最简单、最广泛的通信方式无疑是串口了,几乎所有与模块相关的产品,差不多都有串口的操作方式,如串口蓝牙模块、串口WIFI模块、串口ZigBee模块、串口语音模块等...
  • STM32-(37):CAN总线(协议帧

    千次阅读 2019-06-13 21:48:55
    CAN协议帧的概念 用途 数据 用于发送单元向接收单元传送数据的。 遥控 用于接收单元向具有相同ID的发送单元请求数据的。 错误 用于检测出错误...
  • CSMA/CD协议最小长的思考

    万次阅读 多人点赞 2016-10-01 22:43:44
    但是CSMA/CD协议,我想很多人和我一样对于最小长,争用期,二进制指数退避算法的应用是有一些困惑的。也因此,这是出数字计算的出题点。 本篇便是对这部分知识点的归纳总结。CSMA/CD的流程首先,需要建立的认识是...
  • Modbus 协议命令

    千次阅读 2018-12-27 09:54:20
    一、 Rtu 命令...发送命令:(地址从0开始计算) 设备地址 功能码 地址H 地址L 数据量H 数据量L CRC H CRC L ...
  • 3.4.2 单滑动窗口与停止等待协议

    千次阅读 2016-09-05 23:55:15
    在停止等待协议中,源站发送单个后必须等待确认,在目的站的回答到达源站之前,源站不能发送其他的数据。从滑动窗口机制的角度看,停止等待协议相当于发送窗口和接受窗口的接受窗口大小均为1的滑动窗口协议。 ...
  • 2.发送方需要缓存个分组。 针对以上问题,提出两种协议: 1.后退N帧协议(GBN) 2.选择重传协议(SR) 后退N帧协议中的滑动窗口 GBN发送方必须响应的三件事: 1.上层的调用:上层要发送数据时,发送方先检查发送...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 28,165
精华内容 11,266
关键字:

多帧连续发送协议