滑动窗口协议模拟程序的设计与实现

合集下载

基于FPGA+ARM的HDLC协议控制器的设计与实现

基于FPGA+ARM的HDLC协议控制器的设计与实现

基于FPGA+ARM的HDLC协议控制器的设计与实现杨尧;赵立立;侯翔昊【摘要】针对飞控模拟装置中基于HDLC协议通信需求,完成了一种新的基于FPGA+ARM架构HDLC协议控制器的设计.文中首先介绍了HDLC协议的帧结构和循环冗余校验(CRC)原理,然后结合FPGA可进行任意数据宽度操作和ARM编程简单灵活的优点,有效实现了符合HDLC协议的帧结构和CRC校验的应用方法,满足HDLC协议要求.应用结果表明设计能够很好地满足各项功能指标的技术要求.【期刊名称】《电子设计工程》【年(卷),期】2014(022)010【总页数】3页(P91-93)【关键词】HDLC协议;循环冗余校验(CRC)原理;FPGA;ARM【作者】杨尧;赵立立;侯翔昊【作者单位】西北工业大学航天学院,陕西西安710072;西北工业大学航天学院,陕西西安710072;西北工业大学航天学院,陕西西安710072【正文语种】中文【中图分类】TN919高级数据链路控制(HDLC,High-Level Data Control)是一种同步数据传输、面向比特的数据链路层协议,具有差错检测功能强大、高效和同步传输的特点,目前HDLC协议已成为是通信领域中应用最广泛的协议之一,在飞行器设计领域经常用作飞控与舵机,助推器等之间通信的通信协议。

飞行控制模拟装置是在飞行器研制的方案阶段,用于飞行控制系统软件开发及仿真评估,飞行控制软件往往是A级软件,它的任何问题都将造成飞行失效,进而引起整个系统的瘫痪。

采取飞行器控制系统模拟装置进行软件算法验证,对各个分系统软件调试和系统验证,能够加快飞行器设计进度,减少设计风险和成本。

本文研究的HDLC协议控制器用于某型飞行器的飞控模拟装置与舵机控制器之间的通信。

一般而言HDLC协议主要是通过使用专用芯片和软件编程的方式来实现[1]。

目前在市场上有很多专用的HDLC协议处理芯片如MT8952B、MK5025,这些芯片性能可靠但功能针对性太强,适合应用于特定用途的大批量产品中[2]。

计算机网络课程设计题目

计算机网络课程设计题目

计算机网络课程设计一. 中小型千兆网吧组建内容及要求:用BOSON软件实现小规模网络的模拟。

熟悉对路由器和交换机的配置命令,调通网络,并通过实例深入理解网络基本工作原理及实现方法。

学会网络构建、日常维护以及管理的方法,使学生掌握在信息化社会建设过程中所必须具备的计算机网络组网和建设所需的基本知识与操作技能,网吧包含100-200台上网的计算机。

二.小型网络的组建通过对网络的具体规划和组建,掌握网络互连设备的使用及工作原理;掌握IP 地址的配置及数据传输过程和路由的选择。

具体要求如下:1.使用模拟仿真软件,构建一个小型网络。

要求使用路由器、交换机等网络互连设备。

根据设计要求,选择网络类型。

2.分配和配置IP地址,要求配置内部网络地址。

3.对交换机、路由器等进行配置。

4.通过使用模拟仿真软件,模拟局域网间的数据通信过程。

5.分析通信过程中出现的问题,并加以解决。

6. 写出课程设计报告:设计目的、设计内容、设计方案、拓扑图、设备选型、方案报价、子网划分等内容。

(1)企业网络工程(2)银行网络工程(3)医院网络工程(4)校园网网络工程(5)大型机场信息网络工程(6)邮电综合管理信息网(7)某航空公司网络系统建设(8)某市宽带信息网络(9)证券交易网络系统(10)学校以太网网络建设三.Ping程序的设计与实现设计的目的是使学生掌握网络层协议的原理及实现方法。

