滑动窗口协议设计与实现-停等协议发送方
UDP数据协议报学习

UDP封装:
IP包 IP头 UDP头 载荷数据
UDP数据报
源端口(Source Port) 长度(Length) 数据(Data) (1)源端口:用于标识数据报的源端进程,字段长度为16比特,最大支持64 k个端口号。源端进程不需要目的端 返回数据报,源端口字段可设为0 (2)目的端口:目的端进程所使用的端口,字段长度为16比特,最大支持64 k个端口号。 (3)长度:16位的长度字段,表明包括UDP头和数据在内的整个UDP数据报的长度。 (4)校验和:16位的错误检查字段,基于部分IP头信息,UDP头和载荷数据的内容计算得到,用于检测传输过程 中出现的错误。 目的端口(Destination Port) 校验和(Checksum) UDP头格式
UDP需要滑动窗口协议吗?
UDP是不可靠的,本身缺乏拥塞控制机制,如果想实现可靠文件传输,需要加 入额外的机制来确保可靠。
优点: 1、实现拥塞控制,避免丢包 2、实现可靠文件传输 缺点:
1、加大系统开销,提高CPU占用率
2、延迟大,由于需要等待确认和超时
面向连接和无连接协议:
面向连接的服务:就是通信双方在通信时,要事先建立一条通信线路,其过程有建立连接
UDP进行路径MTU发现:
本图给出了在目的主机(slip)上所收集到的tcpdump对于第一个到达数 据报的输出结果。 可以看出在slip主机上的收到的包是被bsdi又重新分了片的 第1行是272 第2行是272
第3行是8
第4行是106
滑动窗口协议:
滑动窗口是一种流量控制技术。早期的网络通信中,通信双方不会考虑网络的拥挤 情况直接发送数据。由于大家不知道网络拥塞状况,一起发送数据,导致中间结点阻
以及20字节IP首部,因此,总IP数据报长度是 572字节。
选择重传协议,窗口大小

选择重传协议,窗口大小篇一:计算机网络部分习题答案1 考虑在图5-8中的4比特生成多项式G,假设D的值为10101010。
R的值是什么?答:由图5-8知:1001G用D除以G,过程如下:3. 考虑一种GBN协议,其发送方窗口为3,序号范围为1,024。
假设在时刻t,接收方期待的下一个有序分组的序号是k。
假设媒体不会对报文重新排序。
回答以下问题:a. 在t时刻,发送方窗口内的报文序号可能是多少?为什么?b. 在t时刻,在当前传播回到发送方的所有可能报文中,ACK字段中所有可能值是多少?为什么?答:一般而言,发送方窗口为N(本题中N=3)。
a. 一种情况是,接收方收到k-1号分组,并且对之前接收到的所有分组都进行了确认,且确认正确到达了发送方,那么发送方的窗口[k,k+N-1]。
如果处于另一种极端,发送方未收到任何ACK,窗口[k-N,k-1]。
因此,窗口始于[k-N,k]中某一点,大小为3。
b. 接收方等待分组k,收到和确认了k-1及其以前所有分组,如果这N个ACK未到达发送方,ACK范围[k-N,k-1],由于发送方已经发送分组[k-N,k-1],所以肯定收到了ACK k-N-1,根据累积确认原理,接收方一旦对k-N-1进行确认,则不会再对小于k-N-1号分组确认,故而ACK范围[k-N-1,k-1]。
滑动窗口概念停等法( WT = WR = 1 )滑动窗口法:1 出错全部重发( WT ≤ 2n-1 ) (n次方)2出错选择重发( WR ≤ 2n -1) (n-1次方)这个滑动窗口的概念网络上很多关于它的概念,但是都不是很清楚,我把一些难以理解的概念以问答的方式写出来来回答下:在停止等待协议中,确认帧是否需要序号?请说明理由。
答:在一般情况下,确认帧不需要序号。
但如果超时时间设置短了一些,则可能会出现问题,即有时发送方会分不清对哪一帧的确认。
试证明:当用n个比特进行编号时,若接收窗口的大小为1,则只有在发送窗口的大小WT≤2n-1时,连续ARQ协议才能正确运行。
network_v2_chapter3计算机网络原理与技术-华蓓2

