欢迎来到三一办公! | 帮助中心 三一办公31ppt.com(应用文档模板下载平台)
三一办公
全部分类
  • 办公文档>
  • PPT模板>
  • 建筑/施工/环境>
  • 毕业设计>
  • 工程图纸>
  • 教育教学>
  • 素材源码>
  • 生活休闲>
  • 临时分类>
  • ImageVerifierCode 换一换
    首页 三一办公 > 资源分类 > DOCX文档下载  

    实验二数据链路层实验.docx

    • 资源ID:5175187       资源大小:247.20KB        全文页数:17页
    • 资源格式: DOCX        下载积分:15金币
    快捷下载 游客一键下载
    会员登录下载
    三方登录下载: 微信开放平台登录 QQ登录  
    下载资源需要15金币
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    实验二数据链路层实验.docx

    实验二数据链路层实验实验项目性质:设计性 实验环境:计划学时:4实验日期:2015年10月14日一、实验目的1、理解并掌握数据链路层协议的功能。2、进一步理解停止等待协议和滑动窗口协议的基本工作原理。3、掌握计算机网络协议的基本实现技术。4、利用RS 232C通信接口实现两台PC间传输文件。二、实验内容与要求1、设计完成数据链路层相关类;2、开发一个使用RS232C接口在两台计算机之间采用停止等待协议传输信息(文件) 的程序;3、开发一个使用RS232C接口在两台计算机之间采用滑动窗口协议传输文件的程序。 完成实验内容中的第1、2部分,有能力的同学完成全部内容。三、实验(设计)仪器设备和材料清单计算机两台,串行电缆一根。.相关知识1数据路层概述数据链路层协议应提供的基本功能有:(1) 数据在数据链路上的正常传输(建立、维护和释放)。(2) 帧定界与同步,以实现透明传输。(3) 差错控制和流量控制。(4) 透明传输。2数据成帧方法在数据链路层,为实现透明传输及进行差错控制和流量控制,在把数据送到物理层之 前,需将若干个数据组成一帧,并在其中加上其他必要的控制信息。控制信息形成(数据 成帧)的方法有以下几种:字符计数法、带字符填充的首尾界符法、带填充位的首尾标志 法、物理层编码违例法。3差错控制与流量控制为确保帧可靠地交付接收方,接收方在收到帧后,应向发送方应答,告知是否正确收 到帧,因此在数据链路层要建立差错控制机制:差错控制方法、CRC循环冗余校验、流 量控制。4数据链路层协议(1)停止等待协议停止等待协议的基本原理是:发送方在数据帧中加入校验码(CRC),由接收方检查; 若出错,返回NAK帧(否认帧),否则发送ACK帧(确认帧);发送方收到NAK帧后 重发数据帧,若收到ACK帧可发送下一帧。当超时计时事件发生时,重发丢失的帧,这 样可通过等待发送来实现流量控制,如图3-2所示。停止等待协议发送方的算法如下:(1) 从主机取一个数据帧。(2) V(s) <-0,发送方状态变量初始化。(3) N(s)<- V(s)(置发送序号),将数据帧送发送缓冲区。(4) 将发送缓冲的数据发送。(5) 置超时定时器。(6) 等待(下列三种情况)。(7) 收到回答ACK,从主机取一个新数据帧,V(s) <-1-V(s),转(3)。图3-2停止等待协议工作原理示意图(8) 收到回答NAK,转(4)。(9) 超时,转(4)。接收方的算法如下:(1) V(r) <-0,接收方状态变量初始化。(2) 等待。(3) 收到一个数据帧后,测试正确继续;否则传输出错,转(8)。(4) 如果接收到的帧序号等于期待的帧序号(N(s) = V(r),继续;否则丢弃该数据, 转(7)。(5) 将接收帧的数据部分上交主机。(6) V(r) <-1- V(r)。(7) 向发方发ACK,转(2)。(8) 向发方发NAK,转(2)。停止等待协议的算法流程如图3-3所示,其中V(s)和V(r)分别是发送方和接收方维护 的状态变量,N(s)是发送序号。赤5m fioinLiijeiN(s:k= V(s)V(il = &日 aif I>4t4 FiamnRe<*ied Train*,顼dT*st if £fi!«l! 口u*IM舞Aid FlllEMPaS.¥ Diltdl toINrfwoL. L avetl +SeiidACK Mr)Send ACT;.7. 5帧被K弃Save Dar-f Fraini* W BnifT*t, :Send BdfnM Ti:him to 皿十成肥应 L呻mfitm J'iinifi,Wait TvpuittH¥Krcrived ACK K#Crivl NAK Tiinr OlliIIGrl NrXtDnhi5匕冲)图3-3停止等待协议的算法停止等待协议算法简单,只适合传送少量的大的帧的情况。但大的数据块要分成许多 帧传送,此时停止等待协议不适用,原因是本协议只允许同时只有一帧在链路上传送,链 路利用率低。(2)连续重传ARQ协议为了提高信道利用率,发送方发完一帧后,不必停下来等待对方的应答,可以连续发 送若干帧;如果在发送过程中收到接收方的肯定应答,可以继续发送;若收到对其中某一 帧的否认帧,则从该帧开始的后续帧全部重发,如图3-4。由于减少了等待时间,整个通 信的吞吐量就提高了,提高了信道利用率。但回退重传(Go-back-N)会导致某些已正确 接收的帧的重传,因此降低了发送效率。当误码率较低时,连续重传ARQ优于停止等待 协议;反之则不一定。图3-4连续重传ARQ协议工作原理示意图(3) 滑动窗口协议(Sliding Window Protocol)在使用连续重传ARQ协议时,如果发送端一直没有收到对方的确认信息,那么实际 上发送端并不能无限制地发送其数据帧。这是因为:(1)当未被确认的数据帧的数目太多时,只要有一帧出了差错,就可能要有很多的数 据帧需要重传,这必然要白白花费较多的时间,因而增大开销。(2) 为了对所发送出去的大量数据帧进行编号,每个数据帧的发送序号也要占用较多 的比特数,这样又增加了一些不必要开销。连续ARQ协议中,每一个要发出的帧都包含一个序列号,范围从0到最大(02n -1, 一般用n个二进制位表示),使得序列号能恰好放入n位的字段中,n同时表示缓存器的 大小。滑动窗口协议的工作原理如下:(1) 任何时刻,发送端始终保持一个已发送但尚未确认的帧的序号表,称为发送窗口。 发送窗口的上界表示要发送的下一个帧的序号,下界表示未得到确认的帧的最小编号。发 送窗口 =上界一下界,大小可变;窗口内的序列号代表已发送了的但尚未确认的帧。(2) 发送端每发送一个帧,序号取上界值,上界加1;每接收到一个正确响应帧,下 界加1;(3) 接收端有一个接收窗口,大小固定,但不一定与发送窗口相同。接收窗口的上界 表示允许接收的序号最大的帧,下界表示希望接收的帧;(4) 接收窗口表示允许接收的信息帧,落在窗口外的帧均被丢弃。序号等于下界的帧 被正确接收,并产生一个响应帧,下界加1。接收窗口大小不变。正因为收发两端的窗口按照以上的规律不断地向前滑动,因此这种协议又称为滑动窗 口协议。当发送窗口和接收窗口的大小都等于1时,就是最初讨论的停止等待协议。下图3-5为滑动窗口的原理,它采用三位编码,顺序号为0-7,图中方框内表示发送方 可以发送7帧,序号从6开始,每发送一帧,窗口左边界向里收缩,每收到一个确认,窗 口向右滑动。接收方每一帧,窗口左边向右收缩,每发送相应后窗口向右扩展。已成山安出窗口后罂发送方缱冲区接收方缓冲区图3-5滑动窗口协议中的发送窗口和接收窗口假设窗口为7帧,最上面的A发送7帧,但发送后3帧未收到确认,于是A把窗口 收缩到4帧F3-F7。但此时B发送确认RR3表明已经收到0-2帧,并准备接收3-7帧。A 收到确认RR3,窗口向外滑动3帧,表示A可以从F3开始发送7帧。接着发送F3-F6。若 B返回确认RR4,表示已经接收这些帧,并允许A发送F7开始的7帧。图3-6滑动窗口 协议工作原理示意图。14&1沁1*5n山机|$14&廿图3-6滑动窗口协议工作原理示意图可以证明,当用n个比特进行编号时,若发送窗口的大小为WT,接收窗口的大小为 WR,则只有WTW2n-1和WT+WRW2n成立时,滑动窗口协议才能正常工作。(4)选择重传ARQ协议为了进一步提高信道的利用率,可设法只重传出现差错的数据帧或者是定时器超时的 数据帧。但这时必须加大接收窗口,以便先收下发送序号不连续但仍处在接收窗口中的那 些数据帧,等到所缺序号的数据帧收到后再一并送交主机。这就是选择重传ARQ协议。使用选择重传ARQ协议可以避免重复传送那些本来已经正确到达接收端的数据帧。 但付出的代价是在接收端要设置具有相当容量的缓存空间,这在许多情况下是不够经济 的。因此选择重传ARQ协议在目前就远没有连续重传ARQ协议使用得那么广泛。5面向比特的链路控制规程HDLC高级数据链路控制HDLC(High-level Data Link Control)是在IBM公司著名的体系结构 SNA上的数据链路层的面向比特的规程SDLC(Synchronous Data Link Control)基础上发展 起来的,由ISO把SDLC修改后称为国际标准ISO 3309。从网络层交下来的分组,变成为数据链路层的数据。数据链路层的数据传送是以帧为 单位的。也就是说,数据链路层的PDU是帧。帧是一个具有固定的格式数据块。一个HDLC 帧由标志、地址、控制、信息及帧校验等5个字段组成。如图3-7所示。HDLC有三种帧 类型,由控制字段加以区分。HDLC帧中各字段的作用及含义如下:标志F地址A 控制C 信息Infor帧校验序列FCS标志F*帧校验区间*,透明传输区间图3-7 HDLC帧结构 标志字段F(Flag)帧的边界,标识一个帧的开始与结束;当连续传输两个帧时,前一个帧的结束标志字 段F可以兼作后一帧的起始标志字段。其内容为:0111111Q在两个标志字段之间的比特串中,如果碰巧出现了和标志字段F一样的比特组合,那 么就会误认为是帧的边界。为了避免出现这种错误,HDLC采用零比特填充法使一帧中两 个F字段之间不会出现6个连续1。(2)地址字段 A(Address)基本单位为8比特,需要时可以8比特为单位扩展。这时用地址字段的第1位表示扩 展位,其余7位为地址位。当某个地址字段的第1位为0时,则表示下一个地址字段的后 7位也是地址位。当这个地址字段的第1位为1时,即表示这已是最后一个地址字段了。控制字段C(Control)控制字段占8比特,其定义如图3-8所示oHDLC用其将帧划分为信息帧(Information)、 监督帧(Supervisory无编号帧(Unnumbered)等三大类。它们的简称分别是I帧,S帧和U信息字段可以任意长,只有信息帧才有该字段。(5)帧校验序列 FCS(Frame Check Sequence)字段本字段共占16bit,校验的范围是从地址字段的第1个比特起,到信息字段的最末1 个比特为止。它采用的生成多项式是x16十x12+x5十1,即CRCCCITT。HDLC的通信过程要经过建立数据链路、数据传输、数据链路拆除三个阶段。五、结果分析(可根据需要附加页)舞虚拟丰邙区动6。|汉化Serial ports expllorerManage portsPort access listcurtom pinout锂兵底Gwr Tnllll-mJ仕回 Virtual ports白句 COM3 P&3D-N-8-L|-n三避j据蟀殷验X况tMi j ?* Sent: 56 Bytes kReceived: 82 Bytes : 卜曲 Baudrate emulation: Dis :Pino-uti Standard点哂 COM4 9 600-N-8-1|-n以植卜推业x数握锥路诲i 卜 * Sent: 402 Bytes 卜 fn Received: 66 Bytes? 枷甘 Baudrate emulation: Dis Pirout: StandardL 回 Other virtual portsiprFinnt port:Second port: COM4COM3Custom pinout preset- StandardSave prssetSei standard pinoutDelete presetSelect inea st the IN side of the pair and bind them ta the OUT sde signals to customis pinauts.IN sid e of th e pairRTS ->ElDTR >DSR. CCDOUT' ”cNot canreded?jts i i-i- n .1L.OUT sick CTSDSR0DCDRlChoose whidi sigral lines ct one end should be canrededto signal lines at the alher end.匚ir h a I n nro-c e F"|i六、主要源代码using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Text;using System.Windows.Forms;using System.Threading;using System.Runtime.InteropServices;using NetProject;namespace DataLink_Exppublic partial class MainForm : Formstatic MainForm mHANDLE=null;主窗体名柄,在线程中访问private ChildForm sendForm = null;发送子窗口对象private ChildForm rcvForm = null;接收子窗口对象static Physical PHL = null;/物理层实体static DataLink DLL = null;/数据链路层实体delegate void SetTextCallback(byte buffer);public MainForm()InitializeComponent();mHANDLE = this;private void MainForm_Load(object sender, EventArgs e)/初始化,创建子窗体,启动监视线程sendForm = new ChildForm();sendForm.MdiParent = this;sendForm.Text ="发送窗口"/this.MdiChildren.Length.ToString();sendForm.Name = "SendWindow"sendForm.Show();rcvForm = new ChildForm();rcvForm.MdiParent = this;rcvForm.Text ="接收窗口"rcvForm.Name = "ReceiveWindow"rcvForm.rtxBox.ReadOnly = true;rcvForm.Show();this.LayoutMdi(System.Windows.Forms.MdiLayout.TileVertical);/ 其他排列方法: Cascade > TileHorizontalPHL = new Physical("COM3");DLL = new DataLink();/创建数据链路层对象连接物DLL.setPHL(PHL);理层sendForm.Enabled = false;发送窗口禁止编辑创建并启动监视线程Mon_Thread =new Thread(newThreadStart(this .MonitorThread);Mon_Thread.Start();private void disconnect_Click(object sender, EventArgs e) 关闭串行口PHL.Close();connect.Enabled = true;sendForm.Enabled = false;private void connect_Click(object sender, EventArgs e)打开串行口/port = new SerialPort("COM1", 9600, Parity.None, 8,StopBits.One);PHL.Open();sendForm.Enabled = true;connect.Enabled = false;disconnect.Enabled = true;private void Receive(byte buffer)/接收数据并显示写实际接收代码if (this.rcvForm.rtxBox.InvokeRequired) SetTextCallback d = new SetTextCallback(Receive);this.Invoke(d, new object buffer );else string Msg = Encoding.Unicode.GetString(buffer, 0,buffer.Length);编码格式转换this.rcvForm.rtxBox.Text += Msg;收到的信息显示 public static void Send(string Msg) 发送子窗体高层向低层发送数据(使用<Ctrl>+<T>)byte buffer = Encoding.Unicode.GetBytes(Msg); /发送前进行编码格式转换DLL.Send(buffer);/ PHL.Send(buf); 数据送物理层SAP下行队列,发送数据(物理层实 验用)监视线程函数,运行协议处理方法,接收传输给当前应用的数 据。private void MonitorThread() byte Msg;while (true)DLL.Run();运行数据链路层协议处理方法if (Msg = DLL.Receive() != null) 数据链路层有向高层递交的数是,从数据链路层接收数据(数据存储在Msg中)Receive(Msg); 送接收处理(本例为数据直接显示在子窗体中) private void arrToolStripMenuItem_Click(dbject sender, EventArgs e) /排列子窗体this.LayoutMdi(System.Windows.Forms.MdiLayout.TileVertical);还有其他排列方法:Cascade、TileHorizontalprivate void exitToolStripMenuItem_Click(object sender,EventArgs e)Close();private void MainForm_FormClosed(object sender,FormClosedEventArgs e)if (Mon_Thread != null)Mon_Thread.Abort();using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Text;using System.Windows.Forms;using System.Threading;using System.Runtime.InteropServices;using NetProject;namespace DataLink_Exppublic partial class MainForm : Formstatic MainForm mHANDLE=null;主窗体名柄,在线程中访问private ChildForm sendForm = null;发送子窗口对象private ChildForm rcvForm = null;接收子窗口对象static Physical PHL = null;/物理层实体static DataLink DLL = null;/数据链路层实体delegate void SetTextCallback(byte buffer);public MainForm()InitializeComponent();mHANDLE = this;private void MainForm_Load(object sender, EventArgs e)/初始化,创建子窗体,启动监视线程sendForm = new ChildForm();sendForm.MdiParent = this;sendForm.Text ="发送窗口"/this.MdiChildren.Length.ToString();sendForm.Name = "SendWindow"sendForm.Show();rcvForm = new ChildForm();rcvForm.MdiParent = this;rcvForm.Text ="接收窗口"rcvForm.Name = "ReceiveWindow"rcvForm.rtxBox.ReadOnly = true;rcvForm.Show();this.LayoutMdi(System.Windows.Forms.MdiLayout.TileVertical);/ 其他排列方法: Cascade > TileHorizontalPHL = new Physical("COM4");DLL = new DataLink();/创建数据链路层对象连接物DLL.setPHL(PHL);理层sendForm.Enabled = false;发送窗口禁止编辑创建并启动监视线程Mon_Thread =new Thread(newThreadStart(this .MonitorThread);Mon_Thread.Start();private void disconnect_Click(object sender, EventArgs e) 关闭串行口PHL.Close();connect.Enabled = true;sendForm.Enabled = false;private void connect_Click(object sender, EventArgs e)打开串行口/port = new SerialPort("COM1", 9600, Parity.None, 8,StopBits.One);PHL.Open();sendForm.Enabled = true;connect.Enabled = false;disconnect.Enabled = true;private void Receive(byte buffer)/接收数据并显示写实际接收代码if (this.rcvForm.rtxBox.InvokeRequired) SetTextCallback d = new SetTextCallback(Receive);this.Invoke(d, new object buffer );else string Msg = Encoding.Unicode.GetString(buffer, 0,buffer.Length);编码格式转换this.rcvForm.rtxBox.Text += Msg;收到的信息显示 public static void Send(string Msg) 发送子窗体高层向低层发送数据(使用<Ctrl>+<T>)byte buffer = Encoding.Unicode.GetBytes(Msg); /发送前进行编码格式转换DLL.Send(buffer);/ PHL.Send(buf); 数据送物理层SAP下行队列,发送数据(物理层实 验用)监视线程函数,运行协议处理方法,接收传输给当前应用的数 据。private void MonitorThread() byte Msg;while (true)DLL.Run();运行数据链路层协议处理方法if (Msg = DLL.Receive() != null) 数据链路层有向高层递交的数是,从数据链路层接收数据(数据存储在Msg中)Receive(Msg); 送接收处理(本例为数据直接显示在子窗体中) private void arrToolStripMenuItem_Click(dbject sender, EventArgs e) /排列子窗体this.LayoutMdi(System.Windows.Forms.MdiLayout.TileVertical);还有其他排列方法:Cascade、TileHorizontalprivate void exitToolStripMenuItem_Click(object sender,EventArgs e)Close();private void MainForm_FormClosed(object sender,FormClosedEventArgs e)if (Mon_Thread != null)Mon_Thread.Abort();七、分析与思考1. 数据链路(即逻辑链路)与链路(即物理链路)有何区别?(1)数据链路与链路的区别在于数据链路除链路外,还必须有一些必要的规程来控 制数据的传输。因此,数据链路比链路多了实现通信规程所需要的硬件和软件。(2)“电 路接通了”表示链路两端的结点交换机已经开机,物理连接已经能够传送比特流了。但是, 数据传输并不可靠。在物理连接基础上,再建立数据链路连接,才是“数据链路接通了”。 此后,由于数据链路连接具有检测、确认和重传等功能,才使不太可靠的物理链路变成可 靠的数据链路,进行可靠的数据传输。当数据链路断开连接时,物理电路连接不一定跟着 断开连接。2. 数据链路层中的链路控制包括哪些功能?数据链路层的主要功能是在物理层提供的比特服务基础上,在相邻结点之间提供简单 的通信链路,传输以帧为单位的数据,同时它还负责数据链路的流量控制、差错控制。具 体地:链路管理;帧同步;流量控制;差错控制;将数据和控制信息分开;透明传输;寻 址等。3. 考察停止等待协议算法。在接收结点,当执行步骤4)时,若将“否则转到47)”改为 “否则转到(8)”,将产生什么结果?重复帧会被当做错误的帧进行重传。4. 试简述HDLC帧各字段的意义。HDLC用什么方法保证数据的透明传输?标志字段F(Flag):帧的边界,标识一个帧的开始与结束;地址字段A(Address):基本单位为8比特,需要时可以8比特为单位扩展。控制字段C(Control):控制字段占8比特。HDLC用其将帧划分为信息帧 (Information)、监督帧(Supervisory)和 无编号帧(Unnumbered)等 三大类。信息字段I(Information):信息字段可以任意长,只有信息帧才有该字段。帧校验序列FCS(Frame Check Sequence)字段:本字段共占16bit,校验的范围是从地 址字段的第1个比特起,到信息字段的最末1个比特为止。HDLC通过采用0比特填充技术来保证数据的透明传输。艮"在发送端,只要发现有 5个连续1,则立即填入一个0。在接收一个帧时,每当发现5个连续1时,就将这5个 连续1后的一个0删除,以实现原来的比特流的还原。5. 修改相关函数,实现停止等待协议。6. 修改相关函数,分别使用奇偶校验和CRC冗余校验替代现有的校验方法。7. 在设置超时计时器,超时时间间隔与那些因素有关?在利用串行口实现的过程中, 该数据值如何确定?超时时间间隔与信道、带宽等因素有关。在利用串行口实现的过程中,该数据值一般 选择重传实践略大于“在正常情况下从发完数据帧到收到确认帧所需要的平均时间”。

    注意事项

    本文(实验二数据链路层实验.docx)为本站会员(小飞机)主动上传,三一办公仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一办公(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    备案号:宁ICP备20000045号-2

    经营许可证:宁B2-20210002

    宁公网安备 64010402000987号

    三一办公
    收起
    展开