1、王道书上的:
















2.伪代码:

2.1后退N帧协议伪代码:

来源:https://en.wikipedia.org/wiki/Go-Back-N_ARQ

These examples assume an infinite number of sequence and request numbers.
这些例子假定帧序列和请求号的数量是无限的。

N  := window size  //窗口大小
Rn := request number //接收方要求的接收的帧的序号(王道上说期待的序号 expectedSequentNumber
Sn := sequence number //发送方在一个发送周期内正在发送的帧的序号
Sb := sequence base  //发送方窗口的基
Sm := sequence max  //帧序列序号最大值function receiver is   //接收方程序Rn := 0Do the following forever: // while(true)if the packet received = Rn and the packet is error free then //error free没错Accept the packet and send it to a higher layer //接收个上一层Rn := Rn + 1elseRefuse packetSend a Request for Rnfunction sender is  //发送方程序Sb := 0Sm := N + 1Repeat the following steps forever: // while(true)if you receive a request number where Rn > Sb thenSm := (Sm − Sb) + RnSb := Rnif no packet is in transmission thenTransmit a packet where Sb ≤ Sn ≤ Sm.  Packets are transmitted in order.

2.2 选择性重复协议伪代码:

来源:https://www.tutorialspoint.com/a-protocol-using-selective-repeat

选择性重复协议的发件人站点算法

beginframe s; //s denotes frame to be sent //s 指向要发送的帧frame t; //t is temporary frameS_window = power(2,m-1); //Assign maximum window sizeSeqFirst = 0; // Sequence number of first frame in windowSeqN = 0; // Sequence number of Nth frame windowwhile (true) //check repeatedlydoWait_For_Event(); //wait for availability of packetif ( Event(Request_For_Transfer)) then//check if window is fullif (SeqN–SeqFirst >= S_window) thendoNothing();end if;Get_Data_From_Network_Layer();s = Make_Frame();s.seq = SeqN;Store_Copy_Frame(s);Send_Frame(s);Start_Timer(s);SeqN = SeqN + 1;end if;if ( Event(Frame_Arrival) thenr = Receive_Acknowledgement();//Resend frame whose sequence number is with ACKif ( r.type = NAK) then{if ( NAK_No > SeqFirst && NAK_No < SeqN ) thenRetransmit( s.seq(NAK_No));Start_Timer(s);end if}//Remove frames from sending window with positive ACKelse if ( r.type = ACK ) thenRemove_Frame(s.seq(SeqFirst));Stop_Timer(s);SeqFirst = SeqFirst + 1;end ifend if// Resend frame if acknowledgement haven’t been receivedif ( Event(Time_Out)) thenStart_Timer(s);Retransmit_Frame(s);end if
end

选择性重复协议的接收者站点算法

Beginframe f;RSeqNo = 0; // Initialise sequence number of expected frame //接收窗口最小待接收帧的序号NAKsent = false;ACK = false;For each slot in receive_windowMark(slot)=false;while (true) //check repeatedlydoWait_For_Event(); //wait for arrival of frameif ( Event(Frame_Arrival) thenReceive_Frame_From_Physical_Layer();if ( Corrupted ( f.SeqNo ) AND NAKsent = false) thenSendNAK(f.SeqNo);NAKsent = true;end ifif ( f.SeqNo != RSeqNo AND NAKsent = false ) thenSendNAK(f.SeqNo);NAKsent = true;if ( f.SeqNo is in receive_window ) thenif ( Mark(RSeqNo) = false ) thenStore_frame(f.SeqNo);Mark(RSeqNo) = true;end ifend ifelsewhile ( Mark(RSeqNo))Extract_Data(RSeqNo);Deliver_Data_To_Network_Layer();RSeqNo = RSeqNo + 1;Send_ACK(RSeqNo);end whileend ifend ifend while
end

3 其他资料:

https://www.bilibili.com/video/av70228743?p=25
https://www.geeksforgeeks.org/sliding-window-protocol-set-1/
https://www.geeksforgeeks.org/sliding-window-protocol-set-2-receiver-side/
https://www.geeksforgeeks.org/sliding-window-protocol-set-3-selective-repeat/




动画网站:这个网站的动画模拟的帧都连续收到的,而且GNB使用的对立确认而不是累计确认。


https://www.ccs-labs.org/teaching/rn/animations/gbn_sr/

