IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 网络协议 -> 【计算机网络3】数据链路层 -> 正文阅读

[网络协议]【计算机网络3】数据链路层

请添加图片描述

在这里插入图片描述

物理层的作用正是要尽可能地屏蔽掉不同传输媒体和通信手段的差异。使物理层上面的数据链路层感觉不到这些差异,这样就可使数据链路层只需要考虑如何完成本层的协议和服务,而不必考虑网络具体的传输媒体和通信手段是什么。

两台主机进行数据传输时总是在一段段的链路上进行传送,这条链路就是数据链路。

既然数据链路是基于数据电路的,数据电路又是由信道组成的这里就主要总结下信道相关的东西与信道使用的协议。

一、点对点信道

1、常见概念

(1)链路

从一个结点到相邻结点的一段物理线路(有线或无线),而中间没有任何其他的交换结点。

在进行数据通信时,两个计算机之间的通信路径往往要经过许多段这样的链路。可见链路只是一条路径的组成部分。

(2)数据链路

当需要在一条线路上传送数据时,除了必须有一条物理线路外,还必须有一些必要的通信协议来控制这些数据的传输。若把实现这些协议的硬件和软件加到链路上,就构成了数据链路。

现在最常用的方法是使用网络适配器(既有硬件,也包括软件)来实现这些协议。一般的适配器都包括了数据链路层和物理层这两层的功能

(3)帧

帧是数据链路层上数据单元

2、数据链路层的基本协议

在因特网中,网络层协议数据单元就是IP数据报(或简称为数据报、分组或包)。

数据链路层的任务就是把网络层交下来的数据封装成帧发送到链路上,以及把接收到的帧中的数据取出并上交给网络层。

在这里插入图片描述

1、结点A的数据链路层把网络层交下来的IP数据报添加首部和尾部封装成帧
2、结点A把封装好的帧发送给结点B的数据链路层。
3、若结点B的数据链路层收到的帧无差错,则从收到的帧中提取出IP数据报上交给上面的网络层;否则丢弃这个帧。

数据链路层协议有许多种,但有三个基本问题则是共同的。这三个基本问题是:

  • 封装成帧
  • 透明传输
  • 差错检测。
3、封装成帧

帧是个啥东西呢?帧其实就是数据链路层上的数据单元,网络层交付给数据链路层的数据都会被数据链路层封装成一个个的帧,然后在链路上传送。看下帧的结构:

在这里插入图片描述
如上可知帧由帧首部、帧尾部、帧数据部分三部分构成。

其中帧数据部分就是网络层交付的IP数据报。直接作为帧的数据,然后数据链路层在这个数据上添加首部、尾部就构成了一帧,这就是封装成帧。

首部和尾部的一个重要作用就是进行帧定界,确定帧的界限。数据链路层接收端在收到物理层上交的比特流后,就能根据首部和尾部的标记,从收到的比特流中识别帧的开始和结束。

首部尾部还有必要的控制信息。在发送帧时,是从帧首部开始发送,数据链路层的协议对帧的首尾部都有许多规定。为了提高帧的传输效率,应当使帧的数据部分长度尽可能地大于首部和尾部的长度。但是,每一种链路层协议都规定了所能传送的帧的数据部分长度上限——最大传送单元MTU (Maximum Transfer Unit)。

一个帧的帧长等于帧的数据部分长度加上帧首部和帧尾部的长度

当数据是由可打印的ASCII码组成的文本文件时帧有定界符SOH(帧开始符,十六进制编码01表示)EOT(帧结束符,十六进制编码04表示),SOH(或EOT)并不是S,O,H(或E,O,T)三个字符,而是一个特殊的字符。

有了定界符(开始结束标记)就可以区分帧的完整性啦,因为每当帧发送失败时会从头开始发,发送失败的肯定没结束符,又重新发时从SOH开始发送。由于使用了帧定界符,在接收端就知道前面收到的数据是个不完整的帧(只有首部开始符SOH而没有传输结束符EOT),必须丢弃。而后面收到的数据有明确的帧定界符(SOH和EOT),因此这是一个完整的帧,应当收下。

在这里插入图片描述

4、透明传输

帧的开始结束都有特定界限符,这些界限符是用8位的二进制字节表示的。所以传输的数据的任何8位二进制字节组合都不能和帧的这两个界限符相同。否则发生边界错误。

当传送的帧是用文本文件组成的帧时(文本文件中的字符都是从键盘上输入的),其数据部分显然不会出现像SOH或EOT这样的帧定界控制字符。(这符号是ASCII码表中的)可见不管从键盘上输入什么字符都可以放在这样的帧中传输过去,因此这样的传输就是透明传输。

当数据部分为非ASCII码组成的文本文件,如二进制代码的计算机程序或图像等。如下图假如数据中的某个字节的二进制代码恰好和SOH或EOT这种控制字符一样,数据链路层就会错误地“找到帧的边界”,把部分帧收下,而把剩下的那部分数据丢弃。这种情况下帧的传输显然就不是“透明传输’’。

