0205-2-数据链路层

第 3 章 数据链路层

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

数据链路和帧

  • 数据链路层使用的信道主要有以下两种类型:
    • 点对点信道。这种信道使用一对一的点对点通信方式。
    • 广播信道。这种信道使用一对多的广播通信方式,因此过程比较复杂。广播信道上连接的主机很多,因此必须使用专用的共享信道协议来协调这些主机的数据发
  • 数据链路层模型
  • 链路(link)是一条无源的点到点的物理线路段,中间没有任何其他的交换结点。
  • 数据链路(data link) 除了物理线路外,还必须有通信协议来控制这些数据的传输。若把实现这些协议的硬件和软件加到链路上,就构成了数据链路。
  • 数据链路层传送的是帧

三个基本问题

  • (1) 封装成帧
    • 将网络层传下来的分组添加首部和尾部,用于标记帧的开始和结束。
      *
  • (2) 透明传输
    • 透明表示一个实际存在的事物看起来好像不存在一样。
    • 帧使用首部和尾部进行定界,如果帧的数据部分含有和首部尾部相同的内容,那么帧的开始和结束位置就会被错误的判定。需要在数据部分出现首部尾部相同的内容前面插入转义字符。如果数据部分出现转义字符,那么就在转义字符前面再加个转义字符。在接收端进行处理之后可以还原出原始数据。这个过程透明传输的内容是转义字符,用户察觉不到转义字符的存在。
      *
  • (3) 差错控制
    • 循环冗余检验 CRC
      目前数据链路层广泛使用了循环冗余检验(CRC)来检查比特差错。

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

    • 冗余码的计算

      • 例子:
        现在 k = 6, M = 101001。
        设 n = 3, 除数 P = 1101,
        被除数是 2^nM = 101001000。
        模 2 运算的结果是:商 Q = 110101,
        余数 R = 001。
        把余数 R 作为冗余码添加在数据 M 的后面发送出去。发送的数据是:2^nM + R
        即:101001001,共 (k + n) 位。
    • 概要: CRC 是一种常用的检错方法,而 FCS 是添加在数据后面的冗余码。
      FCS 可以用 CRC 这种方法得出,但 CRC 并非用来获得 FCS 的唯一方法。

点对点协议 PPP

PPP 协议的特点

  • 互联网用户通常需要连接到某个 ISP 之后才能接入到互联网,PPP 协议是用户计算机和 ISP 进行通信时所使用的数据链路层协议。

PPP 协议的帧格式

  • 示意图:
    F 字段为帧的定界符
    A 和 C 字段暂时没有意义
    FCS 字段是使用 CRC 的检验序列
    信息部分的长度不超过 1500

PPP 协议的工作状态

  • 过程:
    当用户拨号接入 ISP 时,路由器的调制解调器对拨号做出确认,并建立一条物理连接。
    PC 机向路由器发送一系列的 LCP 分组(封装成多个 PPP 帧)。
    这些分组及其响应选择一些 PPP 参数,和进行网络层配置,NCP 给新接入的 PC机分配一个临时的 IP 地址,使 PC 机成为因特网上的一个主机。
    通信完毕时,NCP 释放网络层连接,收回原来分配出去的 IP 地址。接着,LCP 释放数据链路层连接。最后释放的是物理层的连接。

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

局域网的数据链路层

  • 局域网是一种典型的广播信道,主要特点是网络为一个单位所拥有,且地理范围和站点数目均有限。
  • 主要有以太网、令牌环网、FDDI 和 ATM 等局域网技术,目前以太网占领着有线局域网市场。
  • 可以按照网络拓扑结构对局域网进行分类:
    • 星形网
    • 环形网
    • 总线网
    • 树形网
  • 数据链路层的两个子层
    • 逻辑链路控制 LLC (Logical Link Control)子层
    • 媒体接入控制 MAC (Medium Access Control)子层。
    • 概要: 与接入到传输媒体有关的内容都放在 MAC子层,而 LLC 子层则与传输媒体无关,不管采用何种协议的局域网对 LLC 子层来说都是透明的
      所以以后一般不考虑 LLC 子层
  • 适配器
    • 网络接口板又称为通信适配器(adapter)或网络接口卡 NIC (Network Interface Card),或“网卡”。
      • 适配器的重要功能:
        • 进行串行/并行转换。
        • 对数据进行缓存。
        • 在计算机的操作系统安装设备驱动程序。
        • 实现以太网协议。

