计算机网络-数据链路层

计算机网络-数据链路层

上一篇博客中我们学习了计算机网络中的物理层,如果还没有看的可以先去学习了解一下哎,有助于我们这次学习的开始。传送门: 计算机网络-物理层

接下来正式开始讲解 - 数据链路层

基本概念

数据链路层是实现设备之间通信非常重要的一层;

其所使用的信道分为两种:

  • 点对点信道
  • 广播信道

链路 :就是从一个结点到相邻结点的一段物理线路,而中间没有任何其他交换结点。一条链路只是一条通路的一个组成部分。
数据链路:是指把实现通信协议的硬件和软件加到链路上,就构成了数据链路。数据链路还可以分为物理链路和逻辑链路。

  • 物理链路就是上述所说的链路。
  • 逻辑链路就是上述所说的数据链路,是物理链路加上必要的通信协议。

现在最常用的方法就是使用适配器(网卡)来实现这些协议的硬件和软件。市面上一般的适配器都包括了数据链路层和物理层。

数据链路层以帧为单位传输和处理数据。

数据链路层的协议有很多种,有三个基本问题是共同的~

  • 封装成帧
  • 透明传输
  • 差错控制

封装成帧

在数据的头部和尾部加上标记(加上帧头和帧尾),确定帧的范围。

当数据是有可打印的ASCII码组成的文本文件时,帧的定界可以用特殊的帧定界符(SOHEOT)分别控制帧的开始和结束~

透明传输

是指数据链路层对上层交付的传输数据没有任何限制,就好像数据链路层不存在一样。无论发送什么样比特组合的数据,这些数据都会没有差池的通过整个数据链路层。

通过上述的封装成帧的操作,就有人思考到一个问题,如果在封装的时候发现数据中某个节点部分恰好和SOH \ EOT一样,那么数据链路层不就会错误地找到帧的边界吗?别急当然有解决办法~

解决方法:字符填充/字节填充。

  1. 发送端的数据链路层在数据中出现控制字符SOHEOT的前面插入一个转义字符 ESC(十六制编码为1B)。
  2. 接收端的数据链路层在将数据送往网络层之前删除插入的转义字符。
  3. 如果转义字符也出现数据当中,那么应在转义字符前面插入一个转义字符。当接收端收到连续的两个转义字符时,就删除其中前面的一个。

差错控制

在传输过程中可能会出现比特差错,1变成0,0变成1

在一段时间内,传输错误的比特占所传输比特总数的比率称为误码率。误码率与信噪比有很大的关系。为了保证数据传输的可靠性,必须采用差错检测措施。数据链路层广泛使用了 循环冗余检验CRC / 帧检查序列FCS 检错技术。

  1. 收发双方约定好一个生成多项式G(x).
  2. 发送方基于待发送的数据生成多项式计算出差错检测码(冗余码),将其添加到带传输数据的后面一起传输。
  3. 接收方通过生成多项式来计算收到的数据是否产生了误码。

点对点PPP协议

点对点协议PPP是目前使用最广泛的点对点数据链路层协议。

PPP协议应满足:

  • 简单
  • 封装成帧
  • 透明性
  • 多种网络层协议
  • 多种类型链路
  • 差错检测

不需要的功能:

  • 纠错
  • 流量控制
  • 序号
  • 多点线路
  • 半双工或单工链路

PPP协议有三个组成部分:

  • 对各种协议数据报的封装方法(封装成帧);
  • 链路控制协议LCP:用于建立,配置以及测试数据链路的连接;
  • 网络控制协议NCP:其中每一个协议支持不同的网络层协议;

帧格式

PPP帧首部和尾部分别为4个字段和2个字段。PPP是面向字节的,所有的帧长度都是整数字节。

首部

标志字段 F = 0x7E (符号0x,表示它后面的字符是用十六进制表示的。十六进制的7E的二进制表示是01111110),标志字段表示一个帧的开始。

首部中的地址字段A规定为0xFF(即11111111)。

首部中的控制字段C规定为0x03(即00000011)。


尾部

尾部中的第一个字段(2个字节)是使用CRC的帧检验序列FCS。

透明性

当PPP用在异步传输时,就会使用一种特殊的字符填充法

  • 把信息字段中出现的每一个0x7E字节转变为2字节序列(0x7D,0x5E)。

  • 若信息字段中出现一个0x7D的字节,则把转义字符0x7D转变为2字节序列(0x7D,0x5D)。

  • 若信息字段中出现ASCII码的控制字符(即数值小于0x20的字符),则在该字符前面要加入一个0x7D字节,同时将该字符的编码加以改变。

当PPP用在同步传输链路(SONET / SDH)时,协议规定采用硬件来完成零比特填充

  • 在发送端先扫描整个信息字段(通常使用硬件实现,但也可以用软件实现,但是会慢一些)。

  • 只要发现有5个连续的1,则立即填入一个0。

  • 接收端在收到一个帧时,先找到标志字段F以确定帧的边界,接着再用硬件对其中的比特流进行扫描,每当发现5个连续1时,就把5个连续1后的一个0删除,以还原成原来的信息比特流。

PPP协议为什么不使用序号和确认机制

  1. 在数据链路层出现差错的概率不大
  2. 在因特网环境下,PPP的信息字段放入的数据时IP数据报,数据链路层的可靠传输并不能保证网络层也可靠传输。
  3. 帧检查序列FCS字段可以保证无差错接受。

传媒体接入控制

局域网的数据链路层

  • 网络为一个单位所拥有;
  • 地理范围和站点数有限;
  • 具有广播功能,从一个站点可以广泛的访问全网,局域网上的主机可以共享连接局域网上的各种硬件和软件资源;

共享信道要着重考虑的一个问题就是如何协调多个发送和接受站点对一个共享传输媒体的占用,如果多个设备同时发送数据,则会彼此形成干扰,导致发送失败。

媒体接入控制分为静态划分信道和动态接入控制。具体如下:

以太网

Mac地址

IP地址

ARP协议

集线器与交换机

交换机自学习和转发帧

生成树协议STP

虚拟局域网VLAN

相关推荐
云飞云共享云桌面33 分钟前
8位机械工程师如何共享一台图形工作站算力?
linux·服务器·网络
音徽编程3 小时前
Rust异步运行时框架tokio保姆级教程
开发语言·网络·rust
长安初雪4 小时前
Request 和 Response 万字详解
计算机网络·servlet
幺零九零零4 小时前
【C++】socket套接字编程
linux·服务器·网络·c++
23zhgjx-NanKon4 小时前
华为eNSP:QinQ
网络·安全·华为
23zhgjx-NanKon5 小时前
华为eNSP:mux-vlan
网络·安全·华为
点点滴滴的记录5 小时前
RPC核心实现原理
网络·网络协议·rpc
Lionhacker5 小时前
网络工程师这个行业可以一直干到退休吗?
网络·数据库·网络安全·黑客·黑客技术
程思扬6 小时前
为什么Uptime+Kuma本地部署与远程使用是网站监控新选择?
linux·服务器·网络·经验分享·后端·网络协议·1024程序员节
ZachOn1y6 小时前
计算机网络:运输层 —— 运输层概述
网络·tcp/ip·计算机网络·运输层