《计算机网络-自顶向下》06. 链路层和局域网

news2025/1/16 1:03:43

文章目录

    • 链路层概述
      • 链路层提供的服务
      • 链路层在何处实现
    • 差错检测和纠正技术
      • 奇偶校验
      • 循环冗余检测
    • 多路访问协议
      • 信道划分协议
      • 随机接入协议
        • 时隙 ALOHA
        • ALOHA
        • 载波侦听多路访问 —— CSMA
        • 具有碰撞检测的载波侦听多路访问 —— CSMA/CD
        • CSMA/CD 效率
      • 轮流协议
      • DOCSIS:用于电缆因特网接入的链路层协议
    • 交换局域网
      • 链路层寻址和 ARP
        • MAC 地址
        • 地址解析协议 —— ARP
      • 以太网
        • 以太网的帧结构
        • 以太网技术
      • 链路层交换机
        • 交换机转发和过滤
        • 自学习
        • 链路层交换机的性质
        • 交换机 VS 路由器
      • 虚拟局域网 —— VLAN
        • IEEE 802.1Q
        • 交换机的端口类型

链路层概述

链路层提供的服务

  • 成帧
  • 链路接入
  • 可靠交付
  • 差错检测和纠错

链路层在何处实现

链路层的主体部分实在网络适配器中实现的,网络适配器有时也称为网络接口卡(Network Interface Card, NIC)。

位于网络适配器核心是链路层控制器,该控制器通常是一个实现了许多链路层服务(成帧、链路接入、差错检测等)的专用芯片。

对于控制器:

在发送端,控制器取得了由协议栈较高层生成并存储在主机内存中的数据报,在链路层帧中封装该数据报,如何遵循链路层接入协议将该帧传进通信链路中。

在接收端,控制器接收了整个帧,抽取出网络层数据报。如果链路层执行差错检测,则需要发送控制器在该帧的首部字段设置差错检测比特,由接收端控制器执行差错检测。

链路层许多功能都是硬件实现的。

在 CPU 中也实现了部分链路层功能,如组装链路层寻址信息和激活控制器硬件。

在接收端,链路层软件响应控制器终端(例如,由一个或多个帧的到达),处理差错条件和将数据报向上传递给网络层。

image-20230408082552586

差错检测和纠正技术

奇偶校验

之前学过了,链接: 《计算机组成与设计》05. 大而快:层次化存储

循环冗余检测

计算过程:

  • 发送与接收方都先约定好一个生成多项式 G(x)
  • 发送方基于待发送的数据和生成多项式计算出差错检错码(冗余码),将其添加到待传输数据的后面一起传输。
  • 接收方通过生成多项式来判断收到的数据是否产生了误码。

发送方处理:

image-20230411201718187

接收方处理:

image-20230411201738015

多路访问协议

多个节点在共享信道上进行传输,需要通过多路访问协议来规范它们在广播信道上的传输行为。
在各种各样的网络环境下需要多路访问协议,包括有线和无线接入网,以及卫星网络。

因为所有的节点都能够传输帧,所以多个借点可能会同时传输帧。此时当所有节点在传输的过程中,在某一时刻将碰到一起,这就产生了碰撞
通常,当发生碰撞时,碰撞将导致所有的帧都丢弃,因此将没有一个节点能有效的接收到任何传输的帧。

因为许多节点都需要频繁的传输帧,许多传输将导致碰撞,广播信道的大量带宽将被浪费。

多路访问协议应该具有一下所希望的特征:

  1. 当仅有一个节点发送数据时,该节点具有 Rbps 的吞吐量。
  2. 当有 M 个节点发送数据时,每个节点吞吐量为 R/M bps。
  3. 不会因为某个主节点故障而导致整个系统崩溃。
  4. 协议是简单的,使实现不昂贵。

信道划分协议

  • 时分多路复用(TDM)
  • 频分多路复用(FDM)
  • 码分多址(CDMA)

随机接入协议

时隙 ALOHA

略…

ALOHA

略…

载波侦听多路访问 —— CSMA

  • 传输前先侦听(载波侦听):当前节点的适配器侦听信道上是否有其它适配器的能量信号,若有,则先不发送,若无,则发送。
  • 和其它节点同时传输(碰撞检测):当一个节点在传输时一直侦听此信道,若检测到此信道上有其它节点的能量信号,即干扰正在传输的帧,它就停止传输,进入一段随机等待时间,然后在进行“侦听-当空闲时传输”。

