数据链路层有两种通信方式:
点对点信道:使用一对一的点对点通信方式。
广播信道: 使用一对多的广播通信方式,使用专用的共享信道协议是为了协调多台主机的数据发送。

基础概念

链路(link)就是从一个结点到相邻结点的一段物理线路(有线或无线),中间没有任何其他的交换结点。
数据链路(data link)除了必须有一条物理线路外,还必须有一些必要的通信协议来控制这些数据的传输。
现在最常用的是使用网络适配器(既有硬件,也包括软件)来实现这些协议。一般的适配器都包括了数据链路层和物理层这两层的功能。
是点对点信道的数据链路层的协议数据单元。
IP数据报是网络层协议数据单元(或简称为数据报、分组或包)。

点对点信道的数据链路层在进行通信时的主要步骤如下:
(1)结点A的数据链路层把网络层交下来的IP数据报添加首部和尾部封装成帧
(2)结点A把封装好的帧发送给结点B的数据链路层。
(3)若结点B的数据链路层收到的帧无差错,则从收到的帧中提取出IP数据报交给上面的网络层;否则丢弃这个帧。

三个基本问题

数据链路层上不管是什么协议,都不能避免的三个问题,分别是 封装成帧、透明传输和差错检测

封装成帧

封装成帧(framing)就是在一段数据的前后分别添加首部和尾部,这样就构成了一个帧。
首部和尾部的一个重要作用就是进行帧定界(即确定帧的界限),SOH和EOT都是控制字符的名称。
为了提高帧的传输效率,应当使帧的数据部分长度尽可能地大于首部和尾部的长度,但是,每一种链路层协议都规定了所能传送的帧的数据部分长度上限——最大传送单元MTU(1500字节)。

透明传输

在数据链路层透明传送数据”表示无论什么样的比特组合的数据,都能够按照原样没有差错地通过这个数据链路层。
发送端利用字节填充(byte stuffing)或字符填充(character stuffing)方式让数据不包含特殊字符,接收端的数据链路层在把数据送往网络层之前删除这个插入的转义字符。

  1. 在数据中出现控制字符“SOH”或“EOT”的前面插入一个转义字符“ESC”(其十六进制编码是1B,二进制是00011011)。
  2. 如果转义字符也出现在数据当中,那么在转义字符的前面插入一个转义字符。

差错检测

比特差错

比特在传输过程中可能会产生差错:1可能会变成0,而0也可能变成1,这就叫做比特差错。
为了保证数据传输的可靠性,在计算机网络传输数据时,必须采用各种差错检测措施,目前在数据链路层广泛使用了循环冗余检验CRC(Cyclic Redundancy Check)的检错技术。
假设要发送的数据是 101001,接收端和发送端约定的除数是 1101,那么冗余的位数是 3 位,所以被除数就是 101001000,所得的余数是 001,具体计算过程如下所示:(注意:目标是把第一位消除掉,所以有1101 和 0000)

发送端发送的数据由原来的 101001 变为 101001001,001 作为余数,我们称其为 FCS(帧检测序列)
接收端将接收到的数据利用上诉的计算过程计算,如果结果为 000,则说明发送过程中没有比特差错;否则就是有错误,将进行丢弃操作,但是具体是那个字节发错,就不知道了。
在数据链路层,发送端帧检验序列FCS的生成和接收端的CRC检验都是用硬件完成的,处理很迅速,因此并不会延误数据的传输

传输差错

传输差错可分为两大类:一类就是前面所说的最基本的比特差错,而另一类传输差错则更复杂些,这就是收到的帧并没有出现比特差错,但却出现了帧丢失、帧重复或帧失序
现在互联网就采取了区别对待的方法:
对于通信质量良好的有线传输链路,数据链路层协议不使用确认和重传机制,即不要求数据链路层向上提供可靠传输的服务。如果在数据链路层传输数据时出现了差错并且需要进行改正,那么改正差错的任务就由上层协议(例如,运输层的TCP协议)来完成。
对于通信质量较差的无线传输链路,数据链路层协议使用确认和重传机制,数据链路层向上提供可靠传输的服务

点对点协议PPP

