美文网首页
计算机网络-数据链路层

计算机网络-数据链路层

作者: 良辰夜 | 来源:发表于2019-01-02 16:20 被阅读0次

1. 基本概念

1.1 数据层的作用及与网络层的分界

数据链路层主要研究链路上如何通信以及信道的通信方式。
而网络层主要研究多个网络互连的问题。

(交换机工作在数据链路层,路由器工作在网络层)

1.2 术语

  • 链路 : 结点和相邻结点间的一段物理线路(有线或无线)。
  • 数据链路 = 通讯协议(规程)(网卡实现) + 物理链路
  • 帧:帧就是链路层协议数据单元。

1.3 通信的主要步骤

  1. 将网络层的数据包封装成帧。
  2. 将帧发送到链路上。
  3. 接受帧并取出其中的数据报交给网络层。

2. 三个基本问题

2.1 如何将数据封装成帧?

首部:SOH (start of header)
尾部:EOT (end of transmission)
最大传送单元:MTU(Maximum Transfer Unit)注意:仅仅指帧的数据部分,不包含SOH和EOT

首部和尾部一般作用是定界符,但不仅限于此。
而ETU则一般出于效率和占用链路的时间考虑,原则上,出于传输效率上考虑,数据报部分应该尽可能大于首部加尾部的长度。

定界符的几种常见方式与选择:

方案 优点 缺点
SOH 需要转义、包含字符少 1.SOH字符转义,2.无法做校验
SOH+length 1. 可做校验 2. 需要转义字符少 1.SOH字符需要转义 2. length的占用的字节不确定
SOH+EOT 1. 可做校验 2. 占用字节稳定 1.SOH、EOT字符需要转义

2.2 透明传输?

1. 传输就传输,为啥要讲透明传输,那什么是不透明传输?
因为首部或者尾部的数据可能会出现重合,那么就不可以传输这些特殊字符,这就是不透明传输,比如出现了EOT相同的字符,链路层就会错误的找到边界。

2. 如何解决不透明传输
我们可以类比java处理字符串中引号问题,在java中,我们加入了转义字符 \ ,来处理字符串中的特殊字符,那么在解决透明传输上,我们也可以参考这种办法。
字符填充法:
我们装帧的数据部分里面的 "SOT"、"EOT"前面加上"ESC"作为转义符,我们取帧时,去掉"ESC"字符。
这里可能数据部分里面也有"ESC"字符,我们可以在"ESC"字符前再加上"ESC"字符。

2.3 差错校验

现实的链路并不理想,在比特传输过程中可能由1变成0,也可能有0变成1,这种差错叫比特差错。目前在物理链路层,广泛采用循环冗余校验(CRC)的校验技术。

//TODO 专门写一章讲CRC,主要在于理解CRC的意义。

3. 可靠运输和不可靠运输

3.1 比特差错与传输差错。