CSMA/CD 协议

  • CSMA/CD 表示载波监听多点接入 / 碰撞检测。
    • 多点接入 :说明这是总线型网络,许多主机以多点的方式连接到总线上。
    • 载波监听 :每个主机都必须不停地监听信道。在发送前,如果监听到信道正在使用,就必须等待。
    • 碰撞检测 :在发送中,如果监听到信道已有其它主机正在发送数据,就表示发生了碰撞。虽然每个主机在发送数据之前都已经监听到信道为空闲,但是由于电磁波的传播时延的存在,还是有可能会发生碰撞。
  • 具体内容
    • 记端到端的传播时延为 τ,最先发送的站点最多经过 2τ 就可以知道是否发生了碰撞,称 2τ 为 争用期 。只有经过争用期之后还没有检测到碰撞,才能肯定这次发送不会发生碰撞。
    • 当发生碰撞时,站点要停止发送,等待一段时间再发送。这个时间采用 截断二进制指数退避算法 来确定。从离散的整数集合 {0, 1, …, (2k-1)} 中随机取出一个数,记作 r,然后取 r 倍的争用期作为重传等待时间。
    • 概要: 示意图

使用广播信道的以太网

使用集线器的星形拓扑

  • 传统以太网最初是使用粗同轴电缆,后来演进到使用比较便宜的细同轴电缆,最后发展为使用更便宜和更灵活的双绞线。
    这种以太网采用星形拓扑,在星形的中心则增加了一种可靠性非常高的设备,叫做集线器(hub)

以太网的信道利用率

  • 一个帧从开始发送,经可能发生的碰撞后,将再重传数次,到发送成功且信道转为空闲(即再经过时间 τ 使得信道上无信号在传播)时为止,是发送一帧所需的平均时间。
  • 发送一帧占用线路的时间是 T0 + τ ,而帧本身的发送时间是 T0。于是我们可计算出理想情况下的极限信道利用率 Smax为:

以太网的 MAC 层

  • MAC 地址是链路层地址,长度为 6 字节(48 位),用于唯一标识网络适配器(网卡)。
  • 一台主机拥有多少个网络适配器就有多少个 MAC 地址。例如笔记本电脑普遍存在无线网络适配器和有线网络适配器,因此就有两个 MAC 地址。

以太网帧格式:

  • 类型 :标记上层使用的协议;
    数据 :长度在 46-1500 之间,如果太小则需要填充;
    FCS :帧检验序列,使用的是 CRC 检验方法;

扩展的以太网

在物理层扩展以太网

  • 用多个集线器可连成更大的局域网
    • 用集线器组成更大的局域网都在一个碰撞域中
      • 优点
        • 使原来属于不同碰撞域的局域网上的计算机能够进行跨碰撞域的通信。
        • 扩大了局域网覆盖的地理范围。
      • 缺点
        • 碰撞域增大了,但总的吞吐量并未提高。
        • 如果不同的碰撞域使用不同的数据率,那么就不能用集线器将它们互连起来。

在数据链路层扩展以太网

  • 在数据链路层扩展局域网是使用网桥。
    • 网桥工作在数据链路层,它根据 MAC 帧的目的地址对收到的帧进行转发。
      网桥具有过滤帧的功能。当网桥收到一个帧时,并不是向所有的接口转发此帧,而是先检查此帧的目的 MAC 地址,然后再确定将该帧转发到哪一个接口 。
      • 优点
        • 过滤通信量。
        • 扩大了物理范围。
        • 提高了可靠性。
        • 可互连不同物理层、不同 MAC 子层和不同速率(如10 Mb/s 和 100 Mb/s 以太网)的局域网。
      • 缺点
        • 存储转发增加了时延。
        • 在MAC 子层并没有流量控制功能。
        • 具有不同 MAC 子层的网段桥接在一起时时延更大。
        • 网桥只适合于用户数不太多(不超过几百个)和通信量不太大的局域网,否则有时还会因传播过多的广播信息而产生网络拥塞。这就是所谓的广播风暴。
    • 交换机
      • 交换机具有自学习能力,学习的是交换表的内容,交换表中存储着 MAC 地址到接口的映射。
        正是由于这种自学习能力,因此交换机是一种即插即用设备,不需要网络管理员手动配置交换表内容。
        • 下图中,交换机有 4 个接口,主机 A 向主机 B 发送数据帧时,交换机把主机 A 到接口 1 的映射写入交换表中。为了发送数据帧到 B,先查交换表,此时没有主机 B 的表项,那么主机 A 就发送广播帧,主机 C 和主机 D 会丢弃该帧,主机 B 回应该帧向主机 A 发送数据包时,交换机查找交换表得到主机 A 映射的接口为 1,就发送数据帧到接口 1,同时交换机添加主机 B 到接口 2 的映射。