载波侦听多路访问:CSMA
具有碰撞检测的 CSMA:CSMA/CD

发送碰撞时的图示:
image-20230411202754645

具有碰撞检测的载波侦听多路访问 —— CSMA/CD

从与广播信道的适配器(在节点中)的角度总结:

  1. 适配器从网络层得到数据报,接着在链路层封装该数据报,并将其放入到帧适配器缓存中。
  2. 若适配器侦听到信道空闲(即信号能量从信道进入适配器),此时它开始传输。若侦听到信道繁忙,它将等待,直到侦听到没有信号能量时才开始传输帧。
  3. 在传输过程中,适配器监视来自其他使用该广播信道的适配器的信号能量的存在。
  4. 若适配器传输整个帧的过程中未检测到来自其它适配器的信号能量,该适配器就完成了该帧的传输。若适配器在传输过程中检测到来自其它适配器的信号能量,它将中止传输。
  5. 中止传输后,适配器等待一个随机时间,然后返回步骤 2。

随机时间的长短:

  • 时间间隔大,碰撞节点数量小:在进入到“侦听-空闲时传输”步骤前,节点很可能等待较长时间(导致信道保持空闲)。
  • 时间间隔小,碰撞节点数量大:很可能各节点选择的时间相差较小,导致节点将再次碰撞。
    理想是:当碰撞节点数量少时,时间间隔较短;当节点碰撞数量较大时,时间间隔较长。

具体随机时间计算:当传输一个给定的帧时,假设该帧碰撞了 n n n 次,节点随机地从 0 , 1 , 2 , . . . , 2 n − 1 {0, 1, 2, ..., 2^n-1} 0,1,2,...,2n1 中选择要给 K K K 值。这便是二进制指数后退算法

CSMA/CD 效率

效率 = 1 1 + 5 d p r o p / d t r a n s 效率 = \frac{1}{1+5d_{prop}/d_{trans}} 效率=1+5dprop/dtrans1

轮流协议

略…

DOCSIS:用于电缆因特网接入的链路层协议

略…

交换局域网

链路层寻址和 ARP

MAC 地址

并不是主机或路由器具有链路层地址,而是它们的适配器(即网络接口)具有链路层地址。

注意,链路层交换机并不具有与它们的接口(这些接口是与主机和路由器相连的)相关联的链路层地址。因为链路层交换机的任务是在主机与路由器之间承载数据报。

链路层地址的各种称呼:LAN地址、物理地址、MAC 地址。

通常,MAC 地址长度为 6 字节,共有 2 48 2^{48} 248 个可能的 MAC 地址。MAC 地址每个地址都用十六进制表示。

MAC 地址是固定不变的,但用软件改变一块适配器的 MAC 地址现在是可能的。

MAC 地址出厂时确保 MAC 地址唯一,也就是说世界上没有两块适配器具有相同的 MAC 地址。这依靠 IEEE 来实现。

IEEE 负责管理 MAC 地址空间,当一个公司生产适配器时,需要向 IEEE 购买 2 24 2^{24} 224 个地址空间,
IEEE 分配这 2 24 2^{24} 224 个地址的方式是:固定一个 MAC 地址的前 24 位,让公司自己为每个适配器生成后 24 位的唯一组合。

MAC 地址是扁平结构(固定不变),IP 地址是层次结构(可以改变)。

当某适配器要向某些目的适配器发送一个帧时,发送适配器将目的适配器的 MAC 地址插入到该帧中,并将该帧发送到局域网上。

当适配器接收到一个帧时,将检测该帧中的 MAC 地址是否与自己的 MAC 地址相匹配:

  • 匹配:该适配器提取出封装的数据报,并将数据报沿着协议栈向上传递。
  • 不匹配:该适配器丢弃该帧,而不会向上传递该网络层数据报。

MAC 广播地址:对于 6 字节的 MAC 来说,就是 48 位 MAC 全为 1,以十六进制表示就是 FF-FF-FF-FF-FF-FF。

地址解析协议 —— ARP

以太网

以太网的帧结构

image-20230408090904944