设计内容,在给定的Ping程序的基础上做如下功能扩充:●-h 显示帮助信息●-b 允许ping一个广播地址,只用于IPv4●-t 设置ttl值,只用于IPv4●-q 安静模式。

不显示每个收到的包的分析结果,只在结束时,显示汇总结果Ping命令的基本描述Ping的操作是向某些IP地址发送一个ICMP Echo消息,接着该节点返回一个ICMP Echo reply消息。

ICMP消息使用IP头作为基本控制。

IP头的格式如下0 1 2 30 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+|Version| IHL |Type of Service| Total Length |+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+| Identification |Flags| Fragment Offset |+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+| Time to Live | Protocol | Header Checksum |+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+| Source Address |+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+| Destination Address |+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+Version=4IHL Internet头长Type of Service = 0Total Length IP包的总长度Identification, Flags, Fragment Offset 用于IP包分段Time to Live IP包的存活时长Protocol ICMP = 1Addresses 发送Echo消息的源地址是发送Echo reply消息的目的地址,相反,发送Echo 消息的目的地址是发送Echo reply消息的源地址。

计算机专业基础综合模拟试卷113_真题-无答案

计算机专业基础综合模拟试卷113_真题-无答案

计算机专业(基础综合)模拟试卷113(总分124,考试时间90分钟)1. 单项选择题单项选择题1-40小题。

下列每题给出的四个选项中,只有一个选项是最符合题目要求的。

1. 设n是描述问题规模的正整数,下面程序片段的时间复杂度是( )。

i=2j;while(i<n /3) i=i*3;A. 0(log2n)B. 0(n)C. 0()D. 0(n3)2. 若以1234作为双端队列的输入序列,则既不能由输入受限的双端队列得到,也不能由输出受限的双端队列得到的输出序列是( )。

A. 1234B. 4132C. 4231D. 42133. 将中缀表达式转换为等价的后缀表达式的过程中要利用堆栈保存运算符。

对于中缀表达式A—(B+C/D)×E,当扫描读到操作数E时,堆栈中保存的运算符依次是( )。

