计算机网络-数据链路层

计算机网络中数据链路层的作用

Posted by liz on July 19, 2022

数据链路层

为什么需要数据链路层

数据链路层主要有两个功能 :帧编码和误差纠正控制。

1、帧编码

在相邻的两个节点之间传送数据时,数据链路层会将网络层交下来的 IP 数据报组装成帧,在两个相邻节点之间传送帧。每一帧包括数据和必要的控制信息(如同步信息、地址信息、差错控制等)

这样在接收数据的时候,接收端就能从控制信息中知道一个帧物理层的线路由传输介质与通信设备组成从哪个比特开始,哪个比特结束。这样数据链路层就能在收到每一帧之后,从中提取出数据部分,交给网络层。

2、误差纠正控制

控制信息还使接收端能检测到所收到的帧中有无差错。如发现有差错,数据链路层就简单地丢弃这个出了差错的帧,以免继续传送下去白白浪费网络资源。如需改正错误,就由运输层的TCP协议来完成。链路层不仅检错,还能纠错。

tcp

数据链路层的基本概念

数据链路层属于计算机网络的底层,数据链路层使用的信道主要有下面两种类型:

1、点对点信道。这种信道使用一对一点对点的通信方式。

2、广播通信。这种通信使用一对一多的广播模式。广播信道上连接的主机很多,因此必须使用专有的共享通道协议来协调这些主机的数据发送。

数据链路和帧

这里先来明确下链路和数据链路的区别

链路:结点间的物理通道。是⼀条⽆源的点到点的物理线路段(双绞线、光纤等),中间没有任何其他交换结点。⼀条链路只是⼀条通路的⼀个组成部分;

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

数据链路=链路+协议

数据链路的栗子:

城市交通=街道+汽⻋交通规则;

铁路交通=铁轨+⽕⻋运⾏规则;

帧:链路层的协议数据单元,封装网络层的数据报。

数据链路层:负责通过⼀条链路从⼀个结点向物理链路直接相连的相邻结点传送帧。

使用点对点通信的数据链路层

使用点对点信道的数据链路层在通信有下面三个步骤

1、A 的数据链路层把⽹络层交下来的 IP 数据报添加⾸部和尾部封装成帧;

2、A 把封装好的帧发送给B的数据链路层;

3、B 的数据链路层收到的帧⽆差错,从帧中取出 IP 数据报交给⽹络层;否则丢弃这个帧。

tcp

数据链路层不必考虑物理层如何实现⽐特传输的细节。甚⾄还可以简单地设想好像是沿着两个数据链路层之间的⽔平⽅向把帧直接发送到对⽅。

tcp

数据链路层的三个功能

数据链路的三个基本功能:封装成帧、透明传输和差错控制。

tcp

封装成帧

封装成帧:就是在一段数据的前后分别添加首部和尾部,然后就构成了一个帧。首部和尾部的一个重要的作用就是进行帧定界,确定帧的边界。

tcp

当数据是由可打印的 ASCII 码组成的⽂本⽂件时,帧定界可以使⽤特殊的帧定界符。

控制字符 SOH (Start Of Header) 放在⼀帧的最前⾯,表示帧的⾸部开始,控制字符 EOT (End Of Transmission) 表示帧的结束。

tcp

为什么需要封装成帧?

当传输数据的时候出现了故障,帧界定符的作用就更加明显了。如果发送端在发送的过程中,一个帧出现了故障,中断了传输,之后很快又重新从头开始传送。由于使用了帧的界定符,接收端,就能根据界定符来 判断帧是否是一个完整的帧,如果不是完整的帧就会丢弃。

简单的讲就是可以判断错误的帧。

透明传输

在数据链路层透明传输表示:无论什么比特组成的数据,都能按照原样没有差错的通过这个数据链路层。

如果数据中的某个字节的⼆进制代码恰好和 SOH 或 EOT ⼀样,数据链路层就会错误地找到帧的边界

tcp

因为存在这种错误帧的情况,上面的这种情况就不是透明传输,因为传输的数据中有字符 EOT,接收端就会认为帧的传输已经结束了,后面的内容就不能进行传输了,就会造成数据的丢失。

如何解决呢?