字段字段大小(字节)说明
前同步码8该同步码的前 7 字节都是 10101010,最后一个字节是 10101011。前 7 字节用于“唤醒”接收适配器,并将它们的时钟和发送的时钟同步。为什么需要同步:因为发送和接收的速率并不一定一致,如发送方以1Gbps发送,接收方以10Mbps接收。
目的地址6包含一个目的适配器的 MAC 地址,当目的适配器接收到帧时,如匹配,则它将该帧的数据字段传递给网络层,否则丢弃。
源地址6发送端的 MAC 地址。
类型2主机除了能使用 IP 协议外,还可以使用其它的网络层协议。一台主机可以支持多种不同协议,因此当接收适配器收到了以太网帧后,该适配器需要知道它应该将数据字段的内容传递给哪个网络层协议(即分解)
数据46~1500该字段承载了 IP 数据报。IP 数据报若小于以太网的最大传输单元,则必须分片。若小于最小,则必须填充。
CRC4使得接收适配器检测帧中是否引入差错。

所有以太网技术都向网络层提供无连接服务。

所有以太网技术都向网络层提供不可靠服务。

若丢弃帧需要重传,是否重传全看应用是 UDP 还是 TCP,UDP 不重传,TCP 就重传。

以太网技术

链路层交换机

交换机转发和过滤

交换机中有一张交换机表,用于完成交换机转发功能。

image-20230408095755010

当发送方包含一个目的地 MAC 地址为 DD-DD-DD-DD-DD-DD 的帧,并且从交换机的 x x x 接口入帧时:

  • 若交换机没有该表项,则除了 x x x 接口外,交换机广播该帧。
  • 若表项与 x x x 接口匹配,则该帧无需转发到其它任何接口,因此该帧从包含该 MAC 地址的局域网网段中来,因此交换机丢弃该帧,即过滤该帧。
  • 若表项存在与一个 y y y 接口匹配,则该帧需要转发到 y y y 接口相连的局域网网段。

自学习

交换机是即插即用设备,不需要 网络管理员手动进行配置,只需要插上电就可以用了。

如何自学习:当交换机收到一个帧时,该交换机就进行存储。

表中的字段:

  • 地址:通向目的的 MAC 地址。
  • 接口:通向目的 MAC 地址的接口。
  • 时间:表项在表中保存的时间(过了这个时间后,该表项就会被删除,这是因为 MAC 所对应的 IP 会变)。

image-20230408095755010

链路层交换机的性质

  • 消除碰撞
  • 异质的链路
  • 管理

交换机 VS 路由器

如下图,交换机是链路层设备,路由器是网络层设备。交换机需要处理高至第二层的帧,路由需要处理高至第三层的数据报。

在交换机中,为了防止广播帧循环,交换网络会将拓扑限制为一颗生成树。交换机对广播风暴并不提供任何包含措施。

相反,路由器中,IP 用一个特殊的报文首部字段来限制循环,因此网络拓扑不会被限制为一颗生成树,分组也就不会被限制到一个生成树上,并且可以使用源和目的地之间的最优路径。

image-20230408102027214

image-20230408101855516

通常,由几百台主机组成的小网络通常有几个局域网网段,对于这些小网络,用交换机就够了。

对于由几千台主机组成的更大网络中,通常用交换机加路由器。

虚拟局域网 —— VLAN

IEEE 802.1Q

交换机依靠 IEEE 802.1Q 帧来区分各个 VLAN。

IEEE 802.1Q 帧对以太网的 MAC 帧格式进行了扩展,插入了 4 字节的 VLAN 标记。

image-20230408202514216

VLAN 标记的最后 12 比特称为 VLAN 标识符 VID,它唯一标志了以太网帧属于哪个 VLAN。

  • VID 的取值范围是 0~4095,即 0   2 12 − 1 0 ~ 2^{12}-1 0 2121
  • 用于表示 VLAN 的 VID 有效取值范围是 1~4096。

802.1Q 帧是由交换机来处理的,而不是用户主机来处理的。

  • 当交换机收到普通的以太网帧时,会将其插入 4 字节的 VLAN 标记转变为 802.1Q 帧,该行为称为“打标签”。
  • 当交换机转发 802.1Q 帧时,可能会删除其 4 字节 VLAN 标记转变为普通以太网帧,该行为称为“去标签”。

交换机的端口类型

Access

  • 一般用于连接用户计算机。
  • 只能属于一个 VLAN。
  • PVID 值与端口所属 VLAN 的 ID 相同,默认为 1。
  • 该端口接收时的处理方式:通常只接受“未打标签”的普通以太网 MAC 帧。接收完毕后,给该帧插入 PVID 字段,即 “打标签”,字段中的 VID 取值与端口的 PVID 值相等。
  • 该端口发送时的处理方式:若帧中的 VID 与端口的 PVID 相等,则 “去标签”,并转发该帧。否则不转发。

