长沙理工大学
《网络协议编程》课程设计报告
梁碧莹
学生姓名梁碧莹指导教师王静_________ 院计算机与通信工程专
级网络08-02 学
业网络工程
号200858080205
课程成绩______________________ 完成日期2011年7月2旦
课程设计任务书
(4 )在老师的指导下,要求每个学生独立完成课程设计的全部内容
应当提交的文件:
(1)课程设计报告。
(2)课程设计附件(源程序、各类图纸、实验数据、运行截图等)
课程设计成绩评定
学院计算机通信工程专业网络工程
班级网络08-02班学号200858080205
学生姓名梁碧莹_______ 指导教师王静________ 课程成绩____________________ 完成日期2011年7月2日
指导教师对学生在课程设计中的评价
指导教师对课程设计的评定意见
综合成绩指导教师签字年月曰
滑动窗口协议模拟程序的设计与实现
学生:梁碧莹指导老师:王静
摘要:本文主要介绍如何根据滑动窗口协议的原理,在Visual C++的平台上设计一个滑动窗口协议模拟程序,并最终使该程序得以实现。本次程序设计分两部分:第一部分是发送方,第二部分是接收方。通过发送方和接收方之间的数据帧
传输模拟,学习滑动窗口协议控制流量的原理和方法,以及滑动窗口协议的工作
机制。
关键词:滑动窗口协议流量控制工作机制模拟程序
Desig n and Impleme ntati on of Slid ing
Win dow Protocol Procedures
Stude nt: Lia ng Biyi ng In structor: Wang Jing
Abstract: This paper describes the prin ciple of Slidi ng Window Protocol and how to design and implement a procedure about the Sliding Win dow Protocol. The program desig n 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 betwee n the sen der and the receiver.
Keywords: Slidi ng wi ndow protocol Flow con trol Worki ng
mecha nism Simulatio n program
目录
1引言 (1)
1.1 滑动窗口协议概述 (1)
1.2 本次设计任务 (2)
2 滑动窗口协议介绍 (2)
2.1 滑动窗口协议工作原理 (2)
2.2 滑动窗口算法 (3)
3 设计方案及分析 (6)
3.1 窗口机制总体设计及分析 (6)
3.2 协议选择及分析 (7)
3.3 发送方与接收方设计流程 (8)
4 程序测试 (18)
5 总结 (21)
5.1 程序改进与完善 (21)
5.2 设计总结 (22)
参考文献 (22)
附录 (23)
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滑动窗口的大