计算机网络之数据链路层

一、概述

1.1概述

物理层发出去的信号需要通过数据链路层才知道是否到达目的地;才知道比特流的分界线

  • 链路(Link):从一个结点到相邻结点的一段物理线路,中间没有任何其他交换结点
  • 数据链路(Data Link):把实现通信协议的硬件和软件加到链路上,就构成了数据链路
  • 数据链路层以为单位传输和处理数据

 封装成帧

数据链路层为数据加上帧首和帧尾使之成为帧的过程

  • 帧头和帧尾中含有重要的控制信息
  • 帧头帧尾的作用之一就是帧定界(变成比特传输后据此区分每个帧的起始和结束)
  • 为了提高帧的传输效率,应当使帧的数据部分长度尽可能大
  • 考虑到差错控制等多种因素,每一种数据链路层协议都规定了帧的数据部分的长度上限,即最大传送单元MTUMaximum Transfer Unit

透明传输是指数据链路层对上层交付的传输数据没有任何限制,就好像数据链路层不存在一样(即保证接收方接到的数据是完整的数据)

面向字节的物理链路使用字节填充(或称字符填充)的方法实现透明传输

帧头帧尾有标志位用来划分一个个帧,如果帧内部恰好也出现了标志位,则在第一次扫描时在标志位前面加一个转义字符帮助区分哪个是真正的帧头。考虑到转义字符也可能在帧内部出现,因此在转义字符前也加转义字符。接收方接到消息后但凡看到转义字符开头就会去掉转义字符并且对其后一个字符不做特殊处理

 面向比特的物理链路使用比特填充的方法实现透明传输

零比特填充:在发送前,对帧的数据部分进行扫描,每5个连续的比特1后就插入1个比特0,防止其与首部尾部的标志位混淆。接收方接收时将每5个连续的比特1后面的0剔除即可

差错检测

实际的通信链路都不是理想的,比特在传输过程中可能会产生差错:1可能变成00可能变成1。这叫比特差错

在一段时间内,传输错误的比特占所传输比特总数的比率称为误码率BER(Big Error Rate)

使用差错检测码(如Mac帧尾的FCS)来检测数据在传输过程中是否产生了比特差错,是数据链路层所要解决的重要问题之一

奇偶校验

在待发送的数据后面添加1位奇偶校验位,使整个数据(包括所添加的校验位在内)中"1"的个数为奇数(奇校验)或为偶数(偶校验) 

比如发送数据001

  • 若是奇校验,则在数据后添加0,使其成为0001,1的个数为奇数。如果传输过程中发生了1位误码,则1的个数会变成偶数,据此判断是否发生误码;但是若发生了2个误码,1的个数依然为奇数,因此检查不出来
  • 若为偶校验,则在数据后添加1,使其成为1001,1的个数为偶数,其他情况与奇校验类似

如果有奇数个位发生误码,则奇偶性发生变化,可以检查出误码
如果有偶数个位发生误码,则奇偶性不发生变化,不能检查出误码(漏检)

循环冗余校验CRC 

收发双方约定好一个生成多项式G(x)

  • 发送方基于待发送的数据和生成多项式计算出差错检测码【冗余码】,将其添加到待传输数据的后面一起传输

  • 接收方通过生成多项式来计算收到的数据是否产生了误码

  • CRC有很好的检错能力(漏检率非常低),虽然计算比较复杂,但非常易于用硬件实现,因此被广泛应用于数据链路层
  • 在计算机网络中通常采用检错重传方式来纠正传输中的差错,或者仅仅是丢弃检测到差错的帧,这取决于数据链路层向其上层提供的是可靠传输服务还是不可靠传输服务

可靠传输

不可靠传输服务:仅仅丢弃有误码的帧,其他什么也不做
可靠传输:想办法实现发送端发送什么,接收端就收到什么 

  • 一般情况下,有线链路的误码率比较低,为了减小开销,并不要求数据链路层向上提供可靠传输服务。即使出现了误码,可靠传输的问题由其上层处理
  • 无线链路易受干扰,误码率比较高,因此要求数据链路层必须向上层提供可靠传输服务
  • 比特差错只是传输差错中的一种,从整个计算机网络体系结构来看,传输差错还包括分组丢失分组失序以及分组重复
  • 分组丢失、分组失序以及分组重复这些传输差错,一般不会出现在数据链路层,而会出现在其上层
  • 可靠传输服务并不仅局限于数据链路层,其他各层均可选择实现可靠传输
  • 可靠传输的实现比较复杂,开销也比较大,是否使用可靠传输取决于应用需求
 ①停止-等待协议SW