Trunk

  • 该端口一般用于交换机之间或交换机与路由器之间的互连。

  • 该端口可以属于多个 VLAN。

  • 用户可以设置 Trunk 端口的 PVID 值。默认 PVID 为 1。

  • 该端口接收时的处理方式:

    接收“未打标签”的帧时,根据接收帧的端口的 PVID 给帧 “打标签”,VID 取值和端口的 PVID 值相同。

    接收“打标签”的帧时,直接接收。

  • 该端口发送时的处理方式:

    对于 VID = PVID 的帧,先“去标签”,后转发。

    对于 VID != PVID 的帧,直接转发。

Hybrid

交换机各端口的缺省 VLAN ID

  • 在思科交换机上称为 Native VLAN,即本征 VLAN。
  • 在华为交换机上称为 Port VLAN ID,即端口 VLAN ID,简称 PVID。

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

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

相关文章

c++11 标准模板(STL)(std::stack)(五)

定义于头文件 <stack> template< class T, class Container std::deque<T> > class stack; std::stack 类是容器适配器&#xff0c;它给予程序员栈的功能——特别是 FILO &#xff08;先进后出&#xff09;数据结构。 该类模板表现为底层容器的包…

C++实现:学生管理系统(详细解析)

目录 1.题目要求 2.需求分析 3.整体设计 4.详细设计 主函数设计 学科科目类 主菜单 读取文件与写入文件 效果如下 添加学生信息 删除学生信息 ​编辑 修改学生信息 显示信息列表 显示学生列表 将学生列表按学号升序排列 将学生列表按平均分降序排列&#xff0c;平…

文件操作File类,OutputStream、InputStream、Reader、Writer的用法

文章目录File 类OutputStream、InputStreamInputStreamOutputStreamReader、WriterReaderWriter注意事项简单模拟实战File 类 Java标准库中提供的File类是对硬盘上的文件的抽象&#xff0c;每一个File对象代表了一个文件&#xff0c;因为文件在硬盘上存储&#xff0c;而直接操…

4月11日作业修订

A.这主要看你互斥锁锁的资源是那部分的&#xff0c;如果是进程内资源&#xff0c;则可以实现同一进程不同线程之间的互斥&#xff0c;而如果将共享内存作为互斥锁进行操作则可以实现不同进程之间的互斥。 B.这是必然的&#xff0c;加锁是为了防止数据的二义性 C.信号量同时使…

代码规范(以后会补充)

目录 为什么要规范代码 不规范的代码有什么特点 ​编辑 不规范的坏处 规范代码是什么样的 如何规范代码 1.代码中不要出现莫名其妙的数字 2.深度嵌套 3.注释 4.避免创建大函数 5.重复代码 6.变量命名 7.函数命名 8.命名时注意动词的使用 9. 常量值所有都大写 10. 避免变…

Bossies 2016:最佳开源大数据工具

导读在今年的 Bossie开源大数据工具中&#xff0c;你会发现最新最好的方法是利用大型集群进行索引、搜索、图形处理、流处理、结构化查询、分布式OLAP和机器学习&#xff0c;因为众多处理器和RAM可降低工作量级。 处理大数据可能会遇到各种各样的问题&#xff0c;目前没有任何工…

SpringMVC简介及入门

SpringMVC SpringMVC简介 一、三层架构和MVC 1、三层架构概述 &#xff08;1&#xff09;开发架构&#xff1a;一是 C/S 架构 (客户端/服务器)&#xff0c;二是B/S架构&#xff08;浏览器/服务器)。在JavaEE开发中&#xff0c;几乎全部是基于 B/S架构的开发。在B/S 架构中&…

最简单IDEA社区版构建SpringBoot项目

一、环境准备 IDEA Community Edition jdk8 maven 二、下载SpringBoot项目 https://start.spring.io/ 项目名称自己修改下。 点击ADD DEPENDENCIES&#xff0c;添加Web依赖。 下载构建好的SpringBoot项目的压缩包 三、idea中打开SpringBoot项目 使用maven加载依赖。 四、测…

【数据库原理 • 三】关系数据库标准语言SQL

前言 数据库技术是计算机科学技术中发展最快&#xff0c;应用最广的技术之一&#xff0c;它是专门研究如何科学的组织和存储数据&#xff0c;如何高效地获取和处理数据的技术。它已成为各行各业存储数据、管理信息、共享资源和决策支持的最先进&#xff0c;最常用的技术。 当前…