A. 一×B. 一(×C. 一+D. 一(+4. 一般说来,若深度为k的n个结点的二叉树具有最小路径长度时,第七层(根为第1层)上的结点数为( )。

A. n—2k—2+1B. n—2k—1+1C. n—2k+nD. n—2kk—15. 前序遍历和中序遍历结果相同的二叉树为( )。

Ⅰ.只有根结点的二叉树Ⅱ.根结点无右孩子的二叉树Ⅲ.所有结点只有左子树的二叉树Ⅳ.所有结点只有右子树的二叉树A. 仅有ⅠB. Ⅰ、Ⅱ和ⅣC. Ⅰ和ⅢD. Ⅰ和Ⅳ6. 以下关于二叉排序树的说法中,错误的有( )个。

Ⅰ.对一棵二叉排序树按前序遍历得出的结点序列是从小到大的序列Ⅱ.每个结点的值都比它左孩子的值大、比它右孩子结点的值小,则这样的一棵二叉树就是二叉排序树Ⅲ.在二叉排序树中,新插入的关键字总是处于最底层Ⅳ.删除二叉排序树中的一个结点再重新插入,得到的二叉排序树和原来的相同A. 1B. 2C. 3D. 47. 如果具有n个顶点的图是一个环,则它有( )棵生成树。

A. n2B. nC. n一1D. 18. 己知一个有向图的邻接表存储结构如右图所示,根据有向图的深度优先遍历算法,从顶点l出发,所得到的顶点序列是( )。

(完整版)计网协议5和协议6程序

(完整版)计网协议5和协议6程序

程序设计报告(2011/2012学年第一学期)题目:数据链路层滑动窗口协议的设计与实现专业网络工程学生姓名朱瑞霖、李小明学生学号 09211517 、 09211524日期 2011-12-01一、实验内容和实验目的利用所学数据链路层原理,自己设计一个滑动窗口协议,在仿真环境下编程实现有噪音信道环境下两站点之间无差错双工通信。

信道模型为8000bps 全双工卫星信道,信道传播时延270毫秒,信道误码率为10-5,信道提供字节流传输服务,网络层分组长度固定为256字节。

通过该实验,进一步巩固和深刻理解数据链路层误码检测的CRC 校验技术,以及滑动窗口的工作机理。

滑动窗口机制的两个主要目标:(1) 实现有噪音信道环境下的无差错传输;(2)充分利用传输信道的带宽。

在程序能够稳定运行并成功实现第一个目标之后,运行程序并检查在信道没有误码和存在误码两种情况下的信道利用率。

为实现第二个目标,提高滑动窗口协议信道利用率,需要根据信道实际情况合理地为协议配置工作参数,包括滑动窗口的大小和重传定时器时限以及ACK 搭载定时器的时限。

这些参数的设计,需要充分理解滑动窗口协议的工作原理并利用所学的理论知识,经过认真的推算,计算出最优取值,并通过程序的运行进行验证。

通过该实验提高同学的编程能力和实践动手能力,体验协议软件在设计上各种问题和调试难度,设计在运行期可跟踪分析协议工作过程的协议软件,巩固和深刻理解理论知识并利用这些知识对系统进行优化,对实际系统中的协议分层和协议软件的设计与实现有基本的认识。

二、实验环境Window操作系统下,Microsoft Visual C++ 6.0 集成化开发环境。

三、实验分工协议5主要由李小明完成,协议6主要由朱瑞霖完成,两协议的测试以及部分参数的设定、测试由两人共同完成。

实验报告由李小明和朱瑞霖共同整理完成。

四、软件设计1、数据结构分析(a)协议五#define inc(k)if(k<MAX_SEQ)k++;else k=0inc宏定义了窗口更新函数,按循环式前进更新。

C语言网络协议分析与实现

C语言网络协议分析与实现

C语言网络协议分析与实现网络协议是计算机网络通信中的重要组成部分,它定义了计算机之间数据交换的规则和方式。

C语言作为一种高效、可移植的编程语言,被广泛应用于网络协议的开发和实现。

本文将从网络协议的概念入手,结合C语言,探讨网络协议的分析与实现方法。

一、网络协议概述网络协议是网络通信中的规范和约定,它包括了数据传输的格式、数据交换的方式以及网络节点之间的通信流程等内容。

常见的网络协议包括TCP/IP协议、HTTP协议、FTP协议等。

在网络协议的分析与实现中,我们重点关注TCP/IP协议。

二、C语言网络协议分析1. TCP/IP协议的分层结构TCP/IP协议是互联网通信的基础协议,它由四个分层组成:物理层、数据链路层、网络层和传输层。

这些分层对于实现网络协议至关重要,通过C语言的网络编程,我们可以对TCP/IP协议进行逐层分析。

2. C语言网络编程基础C语言提供了丰富的网络编程库,如socket库等,可以方便地实现网络协议。

在C语言中,我们可以使用socket函数创建和管理套接字,使用bind函数将套接字与端口绑定,使用listen函数监听连接请求,使用accept函数接受连接等。

3. TCP协议的实现TCP协议是一种面向连接、可靠的传输协议,它通过三次握手建立连接、通过滑动窗口机制实现可靠传输等。

在C语言中,我们可以使用socket函数创建TCP套接字,通过bind、listen和accept函数实现TCP服务器的建立,通过connect函数实现TCP客户端的连接。

4. IP协议的实现IP协议是一种无连接的传输协议,负责将数据包从源主机发送到目的主机。

通过C语言的网络编程,我们可以实现IP协议的分片、重组等功能。

三、C语言网络协议实现1. 套接字编程C语言中的套接字编程是实现网络协议的基础。

我们可以使用socket函数创建套接字,使用bind函数将套接字与端口绑定,使用listen函数监听连接请求,使用accept函数接受连接,使用send和recv 函数进行数据的发送与接收等。

滑动窗口协议

滑动窗口协议
实验三:滑动窗口协议
实验目的
实现滑动窗口协议中的1bit滑动窗口协议,提供系统调用接口函 数
实验原理
滑动窗口协议(Sliding Window Protocol),属于TCP协议 的一种应用,用于网络数据传输时的流量控制,以避免拥塞 的发生。该协议允许发送方在停止并等待确认前发送多个数 据分组。由于发送方不必每发一个分组就停下来等待确认, 因此该协议可以加速数据的传输,提高网络吞吐量。
帧丢失测试
帧丢失测试—发送端
帧丢失测试—接收端
发送及接收过程
同帧校验和错误类似,帧丢失错误同样会引发接收端回送 nak否定应答消息。不同的是,nak否定应答帧是在丢失帧 的下一帧收到后发出的。如图5所示,由于传输过程中2号帧 丢失,接收端在收到1号帧后,接下来收到了3号帧,这时, 接收端知道由于某种原因2号帧丢失了,于是立即发送了2号 帧的否定应答帧。在发送端收到该nak2帧后,也马上重传了 该帧,nak机制同样加快了对丢失帧的重传操作。
程序没有模拟信道发生随机错误的情况,如果需要读者可以使用伪随机 函数自己添加这部分模拟代码。
帧校验错测试
在做新的测试前,首先将发送端和接收端进行重置,即两端 都先停止再重新开始,然后再做后续测试(如果需要,停止 后可以修改相关参数)。
帧校验错测试—发送端
帧校验错测试—接收端
发送及接收过程
通过手工设置2号帧的校验和错误来模拟信道传输中的误码 情况。可以看到接收方在收到2号错误帧后马上向发送方回 送了一个nak2的否定应答帧,发送方在收到nak2后也立即 重传了该帧,因此nak机制加速了错误帧的重传过程(否则 如果接收方直接丢弃的话,就只能等到发送方2号帧的重发 定时器超时后进行重传)
发送程序界面,同样有4个功能区

滑动窗口算法

滑动窗口算法

滑动窗口算法1. 滑动窗口算法滑动窗口算法工作过程如下。

首先,发送方为每1帧赋一个序号(sequence number),记作S e q N u m。

现在,让我们忽略S e q N u m 是由有限大小的头部字段实现的事实,而假设它能无限增大。

发送方维护3个变量:发送窗口大小(send window size),记作S W S,给出发送方已经发送但未确认的帧数的上界;L A R表示最近收到的确认帧(last acknowledgement re c e i v e d)的序号;L F S表示最近发送的帧(last frame sent)的序号,发送方还维持如下的不变式:LAR-LFR≤RWS当一个确认到达时,发送方向右移动L A R,从而允许发送方发送另一帧。

同时,发送方为所发的每个帧设置一个定时器,如果定时器在A C K到达之前超时,则重发此帧。

注意:发送方必须存储最多S W S个帧,因为在它们得到确认之前必须准备重发。

接收方维护下面3个变量:接收窗口大小(receive window size),记为RW S/* 对应允许接受的数据包*/,给出接收方所能接收的无序帧数目的上界;L A F表示可接收帧(largest acceptable frame)的序号;L F R表示最近收到的帧(last frame re c e i v e d)的序号。

接收方也维持如下不变式:LFS-LAR≤SWS(NFE为等待下一帧的序号)当一个具有顺序号S e q N u m的帧到达时,接收方采取如下行动:如果S e q N u m≤L F R或S e q N u m > L A F,那么帧不在接收窗口内,于是被丢弃;如果L F R<Se q N u m≤L A F,那么帧在接收窗口内,于是被接收。

现在接收方需要决定是否发送一个A C K。

设SeqNumToACK表示未被确认帧的最大序号,则序号小于或等于SeqNumToACK的帧都已收到。

智慧树知到《玩转计算机网络—计算机网络原理(山东联盟)》章节测试答案

智慧树知到《玩转计算机网络—计算机网络原理(山东联盟)》章节测试答案

智慧树知到《玩转计算机网络—计算机网络原理(山东联盟)》章节测试答案第一章1、按照网络的规模和作用范围大小递增的顺序,给网络排序。

N、PAN、MAN、WANB.PAN、LAN、WAN、MANC.PAN、LAN、MAN、WANN、MAN、WAN、PAN答案: PAN、LAN、MAN、WAN2、新型计算机网络ARPAnet是采用哪种交换技术实现的?A.电路交换B.分组交换C.报文交换D.混合交换答案: 分组交换3、协议是指在( )之间进行通信的规则或约定。

A.同一节点的上下层B.不同节点C.相邻实体D.不同节点对等实体答案: 不同节点对等实体4、()时延是结点在发送数据时使数据块从结点进入到传输媒体所需要的时间。

A.传播时延B.发送时延C.排队时延D.处理时延答案: 发送时延5、1968年6月,世界上最早的计算机网络是()。

A.InternetB.ARPAnetC.以太网D.令牌环网答案: ARPAnet6、Internet本质上属于()。

A.电路交换网络B.报文交换网络C.分组交换网络D.虚电路网络答案: 分组交换网络7、在OSI参考模型中,第k层与它之上的第k+1层的关系是什么?A.第k层为第k+1层提供服务。

B.第k+1层将从第k层接收的报文添加一个报头。

C.第k层与第k+1层相互没有影响D.第k层使用第k+1层提供服务。

答案: 第k层为第k+1层提供服务。

8、下列哪一项是一个标准协议的参考模型(顶端到底部)?A.应用层、运输层、会话层、数据链路层B.应用层、运输层、网络层、网络接口层C.应用层、运输层、网络层、数据链路层、物理层D.网络层、数据链路层、物理层答案: 应用层、运输层、网络层、网络接口层9、下列选项中,不属于网络体系结构所描述的内容是()。

A.网络的层次B.每一层使用的协议C.协议的内部实现细节D.每一层必须完成的功能答案: 协议的内部实现细节10、计算机网络可以被理解为()。

A.被执行计算机数据处理的软件模块。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

长沙理工大学《网络协议编程》课程设计报告梁碧莹学院计算机与通信工程专业网络工程班级网络08-02 学号************ 学生姓名梁碧莹指导教师王静课程成绩完成日期2011年7 月 2 日课程设计任务书计算机与通信工程学院网络工程专业课程设计成绩评定学院计算机通信工程专业网络工程班级网络08-02 班学号200858080205学生姓名梁碧莹指导教师王静课程成绩完成日期2011年7 月2 日指导教师对学生在课程设计中的评价指导教师对课程设计的评定意见滑动窗口协议模拟程序的设计与实现学生:梁碧莹指导老师:王静摘要:本文主要介绍如何根据滑动窗口协议的原理,在Visual C++的平台上设计一个滑动窗口协议模拟程序,并最终使该程序得以实现。

本次程序设计分两部分:第一部分是发送方,第二部分是接收方。

通过发送方和接收方之间的数据帧传输模拟,学习滑动窗口协议控制流量的原理和方法,以及滑动窗口协议的工作机制。

关键词:滑动窗口协议流量控制工作机制模拟程序Design and Implementation of Sliding Window Protocol Procedures Student: Liang Biying Instructor: Wang JingAbstract: This paper describes the principle of Sliding Window Protocol and how to design and implement a procedure about the Sliding Window Protocol. The program design in two parts, one is the sender, the other is the receiver. After all, studying the principle and method of how the Sliding Window Protocol control the flow, and how the Sliding Window Protocol works through the transmission of data between the sender and the receiver.Keywords: Sliding window protocol Flow control Working mechanism Simulation program目录1 引言 (1)1.1 滑动窗口协议概述 (1)1.2 本次设计任务 (1)2 滑动窗口协议介绍 (2)2.1 滑动窗口协议工作原理 (2)2.2 滑动窗口算法 (2)3 设计方案及分析 (5)3.1 窗口机制总体设计及分析 (5)3.2 协议选择及分析 (6)3.3 发送方与接收方设计流程 (6)4 程序测试 (12)5 总结 (15)5.1 程序改进与完善 (15)5.2 设计总结 (15)参考文献 (16)附录 (17)1 引言随着网络的不断壮大,用户数量、信息量的需求不断增加,网络负荷越来越重。

此时,我们迫切需要一种机制来控制网络的流量,减少网络拥堵的几率,提高传输的效率。

因此,一种名为滑动窗口的协议应运而生。

滑动窗口协议,是TCP使用的一种方法。

该协议允许发送方在停止并等待确认前可以连续发送多个分组。

由于发送方不必每发一个分组就停下来等待确认,因此该协议可以加速数据的传输。

经测试证明,该协议还能有效地解决TCP 的高协议处理开销和UDP的低可靠性之间的矛盾,1.1滑动窗口协议概述滑动窗口协议,是TCP使用的一种方法。

滑动窗口协议也称为Go-Back-N(GBN)协议。

在该协议中,允许发送方传输多个分组(当有多个分组时)而不需等待确认,但它也受限于在流水账中未确认的分组数不能超过最大允许数N。

只有在接收窗口向前滑动时(与此同时也发送了确认),发送窗口才有可能向前滑动。

收发两端的窗口按照以上规律不断地向前滑动,因此这种协议又称为滑动窗口协议。

当发送窗口和接收窗口的大小都等于 1时,就是。

当发送窗口大于1,接收窗口等于1时,就是回退N步协议。

当发送窗口和接收窗口的大小均大于1时,就是选择重发协议。

协议中规定,对于窗口内未经确认的分组需要重传。

这种分组的数量最多可以等于发送窗口的大小,即滑动窗口的大小n 减去1(因为发送窗口不可能大于(n-1),起码接收窗口要大于等于1)。

1.2本次设计任务本次的设计任务是根据滑动窗口协议的工作原理,在Visual C++ 6.0的平台上用C++语言编写一个基于TCP滑动窗口协议的模拟程序。

要求该程序能够实现滑动窗口协议的发送和接收数据帧功能,在此功能上体现滑动窗口协议的运作,如:发送帧被接收与否的判断,帧超时重发,帧缓存等。

2滑动窗口协议介绍2.1滑动窗口协议工作原理TCP协议在工作时,如果发送端的TCP协议每传输一个数据分组后,必须等待接收端的确认才能够发送下一个分组,由于的时延,将有大量时间被用于等待确认,导致传输效率低下。

为此TCP在进行数据传输时使用了。

TCP滑动窗口用来暂存两台计算机间要传送的数据分组。

每台运行TCP协议的计算机有两个滑动窗口:一个用于数据发送,另一个用于数据接收。

发送端待发数据分组在排队等待送出。

被滑动窗口框入的分组,是可以在未收到接收确认的情况下最多送出的部分。

滑动窗口左端标志X的分组,是已经被接收端确认收到的分组。

随着新的确认到来,窗口不断向右滑动。

TCP协议软件依靠滑动窗口机制解决传输效率和问题。

它可以在收到确认信息之前发送多个数据分组。

这种机制使得网络通信处于忙碌状态,提高了整个网络的吞吐率,它还解决了端到端的通信流量控制问题,允许接收端在拥有容纳足够数据的缓冲之前对传输进行限制。

在实际运行中,TCP滑动窗口的大小是可以随时调整的。

收发端TCP协议软件在进行分组确认通信时,还交换滑动窗口控制信息,使得双方滑动窗口大小可以根据需要动态变化,达到在提高的同时,防止拥塞的发生。

称窗口左边沿向右边沿靠近为窗口合拢,这种现象发生在数据被发送和确认时。

当窗口右边沿向右移动时将允许发送更多的数据,称之为窗口张开。

这种现象发生在另一端的接收进程读取已经确认的数据并释放了TCP的接收缓存时。

当右边沿向左移动时,称为窗口收缩。

Host Requirements RFC强烈建议不要使用这种方式。

但TCP必须能够在某一端产生这种情况时进行处理。

如果左边沿到达右边沿,则称其为一个零窗口。

2.2滑动窗口算法滑动窗口算法工作过程如下:首先,发送方为每1帧赋一个序号(sequence number),记作SeqNum。

现在,我们忽略SeqNum是由有限大小的头部字段实现的事实,而假设它能无限增大。

发送方维护3个变量:发送窗口大小(send window size),记作SWS,给出发送方能够发送但未确认的帧数的上界;LAR表示最近收到的确认帧(last acknowledgement received)的序号;LFS表示最近发送的帧(last frame sent)的序号,发送方还维持如下的不变式:LAR-LFS≤SWS 。

图2-1 滑动窗口算法的时间线当一个确认到达时,发送方向右移动LAR,从而允许发送方发送另一帧。

同时,发送方为所发的每个帧设置一个定时器,如果定时器在AC K到达之前超时,则重发此帧。

注意:发送方必须存储最多SWS个帧,因为在它们得到确认之前必须准备重发。

接收方维护下面3个变量:接收窗口大小(receive window size),记为RWS,给出接收方所能接收的无序帧数目的上界;LAF表示可接收帧(largest acceptable frame)的序号;LFR表示最近收到的帧(last frame rece ived)的序号。

接收方也维持如下不变式:LFS-LAR≤SWS图2-2 接收方的滑动窗口当一个具有顺序号SeqNu m的帧到达时,接收方采取如下行动:如果SeqNum≤LFR或SeqNum> LAF,那么帧不在接收窗口内,于是被丢弃;如果LFR <SeqNum≤LAF,那么帧在接收窗口内,于是被接收。

现在接收方需要决定是否发送一个ACK。

设SeqNum To ACK表示未被确认帧的最大序号,则序号小于或等于SeqNum To ACK的帧都已收到。

即使已经收到更高序号的分组,接收方仍确认SeqNum To ACK的接收。

这种确认被称为是累积的(cumulative)。

然后它设置LFA = SeqNum To ACK,并调整LFA = LFR + RWS。

LFR图2-3 接收方的滑动窗口窗口协议算法有三个功能:●在不可靠链路上可靠地传输帧●保持帧的传输顺序●支持流量控制3设计方案及分析3.1 窗口机制总体设计及分析图3-1 发送方和接收方状态示意图设计分析:(1)初始态,发送方没有帧发出,发送窗口前后沿相重合。

接收方0号窗口打开,等待接收0号帧;(2)发送方打开0号窗口,表示已发出0帧但尚未确认返回信息。

此时接收窗口状态不变;(3)发送方打开0、1号窗口,表示0、1号帧均在等待确认之列。

至此,发送方打开的窗口数已达规定限度,在未收到新的确认返回帧之前,发送方将暂停发送新的数据帧。

接收窗口此时状态仍未变;(4)接收方已收到0号帧,0号窗口关闭,1号窗口打开,表示准备接收1号帧。

此时发送窗口状态不变;(5)发送方收到接收方发来的0号帧确认返回信息,关闭0号窗口,表示从重发表中删除0号帧。

此时接收窗口状态仍不变;(6)发送方继续发送2号帧,2号窗口打开,表示2号帧也纳入待确认之列。

至此,发送方打开的窗口又已达规定限度,在未收到新的确认返回帧之前,发送方将暂停发送新的数据帧,此时接收窗口状态仍不变;(7)接收方已收到1号帧,1号窗口关闭,2号窗口打开,表示准备接收2号帧。

此时发送窗口状态不变;(8)发送方收到接收方发来的1号帧收毕的确认信息,关闭1号窗口,表示从重发表中删除1号帧。

此时接收窗口状态仍不变。

3.2协议选择及分析在设计过程中,我主要运用了选择重传协议,该协议能很好地弥补了1比特滑动窗口协议和后退n协议的缺点,是比较完善的滑动窗口协议。

在选择重传协议中,当接收方发现某帧出错后,其后继续送来的正确的帧虽然不能立即递交给接收方的高层,但接收方仍可收下来,存放在一个缓冲区中,同时要求发送方重新传送出错的那一帧。

一旦收到重新传来的帧后,就可以原已存于缓冲区中的其余帧一并按正确的顺序递交高层。

这种方法称为选择重发(SELECTICE REPEAT),其工作过程如图所示。

显然,选择重发减少了浪费,但要求接收方有足够大的缓冲区空间。

相关文档
最新文档