传输常见差错可分为:比特差错、传输差错。
比特差错:接受的帧和原发送帧的数据不一致。
传输差错:
帧丢失、帧重复、帧失序
1)帧丢失:[#1],[#3]
2)帧重复:[#1],[#2],[#2],[#3]
3)帧失序:[#1],[#3],[#2]

所谓的无比特差错运输就是指传输中干掉了比特差错,目前我们通过CRC仅能做到对帧无比特差错接受,即凡是接受端数据链路层接受到的帧,我们都认为这些帧在传输过程中无差错,但是这并不代表可靠运输

3.2 什么是可靠传输,如何做到以及优缺点和场景

介绍:
简单的说,可靠传输就是干掉比特差错和传输差错。

如何做到:
即在无比特差错传输的基础上加上"帧编号","确认","重传机制",来确保可靠传输。

优缺:
但是我们可以看出,多加了3种机制,可以保证帧的传输不出差错的同时,意味着通讯效率的降低。

场景:
可以看出:
1.可靠运输的场景适用于通讯质量较差线路,容易出现帧丢失、帧重复、帧失序等问题。
2.不可靠运输的场景适用于通讯质量较好的线路

3.3 互联网的普遍的传输

事实上当前互联网对不同线路采用区别对待。
即:

  • 对于通信质量良好的链路,我们不做确认和重传,即做无比特差错传输,将可靠性传输的任务交给传输层来做(如TCP),
  • 对于通讯质量差的链路,采用确认和重传,向上提供可靠传输服务。

4 点对点协议 PPP

  • PPP是目前使用最广泛的数据链路层协议,不管是低速的拨号猫连接还是高速的光纤链路,都适用PPP协议。
  • 因特网用户通常都要连接到某个ISP 才能接入到因特网。 PPP协议就是用户计算机和ISP进行通信时所使用的数据链路层协议。 ISP使用PPP协议为计算机分配一些网络参数(如IP地址、域名等)。
3.5.1 特点
  1. 简单:
    对数据链路层的帧不需要确认、重传、序号,提供不可靠数据服务。(由传输层如TCP来做可靠校验)
    为什么PPP协议简单?
    由于不管是核心部分还是边缘部分,都会解析链路层协议,所以尽可能的将链路层协议写简单,这样解析快。可以将复杂的部分放入传输层协议(如TCP)来处理。
    大致流程:
    接收方接受到一个帧,对帧进行CRC校验,如果校验通过就收下这个帧,反之丢弃。
  1. 支持多种网络协议
    如IP、IPX。(向上兼容)
  2. 支持类型链路
    串行、并行、同步、异步、光信号、电信号(向下兼容)
  3. 检查连接状态
    隔几分钟就发心跳包。
    主要用于那些出现故障,隔了一段时间又恢复的链路。
  4. 网络层地址协商
    //TODO
  5. 数据压缩协商(不做强制规定,未进入标准化)
    如出现连续出现80个1,我们就压缩这个80个1,用过标志符表示80个1, 反正有很多压缩方法。

7.PPP协议仅支持点对点链路通信,不支持多点线路(一个主站轮流和多个从站通信)
8.PPP协议仅支持全双工链路。

3.5.2 协议组成
3.5.3 帧组成字段
  • 字段F :为标识首部或尾部
  • 字段A:地址字段,OXFF(无用,在PPP协议中可以去掉)
  • 字段C:控制字段,OxO3(无用,在PPP协议中可以去掉)
  • 字段协议:协议字段,占2个字节,相当于一个Type,标识PPP帧信息部分类型,其中 0x0021标识PPP帧就是IP数据报,若为0xC021标识PPP帧信息部分为链路控制协议LCP的数据,而0x8021标识标识PPP帧信息部分为网络控制协议NCP数据。
  • 信息部分:可以是ip数据包,也可以是LCP或NCP的控制协议,最大为MTU。
  • FCS:2个字节,推测为CRC16的校验码
3.5.4 异步传输和同步传输

https://www.jianshu.com/p/b0c5810a79ef
可以看出,异步传输是面向字符,而同步传输面向帧。

3.5.5 字节填充

当采取异步传输时,PPP协议选取字节填充。

  1. 将每一个0x7e转换成0x7d,0x5e
  2. 将每一个0x7d转换成0x7d,0x5d
  3. 将每一个小于0x23的字符前面加上0x7d
3.5.6 比特填充

当采取同步传输时,PPP协议采取比特填充。
对帧的数据部分中,每5个连续的1,后面添加一个0,这么做主要是,防止0x7e出现。
然后在接受端,每5个连续的1后面减少一个0。

3.5.7 PPP协议的工作方式

PPP链路的初始化:

  1. 用户拨号,建立一条从个人主机到ISP的物理链路。
  2. 个人主机向ISP发送链路控制协议LCP分组,建立LCP连接。(这些分组和响应决定了将要使用的一些PPP参数,如 是否使用PPP协议的地址和控制字段)
  3. 待成功建立LCP连接后,接着进行网络层配置,NCP协议给个人主机分配一个临时IP,此时用户个人电脑就成为互联网上一个有IP地址的主机了。

3.6 习题

  1. LCP包括哪些功能?
    封装成帧、透明传输、差错校验、连接状态检测。

相关文章

  • 计算机网络-数据链路层

    计算机网络-数据链路层 数据链路层属于计算机网络的低层数据链路层使用的信道主要有以下两种类型 点对点信道 广播信道...

  • 计算机网络 - 目录

    计算机网络01 - 应用层 计算机网络02 - 传输层 计算机网络03 - 网络层 计算机网络04 - 数据链路层...

  • 数据链路层功能——封装成帧&&差错控制

    本文内容 从本节开始介绍数据链路层的内容,数据链路层属于计算机网络的低层,需要对其上层网络层提供服务。本文主要介绍...

  • 计算机网络 复习笔记 物理层

    目录 计算机网络 复习笔记 概述 计算机网络 复习笔记 物理层 计算机网络 复习笔记 数据链路层 计算机网络 复习...

  • 计算机基础

    1、计算机网络(应用层,传输层,网络层,数据链路层,物理层) 物理层:利用传输介质为数据链路层提供物理连接,实现比...

  • 计算机网络-数据链路层(上)

    数据链路层最基本的服务是将源计算机网络层来的数据可靠的传输到相邻节点的目标计算机的网络层 数据链路层 功能 保证数...

  • TCP/IP 模型 数据链路层

    数据链路层属于计算机网络的底层,使用的信道主要有点对点信道和广播信道两种类型。 在TCP/IP协议族中,数据链路层...

  • 网络基础——数据链路层

    数据链路层属于计算机网络的低层。数据链路层使用的通道主要由两种类型: 点对点信道:这种信道使用一对一的点对点通信方...

  • 计算机网络-数据链路层

    数据链路层属于计算机网络的低层。数据链路层使用的信道主要有以下两种方式: 1.点对点信道:使用一对一的点对点通信...

  • 计算机网络(3)| 数据链路层

    数据链路层属于计算机网络的低层。数据链路层使用的信道主要是两种类型:(1)点对点信道。即信道使用的是一对一点对点通...

网友评论

      本文标题:计算机网络-数据链路层

      本文链接:https://www.haomeiwen.com/subject/kjlzlqtx.html