在这里插入图片描述

透明传输问题的解决:字节填充法

在这里插入图片描述

发送端的数据链路层在数据中出现控制字符“SOH”或“EOT”的前面插入一个转义字符“ESC”

在接收端的数据链路层在把数据送往网络层之前删除这个插入的转义字符。这种方法称为字节填充(byte stuffing)或字符填充

如果转义字符出现在数据当中,那么解决方法仍然是在转义字符的前面插入一个转义字符。因此,当接收端收到连续的两个转义字符时,就删除其中前面的一个。

5、差错检测

比特在传输过程中可能会产生差错:1可能会变成0,而0也可能变成1。这就叫做比特差错。

在一段时间内,传输错误的比特占所传输比特总数的比率称为误码率BER (Bit Error Rate)如果设法提高信噪比,就可以使误码率减小。实际的通信链路并非是理想的,它不可能使误码率下降到零。因此比特的错误传输不可避免,为了保证数据传输的可靠,必须采取各种差错加测措施。目前数据链路层流行的是:循环冗余检验。

强调一下,在数据链路层若仅仅使用循环冗余检验CRC差错检测技术,则只能做到对帧的无差错接受。接收端丢弃的帧虽然曾收到了,但最终还是因为有差错被丢弃,即没有被接受。

比特差错并不一定会导致帧丢失,当出现比特差错,而且差错的比特正好是真边界控制符时才会导致帧丢失。

(1)可靠传输

我们现在并没有要求数据链路层向网络层提供“可靠传输”的服务。所谓“可靠传输”就是:数据链路层的发送端发送什么,在接收端就收到什么。总之,我们应当明确,“无比特差错”与“无传输差错”并不是同样的概念。在数据链路层使用CRC检验,能够实现无比特差错的传输,但这还不是可靠传输。

传输差错可分为两大类:

  • 一类就是前面所说的最基本的比特差错
  • 另一类是收到的帧并没有出现比特差错,但却出现了帧丢失、帧重复或帧失序。以上三种情况都属于“出现传输差错”,但都不是这些帧里有“比特差错”。帧丢失很容易理解。但出现帧重复和帧失序的情况则较为复杂,对这些问题我们现在不展开讨论

(2)数据链路层的传输

过去OSI的观点是:必须让数据链路层向上提供可靠传输。因此在CRC检错的基础上,增加了帧编号、确认和重传机制。这种方法在历史上曾经起到很好的作用。但现在的通信线路的质量已经大大提高了,由通信链路质量不好引起差错的概率已经大大降低。因此,现在因特网就采取了区别对待的方法:

  • 对于通信质量良好的有线传输链路,数据链路层协议不使用确认和重传机制,即不要求数据链路层向上提供可靠传输的服务。如果在数据链路层传输数据时出现了差错并且需要进行改正,那么改正差错的任务就由上层协议(例如,运输层的TCP协议)来完成。
  • 对于通信质量较差的无线传输链路,数据链路层协议使用确认和重传机制,数据链路层向上提供可靠传输的服务
6、点对点协议

计算机用户和ISP进行通信时数据链路层所使用的协议。目前使用最广的数据链路层协议。
在这里插入图片描述
PPP协议应满足的需求:

  • 简单:这种数据链路层的协议非常简单:接收方每收到一个帧,就进行CRC检验。如CRC检验正确,就收下这个帧;反之,就丢弃这个帧,其他什么也不做。
  • 封装成帧
  • 透明性: PPP协议必须保证数据传输的透明性。这就是说,如果数据中碰巧出现了和帧定界符一样的比特组合时,就要采取有效的措施来解决这个问题。
  • 支持多种网络层协议:PPP协议必须能够在在同一条物理链路上同时支持多种网络层协议(如IP和IPX等)的运行。当点对点链路所连接的是局域网或路由器时,PPP协议必须同时支持在链路所连接的局域网或路由器上运行的各种网络层协议。
  • 多种类型链路
  • 差错检测
  • 检测连接状态 :PPP协议必须具有一种机制能够及时(不超过几分钟)自动检测出链路是否处于正常工作状态。当出现故障的链路隔了一段时间后又重新恢复正常工作时,就特别需要有这种及时检测功能
  • 最大传送单元: PPP协议必须对每一种类型的点对点链路设置最大传送单元MTU的标准默认值。这样做是为了促进各种实现之间的互操作性。如果高层协议发送的分组过长并超过MTU的数值,PPP就要丢弃这样的帧,并返回差错。需要强调的是,MTU是数据链路层的帧可以载荷的数据部分的最大长度,而不是帧的总长度。
  • 网络层地址协商
  • 数据压缩协商

