计算机网络教程 谢希仁 第04章新.ppt

计算机网络教程 谢希仁 第04章新.ppt

  1. 1、本文档共54页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第4章 数据链路层 4.1 数据链路层的基本概念 4.2 停止等待协议 4.3 连续ARQ协议 4.4 选择重传ARQ协议 4.5 面向比特的链路控制规程HDLC 4.6 因特网的点对点协议PPP 4.1 数据链路层的基本概念 链路(link)就是一条无源的点到点的物理线路段,中间没有任何其他的交换结点。 数据链路(data link)则是另一个概念。这是因为当需要在一条线路上传送数据时,除了必须有一条物理线路外,还必须有一些必要通信协议来控制这些数据的传输(这将在后面讨论)。 也有人采用另外的术语。这就是将链路分为物理链路和逻辑链路。物理链路就是上面所说的链路,而逻辑链路就是上面的数据链路,是物理链路加上必要的通信协议。 数据链路层的主要功能归纳如下: (1)链路管理 数据链路的建立、维持和释放就叫做链路管理。 (2)帧同步 (3)流量控制(flow control) (4)差错控制 (5)将数据和控制信息区分开 (6)透明传输 (7)寻址 4.2 停止等待协议 停止等待(stop-and-wait)协议是最简单但也是最基本的数据链路层协议。 4.2.1 不需要数据链路层协议的数据传输 图4-1所示的简化模型对于一个计算机网络中任意一条链路上的数据传输情况都是适用的。 4.2.2 具有最简单流量控制的数据链路层协议 由接收方控制发送方的数据流,乃是计算机网络中流量控制的一个基本方法。 假定:链路是理想的传输信道,即所传送的任何数据既不会出差错也不会丢失。 在发送结点: (1)从主机取一个数据帧; (2)将数据帧送到数据链路层的发送缓存; (3)将发送缓存中的数据帧发送出去; (4)等待; (5)若收到由接收结点发过来的信息(此信息的格式与内容可由双方事先商定好),则从主机取一个新的数据帧,然后转到(2)。 在接收结点: (1)等待; (2)若收到由发送结点发过来的数据帧,则将其放入数据链路层的接收缓存; (3)将接收缓存中的数据帧上交主机; (4)向发送结点发一信息,表示数据帧已经上交给主机; (5)转到(1)。 图4-2是前面所述的两种情况的对比。 4.2.3 实用的停止等待协议 传输数据的信道不能保证使所传的数据不产生差错,并且还需要对数据的发送端进行流量控制。 图4-3(a)画的是数据在传输过程中不出差错的情况。 当发现差错时,结点B就向主机A发送一个否认帧NAK,以表示主机A应当重传出现差错的那个数据帧。图4-3(b)画出了主机A重传数据帧。 有时链路上的干扰很严重,或由于其他一些原因,结点B收不到结点A发来的数据帧。这种情况称为帧丢失,如图4-3(c)所示。于是就出现了死锁现象。 要解决死锁问题,可在结点A发送完一个数据帧时,就启动一个超时计时器(timeout timer)。若到了超时计时器所设置的重传时间tout而仍收不到结点B的任何确认帧,则结点A就重传前面所发送的这一数据帧,如图4-3(c)和图4-3(d)所示。一般可将重传时间选为略大于“从发完数据帧到收到确认帧所需的平均时间”。 4.2.4 循环冗余检验 4.2.5 停止等待协议的算法 在发送结点: (1)从主机取一个数据帧。 (2)V(S)←0。 {发送状态变量初始化} (3)N(S)←V(S); {将发送状态变量的数值写入发送序号} 将数据帧送交发送缓存。 (4)将发送缓存中的数据帧发送出去。 (5)设置超时计时器。 {选择适当的超时重传时间tout } (6)等待。 {等待以下3个事件中最先出现的一个} (7)若收到确认帧ACK,则: 从主机取一个新的数据帧; V(S)←[1 ? V(S)]; {更新发送状态变量,变为下一个序号} 转到(3)。 (8)若收到否认帧NAK,则转到(4)。 {重传数据帧} (9)若超时计时器时间到,则转到(4)。 {重传数据帧} 在接收结点: (1)V(R)←0。 {接收状态变量初始化,其数值等于欲接收的数据帧的发送序号} (2)等待。 (3)当收到一个数据帧,就检查有无产生传输差错(如用CRC)。 若检查结果正确无误,则执行后续算法; 否则转到(8)。 (4)若N(S) = V(R),则执行后续算法; {收到发送序号正确的数据帧} 否则丢弃此数据帧,然后转到(7)。 (5)将收到的数据帧中的数据部分送交主机。 (6)V(R)←[1 ? V(R)]。 {更新接收状态变量,准备接收下一个数据帧} (7)发送确认帧 ACK,并转

您可能关注的文档

文档评论(0)

开心农场 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档