学过计算机网络的朋友们应该都知道OSI七层模型,今天要聊的数据链路层是属于七层模型中的第二层。所以应该算是计算机网络体系中的底层了。

数据链路层使用的信道主要有两种类型:

  1. 点对点信道:也就是字面意思,点对点得通信方式。
  2. 广播信道:这种信道是一对多的方式,所以整个过程也比较复杂。必须使用一些信道协议来协调网络中的主机数据发送。

我们先来通过一个例子数据链路层所处的位置。下图展示的是典型的网络图。

主机1主机2发送数据,下图展示的数据真正流动的路径(画的有点丑,意思到了就行了):

当我们专门研究链路层的时候,我们只需要关心链路层即可。于是,主机1主机2发送数据时,我们可以认为是从左到右的数据传递。如下图:

链路层的意义

物理层的线路有传输介质与通信设备组成,比特流在传输介质上传输时肯定会存在误差的。这样就引入了数据链路层在物理层之上,采用差错检测、差错控制和流量控制等方法,向网络层提供高质量的数据传输服务。

对于网络层,由于链路层的存在,而不需要关心物理层具体采用了那种传输介质和通信设备。

那链路层的功能有哪些呢?需要完成哪些事情呢?

  1. 链路管理,帧同步
  2. 流量控制,差错控制
  3. 数据和控制信息分开
  4. 透明传输和寻址

怎么组帧的呢?

其实就是在帧的前后添加首部和尾部,这样就能界定帧的边界了。一帧多大呢?MTU就是帧的数据部分的最大长度,也就是IP数据报的最大长度。如下图:

怎样进行帧的界定呢?

答案就是在帧的开始和结束的地方加上特定的字符,一般是0X7E,如下图:

怎样透明传输呢?

答案就是如果帧内部的数据出现了0x7e,则要转义,转义的方法如下:

(1) 字符填充
因为0x7E=0111 1110,字符填充是在这两个字节中,填充进0xD5。变为(0x7D,0x5E)的组合。
0111 1101 1001 1110
(2)零比特填充
因为0x7E=0111 1110,带有连续的6个1.因此发送端发送帧数据时,每当发现有连续的5个1,立即填充一个0发送。接收端对帧中的比特流扫描,每当发现5个连续的1,就把后面的1个0删除
eg:0111 1110变成0111 1101 0进行传输

差错的产生的原因

差错是不可避免的。而且不同的传输介质的差错程度也是不同的。链路层的任务就是分析差错产生的原因,检查差错,然后纠正差错。下面的图展示了差错的来源

当数据信号从发送端发送到物理线路时,由于物理线路存在噪声,因此数据信号经过物理线路的噪声,到达接收端时,已经是数据+噪声的叠加。这就是差错的来源。

怎样进行差错控制呢?

差错控制分为两种不同的策略:

纠错码:每个传输的分组带上足够的冗余信息,接收端能发现并自动纠正差错。

检测吗:分组包含能够发现差错的冗余信息,接收端能够发现差错。

由于纠错码实现比较复杂,检测码虽然不能纠错,但是足够简单,能够检测出差错,配合重传机制即可。所以广泛采用检测码。

检测码有循环冗余编码(CRC)等方式,工作原理就暂且略过,讲起来很费篇幅。

数据链路的工作过程到底是怎样的?

数据链路层的工作过程分为三个阶段:建立数据链路,帧传输,释放数据链路;结合数据链路和物理层的流程如下图:

滑动窗口协议

前面提到了用检错码来检测帧传输过程中是否发生了差错,如果发生了错误,就需要滑动窗口协议来解决。滑动窗口协议分为两种类型:

单帧停止等待协议:发送端发送1帧之后,需要等待接受端返回确认帧,如果接收到ack,表示OK,发送下一帧;如果接收到nak,表示传输错误,重新发送该帧。如下图所示(字反了见谅):

多帧发送协议:分为两种类型,后退N帧(GBN)拉回重发方式和选择重发(SR)方式。前者是只要有一帧发送失败,则当前发送的全部帧都重新发送,这样就会导致重发很多帧,流量控制不佳。后者是当前发送的帧中有差错,在下次发送的时候只是重新发送错误的帧就行了。

滑动窗口机制?

在GBN和SR中,发送端可以连续发送多个数据帧,从流量控制的角度出发,发送端连续发送数据帧的数量必然会收到限制:

1. 接收端的缓冲区可以用于接受新的帧的容量

2. 接收端处理数据帧的速度

3. 接收端需要等待重传的帧的数量

引入滑动窗口的目的:对可以连续发出的最多帧数(已发出但未确认的帧)作限制

图片来源网络

发送窗口(Ws):表示在收到对方确认的信息之前,以连续发出的最多数据帧数 接受窗口(Wr):可以连续接收的最多数据帧数(只有序号在窗口内的帧才可以接收,否则丢弃)

觉得不错,记得转发收藏“在看”

