计算机网络第三章--数据链路层

本文阅读 50 分钟

在正式学习数据链路层之前,我们先来把一些概念搞清楚

1.数据链路层概述

数据链路层使用的信道主要有下面的两种类型:

  • 点对点信道:使用一对一的点对点的通信方式
  • 广播信道:使用一对多的广播通信方式,广播通信信道上连接的主机很多,所以必须用专用的共享信道协议来协调这些主机的数据发送。

两台主机通信过程如图: img

在层次上的流动是 img

我们学习链路层的时候,可以想象数据是在数据链路层从左到右水平传送 img

接下来说一下链路和数据链路的概念

  • 链路:从一个结点到相邻结点的一段物理链路,中间没有其他交换结点
  • 数据链路:把实现通信协议的硬件和软件加到离那里,构成数据链路

数据链路层有三个基本问题:封装成帧,透明传输,差错检测

2.封装成帧

帧:数据链路层上传送的数据包,数据链路层以帧为单位传输和处理数据 封装成帧是指在一段数据的前后分别添加添加帧头和帧尾使之成为帧。

帧头和帧尾包含重要的控制信息,接收端在收到物理层上交的比特流后,就可以根据首部和尾部的标记,从收到的比特流中识别帧的开始和结束 img 封装成帧以后还要通过物理层把构成帧的各比特转换成电信号发送到传输媒体,那么接收方的数据链路层是怎么从数据链路层交付的比特流中提取出一个个的帧? <font size="4" color="bigred"> 这就不得不提帧定界的概念了</font>

<font size="4" color="bigred">帧定界用来表识帧的开始和结束,目的是为了让接收方能够从接收到的二进制比特流中区分出帧的开始和结束
在这里插入图片描述
SOH表示帧的首部开始,EOT表示帧的结束
<font size="4" color="red">注意:SOH和EOT是控制字符的名称。它们的十六进制编码分别是01和04.SOH不是由S,O,H这三个字符构成
在这里插入图片描述
<font size="4" color="bigred">当数据在传输的过程中如果出现了差错,那么帧定界符的作用就显示出来了。假设未发送完一个帧而发生故障,接收端就知道收到的数据是不完整的帧(只有首部),必须丢弃。
在这里插入图片描述
我们可以看到,如果数据部分某个字节的二进制编码恰好和SOH或EOT这种控制字符一样,数据链路层会错误的找到帧定界,把部分帧收下(误认为是完整的帧),就会把剩下的数据丢弃(这部分帧找不到帧定界字符SOH)</font></font></font>

顺便提一下,帧头和帧尾也可以起到帧定界的作用 为了提高帧的传输效率,应当使得帧的数据部分长度尽可能大一些,因为帧的数据部分才是真正要传输的数据,帧头和帧为是为了实现数据链路层功能而额外添加的 考虑到差错控制等多种银蛇,每一种数据链路层协议都规定了帧的数据部分的长度上限,即最大传送单元MTU

3. 透明传输

<font size="4">透明传输是指<font color="red">数据链路层对上层交付的传输数据没有任何限制</font>,就好像数据链路层不存在一样。</font>

<font color="red" size="4">传输的数据的任何8比特的组合一定不允许和用作帧定界的控制字符的比特编码一样,不然会出现帧定界错误</font>

<font size="4"> 为了解决透明传输的问题,我们有下面的方法</font>

<font size="4" color="bigred">在发送帧之前,对帧的数据部分进行扫描 ,每出现一个帧定界符,就在它的前面插入一个转义字符ESC(其十六进制是1B),当接收方数据链路层在物理层交付的比特流中提取帧,遇到第一个帧定界符认为是帧的开始,遇到转义字符的时候就知道后面的是数据而不是帧定界符。<font color="red">这种方法叫字符填充或字节填充
在这里插入图片描述</font></font>

<font size="4" color="red">总结:
面向字节的物理链路使用字节填充实现透明传输
面向比特的物理链路使用比特填充实现透明传输
(发送前采用零比特填充法,对数据部分进行倒霉,每5个连续的1后面插入比特0,这样来确保帧定界在整个帧中的唯一性)</font>

4.差错检测

  • 比特在传输过程中可能产生差错,1变成0,0也可能变成1,这就是比特差错
  • 一段时间里面,传输错误的比特占所传输的比特总数的比例称为误码率BER(Bit Error Rate)
  • 使用差错检测码来检测数据在传输过程中是否产生了比特差错,是数据链路层要解决的重要问题之一 接下来介绍几个校验检错方法
  • 奇偶校验