编码集的检错与纠错能力
编码集的海明距离:编码集中任意两个有效码字的海明距 离的最小值。
检错能力:为检测出 d 比特错误,编码集的海明距离至少 应为 d+1;奇偶校验是能够检测出1比特错误的检错码。
3.2 滑动窗口
滑动窗口是计算机网络中最著名的算法,它可以 应用在数据链路层及传输层,用来完成三个不同 的任务:
在不可靠的链路(网络)上可靠地传输数据 保持数据的传输顺序 支持流量控制
在数据链路层上,以上三个功能组合在一个滑动 窗口协议中。
发送窗口
发送窗口:发送端允许发送的帧序号表。 发送窗口大小:发送端最大允许的未确认帧数目。 发送窗口下沿:最早发送但尚未被确认的帧序号。 发送窗口上沿:(发送窗口下沿+发送窗口大小-1)mod 2n。 当收到对发送窗口下沿帧的确认时,发送窗口整体向前滑动一个序号,
Ack0 Ack1 Ack2 Ack3 Ack4 Ack5 Ack6 Ack7
01
E D D D D D D2 3 4 5 6 7 8
欲欲
欲欲欲欲欲欲欲欲
欲 3-9 Go Back n 欲 欲 欲
选择重传
选择重传
当接收端收到一个出错帧或乱序帧时,后续到达的帧 只要校验正确且落在接收窗口内,都放入接收缓冲区 中;发送端超时后只重传最早发送但未被确认的帧。
可纠正的单比特差错 101011 101100 011101 001010
校验错
校验错
循环冗余码(CRC)
CRC是一种多项式编码,它将位串看成是某个一元多项式的系数,如 1011001看成是一元多项式X6 + X4 + X3 + 1的系数。
TCP滑动窗口与回退N针协议

TCP滑动窗⼝与回退N针协议滑动窗⼝协议1.发送端和接收端分别设定发送窗⼝和接收窗⼝。
2.三次握⼿的时候,客户端把⾃⼰的缓冲区⼤⼩也就是窗⼝⼤⼩发送给服务器,服务器回应是也将窗⼝⼤⼩发送给客户端,服务器客户端都知道了彼此的窗⼝⼤⼩。
3.⽐如主机A的发送窗⼝⼤⼩为5,主机A可以向主机B发送5个单元,如果B缓冲区满了,A就要等待B确认才能继续发送数据。
4.如果缓冲区中有1个报⽂被进程读取,主机B就会回复ACK给主机A,接收窗⼝向前滑动,报⽂中窗⼝⼤⼩为1,就说明A还可以发送1个单元的数据,发送窗⼝向前滑动,之后等待主机B的确认报⽂。
只有接收窗⼝向前滑动并发送了确认时,发送窗⼝才能向前滑动。
停⽌等待ARQ协议(stop and wait)当发送窗⼝和接收窗⼝都等于1时,就是停⽌等待协议。
发送端给接收端发送数据,等待接收端确认回复ACk,并停⽌发送新的数据包,开启计时器。
数据包在计时器超时之前得到确认,那么计时器就会关闭,并发送下⼀个数据包。
如果计时器超时,发送端就认为数据包丢失或被破坏,需要重新发送之前的数据包,说明数据包在得到确认之前,发送端需要存储数据包的副本。
停⽌等待协议是发出⼀个帧后得到确认才发下⼀个,降低了信道的利⽤率。
退后N帧协议在发送完⼀个帧后,不⽤停下来等待确认,⽽是可以连续发送多个数据帧。
收到确认帧时,任可发送数据,这样就减少了等待时间,整个通信的通吞吐量提⾼。
如果前⼀个帧在超时时间内未得到确认,就认为丢失或被破坏,需要重发出错帧及其后⾯的所有数据帧。
这样有可能有把正确的数据帧重传⼀遍,降低了传送效率。
线路很差时,使⽤退后N帧的协议会浪费⼤量的带宽重传帧。
选择重传协议NAK:⾮确认帧,当在⼀定时间内没有收到某个数据帧的ACK时,回复⼀个NACK。
在发送过程中,如果⼀个数据帧计时器超时,就认为该帧丢失或者被破坏,接收端只把出错的的帧丢弃,其后⾯的数据帧保存在缓存中,并向发送端回复NAK。
连续ARQ协议介绍