存储端显示主机链路降级_【计算机网络】你真的理解数据链路层吗?相关推荐

  1. 【2022计算机综合试卷408考研第一轮_计算机网络篇】第二章 物理层

    [2022计算机综合试卷408考研第一轮_计算机网络篇]第二章 物理层 一.物理层的基本概念: 1.物理层的概念和功能 1.定义:物理层解决如何在连接各种计算机的传输媒体上传输数据比特流 ,而不是指具 ...

  2. mac 思科 链路聚合_交换技术链路聚合配置

    所谓链路聚合是指两个或更多的数据信道合成为一个,这样的这个信道就可以提供更高带宽的逻辑链路,这样也为网络的可靠性做出了保护如果其中一条信道出现问题那么还有一条信道可以运行.当交换机检测到其中一个成员端 ...

  3. 计算机网络校园网设计讨论与分析,浅论无线校园网系统分析与设计_计算机网络毕业论文...

    浅论无线校园网系统分析与设计_计算机网络毕业论文 发布时间:2015-03-12 来源:人大经济论坛 浅论无线校园网系统分析与设计_计算机网络毕业论文 [论文关键词]: 无线校园网:WEB数据库:数据 ...

  4. go 链路追踪_使用opentracing,jaeger实现golang链路追踪

    Jaeger 是Uber推出的一款开源分布式追踪系统,兼容OpenTracing API. 我们可以使用opentracing在关键代码中进行埋点记录,线上可以快速直观查看调用执行情况. 要点说明 c ...

  5. 计算机网络物联网论文,物联网技术及其应用_计算机网络论文.doc

    物联网技术及其应用_计算机网络论文 物联网技术及其应用_计算机网络论文 论文关键字:EPC RFID Savant ONS 物联网技术 论文摘要:至上个世纪90年代物联网概念出现以来,越来越的人们对其 ...

  6. 物联网温湿度显示控制项目(网页、Android双端显示搭载linux平台网关MQTT通信)

    演示视频如下: 物联网项目案例-温湿度检测及mqtt实现控制(带双端显示) 代码资源可在我的资源中免费下载学习使用~ 资源链接:https://download.csdn.net/download/q ...

  7. 计算机网络符号意思,浅析网络语言中的符号网语_计算机网络论文.doc

    浅析网络语言中的符号网语_计算机网络论文.doc 浅析网络语言中的符号网语_计算机网络论文 浅析网络语言中的符号网语_计算机网络论文 论文关键词:符号网语特征成因规范 论文摘要:随着网络的普及,网络语 ...

  8. mysql存储base64位用什么类型_了解什么是存储引擎引发的MySQL面试3连问

    引言 1.什么是存储引擎? 2.你设计表时使用什么存储引擎? 3.不同存储引擎分别适用于哪些场景? (0)什么是存储引擎? 在数据库中存的就是一张张有着千丝万缕关系的表,所以表设计的好坏,将直接影响着 ...

  9. 虚拟化VMware之存储与虚拟机主机管理(1)

    Openfiler主要用于为LAN主机提供独立存储系统.Openfiler提供了包括NFS.SMB.iSCSI.Target等多种连接方式,一般通过HTTP的的方式进行管理.如果访问Openfiler ...

最新文章

  1. 玩转Android- 收藏集 - 掘金
  2. 教你学习快速排序算法-程序员必备哦
  3. java迭代器应用 源码探究
  4. C语言实验——打印数字图形(JAVA)
  5. smart700iev3 程序下载设置_西门子PLC基础:S7-200 SMART PLC程序下载
  6. RabbitMQ系列(二)深入了解RabbitMQ工作原理及简单使用
  7. 隐藏linux操作系统版本信息,linux centos 如何查看操作系统版本信息?
  8. 抢注“哔哩哔哩”商标卖成人用品?A站回应:不符合价值观 已申请注销
  9. Non-standard serial port baud rate setting
  10. com.mysql.jdbc.PacketTooBigException,及mysql 设置 max_allow_packet
  11. linux 代码行数统计利器 ——cloc
  12. el表达式/jstl保留两位小数
  13. 2021-06-27变量的作用域
  14. 数字图像处理 冈萨雷斯 (第四版) 比特平面分层,图像重建
  15. 智慧旅游和智慧景区建设实施方案
  16. 怎么将webp格式转换成jpg?详细步骤
  17. websockets 和 socketio 的比较
  18. Hadoop3.1.3搭建集群
  19. 未来的计算机范文,未来的电脑作文(通用3篇)
  20. CONTINUOUS CONTROL WITH DEEP REINFORCEMENT LEARNING

热门文章

  1. 怎样手动给无线网设置一个DNS服务器地址,无线网的dns怎样设置.docx
  2. ttysac1 java_基于Android的串口聊天室 (基于tiny4412) 一
  3. notepad 没有plugin manager_和平精英巅峰赛正式开启,热度却没有象中那么高!
  4. 资料员考试题库计算机,资料员考试试题库及答案(5套).docx
  5. c语言vs2017链表出错,【C++单链表就地逆置】程序无error错误,求指点TAT。
  6. git合并分支的时候将某个文件添加到忽略列表_常用的 Git 命令
  7. java httpclient 返回xml_通过httpClient通过post向接口发送xml数据,并处理返回的xml报文...
  8. 虚拟机nfs服务器的安装,linux 安装nfs服务器
  9. php 清除指定session,PHP如何操作指定的session?
  10. python读txt写入excel_Python读取txt内容写入xls格式excel中的方法