端到端--流量控制、可靠传输和滑动窗口机制学习资料整合相关推荐

  1. 数据链路层——流量控制(流量控制、可靠传输、滑动窗口)

    本文主要介绍以下几方面的知识: 流量控制概述 停止-等待协议 后退N帧协议(GBN) 选择重传协议(SR) 1.流量控制概述 (1)概念 (2)流量控制的方法 (3)可靠传输.流量控制.滑动窗口三者之 ...

  2. UDP(首部)和TCP(首部、三次握手、四次挥手、可靠传输、滑动窗口、流量控制、拥塞控制(慢开始、拥塞避免、快重传、快恢复))

    1.UDP 用户数据报协议 UDP(User Datagram Protocol): 是无连接的,尽最大可能交付,没有拥塞控制,面向报文(对于应用程序传下来的报文不合并也不拆分,只是添加 UDP 首部 ...

  3. TCP滑动窗口机制深度剖析

    客户端与服务器之间的通信是一个数据传输过程.通信的消息将以数据包形式进行传输. 为了更有效地进行通信,TCP 协议在数据进行数据传输时,使用滑动窗口机制来同时发送多个数据包.当数据包丢失时,TCP 协 ...

  4. TCP滑动窗口机制(附图例)

    文章目录 前言 一.滑动窗口的引出 二.流量控制 2.1 16位窗口大小 2.2 发送缓冲区 2.3 逐步解析滑动窗口运作 三.快重传机制 四.拥塞控制(仅供参考) 五.延迟应答与捎带应答(略) 总结 ...

  5. TCP滑动窗口机制(重要)

    本文参考了一些优秀的书籍->图解TCP/IP,TCP协议卷一,小林coding,还有等等的知乎,百度. 小林coding  小林coding 知乎牛客的文章 : 万字长文 | 23 个问题 TC ...

  6. 计算机网络笔记(5) 传输层滑动窗口协议(GBN、SR)

    文章目录 滑动窗口协议(Sliding-window protocol) GBN(Go-Back-N/后退N帧协议) SR协议(Selective Repeat/选择重传协议) 滑动窗口协议(Slid ...

  7. 计算机网络滑动窗口机制编程,计算机网络之滑动窗口机制

    1. 首先我们知道TCP可靠传输原理中的停止等待协议,该协议就是发送方每发送一个报文段后就停止发送,一直等收到接收方的确认后再发送下一个报文段. TCP通信是全双工的,我们假定A为发送方,B为接收方. ...

  8. 滑动窗口算法学习(一)

    目录 思想 案例 连续元素最大之和 题目 分析 解法 求相同字母异序词的下标 题目 分析 解法 思想 滑动窗口是指一个窗口,在一段区间上从左到右滑动,一直到区间的尾部,滑动窗口的长度是可以动态变化的( ...

  9. 【计算机网络复习 数据链路层】3.4.1 流量控制与可靠传输机制

    流量控制与可靠传输机制 一.数据链路层的流量控制 二.流量控制的方法 三.可靠传输.滑动窗口.流量控制 一.数据链路层的流量控制 较高的发送速度和较低的接收能力不匹配,会造成传输出错,因此流量控制也是 ...

最新文章

  1. jar打包混淆上传全自动日志
  2. 简(kun)单(nan)到让我开(jue)心(wang)的后缀自动机全家桶(普通后缀、广义后缀、子序列)...
  3. 函数中使用栈与使用堆时函数执行效率浅对比
  4. matlab生成图像路径列表和标签,打乱顺序
  5. jvm jstat_使用jstat报告自定义JVM指标集
  6. C语言实用算法系列之学生管理系统_单向链表外排序_堆内数组存储链表节点指针_函数指针+switch
  7. 国家信息安全公布:向日葵爆出执行漏洞,还有什么远程工具值得信赖?
  8. JavaWeb之编码问题
  9. 节点通讯共享信息的问题
  10. 视频聊天软件开发都需要用到哪些三方服务?
  11. 中国志愿者服务器注册,如何注册成为志愿者?中国志愿服务网注册流程
  12. polkitd进程解释
  13. trivial destructor
  14. 第十五周 内部排序一(2)验证交换排序
  15. 联想Y430p win8.1装win7双系统
  16. 服务器安装macos虚拟机,windows服务器装macos虚拟机系统
  17. 超级玛丽3号max即将停售70版本,到底保障如何,值不值得购买呢
  18. 爱情小筑 v3.1 build 2002.07.26 免费下载
  19. MIMIC-III数据库安装(Ubuntu )
  20. MVP Architecture on Android

热门文章

  1. 自学python3 最好的入门书籍-清华学霸整理,Python入门到精通这几本书帮你快速入行...
  2. python课程-Python课程
  3. python爬虫从入门到放弃-【爬虫】python爬虫从入门到放弃
  4. python自学要多久-自学Python要学多久可以学会?
  5. python在线怎么发音-Python如何实现文本转语音
  6. 自主品牌语音交互性能测评,荣威RX5反应更快,博越变暖男
  7. 单片机语音识别源码与资料(ASR M08-B模块arduino与51驱动)
  8. python中可以使用变量来引用函数-python如何引用其他py文件里的函数
  9. jQueryQQ音乐动态轮播图
  10. android自动更新demo,Android程序自动更新功能模块的实现方法【附完整demo源码下载】...