算较为合理的重传时间。
发送的分组数量
传输控制 确认
超时定时器 编号 重传
连续 ARQ 协议与停止等待协议
连续ARQ协议
一次发送多个分组
滑动窗口协议 单独确认 + 累积确认
每个发送的分组 每个发送的分组 回退N,多个分组
(b) 接收方维持接收窗口
发送方和接收方分别维持发送窗口和接收窗口
滑动窗口协议
发送窗口 123456789
接收窗口 123456789
发送窗口大小 发送窗口大小
接收窗口大小
发送后,在收到确认前,发送窗口会变小
发送方和接收方分别维持发送窗口和接收窗口
滑动窗口协议
发送窗口 123456789
接收窗口 123456789
动一个分组的位置。
累积确认
接收方一般采用累积确认的方式。即不必对收到的分组逐个发送确认, 而是对按序到达的最后一个分组发送确认,这样就表示:到这个分组 为止的所有分组都已正确收到了。
优点:容易实现,即使确认丢失也不必重传。 缺点:不能向发送方反映出接收方已经正确收到的所有分组的信息。
累积确认
停止等待协议
一次发送一个分组
停等-等待 单独确认 每个发送的分组 每个发送的分组 一个分组
连续 ARQ 协议
滑动窗口协议比较复杂,是 TCP 协议的精髓所在。 发送方维持的发送窗口,它的意义是:位于发送窗口内的分组都可连
续发送出去,而不需要等待对方的确认。这样,信道利用率就提高了。 连续 ARQ 协议规定,发送方每收到一个确认,就把发送窗口向前滑
连续ARQ协议介绍
ARQ协议