通过在控制符 SOH 和 EOT 前面插入一个转义字符 ESC 来解决,这样界定符前面都会有一个转义字符,就能和数据中的字符进行区分了,不会把数据中的字符当成帧中的界定符来处理。

  • 发送端的数据链路层在数据中出现控制字符“SOH”或“EOT”的前⾯插⼊⼀个转义字符“ESC”;

  • 接收端的数据链路层在将数据送往⽹络层之前删除插⼊的转义字符;

  • 如果转义字符也出现在数据当中,那么应在转义字符前⾯插⼊⼀个转义字符 ESC。当接收端收到连续的两个转义字符时,就删除其中前⾯的⼀个。

tcp

差错控制

现实的通信链路中,比特在传输的过程中会存在差错:1 可能会变成 0,0可能会变成 1,这就是比特差错。所以在计算机网络数据传输的过程中,需要采用各种差错检测检测措施。

目前数据链路层广泛使用了循环冗余检验 CRC 的检错技术。

CRC 如何检错

1、在发送端,先把数据划分为组。假定每组 k 个⽐特;

2、假设待传送的⼀组数据 M = 101001(现在 k = 6)。我们在 M 的后⾯再添加供差错检测⽤的 n 位冗余码⼀起发送;

n 位冗余码的计算:

  • ⽤⼆进制的模 2 运算进⾏ 2n 乘 M 的运算,这相当于在 M 后⾯添加 n 个 0;

  • 得到的 (k + n) 位的数除以事先选定好的⻓度为 (n + 1) 位的除数 P,得出商是 Q ⽽余数是 R,余数 R ⽐除数 P 少 1 位,即 R 是 n 位;

  • 将余数 R 作为冗余码拼接在数据 M 后⾯发送出去。

其中需要注意的是除数 P 是提前约定好的,同时如果使⽤位数⾜够多的除数 P,那么出现检测不到的差错的概率就很⼩很⼩。同时冗余码的长度+1就是除数 P 的长度,约定好了除数 P,也就意者冗余码的长度也约定好了。

3、接收端对收到的数据根据除数 P 进行取余运算,如果余数为 0,表示这个帧没有差错,否则就表示这个帧有差错,丢弃这个帧的数据。

tcp

但这种检测⽅法并不能确定究竟是哪⼀个或哪⼏个⽐特出现了差错,只能判断当前传送的帧有没有差错。

对于错误的帧选择丢弃,所以循环冗余检验 CRC 差错检测技术只能做到⽆差错接受,做不到可靠传输,要做到可考传输就需要再加上序号、确认和重传机制。

在数据后⾯添加上的冗余码称为帧检验序列 FCS (Frame Check Sequence)。

点对点协议PPP

点对点协议(PPP,Point-to-Point Protocol)主要是用来通过拨号或专线方式在两个网络节点之间建立连接、发送数据。PPP 是各类型主机、网桥和路由器之间简单连接的一种解决方案。PPP 协议在 RFC1661 中有详细的描述。

PPP协议是目前广域网上应用最广泛的协议之一,它的优点在于简单、具备用户验证能力、可以解决IP分配等。

PPP具有的功能

1、PPP 具有动态分配IP地址的能力,允许在连接时刻协商IP地址;

2、PPP 支持多种网络协议,比如TCP/IP、NetBEUI、NWLINK等;

3、PPP 具有错误检测能力,但不具备纠错能力,所以 PPP 是不可靠传输协议;

4、无重传的机制,网络开销小,速度快;

5、PPP 具有身份验证功能;

6、PPP 可以用于多种类型的物理介质上,包括串口线、电话线、移动电话和光纤(例如SDH),PPP 也用于 Internet 接入。

PPP协议的组成

PPP 协议有三个组成部分

1、一个将 IP 数据表封装到串行(同步串行/异步串行)链路的方法;

2、一个用来建立、配置和测试数据链路连接的链路层控制协议 LCP(Link Control Protocol);

3、一套网络控制协议 NCP(Network Control Protocol),支持不同的网络吃层协议(IP、OSI的⽹络层、AppleTalk等)。

使用广播信道的数据链路层

局域网的数据链路层

局域网最主要的特点是:⽹络为⼀个单位所拥有,地理范围和站点数⽬均有限。

局域网主要有如下一些主要优点:

1、具有广播功能,从一个站点可以很方便的访问全网。局域网上的主机可共享连接在局域网上的各种硬件资源和软件资源;

2、便于系统的扩展和逐渐演变,各设备的位置可以灵活调整和改变;

3、提高了系统的可靠性,可用性和生存性。

计算机通过适配器和局域⽹进⾏通信