虚拟局域网

  • 虚拟局域网可以建立与物理位置无关的逻辑组,只有在同一个虚拟局域网中的成员才会收到链路层广播信息。
  • 例如下图中 (A1, A2, A3, A4) 属于一个虚拟局域网,A1 发送的广播会被 A2、A3、A4 收到,而其它站点收不到。
  • 使用 VLAN 干线连接来建立虚拟局域网,每台交换机上的一个特殊接口被设置为干线接口,以互连 VLAN 交换机。IEEE 定义了一种扩展的以太网帧格式 802.1Q,它在标准以太网帧上加进了 4 字节首部 VLAN 标签,用于表示该帧属于哪一个虚拟局域网。

高速以太网

100BASE-T 以太网

  • 速率达到或超过 100 Mb/s 的以太网称为高速以太网
  • 可在全双工方式下工作而无冲突发生。因此,不使用 CSMA/CD 协议。

吉比特以太网

  • 允许在 1 Gb/s 下全双工和半双工两种方式工作。
  • 在半双工方式下使用 CSMA/CD 协议(全双工方式不需要使用 CSMA/CD 协议)。

10 吉比特以太网

  • 10 吉比特以太网只工作在全双工方式
  • 也不使用 CSMA/CD 协议。

使用高速以太网进行宽带接入

  • 以太网接入的重要特点是它可提供双向的宽带通信,并且可根据用户对带宽的需求灵活地进行带宽升级。
  • 采用以太网接入可实现端到端的以太网传输,中间不需要再进行帧格式的转换。这就提高了数据的传输效率和降低了传输的成本。

其他类型的高速局域网接口

集线器在转发帧时,不对传输媒体进行检测。

网桥在转发帧之前必须执行 CSMA/CD 算法。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/688275.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Linux——网络通信TCP通信常用的接口和tcp服务demo

文章目录 TCP通信所需要的套接字socket()bind()listen()acceptconnect() 封装TCP socket TCP通信所需要的套接字 socket() socket()函数主要作用是返回一个描述符,他的作用就是打开一个网络通讯端口,返回的这个描述符其实就可以理解为一个文件描述符&a…

c高级 函数+Makefile

一、作业 1.写一个函数,输出当前用户的uid和gid,并使用变量接收结果 #!/bin/bash function fun(){retid -uret1id -gecho $ret $ret1 } retfun echo $ret二、练习回顾 1.分文件编译(实现冒泡排序) 正确的:将数组的…

HTTP/1.1 如何优化?

问你一句:「你知道 HTTP/1.1 该如何优化吗?」 我们可以从下面这三种优化思路来优化 HTTP/1.1 协议: 尽量避免发送 HTTP 请求在需要发送 HTTP 请求时,考虑如何减少请求次数减少服务器的 HTTP 响应的数据大小 下面,就针对这三种思路具体看看有哪些优化…

二叉树的统一迭代法#思路

前序遍历: class Solution: def preorderTraversal(self, root: TreeNode) -> List[int]: result[] st[] if root: st.append(root) while st: nodest.pop() if node ! None: if node.right: st.append(node.right) if node.left: st.append(node.left) st.appen…

git的常用命令有哪些?

Git 是一个流行的分布式版本控制系统&#xff0c;用于跟踪文件的变化、协作开发和管理代码。以下是一些常用的 Git 命令&#xff1a; 创建和克隆仓库&#xff1a; git init&#xff1a;在当前目录初始化一个新的 Git 仓库。git clone <仓库URL>&#xff1a;克隆一个远程仓…

【Java EE初阶十六】网络原理(一)

在网络原理中主要学习TCP/IP四层模型中的重点网络协议 1. 应用层 1.1 应用程序与协议 应用层是和程序员接触最密切的&#xff1b; 应用程序&#xff1a;在应用层这里&#xff0c;很多时候都是程序员自定义应用层协议&#xff08;步骤&#xff1a;1、根据需求&#xff0c;明确…

log4net的使用步骤

log4net的使用步骤 Log4net是一个基于.NET平台的开源日志记录组件&#xff0c;它可以帮助开发人员在应用程序中添加日志记录功能&#xff0c;支持多种日志级别&#xff0c;如DEBUG、INFO、WARN、ERROR等&#xff0c;这使得开发人员可以根据需要灵活地控制日志的输出。下面是lo…

SPSSAU【文本分析】|我的词库

我的词库 文本分析时&#xff0c;可能涉及到一些新词&#xff0c;比如‘内卷’&#xff0c;这个词很可能在词典中并未出现过&#xff0c;词库也不认识它。但研究者自己认识它&#xff0c;此时可将该词纳入到新词词库中&#xff0c;让系统统计词频等信息时也对该词进行统计。当…

【监控】spring actuator源码速读

目录 1.前言 2.先搂一眼EndPoint 3.EndPoint如何被注入 4.EndPoint如何被暴露 4.1.如何通过http暴露 4.2.如何通过jmx暴露 5.EndPoint是怎么实现监控能力的 6.知道这些的意义是什么 1.前言 版本&#xff1a;spring-boot-starter-actuator 2.6.3 阅读源码一定要带着疑…