PPP协议就是用户计算机和ISP进行通信时所使用的数据链路层协议。
PPP协议有三个组成部分:
(1)一个将IP数据报封装到串行链路的方法。PPP既支持异步链路(无奇偶检验的8比特数据),也支持面向比特的同步链路。IP数据报在PPP帧中就是其信息部分。这个信息部分的长度受最大传送单元MTU的限制。
(2)一个用来建立、配置和测试数据链路连接的链路控制协议LCP(Link Control Protocol)。通信的双方可协商一些选项。在RFC 1661中定义了11种类型的LCP分组。
(3)一套网络控制协议NCP(Network Control Protocol)(5),其中的每一个协议支持不同的网络层协议,如IP、OSI的网络层、DECnet,以及AppleTalk等。

各字段的意义


PPP的帧格式前3个字段(Flag、Address、Control)固定为:0x7E、0xFF和0x03。
协议字段:表示 Information 封装的协议包的类型(例如LCP、NCP和IP等)。
数据字段:包含PPP的净荷,数据的长度是经过协商确定,是可变长度的。
FCS字段:为整个帧的循环冗余校验码,用来检测传输中可能出现的数据错误。

字节填充

0x7E -> (0x7D,0x5E)
0x7D -> (0x7D,0x5D)
0x03 -> (0x7D,0x23)

零比特填充

01111110 - > 011111010

  1. 发送端只要发现有5个连续1,则立即填入一个0
  2. 接收端先找到标志字段F以确定一个帧的边界,接着用硬件对其中的比特流进行扫描,每当发现5个连续1时,就把这5个连续1后的一个0删除,以还原成原来的信息比特流。

初始化PPP链路

  1. 当用户拨号接入ISP后,就建立了一条从用户个人电脑到ISP的物理连接。
  2. 用户个人电脑向ISP发送一系列的链路控制协议LCP分组(封装成多个PPP帧),以便建立LCP连接,这些分组及其响应选择了将要使用的一些PPP参数。
  3. 接着进行网络层配置,网络控制协议NCP给新接入的用户个人电脑分配一个临时的IP地址,这样,用户个人电脑就成为互联网上的一个有IP地址的主机了。
  4. 当用户通信完毕时,NCP释放网络层连接,收回原来分配出去的IP地址,接着,LCP释放数据链路层连接,最后释放的是物理层的连接。

总结:从设备之间无链路开始,到先建立物理链路,再建立链路控制协议LCP链路。经过鉴别后再建立网络控制协议NCP链路,然后才能交换数据。由此可见,PPP协议已不是纯粹的数据链路层的协议,它还包含了物理层和网络层的内容。

链路控制协议(LCP) LCP 建立点对点链路,是 PPP 中实际工作的部分。LCP 位于物理层的上方,负责建立、配置和测试数据链路连接。LCP 还负责协商和设置 WAN 数据链路上的控制选项,这些选项由 NCP 处理。

PPP允许多个网络协议共用一个链路,网络控制协议 (NCP) 负责连接PPP(第二层)和网络协议 (第三层)。对于所使用的每个网络层协议,PPP 都分别使用独立的 NCP来连接。例如,IP 使用 IP 控制协议 (IPCP),IPX 使用 Novell IPX 控制协议 (IPXCP)。