4.7 AOP底层源码原理

4.7.1 AOP源码 进入到这里 F8跳过assertBeanFactoryActive方法&#xff0c;因为spring它方法调用太乱了&#xff0c;如果不挑“核心”去看&#xff0c;很快你就会被绕晕&#xff0c; 那么我们怎么判断这个assertBeanFactoryActive不是核心&#xff0c;注意前面getbean方法返回…

《淘宝网店》:计算总收益

目录 一、题目 二、思路 1、当两个年份不一样的时候 &#xff08;1&#xff09;from年剩余之后的收益 &#xff08;2&#xff09;中间年份的全部收益 &#xff08;3&#xff09;to年有的收益 2、同一个年份 三、代码 详细注释版本&#xff1a; 简化注释版本&#xff…

RC滤波器

前阶段&#xff0c;因项目解干扰问题&#xff0c;和同事聊起来RC滤波。所以&#xff0c;今日借此机会&#xff0c;通过文章的方式再一次给大家简单的普及一下RC滤波的知识。 关于滤波&#xff0c;其目的还是为了尽可能多的让有用信号做到无衰减&#xff0c;无用信号衰减至近乎…

云南计算机专升本经验分享

一、概述 经验分享 越早准备越好&#xff0c;切勿过分迷信同学的学习进度。 英语(97) 在云南专升本里面&#xff0c;英语在90以上已经是不错了&#xff0c;我由于自身基础不好原因&#xff0c;导致我刚开始一度想放弃英语&#xff0c;所以对英语的学习也是极尽节俭&#xff0…

Python每日一练(20230416)

目录 1. 有效数字 &#x1f31f;&#x1f31f;&#x1f31f; 2. 二叉树的最大深度 &#x1f31f; 3. 单词搜索 &#x1f31f;&#x1f31f; &#x1f31f; 每日一练刷题专栏 &#x1f31f; Golang每日一练 专栏 Python每日一练 专栏 C/C每日一练 专栏 Java每日一练 …

【RabbitMQ】图解RabbitMQ是如何保证消息可靠性的

目录 一、概述 1、消息可靠性 2、SpringBoot整合RabbitMQ配置文件 二、生产者---RabbitMQ服务器如何保证信息不丢失 1、confirm确认模式 1.说明 2.SpringBoot代码实现 2、return退回模式 1.说明 2.SpringBoot代码实现 三、RabbitMQ服务器如何保证消息不丢失 四、Ra…

Logstash:使用自定义正则表达式模式

有时 Logstash Grok 没有我们需要的模式。 幸运的是我们有正则表达式库&#xff1a;Oniguruma。在很多时候&#xff0c;如果 Logstash 所提供的正则表达不能满足我们的需求&#xff0c;我们选用定制自己的表达式。 定义 Logstash 是一种服务器端数据处理管道&#xff0c;可同时…

zabbix客户端配置

一、zabbix客户端配置 1.实验环境&#xff1a;关闭防火墙和安全模块 systemctl disable --now firewalld setenforce 0 2.服务端和客户端都要时间同步 yum install -y ntpdate #注意安装需要用网络源安装&#xff0c;不能用本地源 ntpda…

电子器件系列34:tvs二极管(2)

一、基本原理&#xff1a; 二、重要产数&#xff1a; 不同的资料对于相同的参数可能有不同的命名&#xff0c;要根据实际情况来确定参数的意义 这里以上图表格里的参数名称进行解析&#xff0c;以其他资料作为参考。 结合图表和伏安特性曲线&#xff0c;再结合下面的图我是…

你认为的.NET数据库连接池,真的是全部吗?

一般我们的项目中会使用1到2个数据库连接配置&#xff0c;同程艺龙的数据库连接被收拢到配置中心&#xff0c;由DBA统一配置和维护&#xff0c;业务方通过某个字符串配置拿到的是开箱即用的Connection对象。 DBA能在对业务方无侵入的情况下&#xff0c;让大规模微服务实例切换…

第二周P9-P22

文章目录第三章 系统总线3.1、总线的基本概念一、为什么要用总线二、什么是总线三、总线上信息的传送四、总线结构的计算机举例1、单总线结构框图2、面向CPU的双总线结构框图3、以存储器为中心的双总线结构图3.2、总线的分类1、片内总线2、系统总线3、通信走线3.3、总线特性及性…