小迪安全26WEB 攻防-通用漏洞SQL 注入 SqlmapOracleMongodbDB2 等

#知识点&#xff1a; 1、数据库注入-Oracle&Mongodb 2、数据库注入-DB2&SQLite&Sybase 3、SQL 注入神器-SQLMAP 安装使用拓展 数据库注入&#xff1a; 数据库注入-联合猜解-Oracle&Mongodb 1.Oracle数据库一般会在java上执行 参考:https://www.cnblog…

C/C++与汇编交互总结

1.汇编当中可以调用C函数&#xff0c;只需要"IMPORT"一下即可&#xff0c;如&#xff1a; change_vari_c PROCPUSH {R0,R1,LR}IMPORT core_res_cIMPORT temp_func_retEXPORT change_vari_cBL temp_func_retLDR R1,core_res_cSTR R0,[R1]POP {R0,R1,PC}ENDP 如果该C…

Rust HashMap详解及单词统计示例

在Rust中&#xff0c;HashMap是一种非常有用的数据结构&#xff0c;用于存储键值对。本文将深入介绍HashMap的特性&#xff0c;以及通过一个单词统计的例子展示其用法。 HashMap简介 HashMap是Rust标准库提供的用于存储键值对的数据结构。它允许通过键快速查找对应的值&#…

图数据库 之 Neo4j - 应用场景1(6)

Neo4j是一种图数据库&#xff0c;它专注于处理关系数据密集型的问题。由于其图结构的特性&#xff0c;Neo4j能够高效地存储、查询和分析连接数据。 以下是一些常见的Neo4j应用场景&#xff1a; 社交网络分析&#xff1a;通过建模和分析人际关系&#xff0c;可以揭示社交网络中…

PTA | Wifi密码

下面是微博上流传的一张照片&#xff1a;“各位亲爱的同学们&#xff0c;鉴于大家有时需要使用 wifi&#xff0c;又怕耽误亲们的学习&#xff0c;现将 wifi 密码设置为下列数学题答案&#xff1a;A-1&#xff1b;B-2&#xff1b;C-3&#xff1b;D-4&#xff1b;请同学们自己作答…

【详解】图的概念和存储结构(邻接矩阵,邻接表)

目录 图的基本概念&#xff1a; 图的存储结构 邻接矩阵&#xff08;GraphByMatrix&#xff09;&#xff1a; 基本参数&#xff1a; 初始化&#xff1a; 获取顶点元素在其数组中的下标 &#xff1a; 添加边和权重&#xff1a; 获取顶点的度&#xff1a; 打印图&#xf…

Unity所有关于旋转的方法详解

前言&#xff1a;欧拉角和四元数的简单描述 我们在Inspector面板上看到的rotation其实是欧拉角&#xff0c; 我们将Inspector面板设置成Debug模式&#xff0c;此时看到的local Rotation才是四元数。 Unity中的欧拉旋转是按照Z-X-Y顺规执行的旋转&#xff0c;一组欧拉旋转过程中…

【HarmonyOS】鸿蒙Arkts开发从入门到实战【持续更新】

鸿蒙Arkts开发从入门到实战目录 1. 工具安装 ArkTs 2.1 基础语法 2.2 状态管理 2.3 渲染控制 2.4 页面路由 ArkUI的基础类组件使用 3.1 Image组件 3.2 Text组件 3.3 TextInput组件 3.4 Button组件 3.5 Slider组件 3.6 Video组件 3.7 自定义组件 3.8 气泡提示 3.9 菜单 Stage模…

RibbonBar RibbonPage切换事件

在开发的过程中&#xff0c;我们会用到点击切换page&#xff0c;来响应对应的事件&#xff0c;例如以下事件&#xff1a; 头文件中&#xff1a; void ribboncurrentPageIndexChanged(int index); 实现文件中&#xff1a; connect(ribbonBar(), SIGNAL(currentPageIndexChang…

[力扣 Hot100]Day29 删除链表的倒数第 N 个结点

题目描述 给你一个链表&#xff0c;删除链表的倒数第 n 个结点&#xff0c;并且返回链表的头结点。 出处 思路 两个指针间隔n&#xff0c;一趟遍历解决。 代码 class Solution { public:ListNode* removeNthFromEnd(ListNode* head, int n) {ListNode* phead;ListNode* …

【数据库】Mysql索引

1、什么是索引&#xff1f;为什么要用索引&#xff1f; 1.1、索引的含义 数据库索引&#xff0c;是数据库管理系统中一个排序的数据结构&#xff0c;以协助快速查询&#xff0c;更新数据库中表的数据。索引的实现通常使用B树和变种的B树&#xff08;MySQL常用的索引就是B树&am…