接收方收不到数据分组,就不会发送ACK或NAK。如果不采取其他措施,发送方就会一直处于等待接收方ACK或NAK的状态。
为解决该问题
可以在发送方发送完一个数据分组时启动一个超时计时器。若到了超时计时器所设置的重传时间而发送方仍收不到接收方的任何ACK回或NAK,则重传原来的数据分组,这就叫做超时重传。

一般可将重传时间选为略大于“从发送方到接收方的平均往返时间”

为了让接收方能够判断所收到的数据分组是否是重复的,需要给数据分组编号。由于停止-等待协议的停等特性,只需1个比特编号就够了,即编号0和1


为了让发送方能够判断所收到的ACK分组是否是重复的,需要给ACK分组编号,所用比特数量与数据分组编号所用比特数量一样。数据链路层一般不会出现ACK分组迟到的情况,因此在数据链路层实现停止-等待协议可以不用给ACK分组编号

 

②回退N帧协议GBN

相对停止-等待协议多个窗口的概念
接收窗口尺寸只能等于1,因此接收方只能按序接收正确到达的数据分组 

  • 接收端返回ACK n表示发送过来的分组x<=n的都收到了
③选择重传协议SR

与回退N帧相比,接收窗口允许多个,且发送窗口最大情况有所变化

  • 发送窗口接收到ACK帧的部分不会超时重传

1.2PPP协议

数据链路层协议,用于规定帧格式

透明传输 

①字节填充法

面向字节的异步链路采用插入转义字符的字节填充法

  • PPP帧的标志字段取值为7E(16进制),如果数据中出现7E则需要在数据前插入转义字符7D(16进制),并将原来的7E减20(16进制),所以7E在数据中最终会变成7D5E
  • 如果数据中有转义字符7D怎么办呢?可以在转义字符7D前再加一个转义字符7D,并将数据的7D20(16进制),于是转义字符7D在数据中最终会变成7D5D
  • 数据中出现的每一个ASCII码控制字符【数值小于20(16进制)的字符】,则在该字符前插入一个7D,同时将该字符的编码加上20(16进制)
  • 接收方只需要反变换即可恢复出原来的帧的数据部分
 ②比特填充法

面向比特的同步链路采用插入比特0的比特填充法

  • 发送方:对帧的数据部分进行扫描(一般由硬件实现)。只要发现5个连续的比特1,则立即填充1个比特0
  • 接收方:对帧的数据部分进行扫描(一般由硬件实现)。只要发现5个连续的比特1,就把其后的1个比特0删除

 PPP的差错检测

1.3媒体接入层

