- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
计算机网络 第 3 章 点对点信道的 数据链路层 3.1 数据链路层的基本概念 链路(link)是一条无源的点到点的物理线路段,中间没有任何其他的交换结点。 一条链路只是一条通路的一个组成部分。 数据链路(data link) 除了物理链路外,还必须有通信协议来控制这些数据的传输。若把实现这些协议的硬件和软件加到链路上,就构成了数据链路。 现在最常用的方法是使用适配器(即网卡)来实现这些协议的硬件和软件。 一般的适配器都包括了数据链路层和物理层这两层的功能。 数据链路层像个数字管道 常常在两个对等的数据链路层之间画出一个数字管道,而在这条数字管道上传输的数据单位是帧。 数据链路层的主要功能 提供点到点之间的可靠性传输。 表现为: 1. 发送点的数据链路层将网络层交付的IP数据报封装成帧; 2. 发送点将封装好的帧发送到接收点的数据链路层; 3.接收点的数据链路层对所收数据帧进行检验,若无差错,即提取其中的IP数据报交付给网络层;否则丢弃该数据帧。 3.3 停止等待协议A. 完全理想化的数据传输 完全理想化的数据传输所基于的两个假定 假定 1: 链路是理想的传输信道,所传送的任何数据既不会出差错也不会丢失。 假定 2: 不管发方以多快的速率发送数据,收方总是来得及收下,并及时上交主机。 B. 具有最简单流量控制的数据链路层协议 现在去掉上述的第二个假定。但是,仍然保留第一个假定: 即主机 A 向主机 B传输数据的信道仍然是无差错的理想信道。 然而现在不能保证接收端向主机交付数据的速率永远不低于发送端发送数据的速率。 具有最简单流量控制的数据链路层协议算法 在发送结点: (1) 从主机取一个数据帧。 (2) 将数据帧送到数据链路层的发送缓存。 (3) 将发送缓存中的数据帧发送出去。 (4) 等待。 (5) 若收到由接收结点发过来的确认信息,则 从主机取一个新的数据帧,然后转到(2)。 具有最简单流量控制的数据链路层协议算法 在接收结点: (1) 等待。 (2) 若收到由发送结点发过来的数据帧, 则将其放入数据链路层的接收缓存。 (3) 将接收缓存中的数据帧上交主机。 (4) 向发送结点发确认信息,表示数据帧已 经上交给主机。 (5) 转到(1)。 两种情况的对比(传输均无差错) 帧的编号问题 任何一个编号系统的序号所占用的比特数一定是有限的。因此,经过一段时间后,发送序号就会重复。 序号占用的比特数越少,数据传输的额外开销就越小。 对于停止等待协议,由于每发送一个数据帧就停止等待,因此用一个比特来编号就够了。 一个比特可表示 0 和 1 两种不同的序号。 帧的发送序号 数据帧中的发送序号 N(S) 以 0 和 1 交替的方式出现在数据帧中。 每发一个新的数据帧,发送序号就和上次发送的不一样。用这样的方法就可以使收方能够区分开新的数据帧和重传的数据帧了。 在发送结点 (1) 从主机取一个数据帧,送交发送缓存。 (2) V(S)←0。(发送变量初始化) (3) N(S)←V(S)。 (4) 将发送缓存中的数据帧发送出去。 (5) 设置超时计时器。 (6) 等待。 {等待以下(7)和(8)这两个事件中最先出现的一个} (7) 收到确认帧 ACKn, 若 n = 1 – V(s),则: 从主机取一个新的数据帧,放入发送缓存; V(S)←[1 ? V(S)],转到 (3)。 否则,丢弃这个确认帧,转到(6)。 (8) 若超时计时器时间到,则转到(4)。 在接收结点 (1) V(R)←0。(接收变量初始化) (2) 等待。 (3) 收到一个数据帧; 若 N(S) = V(R),则执行(4); 否则丢弃此数据帧,然后转到(6)。 (4) 将收到的数据帧中的数据部分送交上层软件 (也就是数据链路层模型中的主机)。 (5) V(R)←[1 ? V(R)]。 (6) n←V(R); 发送确认帧 ACKn,转到(2)。 停止等待协议的要点 这里不使用否认帧(实用的数据链路层协议大都是这样的),而且确认帧带有序号 n。 按照习惯的表示法,ACKn 表示“第 n – 1 号帧已经收到,现在期望接收第 n 号帧”。 ACK1 表示“0 号帧已收到,现在期望接收的下一帧是 1 号帧”; ACK0 表示“1 号帧已收到,现在期望接收的下
文档评论(0)