img

总结:
<font size="4" color="red">如果有奇数个位发生误码,则奇偶性变化,可以检测出误码
如果偶数个位发生误码,则奇偶性不变,不能检查出误码
接下来介绍循环冗余校验CRC</font>

  • 循环冗余校验CRC
    - 收发双方约定好一个生成多项式G(X) - 发送方基于待发送的数据和生成多项式计算出差错检测码(冗余码),将其添加到待传输数据的后面 - 接收方根据生成多项式来计算收到的数据是否产生误码

这里是引用
在这里插入图片描述
<font size=4 color=red">检错码只能检测出帧在传输过程出现差错,但是不能定位错误,所以无法纠正错误 检错码也叫FCS

5.可靠传输

img

  • 一般情况,有线链路的误码率比较低,为了减小开销,不要求数据链路层向上提供可靠传输服务,即使出现误码,可靠传输的问题由其上层出理
  • 无线链路容易收到干扰,误码率高,因此要求数据链路层必须向上提供可靠传输服务

比特差错只是传输差错的一种 传输差错还包括:帧丢失,帧失序,帧重复 假设发送方连续发送三个帧:[#1]-[#2]-[#3]

  • 帧丢失: 收到[#1]-[#3] 丢失[#2]
  • 帧失序:收到[#1]-[#3]-[#2] (后发送的帧先到底接收端,和一般数据链路层不同)
  • 帧重复:收到[#1]-[#2]-[#2]-[#3] img

1.停止等待协议

img

收发双方基于互连网进行通信,而不是局限在一条点对点的数据链路 纵坐标位是时间 发送方给接收方发生数据分组,接收方对数据进行差错检测,如果没有误码,则接收该数据分组,并且给发送方发送确认分组,简称为ACK 发送方收到对发送数据分组的确认分组后,才能发送下一个数据分组,假设这个分组在发送中出现了误码,接收方进行差错检测,发现了误码,就会丢弃该分组,并且给发送方发送否认分组,简称NAK。发送发接收到对所发送数据分组的否认分组以后,就知道了自己之前发送的数据分组出现了差错而被接收方拒绝,于是立刻重传该数据分组,因此发送方每发送完一个分组后,并不能立刻把该数据分组从缓存中删除,也就是所谓的可靠传输

实际情况更加复杂 img

发送方给接收方发送数据分组,但是这个数据分组在传输过程中丢失了 img 但是还有可能出现一种情况,那就是接收方发送的确认或否认分组也可能丢失,这就导致发送方没有接收到,它就会超时重传。接收方怎么判断这个数据分组是一个重复的分组呢

img img

既然发送方进行编号,那么接收方是否也要进行数据分组编号 来看看下面的情况 发送方发送0号数据分组,接收方正确接收以后给发送方发送确认分组,但是由于一些原理,导致发送迟到,这就会导致发送方对0号数据分组的超时重传。在重传的0号数据分组过程中,发送方接收到了迟到的确认分组,于是发送1号数据分组,接收方接收到重传的0号数据分组后,发现这是一个重复的数据分组,于是将其丢弃。然后针对该数据分组给发送方发送确认分组,以免发送方再次超时重传该数据分组。 我们可以看到我们这里对0号数据分组进行了重复确认,发送方怎么知道是重复分组,而不是对1号数据分组的确认呢?这就可以对接收方的分组进行编号,这样就可以避免这种误判 img img 停止–等待协议的信道利用率 发送方发送数据分组后就停止了,等待接收方发送确认分组才进行下一次发送 img

发送方发送数据分组所耗费的发送时延:TD 收发双方往返时间RTT 接收方确认分组所耗费的发送时延TA 途图中忽略了接收方对数据处理的处理时延 以及发送方对确认分组的处理时延 TA一般远小于TD,当RTT远大于TD时,信道利用率非常低 为了克服信道利用率很低的确定,就产生另外两种协议,回退N帧协议GBN和选择重传协议SR img

停止-等待协议的信道利用率很低,如果出现超时重传,则信道利用率更低。 如果说发送方在接收到接收方的确认分组之前,可以连续发送多个数据分组,则可以大大提高信道利用率。–流水线发送分组,采用流水线传输可以提高信道利用率 img

2. 回退N帧协议GBN

这个协议在流水线传输的基础上,利用发送窗口来限制发送方可以连续发送数据分组的个数 img

发送方要维持一个发送窗口,序号落在发送窗口内的数据分组可以被连续发送,而不需要等收到接收方的相应确认以后再发送

如果WT=1,则是停止-等待协议 如果WT超过上限,则会出现严重的错误

没有差错的时候,接收方按序接收,每接收一个,接收窗口就滑动一个位置,并且给发送方发送针对所接收分组的确认分组。发送方接收到以后,每接收到一个信息,发送窗口就向前滑动一个位置,发送方就可以把收到确认的数据分组从缓存中删除,接收方则可以把已经结束的数据分组交给上层处理

累积确认 当接收方接收到0号和1号数据分组后,给发送方发送一个累积确认ACK1,当接收到2号到4号分组后,发送累积确认ACK4,这样子即使ACK1在传输过程中丢失了,而ACK4正确到达,发送方接收到了以后,就会知道序号为4以及之前的数据分组已经被接收方正确接收了。于是把发送窗口往前滑动5给位置,这样就有新的序号落到发送窗口,发送到就可以把收到确认的数据分组从缓存中删除了 接下来看看有差错的情况

发送方发送的数据在传输过程出现乱码,接收方检测出来就会把这个数据分组丢弃,但是后续到达的数据分组的序号和接收窗口的序号不匹配,接收方也不能接收它们,将它们丢弃,并且对之前按序接收的最后一个数据分组进行确认,也就是发送ACK4,每丢弃一个数据分组,就发送一个ACK4 img img

当这4给ACK4经过互连网的传输到达了接收方,因为发送方之前就接受过ACK4 <font size="4" color="red">当发送方接收到重复的确认,就知道之前发送的数据分组出现了差错,于是就可以不等超时计时器超时就立刻重传!至于收到几个重复确认就立刻重传,要由具体实现决定 在这里插入图片描述 我们由此可以看成,当通信线路质量不好的时候,回退N帧协议的信道利用率并不比停止-等待协议高</font>

接下来我们来看看当WT超过取值范围的时候,会出现什么情况。 我们假设WT=8,当发送方把序号0到7的数据分组发送给接收方,接收方按序按序接收后,给发送方发回累积确认ACK7,如果ACK7在传输过程丢失,这导致发送方的超时重传,重传的0到7号数据分组到达接收方后,接收方根据当前接收窗口的序号对这八个分组按序接收,但是接收方之前已经接收过着这8个数据分组了,现在是重复建设,接收方无法辨析新、旧分组,这样就会导致分组重复这种传输差错,所以不能超过上限。 img

3. 选择重传协议SR

img

注意:选择重传协议为了使发送方仅仅重传出现差错的分组,接收方不能再采用累计确认,而需要对每一个正确接收到的数据分组进行逐一确认。 img img

发送方把序号落在发送窗口内的这四个数据分组依次连续发送出去,到达接收方的过程,2号分组丢失了,只要序号落入接收窗口内并且无误码的数据分组,接收方都会接收,接收方接收0号和1号分组,并且发送0号和1号确认分组。接收窗口详情滑动两个位置 img

这样就有4和5两个序号落入新的窗口。 img 接收方接收3号数据分组,并且发送3号确认分组,但是接收窗口不能向前滑动,因 为3号数据分组是没有按序到达的数据分组。 这些确认分组发送到发送方后,发送方每接收一个确认分组,发送窗口就向前移动一个位置 发送方接收0号和1号两个确认数据分组,发送窗口向前滑动两个位置,这样就有4号和5号两个发送窗口,发送方把序号落入发送窗口的4号和5号数据分组发送出去,这样发送方就可以把已经收到确认的0号和1号数据分组从发送缓存中删除,发送方接收3号数据确认分组,但是发送窗口不能向前移动,因为这是一个没有按序到达的确认分组,发送方还每接收到它之前的2号确认分组,不过需要记录3号确认分组,这样这一个数据分组就不会超时重发 img 当2号数据分组从发送方重传后,接收方接收后,接收窗口就可以往后移动,接收方把4号数据确认分组发送给发送方,发送方接收到以后,发送窗口也可以进行移动

img 如果发送窗口和接收窗口的尺寸超过了取值范围,就会导致接收方无法分辨新、旧分组,进而出现分组重复这种传输差错。

img

1.PPP协议的特点

  • 点对点协议PPP是目前使用最广泛的点对点数据链路层协议
  • PPP协议是IETF在1992年制定的
  • 现在的PPP协议在1994年就已经成为互连网的正式标准

用户一般是通过连接到某个ISP才可以接入互连网,PPP协议就是用户计算机和ISP进行通信使用的数据链路层协议 img

1.1PPP协议应该满足的需求

  • 简单
    - 数据链路层的帧,不需要纠错,不需要序号,也不需要流量控制。IETF把简单作为首要的需求
  • 封装成帧
    - PPP协议规定特殊的字符作为帧定界符,以便接收端从接收到的比特流中准确找出帧的开始和结束位置
  • 透明性
    - PPP协议必须保证数据传输的透明性 - 数据中碰巧出现和帧定界符一样的比特组合时,要采取有效措施来解决这个问题
  • 多种网络层协议
    - PPP协议必须能在同一条物理链路上同时支持多种网络层协议的运行
  • 多种类型链路
    - PPP协议要能在多种类型的链路运行 - 例如串行,并行,同步,异步,低速,高速的链路等
  • 差错检测
    - 对接受到的帧进行简称,并且立即丢弃有差错的帧
  • 检测连接状态
    - 有一种能即使自动检测链路是否处于正常状态的机制
  • 最大传送单元
    - 如果高层协议发送的分组的长度超过MTU的数值,PP就要丢弃这样的帧,并返回差错 - MTU是数据链路层的帧可以载荷的数据部分的最大长度,而不是帧的总长度
  • 网络层地址协商
    - PPP协议必须提供一种机制来使得通信的两个网络层的实体能够通过协商制度或能够配置彼此的网络层地址 - 因为仅仅在数据链路层建立了连接而不知道对方的网络层协议,还不能够保证网络层可以传送分组
  • 数据压缩协商

1.2PPP协议的组成

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

2.PPP协议的帧格式

2.1各字段的意义

img

img

帧检验序列(FCS)字段:CRC计算出的校验位,用来检测帧是否出现误码 img

2.2字节填充

当PPP使用异步传输,它把转义字符0x7D(即01111101),并使用字节填充 FC1662规定了下面的填充方法 img

2.3零比特填充

若使用同步传输,使用零比特填充来实现透明传输 img 接下来我们来看看PPP协议如何进行差错检测 img

3.PPP协议的工作状态

img

1媒体接入控制的基本概念

img

2随机接入–CSMA/CD协议

1.概念

img 总线的特点:一台主机发送数据,其他主机都可以接收到 为了实现一对一通信,我们可以在发送数据帧的时候,在帧的首部写明接收站的地址 为了通信方便,以太网采取下面的两种措施

<font size="4"> ① 采用<font color="red">无连接的工作方式</font>也就是说不必建立连接就可以直接发送数据。适配器对发送的数据帧不进行<font color="red">编号给,也不要求对方发回确认。</font>使得以太网很简单。</font>

<font size="4" color="red">以太网提供的服务是尽最大努力的交付,即不可靠传输(仅仅丢弃有误码的帧).</font>

<font size="4" color="red">有差错的帧是否需要重传由高层决定。</font>比如高层使用TCP协议协议,那么TCP就会发现丢失一些数据。经过一定时间以后,就会把这些数据重新传递给以太网进行重传。 <font size="4" color="red">但是以太网不知道这是重传帧,而是当作新的数据帧来发送</font>

<font size="4" color="red">同一时间内只能允许一台计算机发送数据。</font>
<font size="4">就好比几个人在开会,我们要等别人发言完毕以后,其他人才能发言,但是可能出现两个人碰巧同时发言的情况,那么一旦出现冲突,大家就必须立即停止发言,等听到没有人发言再发言。</font>

<font size="4">以太网使用的调节方法类似于上面说的,它使用的协议是CSMA/CD,意思是 <font size="4" color="red">载波监听多点接入/碰撞检测</font></font>

<font size="4">②以太网发送的数据采用 <font size="4" color="red">曼彻斯特编码的信号</font></font>

接下来介绍一下CSMA/CD协议的几个概念

  • 多点接入:
    - 说明这是总线型网络 - 多个计算机连接在一条总线上,竞争使用总线 - 协议的实质是 载波监听和碰撞检测
  • 载波监听:
    - 也就是边发送边监听 - 在发送数据前或者在发送数据中,每个站必须不停地检测信道,检测总线上是否由其他站点发送帧 - 如果检测到总线空闲96比特时间,就发送这个帧 - 如果总线忙,就继续检测,并等待总线转为空闲96比特时间,然后发送这个帧 - 96比特时间是指发生96比特所耗费的时间,也称为帧间最小间隔,它的作用是使得接收方可以检测出一个帧的结束,同时也使得其他站点都能有机会平等竞争信道并发送帧
  • 碰撞检测:
    - 每一个正在发送帧的站边发送边检测碰撞 - 一旦发现总线上出现碰撞,就立即停止发送,退避一段随机时间后再发送

其实,我们可能会有这样的疑惑。每一个站在发送数据前已经监听到信道是空闲的,那为什么还会出现数据在总线碰撞?

这是因为电磁波在总线上总是以有线的速率传播而且生活中,当开会的时候,可能目前没人发言,当没人发言的时候,可能同时有几个人抢着发言而发生冲突。

2.争用期(碰撞窗口)

img 使用CSMA/CD协议的时候,一个站不可能同时进行发送和接收,但是必须边发送边监听信道。所以使用CSMA/CD协议的以太网只能进行双向交替通信,即一方发送,一方接收 电磁波在1km电缆的传播时延约为5微秒。 所以如果A向B发送数据,在5微秒后才能到达B,如果B在A发送的数据到达之前发送自己的帧,这个时候B的载波监听检测不到A发送的信息,那么就会在某个时间和A发送的帧碰撞。img 每一个站在自己发送数据后的一小段时间内,存在遇到碰撞的可能,这段时间是不确定的,取决于两站的距离。 以太网不能保证在检测到信道空闲的某一时间内,一定能把数据发送出去,以太网的这个特定称为发送的不确定性

3.截断二进制指数退避法

以太网使用截断二进制指数退避算法来确定碰撞后重传的时机 发送碰撞的站在停止发送数据后,不是等待信道变为空闲就立刻发送数据,而是退避一个随机时间。 img 争用期时间是51.2微秒,对10Mbit/s的以太网来说,在争用期内可以发送512比特,即64字节。也可以说争用期是512比特时间,为了方便,可以直接用比特作为争用期的单位争用期是512比特,即争用期是发送512比特所需要的时间

4.最小帧长

如果一个站发送很短的帧,那么发送完毕前没有检测出碰撞,但是这个帧继续传播到目的站前会发生碰撞,但是发生站不知道这个帧发生了碰撞。为了避免这个情况,以太网规定最小帧长64字节。 img

5.最大帧长

假如A给D发送一个很长的帧,这就导致主机A长时间占用总线,其他主机一直拿不到总线的使用权,而且因为帧很长,还可能导致主机D的接收缓冲区无法装下该帧而产生溢出,所以应该要有最大帧长 img

6.强化碰撞

发生数据的站发现发生碰撞时,除了立即停止发送数据,还要再发送32比特或48比特的任务干扰信号,以便所有用户知道现在发送了碰撞 img A从发送数据到发现冲突并停止发送需要时间间隔TB,A知道碰撞已经发送时所发送的强化碰撞的干扰信号的持续时间是TJ,发生碰撞使得A浪费时间TB+TJ,不过整个信道被占用的时间还要增加一个单程端到端传播时延┏,总线被占用的时间是TB+TJ+┏

7.信道利用率

img

总线上某个主机可能发生多次碰撞,进行多次退避以后,成功发送一个帧,帧的发送时延记为T0

8.帧发送流程和接收流程

img img

CSMA/CD协议不适用于无线网络。对于无线网络,可以使用CSMA/CA协议

刚刚介绍了总线型局域网使用的媒体接入控制协议CSMA/CD,现在我们来介绍一下,无限局域网使用的媒体接入协议CSMA/CA协议

3随机接入–CSMA/CA协议

img 上面图中,A,C无法检测到碰撞,这种没有能检测出信道上其他站点信号的问题叫做隐蔽站问题。 而同样使用广播信道有线局域网则不存在这样的问题。 例如,总线上某一个主机发送的信号,最多经过一个总线端到端传播时延,就会被总线上的各主机接收到,而总线上产生的碰撞信号,最多经过一个总线端到端往返传播时延,也会传播总线。 所以,802.11无线局域网使用CSMA/CA协议,在CSMA的基础上增加一个碰撞避免CA功能,而不再实现CD,(也就是碰撞检测功能) img img

1. CSMA/CA协议的工作原理

假设无线信道是空闲的,源站有帧要发送,当源站检测到信道空闲,则在等待帧间间隔DIFS后发送数据帧,目的站如果正确接收这个数据帧,那么经过帧间间隔SIFS后,向源站发送确认帧ACK。如果源站在规定时间里面没有接收到确认的ACK,由重传计时器控制这段时间,则必须重传该数据帧,直到收到为止或者经过若干次重传失败后停止 img

<font size="4">这里其实有一个疑惑,为什么<font size="4" color="red">源站在检测到信道空闲后还要再等待一段时间DIFS
<font size="4" color="rerrrrrgtthfsfafvtfgggggggggghhsdgsgsdgvffbdwsgafrehgtrewwwwwed"> 原因是,考虑到可能会由其他的站有高优先级的帧要发送。如果有,就要让高优先级帧先发送
<font size="4" color="red">'那么目的站为什么正确接收到数据帧还要等待一段时间SIFS才能发送ACK帧
<font size="4" color="rerrrrrgtthfsfafvtfgggggggggghhsdgsgsdgvffbdwsgafrehgtrewwwwwed"> SIFS是最短的帧间间隔,用来分隔开属于一次对话的各帧。在这段时间里面,一个站点应当能够从发送方式切换到接收方式</font></font></font></font></font>

<font size="4">接下来我们来看下面的图
在这里插入图片描述
在源站和目的站的一次会话中,无线信道处于忙状态,这个时候,如果其他无线站点要发送数据,就必须退避。当信道处于空闲状态,并经过帧间间隔DIFS后,其他要发送数据的站点,需要退避一段随机时间后才能发送
<font size="4" color="red">信道由忙转化为空闲并且经过DIFS时间后,为什么还要退避一段随机事件才能使用信道呢?
<font size="4" color="rerrrrrgtthfsfafvtfgggggggggghhsdgsgsdgvffbdwsgafrehgtrewwwwwed">这是为了避免一个站点长时间占用信道</font></font></font>

2. CSMA/CA协议的退避算法

  • 在执行退避算法的时候,站点为退避计时器设置一个随机的退避时间
    - 当退避计时器的时间减小到0时,就开始发送数据 - 当退避计时器的时间还没有减小到0而信道又变为忙状态,这个时候就冻结退避计时器的数值,重新等待信道变为空闲,再经过时间DIFS后,继续启动退避计时器。
  • 在进行第i次退避时,退避时间在时隙编号{0,1,…2^(2+i)-1}中随机选择一个,然后乘以基本退避时间(也就是一个时隙的长度)就可以得到随机的退避时间。这样做是为了使得=不同站点选择相同退避时间的概率减少。当时隙编号达到255时(对应第六次退避)就不再增加了
  • img img img

<font size="4">除了RTS帧和CTS帧会携带通信需要持续的时间,数据帧也能携带通信需要持续的时间,这称为8.2.11的<font color="red">虚拟载波监听</font>机制
由于利用虚拟载波监听机制,<font color="red">站点只要监听到RTS帧、CTS帧或数据帧中的任何一个,就能知道信道被占用的持续时间,</font>而不需要真正监听到信道上的信号,因此<font color="red">载波监听机制能减少隐蔽站带来的碰撞问题</font>
在这里插入图片描述
A,C互为隐蔽站点,A的信号可以覆盖到B,但不能覆盖C
A在给B发送帧之前,可以使用RTS帧来预约信道,虽然C收不到RTS帧,但是C可以手动B发送给A的CTS帧
这样C就知道信道被占用了多长时间,在这段时间里面,它就不能发送帧</font>

  • MAC地址是以太网的MAC子层所使用的地址-----数据链路层
  • IP地址是TCP/IP体系结构网际层所使用的地址—网际层
  • ARP协议属于TCP/IP体系结构的网际层-----网际层
    - 作用是已知设备分配到的IP地址,使用ARP协议可以通过该IP地址获取到设备的MAC地址

1. MAC地址

<font size="4">两台主机通过一条链路通信,他们不需要地址就可以通信
在这里插入图片描述</font>

<font size="4"> 使用广播信道的数据链路层必须使用地址来区分各个主机,不然的话,其他主机不知道发送的帧是不是发送给它的
在这里插入图片描述
所以说当多个主机连接在同一个广播信道上的时候,如果要实现两个主机之间的通信,那么每一个主机都要有一个唯一的标识,即一个数据链路层地址
在每台主机发送的<font size="4" color=" red">帧中必须携带标识发送主机和接收主机的地址,</font>由于这类地址是用于媒体接入控制MAC,因此这类地址被称为<font color="red">MAC地址</font></font>

  • MAC地址一般被固化在网卡(网络适配器)的电可擦科变成只读存储器EEPROM中,因此MAC地址也被称为硬件地址
  • MAC地址有时也被称为物理地址,注意:这并不意味着MAC地址属于网络体系结构中的物理层
  • 一般来说,用户主机包含两个网络适配器:有线局域网适配器(有线网卡)和无限局域网适配器(无线网卡).每一个网络适配器都有一个全球唯一的MAC地址。而交换机和路由器往往有更多的网络接口,所以拥有更多的MAC地址。
  • 严格来说,MAC地址是对网络上各个=接口的唯一标识,而不是对网络上各设备的唯一标识
  • MAC地址第一字节的b0位取0时,表示该地址是单播地址,取1时,表示多播地址
  • MAC地址第一字节的b1位取0时,表示该地址是全球管理,取1时,表示本地管理 img img img img img img

2.IP地址(属于网路层)

IP地址属于网路层,而不属于数据链路层

  • IP地址是因特网上的主机和路由器使用的地址,用来标识两部分的信息
    - 网络编号:标识因特网上的网络 - 主机编号:标识主机(或路由器各接口) - MAC地址不具备区分不同网络的功能
      - 如果只是一个单独的网络,不接入因特网,可以只使用MAC地址(不是一般用户的应用方式) - 如果主机所在网络要接入因特网,则IP地址和MAC地址都要使用 img img 我们要怎么根据IP地址来找到对应的MAC地址呢? 这就和地址解析协议ARP有关了,接下来让我们来看看它到底是什么。

    3.地址解析协议ARP

    img不过每台主机都会有一个ARP的高速缓存表,记录了IP地址和MAC地址的对应关系 img 如果在高速缓存表中没有找到,那么主机B就得发送ARP请求报文来获取主机C的MAC地址 注意:ARP请求报文被封装在MAC帧中发送,目的地址为广播地址,主机B发送封装有ARP请求报文的广播帧时,总线上其他主机都能接收到该广播帧 img img img img

    <font size= color=“red”>ARP协议只能在一段链路或一个网络上使用,不能跨网络使用

    • 使用集线器的以太网在逻辑上仍然是一个总线网,各站共享总线资源,使用的还是CSMA/CD协议
    • 集线器只工作在物理层,它的每一个接口仅仅简单的转发比特,不进行碰撞检测(由各站的网卡检测)
    • 集线器一般都有少量的容错能力和网络管理功能。例如,若网络中某个网卡出了故障,不停地发送帧。此时,集线器可以检测到这个问题,在镍币断开和出故障网卡的连线,使整个以太网仍然能正常工作。
    • 集线器工作在物理层
    • 使用集线器HUB可以在物理层扩展以太网 img 以太网交换机 我们来看看它和集线器的区别

    1.集线器和交换机的区别

    img img

    注意:使用集线器的以太网在逻辑上是共享总线的,需要使用CSMA/CD协议来协调各主机争用总线,只能工作在半双工模式,也就是收发帧不能同时进行 img img img

    2. 以太网交换机自学习和转发帧的流程

    • 以太网交换机工作在数据链路层(也包括物理层)
    • 以太网交换机收到帧以后,在帧交换表中查找帧的目的MAC地址所对应的接口号,然后通过该接口转发帧
    • 以太网交换机是一种即插即用的设备,刚上电启动时其内部的帧交换表是空的。随着网络中各主机之间的通信,以太网交换机通过自学习算法自动逐渐建立起帧交换表

    img

    3. 以太网交换机的生成树协议STP

    img img

    4. 虚拟局域网VLAN概述

    • 以太网交换机工作在数据链路层(也包括物理层)
    • 使用一个或多个以太网交换机互连起来的交换式以太网,其所有站点属于同一个广播域
    • 随着交换式以太网规模的扩大,广播域相应扩大
    • 巨大的广播域会带来很多弊端
      - 广播风暴 - 难以管理和维护 - 潜在的安全问题

    接下来说明一下广播风暴的问题,当一台主机要发送广播帧给另一台主机,但是在自己的ARP告诉缓存表中查找不到目的主机的MAC地址,所以首先要发送ARP广播请求来获取目的主机的MAC地址,这个ARP广播请求会传遍整个网络,网络中的其他所有主机都可以接收到该广播—这就是广播风暴 img

    广播风暴会浪费网络资源和各主机的CPU资源,所以网络中的主机尽量不使用广播

    • 网络中会频繁的出现广播信息
      - TCP/IP协议栈中的很多协议都会使用广播
        - 比如地址解析协议ARP(已知IP地址,找出相应的MAC地址) - 路由信息协议RIP(一种小型的内部路由协议) - 动态主机配置协议DHCP(用于自动配置IP地址)

      </ul> 除此之外,还有其他一些协议栈也会频繁使用广播

      • NetBEUI:Windows下使用的广播型协议
      • IPX/SPX:Novell网络的协议栈
      • Apple Talk:Apple公司的网络协议栈

      接下来,我们来讨论一下,怎么把较大的广播域分割成较小的广播域

      • 分割广播域的方法
        - 使用路由器可以隔离广播域 img - 但是路由器的成本较高

      如果我们想让局域网内部都使用路由器来隔离广播域的话,是不现实的,因为路由器成本高。所以,虚拟局域网VLAN技术产生了

      • 虚拟局域网VLAN是一种把局域网内的设备划分成和物理位置无关的逻辑组的技术,,这些逻辑组具有某些共同的需求。 img

      我们可以通过交换机把小的局域网互连成更大的局域网 那么原来每一个局域网成为现在局域网的一个网段 网络中的各主机成为一个广播域

      img

      虚拟局域网VLAN技术是在交换机实现的,需要交换机要有两个功能 ①要有能处理带有VLAN标记的帧—IEEE 802.1Q帧 img

      ②交换机的各端口可以支持不同的端口类型

      • 交换机端口类型有下面的三种
        - Access
          - Access端口一般用于连接用户计算机 - Access端口只能属于一个VLAN - Access端口的PVID值与端口所属VLAN的ID相同,(默认为1) - Access端口接收处理方法
            - 一般只接收"未打标签"的普通以太网MAC帧。根据接收帧的端口的PVID给帧"打标签",即插入4字节VLAN标记字段,字段中的VID取值与插口的PVID取值相等
          -  Access端口发送处理方法 
           <ul> 
            - 若帧中的VID与端口的PVID相等,则去标签,并转发该帧,否则不转发 ![img](https://img-blog.csdnimg.cn/f9b424b559a34d7f987faad7855f6c49.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBASmF2YeeahOWtpuS5oOS5i-i3rw==,size_17,color_FFFFFF,t_70,g_se,x_16) 
          • Trunk
            - Trunk端口一般用于交换机之间或交换机与路由器之间的互连 - Trunk端口可以属于多个VLAN - 用户可以设置Trunk端口的PVID值。默认情况下,Trunk端口的PVID值为1 img - Trunk端口发送处理的方法:
              - 对VID=PVID的帧,去标签再转发 - 对VID!=PVID的帧,直接转发
            - Trunk端口接收处理方法 
             <ul> 
              - 接收未达标签的帧,根据接收帧的端口的PVID给帧打标签,即插入4字节VLAN标记字段,字段中的VID取值与端口的PVID取值相等 
              - ![img](https://img-blog.csdnimg.cn/e30f2d13207e4067922a6eae176fceb7.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBASmF2YeeahOWtpuS5oOS5i-i3rw==,size_15,color_FFFFFF,t_70,g_se,x_16) 
            • Hybrid
            • 交换机各端口的缺省VLAN ID
              - 在思科交换机上称为Native VLAN,即本征VLAN - 在华为交换机上称为Port VLAN ID,即端口VLAN ID,简称PVID - 交换机的每个端口有且仅有一个PVID
            本文为互联网自动采集或经作者授权后发布,本文观点不代表立场,若侵权下架请联系我们删帖处理!文章出自:https://zengyihong.blog.csdn.net/article/details/124057019
-- 展开阅读全文 --
安全面试之XSS(跨站脚本攻击)
« 上一篇 07-24

发表评论

成为第一个评论的人

热门文章

标签TAG

最近回复