共享信道要着重考虑的一个问题就是如何协调多个发送和接收站点对一个共享传输媒体的占用,即媒体接入控制MAC(Medium Access Control

复用(Multiplexing)就是通过一条物理线路同时传输多路用户的信号。

当网络中传输媒体的传输容量大于多条单一信道的总通信量时,可利用复用技术在一条物理线路上建立多条通信信道来充分利用传输媒体的带宽

静态划分信道

①频分复用FDM

将传输线路的频带资源划分成多个子频带,形成多个子信道。各子信道之间留出隔离频带,以免造成子信道间干扰。当多个信号输入一个多路复用器时,这个复用器将每一个信号调制到不同频率的载波上,接收端由相应的分用器通过滤波将各路信号分隔开,将合成的复用信号恢复成原始的多路信号

②时分复用TDM

将时间划分为一个个时隙,将带宽资源按照时隙轮流分配给不同的用户,每对用户只在所分配时隙里使用线路传输数据。
时分复用技术将时间划分为一段段等长的时分复用帧,每一个时分复用的用户在每一个时分复用帧中占用固定序号的时隙。每个用户所占的时隙是周期性出现的,其周期就是时分复用帧的长度

③波分复用WDM

波分复用其实就是光的频分复用。经过光调制,分别将光载波变换到不同波长。这些光波经过光复用器就可以在一根光纤中传输。到达终点后用光分用器将不同波长的光进行还原得到信息
光信号传输一段距离后会衰减,对衰减的光信号必须进行放大才能继续传输

 ④码分复用CDM

码分复用CDM(最初用于军事通信)是另一种共享信道的方法。实际上,由于该技术主要用于多址接入,人们更常用的名词是码分多址CDMA

CDM的每一个用户可以在同样的时间使用同样的频带进行通信,由于各用户使用经过特殊挑选的不同码型,因此各用户之间不会造成干扰

CDMA中,每一个比特时间再划分为m个短的间隔,称为码片。通常m的值是64128
使用CDMA的每一个站被指派一个唯一的m bit码片序列

  1. 一个站如果要发送比特1,则发送它自己的m bit码片序列
  2. 一个站如果要发送比特0,则发送它自己的m bit码片序列二进制反码

 

复用与多址的区别

复用是将单一媒体的频带资源划分成很多子信道,这些子信道之间相互独立,互不干扰。从媒体的整体频带资源上看,每个子信道只占用该媒体频带资源的一部分

多址(更确切地应该称为多点接入)处理的是动态分配信道给用户。这在用户仅仅暂时性地占用信道的应用中是必须的,而所有的移动通信系统基本上都属于这种情况。相反,在信道永久地分配给用户的应用中,多址是不需要的(对于无线广播或电视广播站就是这样) 

频分复用FDM和时分复用TDM可用于多点接入,相应名词是频分多址FDMA时分多址TDMA。从某种程度上,FDMA、TDMA、CDMA可以分别看作是FDM、TDM、CDM的应用 

动态接入控制

随机接入

多个主机连接到一根总线上,当信息同一时间传送相遇时就会发生碰撞。
如何协调各主机的工作,使信息避免碰撞是很重要的

载波监听多址接入/碰撞检测(CSMA/CD)【不用于无线网络】

96比特时间是指发送96比特所需要的时间,也称为帧间最小间隔。其作用是是接收方可以检测出一个帧的结束,同时也使得其他站点都能有机会平等竞争信道并发送帧

 

退避算法

当帧发送碰撞后会停止发送,隔一段时间后再次发送,而具体隔多少时间再发送需要根据退避算法得出 

极限信道利用率

载波监听多点接入/碰撞避免(CSMA/CA)【用于无线网络】

802.11无线局域网使用CSMA/CA协议,在CSMA的基础上增加了一个碰撞避免CA功能,而不再实现碰撞检测功能

由于不可能避免所有的碰撞,并且无线信道误码率较高802.11标准还使用了数据链路层确认机制(停止-等待协议)来保证数据被正确接收

  • 在无线局域网中,仍然可以使用载波监听多址接入CSMA,即在发送帧之前先对传输媒体进行载波监听。若发现有其他站在发送帧,就推迟发送以避免碰撞

  • 在无线局域网中,不能使用碰撞检测CD,原因如下:

    • 由于无线信道的传输条件特殊,其信号强度的动态范围非常大,无线网卡上接收到的信号强度往往会远远小于发送信号的强度(可能差百万倍)。如果要在无线网卡上实现碰撞检测CD,对硬件的要求特别高。

    • 即使能够在硬件上实现无线局域网的碰撞检测功能,但由于无线电波传播的特殊性(存在隐蔽站的问题),进行碰撞检测的意义也不大(如下)。而有线网络中信号会随着总线到达各个地方,不会出现隐蔽站

1.4MAC地址、IP地址和ARP协议​​​​​​​

MAC地址

MAC地址是以太网的MAC子层所使用的的地址

  • 只有一条路径的信道不需要地址,因为没得选
  • 当多个主机连接在同一个广播信道上,要想实现两个主机之间的通信,则每个主机都必须有一个唯一的标识,即一个数据链路层地址
  • 在每个主机发送的帧中必须携带标识发送主机和接收主机的地址。由于这类地址是用于媒体接入控制MAC(Media Access Control),因此这类地址被称为MAC地址
  • MAC地址一般被固化在网卡(网络适配器)的电可擦可编程只读存储器EEPROM中,因此MAC地址也被称为硬件地址
  • MAC地址有时也被称为物理地址。但是MAC地址不属于物理层而是属于数据链路层
  • MAC地址是对网络上各接口的唯一标识,而不是对网络上各设备的唯一标识

 

单播地址、广播地址与多播地址​​​​​​​

  • 单播MAC地址即明确的目的MAC地址。将此地址填入帧的目的地址栏中,接收到该帧的主机将此地址与自身MAC地址进行匹配,若相同则接收,不同则丢弃
  • 广播MAC地址为FF-FF-FF-FF-FF-FF,将此地址填入帧的目的地址栏中,接收到该帧的主机检索该地址发现是广播地址,因此接收该帧
  • MAC地址中第一字节后4比特为(1,3,5,7,9,B,D,F)时,MAC地址是多播地址。将此地址填入帧的目的地址栏中,接收到该帧的主机将此多播地址与自己多播组列表中的地址进行逐一配对,如果有匹配的项,则接收,否则丢弃

IP地址

IP地址是TCP/IP体系结构的网际层所使用的的地址

IP地址是Internet上的主机和路由器所使用的的地址,由两部分信息构成

  • 网络编号:标识因特网上数以百万计的网络
  • 主机编号:标识同一网络上不同主机(或路由器各接口)

MAC地址不具备区分不同网络的功能,而IP地址可以通过网络号做到

如果只是一个单独网络,不接入因特网,则使用MAC地址就足够了(这不是一般用户的应用方式)
如果主机所在的网络要接入因特网,则IP地址和MAC地址都需要使用​​​​​​​

  • 数据报转发过程中源IP地址和目的IP地址保持不变
  • 数据包转发过程中源MAC地址和目的MAC地址(由ARP协议获得)逐个链路改变
  • 路由器上有路由表,记录了要到目的IP地址,先要走哪些路(即下一跳位置)。所以H1起初只带有目的IP地址,查询路由表后路由器指路,从而知道下一步该往哪里走,从而不断转发直至到达目的地。

ARP协议

地址解析协议ARP属于TCP/IP体系结构的网际层,其作用是已知设备所分配到的IP地址,使用ARP协议可以通过该IP地址获取到设备的MAC地址

  • 数据的发送需要经过链路,仅仅知道IP地址是无法在数据链路层实现传输的,因此我们需要得到IP地址与MAC地址的对应关系,即地址解析。
  • 每台主机都会有一个ARP高速缓存表,记录有IP地址与MAC地址的对应关系
  • 初始ARP高速缓存表为空,假设此时B知道CIP地址,准备发送信息,但是由于不知道CMAC地址,因此无法封装数据帧,所以此时会广播一个ARP请求报文(封装在MAC帧中,目的地址为广播地址FF-FF-FF-FF-FF-FF),内容如下:
  • ARP高速缓存条目有静态与动态两种类型
    • 动态代表是通过广播自动获取的条目,生命周期默认为两分钟
    • 静态是手工设置的条目,不同操作系统下的生命周期不同。
  • ARP协议只能在一段链路或一个网络上使用

1.5 集线器与交换机

集线器

集线器HUB的主要功能是对接收到的信号进行再生整形放大,以扩大网络的传输距离,同时把所有节点集中在以它为中心的节点上。

  • 使用集线器的以太网在逻辑上仍是一个总线网,各站共享总线资源,使用的还是CSMA/CD协议
  • 集线器只工作在物理层,它的每个接口仅简单地转发比特,不进行碰撞检测(由各站网卡检测)
  • 集线器一般都有少量的容错能力和网络管理功能。例如,若网络中某个网卡出了故障,不停地发送帧。此时,集线器可以检测到这个问题,在内部断开与出故障网卡的连线,使整个以太网仍然能正常工作
  • 集线器是半双工模式,收发不能同时进行,收到帧后会广播到除本身接口外的各个接口
 交换机

交换机是一种负责转发信号的网络设备,可以为接入交换机的任意两个网络节点提供独享的电信号通路

  • 以太网交换机通常由多个接口,每个接口都可以直接与一台主机或另一个以太网交换机相连。一般都工作在全双工方式

  • 以太网交换机具有并行性,能同时连通多对接口,使多对主机能同时通信,无碰撞(不使用CSMA/CD协议)

  • 以太网交换机一般都具有多种速率的接口

  • 以太网交换机工作在数据链路层(也包括物理层),它收到帧后,在帧交换表中查找帧的目的MAC地址所对应的接口号,然后通过该接口转发帧

  • 以太网交换机是一种即插即用的设备,其内部的帧交换表是通过自学习算法自动地逐渐建立起来的

  • 帧的两种转发方式

    • 存储转发
    • 直通交换:采用基于硬件的交叉矩阵(交换时延非常小,但不检查是否有差错)

MAC地址表中的每条记录都有自己的有效时间,到期自动删除。这是因为MAC地址与交换机接口的对应关系并不是永久性的

STP生成树协议

STP可以在增加冗余链路来提高网络可靠性的同时又避免网络环路带来的各种问题 

生成树原理

  • 不论交换机之间采用怎样的物理连接,交换机都能够自动计算并构建一个逻辑上没有环路的网络,其逻辑拓扑结构必须是树型的(无逻辑环路)​​​​​​​
  • 最终生成树的逻辑拓扑要确保连通整个网络
  • 当首次连接交换机或网络物理拓扑发生变化时(有可能是人为改变或故障),交换机都将进行生成树重新计算

 

VLAN虚拟局域网

一种将局域网内的设备划分成与物理位置无关的逻辑组的技术,这些逻辑组具有某些共同的需求,每个VLAN就是一个独立的广播域 

随着交换式以太网规模的扩大,广播域相应扩大,而巨大的广播域会带来很多弊端​​​​​​​

  1. 广播风暴

    如数台交换机连接了数台主机,当主机A要向主机B发送数据帧,此时各交换机的MAC表均为空,因此帧每到一个交换机就会进行泛洪,由于网络巨大,因此泛洪的范围也巨大

  2. 难以管理和维护

  3. 潜在的安全风险​​​​​​​

交换机端口类型

缺省VLAN ID

华为交换机上叫PVID每个端口有且只有一个PVID。默认情况下端口的PVID都为1(即端口属于VLAN 1

端口上接收时总希望能够打上标签,发送出去时候总希望能去除标签

①Access端口

Access端口一般用于终端设备与交换机之间

​​​​​​​注意:交换机与路由器连接的接口也需要使用access接口。这是因为路由器中的消息也不带VLAN标签,就像终端一样,保证路由器的数据能够进入交换机领域,数据由路由器进入交换机是会被打上默认标签,接着猜按照交换机间VLAN的规则行走。简单理解就是把路由器当作终端 

  • 交换机初始端口类型是Access

  • Access端口只能属于一个VLAN

  • Access端口的PVID值与端口所属VLAN的ID相同(默认为1)

②Trunk端口

  • Trunk端口一般用于交换机之间或交换机与路由器之间的互连
  • Trunk端口可以属于多个VLAN
  • 用户可以设置Trunk端口的PVID值,默认情况下,Trunk端口PVID值为1

③Hybrid端口

  • Hybrid端口既可以用于交换机之间或交换机与路由器之间的互连(同Trunk端口),也可用于交换机与用户计算机之间的互连(同Access端口)
  • Hybrid端口可以属于多个VLAN(同Trunk端口)
  • 用户可以设置Hybrid端口的PVID值。默认情况下,Hybrid端口的PVID值为1

​​​​​​​

 

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

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

相关文章

nc命令记录

nc是什么 image-20231122074312187 nc是netcat的简写&#xff0c;是一个功能强大的网络工具&#xff0c;有着网络界的瑞士军刀美誉。nc命令在linux系统中实际命令是ncat&#xff0c;nc是软连接到ncat。 目录 nc是什么目录常用命令1、网络连通性测试和端口扫描 tcp测试udp测试…

【开源】基于Vue和SpringBoot的大学生相亲网站

项目编号&#xff1a; S 048 &#xff0c;文末获取源码。 \color{red}{项目编号&#xff1a;S048&#xff0c;文末获取源码。} 项目编号&#xff1a;S048&#xff0c;文末获取源码。 目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块三、系统展示四、核心代码4.1 查询会员4…

Maven镜像仓库问题

1.pom文件远程仓库地址 <!--使用aliyun的Maven镜像源提升下载速度--><repositories><repository><id>aliyunmaven</id><name>aliyun</name><url>https://maven.aliyun.com/repository/public</url></repository>&…

免费多域名SSL证书

顾名思义&#xff0c;免费多域名SSL证书就是一种能够为多个域名或子域提供HTTPS安全保护的证书。这意味着&#xff0c;如果您有三个域名——例如example.com、example.cn和company.com&#xff0c;您可以使用一个免费的多域名SSL证书为所有这些域名提供安全保障&#xff0c;而无…

聚观早报 |快手Q3营收;拼多多杀入大模型;Redmi K70E开启预约

【聚观365】11月23日消息 快手Q3营收 拼多多杀入大模型 Redmi K70E开启预约 华为nova 12系列或下周发布 亚马逊启动“AI就绪”新计划 快手Q3营收 财报显示&#xff0c;快手第三季度营收279亿元&#xff0c;同比增长20.8%&#xff1b;期内盈利21.8亿元&#xff0c;去年同期…

【C++高阶(四)】红黑树深度剖析--手撕红黑树!

&#x1f493;博主CSDN主页:杭电码农-NEO&#x1f493;   ⏩专栏分类:C从入门到精通⏪   &#x1f69a;代码仓库:NEO的学习日记&#x1f69a;   &#x1f339;关注我&#x1faf5;带你学习C   &#x1f51d;&#x1f51d; 红黑树 1. 前言2. 红黑树的概念以及性质3. 红黑…

Doris-集群部署(四)

创建目录并拷贝编译后的文件 1&#xff09;创建目录并拷贝编译后的文件 mkdir /opt/module/apache-doris-0.15.0 cp -r /opt/software/apache-doris-0.15.0-incubating-src/output /opt/module/apache-doris-0.15.02&#xff09;修改可打开文件数&#xff08;每个节点&#x…

消息中间件——RabbitMQ(四)命令行与管控台的基本操作!

前言 在前面的文章中我们介绍过RabbitMQ的搭建&#xff1a;RabbitMQ的安装过以及各大主流消息中间件的对比&#xff1a;&#xff0c;本章就主要来介绍下我们之前安装的管控台是如何使用以及如何通过命令行进行操作。 1. 命令行操作 1.1 基础服务的命令操作 rabbitmqctl sto…

电商API接口|电商数据接入|拼多多平台根据商品ID查商品详情SKU和商品价格参数

随着科技的不断进步&#xff0c;API开发领域也逐渐呈现出蓬勃发展的势头。今天我将向大家介绍API接口&#xff0c;电商API接口具备独特的特点&#xff0c;使得数据获取变得更加高效便捷。 快速获取API数据——优化数据访问速度 传统的数据获取方式可能需要经过多个中介环节&…

每日一题 2304. 网格中的最小路径代价(中等,动态规划)

由于他每一行的每一个值都可以到下一行的所有节点&#xff0c;且路径的代价没有什么相关性&#xff0c;所以只能用 O(mn2) 的动态规划求解 class Solution:def minPathCost(self, grid: List[List[int]], moveCost: List[List[int]]) -> int:m, n len(grid), len(grid[0])…

软件测试工具常用的都有哪些

软件测试工具是用于辅助软件测试的软件工具&#xff0c;可以帮助测试人员执行测试用例、记录测试结果、跟踪缺陷状态等&#xff0c;提高测试效率和质量。以下是一些常见的软件测试工具&#xff1a; 一、AutoRunner自动化测试工具 AutoRunner(简称AR&#xff09;是国内自主研发…

如何延长你的时间价值?

点击下方“JavaEdge”&#xff0c;选择“设为星标” 第一时间关注技术干货&#xff01; 免责声明~ 任何文章不要过度深思&#xff01; 万事万物都经不起审视&#xff0c;因为世上没有同样的成长环境&#xff0c;也没有同样的认知水平&#xff0c;更「没有适用于所有人的解决方案…