在TCP/IP协议族中,可靠传输由运输层的TCP协议负责,因此数据链路层的PPP协议不需要进行纠错,不需要设置序号,也不需要进行流量控制。PPP协议不支持多点线路(即一个主站轮流和链路上的多个从站进行通信),而只支持点对点的链路通信。此外, PPP协议只支持全双工链路。

二、广播信道

1、局域网的数据链路层

局域网虽然是个网络,但我们并不把局域网放在网络层中讨论。这是因为在网络层要讨论的问题是分组怎样从一个网络通过路由器转发到另一个网络,这里我们研究的是在同一个局域网中,分组怎样从一个主机传送到另一个主机(不经过路由器)。因此,这是属于数据链路层的范围。

必须指出,局域网工作的层次跨越了数据链路层和物理层。由于局域网技术中有关数据链路层的内容比较丰富,因此我们就把局域网的内容放在数据链路层这讨论。但这并不表示局域网仅仅和数据链路层有关。

(1)局域网分类

在这里插入图片描述

2、以太网

以太网是美国施乐(Xerox)公司的Palo Alto研究中心(简称为PARC)于1975年研制成功的

为了使数据链路层能更好地适应多种局域网标准,IEEE 802委员会就把局域网的数据链路层拆成两个子层,即逻辑链路控制 LLC (Logical LinkControl)子层和媒体接入控制MAC (Medium Access Control)子层。与接入到传输媒体有关的内容都放在MAC子层,而LLC子层则与传输媒体无关,不管采用何种传输媒体和MAC子层的局域网对LLC子层来说都是透明的
在这里插入图片描述

然而到了20世纪90年代后,激烈竞争的局域网市场逐渐明朗。以太网在局域网市场中已取得了垄断地位,并且几乎成为了局域网的代名词。由于因特网发展很快而TCP/IP体系经常使用的局域网只剩下DIX Ethernet V2而不是IEEE 802.3标准中的局域网,因此现在IEEE 802委员会制定的逻辑链路控制子层LLC(即IEEE 802.2标准)的作用已经消失了,很多厂商生产的适配器上就仅装有MAC协议而没有LLC协议。

(1)适配器
计算机与外界局域网的连接是通过通信适配器(adapter)。

适配器原本是个人电脑中的一块网络接口板,被叫做网络接口卡,或者网卡。现在计算机都嵌入了这种网卡,并且在适配器上面安装了处理器和存储器(RAM、ROM)

适配器和局域网之间的通信是通过电缆或双绞线以串行传输方式进行的,而适配器和计算机之间的通信则是通过计算机主板上的I/O总线以并行传输方式进行的。因此,适配器的一个重要功能就是要进行数据串行传输和并行传输的转换

适配器接收和发送各种帧时不使用计算机的CPU。这时CPU可以处理其他任务。当适配器收到有差错的帧时,就把这个帧丢弃而不必通知计算机。当适配器收到正确的帧时,它就使用中断来通知该计算机并交付协议栈中的网络层。当计算机要发送IP数据报时,就由协议栈把IP数据报向下交给适配器,组装成帧后发送到局域网。
在这里插入图片描述

计算机的硬件地址就在适配器的ROM中,而计算机的软件地址——IP地址,则在计算机的存储器中。

(2)集线器

在这里插入图片描述

集线器工作在物理层,它的每个接口仅仅简单地转发比特——收到1就转发1,收到0就转发0,不进行碰撞检测。若两个接口同时有信号输入(即发生碰撞),那么所有的接口都将收不到正确的帧

3、以太网的MAC层

硬件地址又称为物理地址或 MAC地址,每一台计算机中固化在适配器的ROM中的地址。

在这里插入图片描述

以太网V2的MAC帧格式

由五个字段组成。前两个字段分别为6字节长的目的地址和源地址字段。

第三个字段是2字节的类型字段,用来标志上一层使用的是什么协议,以便把收到的MAC帧的数据上交给上一层的这个协议。

第四个字段是数据字段,其长度在46到1 500字节之间(46字节是这样得出的:最小长度64字节减去18字节的首部和尾部就得出数据字段的最小长度)。

最后一个字段是4字节的帧检验序列FCS(使用CRC检验)。当传输媒体的误码率为1×10-8时,MAC子层可使未检测到的差错小于1×10-14。

End

参考《计算机网络 微信读书版》

  网络协议 最新文章
使用Easyswoole 搭建简单的Websoket服务
常见的数据通信方式有哪些?
Openssl 1024bit RSA算法---公私钥获取和处
HTTPS协议的密钥交换流程
《小白WEB安全入门》03. 漏洞篇
HttpRunner4.x 安装与使用
2021-07-04
手写RPC学习笔记
K8S高可用版本部署
mySQL计算IP地址范围
上一篇文章      下一篇文章      查看所有文章
加:2021-08-22 13:50:08  更:2021-08-22 13:51:58 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/17 18:46:23-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码