计算机与外界局域网的连接是通过通信适配器进行的,网络接口卡又称网卡。适配器与局域网之间的通信是通过电缆或者双绞线以串行传输方式进行,适配器与计算机之间的通信是以并行方式进行通信,因此,适配器的一个重要功能就是进行数据串行传输和并行传输之间的转换。

tcp

CSMA/CD 协议

最初的以太⽹是将许多计算机都连接到⼀根总线上。易于实现⼴播通信。

tcp

CSMA/CD 技术早期是用来解决有线网络中,共享介质下的多路网络接入问题,该技术仍然在当今的10M/100M半双工网络中使用。

使⽤ CSMA/CD 协议的以太⽹不能进⾏全双⼯通信⽽只能进⾏双向交替通信(半双⼯通信):

1、每个站在发送数据之后的⼀⼩段时间内,存在着遭遇碰撞的可能性;

2、这种发送的不确定性使整个以太⽹的平均通信量远⼩于以太⽹的最⾼数据率。

CSMA/CD 的要点:

1、多点接入:说明计算机是总线型网络,许多计算机以多点接入的方式连接在一根总线上;

2、载波监听:就是检测总线上有没有其它计算机在发送,因为需要等到信道空闲时候才能发送,所以发送前需要检测信道,获取发送权;

3、碰撞检测:边发边监听,适配器发送数据的时候需要边发边监听信号电压的变化,以便判断自己在机在发送数据的时候其它站是否也在发送数据。

以太⽹的 MAC 层

MAC地址:(英语:Media Access Control Address),直译为媒体访问控制地址,也称为局域网地址(LAN Address),以太网地址(Ethernet Address)或物理地址(Physical Address),它是一个用来确认网络设备位置的地址。

MAC地址是全局唯一的,不会有两个相同的网卡有相同的 MAC 地址,MAC 地址都是由生产厂家在生产时固化在网络硬件中,是硬件预留的地址。

MAC地址更像是身份证,是一个唯一的标识。它的唯一性设计是为了组网的时候,不同的网卡放在一个网络里面的时候,可以不用担心冲突。从硬件角度,保证不同的网卡有不同的标识。

MAC地址的通讯,只限于同一个子网中,如果跨子网就不能通信了。

在局域⽹中,硬件地址⼜称为物理地址,或 MAC 地址:

如果连接在局域⽹上的主机或路由器安装有多个适配器,那么这样的主机或路由器就有多个”地址”。

MAC 地址分类

  • 单播 MAC 地址:是指第⼀个字节的最低位是0的 MAC 地址,代表了⼀块特定的⽹卡;

  • 组播 MAC 地址:是指第⼀个字节的最低位是1的 MAC 地址,代表了⼀组⽹卡;

  • ⼴播 MAC 地址: 是指每⼀位都是1的 MAC 地址,⼴播 MAC 地址是组播 MAC 地址的⼀个特例,代表了所有⽹卡。

总结

1、数据链路层主要有两个功能 :帧编码和误差纠正控制;

2、数据链路链路层属于计算机网络的底层,数据链路层使用的信道主要有下面两种类型:

  • 点对点信道。这种信道使用一对一点对点的通信方式。

  • 广播通信。这种通信使用一对一多的广播模式。广播信道上连接的主机很多,因此必须使用专有的共享通道协议来协调这些主机的数据发送。

3、数据链路=链路+协议

数据链路的栗子:

城市交通=街道+汽⻋交通规则;

铁路交通=铁轨+⽕⻋运⾏规则;

帧:链路层的协议数据单元,封装网络层的数据报。

数据链路层:负责通过⼀条链路从⼀个结点向物理链路直接相连的相邻结点传送帧。

4、数据链路的三个基本功能:封装成帧、透明传输和差错控制;

5、在局域⽹中,硬件地址⼜称为物理地址,或 MAC 地址,MAC地址是全局唯一的,不会有两个相同的网卡有相同的 MAC 地址,MAC 地址都是由生产厂家在生产时固化在网络硬件中,是硬件预留的地址。

参考

【极客时间-趣谈网络协议】https://time.geekbang.org/column/intro/100007101
【计算机网络第八版】https://www.bilibili.com/video/BV1WP4y1j7JU?p=1
【计算机网络学习笔记】https://github.com/boilingfrog/Go-POINT/tree/master/tcp
【点对点协议】https://baike.baidu.com/item/%E7%82%B9%E5%AF%B9%E7%82%B9%E5%8D%8F%E8%AE%AE/2991091