数据链路层-点对点通信方式相关推荐

  1. 数据链路层——点对点信道

    文章目录 帧 封装成帧 透明传输 差错检测 传输差错 链路:从一个结点到相邻结点的一段物理线路(有线或无线),而中间没有任何其它的交换结点. 数据链路:把实现通信协议的软件和硬件加到链路上,就构成了数 ...

  2. 计算机网络第三章 数据链路层重点复习(点对点)

    目录 前言 系列文章目录 3.1 使用点对点通信的数据链路层 3.1.1 点对点通信的主要步骤 3.1.2 三个基本问题 3.2 点对点协议PPP 3.2.1 PPP协议的特点 3.2.2 PPP协议 ...

  3. 第三章--数据链路层

    第三章--数据链路层 本章目录: 3.1使用点对点信道的数据链路层 3.1.1数据链路和帧 3.1.2三个基本问题 3.2点对点协议PPP 3.2.1PPP协议的特点 3.2.2PPP协议的帧格式 3 ...

  4. 计算机网络原理第二章笔记,计算机网络原理笔记 第三章 数据链路层(一)

    数据链路层(一) 3.1 使用点对点信道的数据链路层 3.1.1 数据链路层和帧 数据发送模型 数据链路层的信道类型 数据链路层使用的信道主要有以下两种类型:点对点信道.这种信道使用一对一的点对点通信 ...

  5. 计算机网络 chapter3数据链路层

    第三章 数据链路层 定义了在单个链路上如何传输数据.这些协议与被讨论的各种介质有关.示例:ATM,FDDI等. 数据链路层使用的信道主要有以下两种: 点对点信道:使用一对一的点对点通信方式 广播信道: ...

  6. 《计算机网络》学习笔记 ·003【数据链路层】

    注:前言.目录见 https://blog.csdn.net/qq_44220418/article/details/108428971 文章目录 一.数据链路层 二.使用点对点信道的数据链路层 1. ...

  7. 网络-数据链路层回顾

    数据链路层是干嘛的? 网络层是研究分组怎样从一个网络通过路由器转发到另一个网络 数据链路层主要研究在同一个局域网中,分组怎样从一个主机传送到另一个主机(不经过路由器) 数据链路层主要使用两种信道: 点 ...

  8. 《计算机网络》学习总结——数据链路层(完整理解)

    本文目录 第三章 数据链路层 3.1 数据链路层的几个共同问题 3.1.1 数据链路和帧 3.1.2 三个基本问题 3.2 点对点协议PPP 3.2.1 PPP协议的特点 3.2.2 PPP协议的帧格 ...

  9. 计算机网络-数据链路层 1

    数据链路层 习题自测 问题 1.数据链路(即逻辑链路)与链路(即物理链路)有何区别?"电路接通了"与"数据链路接通了"的区别何在? 2.数据链路层中的链路控制包 ...

最新文章

  1. 【边缘计算】对边缘计算的理解与思考
  2. 服务器清理c盘日志文件,清理WIN2003服务器C盘垃圾的批处理
  3. 百度计算广告学沙龙学习笔记 - 内容匹配广告
  4. SAP ByD 期末结账步骤简化(不完整)方法
  5. 【摘录】UNITY优化-有关骨骼数量的上限问题
  6. 正则表达式加golang爬虫爬取经典案例豆瓣top250
  7. 计算机编程是考研什么专业,程序员考研该不该继续选择计算机专业
  8. docker部署redis集群_Docker部署Redis集群----第六节(docker-redis-sentinel集群的机制)...
  9. 随想录(uclibc的学习)
  10. 产品经理基本功:消息推送设计
  11. 高职高考计算机网课app,本人准备高职高考,但是初中数学基础不行,所以求一套不错的初中数学练习题,教材的话我就刷网课。...
  12. laravel框架的下载与安装
  13. 118、交换机配置规范
  14. tp5.1发送公众号模板、订阅消息
  15. RMS TO EAP通过MQTT简单实现(2)
  16. 黑马JAVA P41 while循环
  17. 生么用C语言函数做万年历菜单,用C语言做万年历
  18. 使用面向对象思想设计电子宠物系统
  19. 2021年中国高精度电子线组件行业产业链及下游需求趋势分析「图」
  20. 简易六自由度弹道解算软件

热门文章

  1. App测试从入门到精通之功能测试
  2. LeetCode - Pascal's Trangle
  3. html5视频播放器 知乎,6款让人赞不绝口的电脑软件,知乎超10W人推荐,建议悄悄收藏...
  4. 区块链基本原理及其技术实现 - 姜家志 | JTalk 第五期
  5. 王阳明《没有秘密的你》开播 超A男神化身正义律师叱咤律界风云
  6. 面条代码 vs. 馄沌代码
  7. linux docker容器MySQL自动备份发送到邮箱
  8. win10忘记密码_电脑忘记密码没关系,这招教你简单轻松改密码
  9. TCP/IP基础(三)
  10. Educoder中Spark算子--java版本