10/13
选择重传ARQ
在GBN协议中可能将已正确传送到接收端的帧再次重发,
这就造成了信道资源的浪费,为了进一步提高信道的利用率 可设法只重传出现差错的数据帧或是超时的数据帧, 加大接收窗口,以便先收下发送序号不连续但仍处在接收窗口中的 那些数据帧
优:避免重复传送那些本来已经正确到达接收端的数据帧 缺:在接收端要设置具有相当容量的缓存空间
5/13
三种错误
A
B
A
B 出错
A
B 丢 失 !
A
B
第一部分
Electrical and Mechanical
My class one, our home
送 主 机
tout 重 传 送 主 机 (b) 数据帧出错 重 传
三种错误
tout 丢 失 ! 重 传
送 主 机 丢 弃
时 间
送 主 机
送 主 机 (c) 数据帧丢失
(a) 正常情况
(d) 确认帧丢失
6/13
停止等待协议
设 tf 是一个数据帧的发送时间 ,数据帧的长度 lf (bit),数据的发送速率 C (bit/s): tf = lf/C = lf/C (单位为s) 停止等待协议中数据帧与确认帧的发送时间关系:
第一部分
Electrical and Mechanical
My class one, our home
定量分析
7/13
连续ARQ原理
第一部分
Electrical and Mechanical
My class one, our home
8/13
回退N帧协议
在等不到 2 号帧的确认而重传 2 号数据帧时,虽然结点 A 已经发完了 5 号帧,但仍必须向回走,将 2号帧及其以后 的各帧全部进行重传。 连续 ARQ 又称为Go-back-N ARQ( GBN) 要对所发送的数据帧进行编号,每个数据帧的发送序号也要 占用较多的比特数,增加了一些不必要的开销
HDLC协议
HDLC协议协议名称:HDLC协议一、引言HDLC(High-Level Data Link Control)协议是一种数据链路层协议,用于在计算机网络中进行可靠的数据传输。
本协议定义了数据的帧格式、错误检测和纠正机制、流量控制以及数据的传输顺序等重要内容。
本文将详细介绍HDLC协议的标准格式及其相关要求。
二、协议标准格式1. 帧格式HDLC协议使用帧(Frame)作为数据传输的基本单位。
每个帧由标志字节(Flag)、地址字段(Address)、控制字段(Control)、信息字段(Information)和帧检验序列(FCS)组成。
帧格式如下:| 标志字节 | 地址字段 | 控制字段 | 信息字段 | FCS | 标志字节 ||----------|----------|----------|----------|-----|----------|| 1字节 | 1字节 | 1字节 | 可变长度 | 2字节 | 1字节 |- 标志字节:用于标识帧的开始和结束,通常为01111110。
- 地址字段:指定接收方的地址,可用于多点通信。
- 控制字段:用于控制帧的流程和功能,如传输模式、错误检测等。
- 信息字段:携带实际的数据内容。
- FCS:帧检验序列,用于检测和纠正传输过程中的错误。
2. 流程控制HDLC协议支持两种基本的流程控制机制:停止-等待(Stop-and-Wait)和滑动窗口(Sliding Window)。
- 停止-等待:发送方发送一个帧后,必须等待接收方的确认帧才能发送下一个帧。
- 滑动窗口:发送方可以连续发送多个帧,接收方根据窗口大小来确认接收的帧。
3. 错误检测和纠正为了确保数据的可靠传输,HDLC协议使用循环冗余检验(CRC)算法进行错误检测和纠正。
发送方在帧的FCS字段中计算并附加一个校验值,接收方则通过计算收到的帧的FCS字段来验证数据的完整性。
4. 传输顺序HDLC协议采用字节顺序传输,即按照字节的顺序依次传输数据。
第20章 TCP的成块数据流
例子,一端希望向左移动右边沿来收缩窗口,但没能够这样做。
图20-5表示了这三种情况。因为窗口的左边
合拢
收缩 张开
沿受另一端发送的确认序号的控制,因此不可能 向左边移动。如果接收到一个指示窗口左边沿向
窗口
左移动的 ACK,则它被认为是一个重复 ACK,
图20-5 窗口边沿达右边沿,则称其为一个零窗口,此时发送方不能够发送任何数据。
报文段11~16说明了通常使用的“隔一个报文段确认”的策略。报文段 11、12和13到达并 被放入 IP的接收队列。当报文段 11被处理时,连接被标记为产生一个经受时延的确认。当报 文段12被处理时,它们的 ACK(报文段 14)被产生且连接的经受时延的确认标志被清除。报 文段13使得连接再次被标记为产生经受时延。但在时延定时器溢出之前,报文段 15处理完毕, 因此该确认立刻被发送。
插口 API允许进程设置发送和接收缓存的大小。接收缓存的大小是该连接上所能 够通告的最大窗口大小。有一些应用程序通过修改插口缓存大小来增加性能。
[Mogul 1993]显示了在改变发送和接收缓存大小(在单向数据流的应用中,如文件传输, 只需改变发送方的发送缓存和接收方的接收缓存大小)的情况下,位于以太网上的两个工作 站之间进行文件传输时的一些结果。它表明对以太网而言,默认的 4096字节并不是最理想的 大小,将两个缓存增加到 16384个字节可以增加约 40%左右的吞吐量。在 [Papadopoulos和 Parulkar 1993]中也有相似的结果。
下载
该书下载自-书部落-分享计算机经典巨著!!仅供试看^_^
215 第20章 TCP的成块数据流使用
图20-7 接收方提供一个6144字节的接收窗口的情况下的数据传输
流量控制
2
已发送
3
4
5
WT
6
7
0
1
2
不允许发送这些帧 3 4 5 6 7 0 1 2
(d)
0
1
2
当发送出数据时,滑动窗口从左边开始收缩; 当收到确认时,滑动窗口向右扩展。
已发送 并已收到确认
已发送
还允许发送 3 个帧
不允许发送这些帧
接收端设置接收窗口
在接收端只有当收到的数据帧的发送序号落入接收窗口内
…
需要注意 (1) 接收端只按序接收数据帧。虽然在有差错的 2号帧之后 接着又收到了正确的 3 个数据帧,但接收端都必须将这些 帧丢弃,因为在这些帧前面有一个 2 号帧还没有收到。
(2) ACK1 表示确认 0 号帧 DATA0,并期望下次收到 1 号
帧;ACK2 表示确认 1 号帧 DATA1,并期望下次收到 2号 帧。依此类推。
并且也交给了主机 B。
但此时结点 B 还必须向 A 发送确认帧 ACK,因为 B 已
经知道 A 还没有收到上一次发过去的确认帧 ACK。
帧的编号问题
任何一个编号系统的序号所占用的比特数一定是有限的。 序号占用的比特数越少,数据传输的额外开销就越小。
因此,经过一段时间后,发送序号就会重复。
送 主 机 丢 弃
时 间
送 主 机 (c) 数据帧丢失
(d) 确认帧丢失
解决死锁问题
结点A发送完一个数据帧时,就启动一个超时计时器 若到了超时计时器所设置的重传时间 tout而仍收不到结点
(timeout timer)。
B 的任何确认帧,则结点 A 就重传前面所发送的这一数据
连续ARQ协议
A-自动 R-重发 ARQ-自动请求重发 自动重发 请求重发 Q-请求
一、工作原理
优点:连续发送多帧后才等待应答(采用 捎带应答) 顺序接收 由于减少了等待时间,整个通信的吞吐量就提高了
(连续ARQ又称为Go-back N ARQ(回退N帧)协议)
缺点:若N(R)帧(某一帧)出错,需重传 该N(R)及其以后各帧,使传送效率降低 判断: 判断:连续ARQ协议的效率一定高于停止等待协议 (×)
出错(未收到)
(1)
(2)
(3)
(4)
二、滑动窗口协议
窗口滑动过程
选择重传ARQ协议(顺序发送,乱序接收) 例 0 1 2 3 4 5 6 7 0 1
WT=6
若第2帧出错,则仅重发该帧 0 1 3 4 5
已进入主机 在入缓存,等待2的重发后, 2送入主机,再将3,4,5送入主机
二、滑动窗口协议
最大窗口尺寸
(1)发送窗口最大尺寸2n-1 当n=3 WT=7 (2)接收窗口最大尺寸2n-1 当n=3 WR=4
7 6 0 1
采用3位帧编号(0~7)8个,WT=8 必须比8小,才能判断
5 4 3
2
二、滑动窗口协议
基本概念
(2)接收窗口(若干序号的集合)(接收缓冲区 大小)
1)接收窗口大小——接收端允许接收未处理帧 数目W 2)接收窗口下限(后沿)——最近一次返回给 发送方的应答帧中N(R)的值,用P(R)表示
二、滑动窗口协议
基本概念
3)接收窗口上限(前沿)=P(R)+W-1(mod 2n)
7 6
∵帧编号从0开始 ∴要减1
0 1 前沿
规定:1)接收窗口前后沿之差始终保持
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
课程设计任务书
计通学院通信工程专业
课程名称计算机网络课程设计时间2013~2014学年第二学期18~19周学生姓名张娟娟指导老师姜腊林
题目滑动窗口协议设计与实现——停等协议发送方实现
主要内容:
使用Socket编程技术,用C语言实现停等协议的发送程序,具体如下:
(1)设计相关的C语言数据类型;
(2)能够发送一个分组后等待确认,并显示发送分组的序号;
(3)能够接收接收方发送的确认分组,并显示确认分组序号,滑动发送窗口,发送下一分组;
(4)能够实现超时重传出错分组;
要求:
(1)进一步熟悉网络体系结构,网络分层、网络协议,特别是滑动窗口协议的原理;(2)进一步熟悉C语言,特别是函数、结构体、指针、C语言库函数,学会Socket编程技术;
(3)学会小组合作工作方式;
(4)独立完成任务书规定的任务并按要求编写课程设计报告书。
应当提交的文件:
(1)课程设计报告:包括课程设计目的和内容,基本原理,程序设计(流程图),程序实现(相关数据结构、函数定义等),测试(运行)结果。
(2)课程设计附件(源程序文件和可执行文件)。