• 计网笔记-第五章:数据链路层


    第五章复习重点

    • 奇偶校验(一比特 & 二维)
    • 校验和
    • CRC
    • ALOHA效率的计算
    • CSMA
    • MAC(比较IP地址和MAC地址的不同)
    • 发送数据报到子网以外的例子
    • 泛洪和自学习
    • 交换机和路由器(个人感觉还是有可能考吧)
    • VLAN
    • 逛淘宝的Web历程(综合应用)

    第五章复习大纲

    • 理解链路层服务的主要功能
      • 差错检查、纠错
      • 共享广播信道:多点接入问题
      • 链路层寻址
      • 局域网技术:Ethernet、VLANS
    • 链路层技术的实现

    5.1 链路层概述

    • 术语:

      • 节点(nodes):主机和路由器
      • 链路(links):沿着通信路径连接相邻节点的通信信道。分为:有线 & 无线。
      • 数据帧(frame):第二层的分组,封装了的数据报
    • 职责:将第三层网络层封装的数据报 从一个节点传到与该节点 直接有物理链路相连的 另一个节点

    • 数据报在不同链路上发送:例如在第一段链路上采用以太网技术,在中间链路采用帧中继技术,在最后一跳链路采用802.11无线以太网技术。(类比先坐小汽车到机场,到机场又坐飞机,最后坐火车)

      三段链路采取不同的链路层协议(不同的协议提供不同的服务,数据传输 靠谱/不靠谱)

    • 链路层提供的服务:

      • 封装成帧,接入链路
      • 在相邻节点间可靠传输数据帧
      • 流量控制
      • 差错检查
      • 错误纠正
      • 半双工和全双工(半双工:链路的两个节点都可以发送数据,但是不能同时发)
    • 区分两个服务:

      • 链路层提供的服务:

        • 将数据报封装成数据帧,增加相应的头部和尾部信息。如果是共享链路,则接入链路。

          不同于 IP 地址,在数据帧头部用 MAC 地址来标志 源/目的MAC 地址

      • 以太网能够提供的链路层服务:

        • 在相邻节点之间可靠传输数据帧,当传输链路是比特错误率很低的链路时,例如光纤和双绞线,很少使用可靠数据传输机制;
        • 而在无线链路这样的高比特错误率链路时,通常会增加可靠数据传输机制。
        1. 为什么要在链路层和端到端都实现可靠传输?

        答:链路层负责处理 局部链路上的错误和重传,确保邻近设备之间的传输可靠性;端到端层次则负责 整个路径的错误检测和纠正,确保数据完整性和顺序。这种多层次的策略可以更有效地应对不同类型的传输问题,提升整体网络通信的可靠性和性能。

        1. 既然在传输层实现了端到端的可靠数据传输,为什么还需要在链路层提供可靠数据传输呢?

        答:这种多层次的设计提供了局部错误的 快速处理、减少了传输层的负担、提高了局部链路的效率、确保了不同网络技术之间的互操作性,并满足了不同应用和服务的需求。通过在多个层次上提供可靠性,可以构建一个更健壮、高效的网络传输系统。

    • 链路层实现的位置:主机、路由器

      • 主机:网络适配器(网卡)上

        • 以太网卡,802.11卡;以太网芯片组

        • 实现链路层和物理层功能

          在这里插入图片描述

        • 发送方:

          1. 封装数据报为数据帧
          2. 增加差错检测比特,可靠数据传输,流量控制等机制
        • 接收方

          1. 执行检查错误、可靠数据传输、流量控制
          2. 抽取数据报,将其递交上层(网络层)

    5.2 差错检测和纠错

    • 差错检测和纠错技术不是100%可靠的,差错校验位越多,检测和纠正功能越好

    • 三种技术

      • 奇偶校验:最基本的方法
      • Internet 校验和:常用于运输层
      • 循环冗余检测:常用于链路层

    奇偶校验

    1. 一比特奇偶校验
    • 发送方:在要发送的信息 D(d位)后面附加一个奇偶校验位,使得1的个数是奇数(奇校验)或偶数(偶校验),将这 d+1 位一起发送
    • 接收方:
      • 检测收到的信息(d+1位)中 1 的个数
        • 奇校验:如果发现偶数个1,至少有一个比特发生差错。
        • 偶校验:如果发现奇数个1,至少有一个比特发生差错。
      • 可以查出任意奇数个错误,但不能发现偶数个错误(因为偶数个错误奇偶性是匹配的)。
      • 若比特差错概率很小,差错独立发生,那么一比特奇偶校验就可以满足要求了
      • 若差错集中一起出现,一帧中未检测差错的概率达50%
    2. 二维奇偶校验
    • 基本思想:(将一比特中不能发现偶数个错误中的偶数个错误拆开,这样可能就拆成奇数了,可以检测了但还是不能纠正)

      • 将要传的信息划分为 i 行 j 列( i 个组,每组 j 列)

        在这里插入图片描述

      • 对每行每列分别计算奇偶值

      • 结果的 i+j+1 个奇偶比特构成了帧的差错检测比特

    • 例子:要发送的数据比特 10101 11110 01110,划分3组,每组5个比特。进行 行、列 偶校验。

      在这里插入图片描述

      • 特点:

        • 可以检测并纠正单个比特差错(数据或校验位中)

        • 能够检测(但不能纠正)分组中任意两个比特的差错

          两个比特的话,两横两纵就有4个交点了

    Internet 校验和方法(回忆)

    • 发送方:

      • 将数据每两个字节当作一个16位的整数,可分成若干整数。
      • 将所有 16 位的整数求和(高位要回卷)
      • 对得到的和逐位求反,作为检查和,放在报文段首部。
    • 接收方:

      • 对接收到的信息(包括检查和)按相同方法求和
        • 全1:收到的数据无差错
        • 有0:收到的数据有差错
    • 特点:

      • 分组开销小(检查位数少)
      • 差错检测能力弱
      • 适用于运输层(用软件实现差错检测,简单快速)
      • 链路层中的差错检测由适配器中的 专用硬件 实现,采用更强的 CRC 方法
    • CRC(Cyclic Redundancy Check):循环冗余检测
      • 即多项式编码,把要发送的比特串看作系数是 0 或 1 的一个多项式,对比特串的操作看作为多项式运算。

        例如: 10111   →   x 4 + x 2 + x + 1 10111 \space \rarr \space x^{4}+x^{2}+x+1 10111 → x4+x2+x+1

      • 基本思想:

        • 设发送节点要把数据D(d比特)发送给接收节点
        • 发送方和接收方先共同选定一个 生成多项式G(r+1比特),最高位是1(最左边)
      • 发送方:

        • 计算出一个 r 位附加比特 R,添加到D的后面产生 DR(d+r 比特)
        • DR能被生成多项式 G 模2运算 整除,一起发送
      • 接收方:

        • 用生成多项式 G 去除接收到的 DR(d+r 比特)
          1. 余数为0:传输正确,去掉尾部的r位,得到数据D
          2. 余数不为0:传输发生差错

      在这里插入图片描述

    • 模2运算

      • 操作数按位异或(XOR)

        1011 XOR 0101 = 1110

      • 乘以 2 r 2^{r} 2r ,即比特模式左移 r 个位置。

        D ∗ 2 r   X O R   R = D   00...00   X O R   R = D R D*2^{r} \space XOR \space R=D\space 00...00 \space XOR \space R=DR D∗2r XOR R=D 00...00 XOR R=DR

        因为 0 XOR 0 = 0 ,0 XOR 1 = 1,所以 D 左移之后低 r 位全0,和R异或刚好达到拼接的效果

    • 计算 R:

      • DR 能被 G 模2运算整除,即 D ∗ 2 r   X O R   R = n G D*2^{r} \space XOR \space R=nG D∗2r XOR R=nG

      • 等式两边都 XOR R,得: D ∗ 2 r = n G   X O R   R D*2^{r}=nG \space XOR \space R D∗2r=nG XOR R

        A XOR A = 0,0 XOR A = A

        那么用 D ∗ 2 r D*2^{r} D∗2r 除以 G ,余数刚好为 R

      • 例1:假设数据 D=101110,d=6,生成多项式 G=1011,r=3

        在这里插入图片描述

        实际传输的数据形式是:101110011 (下划线不用写,这里是提醒这道题r=3,最后3位是R)

        注意:不是减而是异或!

      • 例2:通信双方协商的生成多项式为: G = X 4 + X 2 + X + 1 G=X^{4}+X^{2}+X+1 G=X4+X2+X+1 ,发送方要发送的数据是 D = 11001100 D=11001100 D=11001100

        • CRC校验信息需要几位——4位

          因为G=10111,CRC编码的位数是G的位数-1,即4位

        • 发送方最终发送的数据是多少位—— 8+4=12位

        • 发送方最终发送的数据内容是什么—— 110011000101

          在这里插入图片描述

          注意:上图第三次异或:10100和10111,10100比10111小,仍然可以算,只有位数少的时候才除得0(第四次异或)

        • 如果传输过程中出现一位错误能否检测?出现六位错误能否检测?

          • 一位错误可以检测到
          • 六位错误一般情况下不可以
    • CRC 的特点

      • 常见的有 8、12、16、32 比特生成多项式
      • 8-位CRC用于ATM信元首部的保护,32-CRC用于大量链路层IEEE协议
      • 能检测小于r+1位的突发差错、任何奇数个差错

    各个差错方法的比较

    • 奇偶校验能力最弱,CRC校验能力最强

    • 奇偶校验常用于简单的串口通信

    • Internet校验和通常用于网络层及之上的层次,要求简单快速的软件实现方式

    • CRC通常应用于链路层,一般由适配器硬件实现

    • 纠错基本原理(打*号不考)

      从 原本的 m 位增加 r 位,就将原来的 2 m 2^{m} 2m 个信息码映射到 2 m + r 2^{m+r} 2m+r 个编码。

      使得这 2 m + r 2^{m+r} 2m+r 个编码中,有效码占 2 m 2^{m} 2m 个,无效码占 2 m + r − 2 m = 2 m ∗ ( 2 r − 1 ) 2^{m+r}-2^{m}=2^{m}*(2^{r}-1) 2m+r−2m=2m∗(2r−1) 个

    • 海明码(打*号不考)

      把两个等长二进制数(或两个等长码)不相同对应位的位数称为距离.

      例如10000和00100的距离为2。

      海明距离(Hamming Distance):某种编码任意两个有效码间的最小距离称为该编码的海明距离。

      • 结论1:可以检出d个错误的检错码,其海明距离至少为d+1
      • 结论2:可以纠出d个错误的纠错码,其海明距离至少为2d+1

      海明码:能够纠正一位错误的编码称为海明码

    5.3 多路访问链路和协议

    • 两种网络链路

      • 点对点链路:链路两端各一个节点。一个发送一个接收。如 点对点协议 PPP。

        区分 PPP 和 P2P:

        • PPP:数据链路层的协议。提供点对点的连接,允许在两个单独的设备(通常是计算机或网络设备)之间进行数据交换。它可以在不同的物理介质(例如串行线或光纤)上传输数据。

        • P2P:应用层的分布式计算体系结构。每个参与者或节点可以充当客户端和服务器,直接交换资源。

      • 广播链路:多个节点连接到一个共享的广播信道

        • 广播:任何一个节点传输一帧时,信号在信道上广播,其他节点都可以收到一个拷贝。常用于局域网(LAN),如早期的以太网和无线局域网(WLAN)

          WLAN 和 Wi-Fi:

          简单来说,WLAN是一个网络系统,而Wi-Fi是这个网络系统中的一种技术,目的是改善基于IEEE 802.11标准的无线网络产品之间的互通性。(WLAN包含Wi-Fi,该解释来自 华为IP知识百科 )

    • 广播信道要解决的问题:如何协调多个方式和接收节点对共享广播信道的访问。相关技术:多路访问协议。

    • 多路访问协议:

      • 目的:协调多个节点在共享广播信道上的传输。

        • 避免多个节点同时使用信道,发生冲突,产生互相干扰
      • 冲突(collide):两个以上的节点同时传输帧,使接收方收不到正确的帧(所有冲突的帧都会受损丢失)

        • 造成广播信道时间的浪费
        • 多路访问协议可用于许多不同的网络环境。如 有线和无线局域网、卫星网
      • 理想的情况:(假设速率位 R R R bps的广播信道)

        1. 有 1 个节点有数据发送时,它能以 R R R bps的速率发送

        2. 当 M M M 个节点要发送数据时,每个节点的平均发送速率为 R M \frac{R}{M} MR​

        3. 完全分散:

          • 不需要主节点协调传输

          • 不需要时钟、时隙同步

        4. 简单

      • 类型:

        • 信道划分协议:信道分成小的“片”(时隙)
        • 随机访问协议(满足理想情况的第4点"简单",用的最多)
          • 不划分信道,允许冲突
          • 能从冲突中“恢复”
        • 轮流协议:轮流访问信道,要发送的节点越多轮流的时间越长
    信道划分协议
    • 主要有 TDMA(Time Division Multiple Address)、FDMA(Frequency)、CDMA(Code)

    • TDMA:将时间划分为 时间帧,每个时间帧再划分为 N 个时隙(长度保证发送一个分组),分别分配 N 个节点。每个节点只在固定分配的时隙中传输。

      • 例:6个站点的LAN,时隙1、3、4有分组,时隙2、5、6空闲

        在这里插入图片描述

      • 特点:

        • 避免冲突、公平
        • 节点速率有限、效率不高
    • FDMA:将总信道带宽 R R R bps划分为 N 个较小的信道(频段,带宽为 R/N)分别分配给N个节点。

      • 例:6个站点的LAN,频段1、3、4有分组,频段2、5、6空闲

        在这里插入图片描述

      • 特点:

        • 避免冲突、公平
        • 节点带宽有限、效率不高
    • CDMA:每个节点分配唯一的编码,每个节点用它唯一的编码来对它发送的数据进行编码。允许多个节点“共存”,信号可以叠加,即可以同时传输数据(如果编码是“正交化”的,那么不会产生冲突)

    随机访问协议
    • 基本思想:

      • 发送节点以信道全部速率( R R R bps)发送

      • 发生冲突时,冲突的每个节点分别等待一个随机时间,再重发,知道帧(分组)发送成功,

      • 节点间没有协调者

      • 典型的随机访问协议:

        • ALOHA协议(纯ALOHA、时隙ALOHA)
        • 载波监听多路访问CSMA协议
        • 带冲突检测的 CSMA/CD
        • 带冲突避免的 CSMA/CA
    • ALOHA:采用星型拓扑结构,使得地理上分散的用户通过无线电来使用中心主机

      在这里插入图片描述

      • 中心主机通过下行信道向二级主机广播分组
      • 二级主机通过上行信道向中心主机发送分组(可能会冲突,因为无线电信道是一个公用信道)
    • 纯ALOHA

      • 非时隙ALOHA:简单、无需同步

      • 帧一到达,立即传输

      • 如果与其他帧产生冲突,那么在该冲突帧传完之后:

        • 概率 p:立即重传该帧
        • 概率 1-p:等待一个帧的传输时间。然后循环该过程,直到重传该帧。
      • 冲突概率:在 t 0 t_{0} t0​ 发送的帧,和在 [ t 0 − 1 , t 0 + 1 ] [t_{0}-1,t_{0}+1] [t0​−1,t0​+1] 的发送的其他帧冲突

        在这里插入图片描述

      • 效率: P ( 给 定 节 点 成 功 传 送 ) = P ( 节 点 传 送 ) ∗ P ( 没 有 其 他 节 点 在 [ t 0 − 1 , t 0 ] 内 传 送 ) ∗ P ( 没 有 其 他 节 点 在 [ t 0 , t 0 + 1 ] 内 传 送 ) P(给定节点成功传送)=P(节点传送)*P(没有其他节点在[t_{0}-1,t_{0}]内传送)*P(没有其他节点在[t_{0},t_{0}+1]内传送) P(给定节点成功传送)=P(节点传送)∗P(没有其他节点在[t0​−1,t0​]内传送)∗P(没有其他节点在[t0​,t0​+1]内传送)

        ​ = p ∗ ( 1 − p ) N − 1 ∗ ( 1 − p ) N − 1 = p ∗ ( 1 − p ) 2 ( N − 1 ) =p*(1-p)^{N-1}*(1-p)^{N-1}=p*(1-p)^{2(N-1)} =p∗(1−p)N−1∗(1−p)N−1=p∗(1−p)2(N−1)

        E ( p ) = N P = N p ( 1 − p ) 2 ( N − 1 ) E(p)=NP=Np(1-p)^{2(N-1)} E(p)=NP=Np(1−p)2(N−1) // E ( p ) E(p) E(p) 是单位时间内成功传输的帧数,相当于所有节点成功传输的帧数的期望值

        为了得到N个活跃点的最大效率,必须找出使得上式取最大值的 p ∗ p^{*} p∗,为了得到大量活跃节点的最大效率,我们要求 N → ∞ N \rarr \infty N→∞

        l n P = l n p + 2 ( N − 1 ) l n ( 1 − p )   ⇒   令 1 p − 2 ( N − 1 ) ∗ 1 1 − p = 0   ⇒   p ∗ = 1 2 N − 1 lnP=lnp+2(N-1)ln(1-p) \space \Rarr \space 令\frac{1}{p}-2(N-1)*\frac{1}{1-p}=0 \space \Rarr \space p^{*}=\frac{1}{2N-1} lnP=lnp+2(N−1)ln(1−p) ⇒ 令p1​−2(N−1)∗1−p1​=0 ⇒ p∗=2N−11​

        l i m n → ∞   E ( p ∗ ) = l i m n → ∞   N 2 N − 1 ∗ ( 1 − 1 2 N − 1 ) 2 ( N − 1 ) = 1 2 ∗ e l i m n → ∞ − 2 N − 2 2 N − 1 = 1 2 ∗ e − 1 = 1 2 e = 0.18 \mathop{lim}\limits_{n\rarr \infty} \space E(p^{*})= \mathop{lim}\limits_{n\rarr \infty} \space \frac{N}{2N-1}*(1-\frac{1}{2N-1})^{2(N-1)} = \frac{1}{2}*e^{\mathop{lim}\limits_{n\rarr \infty} -\frac{2N-2}{2N-1}}=\frac{1}{2}*e^{-1}=\frac{1}{2e}=0.18 n→∞lim​ E(p∗)=n→∞lim​ 2N−1N​∗(1−2N−11​)2(N−1)=21​∗en→∞lim​−2N−12N−2​=21​∗e−1=2e1​=0.18

    • 时隙ALOHA

      • 假设:

        • 所有帧大小相同
        • 时间被划分为相同大小的时隙,一个时隙等于传送一帧的时间
        • 节点只能在一个时隙的开始才能传送
        • 节点需要同步
        • 如果一个时隙有多个节点同时传送,所有节点都能检测到冲突
      • 实现:

        • 当节点要发送新帧时,等到下一时隙开始时传送

        • 没有冲突,节点可以在下一时隙发送新帧

        • 如果有冲突,节点在随后的时隙以概率 p 重传该帧,成功为止。

          在这里插入图片描述

      • 优点:

        • 单个活跃节点可以持续以满速率传送帧
        • 高分散性:只需节点的时隙同步
        • 简单
      • 确定:

        • 冲突,浪费时隙
        • 空闲时隙
        • 节点只有在传输数据包时才能检测到冲突
      • 效率:当节点很多,每个节点要发的帧很多时,成功时隙所占的百分比

        • 假设有 N 个节点,每个节点在时隙以概率 p 发送。
        • 那么一个节点在一个时隙成功传送的概率为 p ( 1 − p ) N − 1 p(1-p)^{N-1} p(1−p)N−1
        • 任一节点传送成功的概率为 N p ( 1 − p ) N − 1 Np(1-p)^{N-1} Np(1−p)N−1
        • 同纯 ALOHA 计算方法,可得最大效率为 1 e = 0.37 \frac{1}{e}=0.37 e1​=0.37。即最佳情况时是信道有 37% 的有效传输。
    • 课后练习(*):假设信道帧到达率服从泊松分布,试从单位时间内帧到达数和信道吞吐量的角度,推导纯Aloha协议及时隙Aloha协议的效率。

      • 泊松分布: P ( X = k ) = λ k k ! e − λ P(X=k)=\frac{\lambda ^{k}}{k!}e^{-\lambda} P(X=k)=k!λk​e−λ, λ \lambda λ 是平均帧到达率。可以表示单位时间内所有帧每个状态的概率(已经算上所有帧了,所以就不用 乘以N 了)
        • P ( X = 0 ) = e − λ P(X=0)=e^{-\lambda} P(X=0)=e−λ 表示空闲
        • P ( X = 1 ) = λ e − λ P(X=1)=\lambda e^{-\lambda} P(X=1)=λe−λ 表示发送成功
        • P ( X > 1 ) = 1 − ( 1 + λ ) e − λ P(X>1)=1-(1+\lambda)e^{-\lambda} P(X>1)=1−(1+λ)e−λ 表示冲突
      • 如果是纯ALOHA,假设帧在 t 0 t_{0} t0​ 时刻发送,就要求没有其他节点在 [ t 0 − 1 , t 0 + 1 ] [t_{0}-1,t_{0}+1] [t0​−1,t0​+1] 内传送,相当于在 [ t 0 − 1 , t 0 ] [t_{0}-1,t_{0}] [t0​−1,t0​] 空闲,在 [ t 0 , t 0 + 1 ] [t_{0},t_{0}+1] [t0​,t0​+1] 成功发送。
        • 记信道吞吐量为 S S S,那么 S = e − λ ∗ ( λ e − λ ) = λ e − 2 λ S=e^{-\lambda}*(\lambda e^{-\lambda})=\lambda e^{-2\lambda} S=e−λ∗(λe−λ)=λe−2λ, λ ∗ = 1 2 \lambda^{*}=\frac{1}{2} λ∗=21​
        • 所以 S m a x = 1 2 e = 0.18 S_{max}=\frac{1}{2e}=0.18 Smax​=2e1​=0.18
      • 如果是时隙ALOHA,就只用考虑帧在 [ t 0 , t 0 + 1 ] [t_{0},t_{0}+1] [t0​,t0​+1] 成功发送了。
        • S = λ e − λ S=\lambda e^{-\lambda} S=λe−λ, λ ∗ = 1 \lambda ^{*}=1 λ∗=1, S m a x = 0.37 S_{max}=0.37 Smax​=0.37
      • 所得结果和之前用 p p p 和 1 − p 1-p 1−p 计算的结果一致。
    • CSMA(Carrier Sense Multiple Access):载波侦听多路访问

      • 载波侦听:某个节点在发送之前,先监听信道

        • 信道忙:有其他节点正在往信道发送帧,该节点随机等待

        • 信道空:该节点开始传输整个数据帧

          自己说话之前先听一下有没有其他人正在说话,不要打断别人!

      • 特点:

        • 发前监听,可减少冲突

        • 由于 传播时延 的存在,仍然可能出现冲突,并造成信道浪费。

          在这里插入图片描述

          信道浪费:节点没有进行冲突检测,即使发生冲突,节点仍然继续传输它们的帧。但是该帧已经被破坏!

          距离和传播时延对概率有影响

    • 带冲突检测的 CSMA(CSMA/CD,Collision Detection)

      • 增加了“冲突检测”

        • 一旦检测到冲突就立即停止传输,尽快重发
      • 目的:缩短无效传送时间,提高信道利用率

        在这里插入图片描述

      • 以太网采用 CSMA/CD

      • 运行机制

        1. 适配器从网络层得到分组,创建帧

        2. 如果适配器侦听到信道空闲,开始传送帧。如果忙,等到信道空闲才传送帧

        3. 如果适配器在传送整个帧时,都没有检测到其他传输,则完成该帧的传送

        4. 如果适配器在发送中检测到其它传送,就放弃传送,并发送一个拥塞信号

        5. 放弃传送后,适配器进入 指数回退阶段 ,假设该帧经过 n n n 次冲突,取 m = m i n ( n , 10 ) m=min(n,10) m=min(n,10) ,那么适配器会在

          { 0 , 1 , 2 , 3 , . . . , 2 m − 1 } \{0,1,2,3,...,2^{m}-1\} {0,1,2,3,...,2m−1} 中等概率随机选取一个 K K K 值,然后等待 K ∗ 512 K*512 K∗512 比特时间后,回到第二步。

          冲突次数越多,等待时间更长的概率更大,但是有上限

          拥塞信号:48比特时间

          对于10 Mbps Ethernet ,1 比特时间 = 0.1 μs,K=1023 时,等待时间大约为 50ms

    • 轮流协议:

      • 回顾 多路访问协议的理想特性:

        1. 只有一个节点活动时,吞吐量 R R R bps;
        2. 有 M M M 个节点活动时,吞吐量 R M \frac{R}{M} MR​ bps

        ALOHA 和 CSMA 协议都只有第一个特性,但没有第二个特性

      • 轮流协议分类:

        • 轮询协议
        • 令牌传递协议
      • 轮询协议:主节点 “邀请” 从节点 依次传送

        • 问题:轮询的开销、延时、单点故障(主节点)
      • 令牌传递:控制令牌顺序从一个节点传递到下一个节点(丢手绢)

        • 问题:令牌开销、延时、单点故障(主节点,圈断点——可以考虑双环,但是会更复杂)

    多路访问控制协议的总结

    • 信道划分:时分(TDMA)、频分(FDMA)、码分(CDMA)
    • 随机接入:ALOHA,S-ALOHA(时隙ALOHA,Slot时隙),CSMA,CSMA/CD
      • CSMA载波侦听:在有线中容易实现,但在无线中比较困难
      • CSMA/CD 用在 以太网中
      • CSMA/CA(A:Avoid) 用在 802.11中
    • 轮流:
      • 来自中心站的轮询
      • 令牌传递

    5.4 交换局域网

    • 局域网(Local Area Network,LAN)
      • 采用的协议:多路访问协议广泛(CSMA/CD更多,令牌很少)
      • 特点:网络为一个组织所拥有,地理范围和站点数目有限
      • 按拓扑结构分类:星形网、环形网、总线网、树形网、网状网

    在这里插入图片描述

    • 计算机和局域网通过 网络适配器(即网卡) 连接

    • 数据链路层还可以细分为:逻辑链路控制子层、介质访问控制子层

    • 每个节点有 网络层地址和 链路层地址
      • 网络层地址:节点在网络中分配的一个唯一地址(IP地址)。用于把分组送到目的 IP 网络。(IPv4)
      • 链路层地址:又叫作 MAC地址(Media Access Control) 或物理地址、局域网地址
        • 用于把 数据帧 从一个节点传送到另一个节点(同一网络中)。6个字节。
    • MAC 地址:**局域网中 **每个网卡都有唯一的MAC地址

      • MAC地址分配:高24位向 IEEE 购买,低24位厂家自行分配

        在这里插入图片描述

    • 比较 IP 地址和 MAC 地址的不同?
      1. 层级和用途
        • IP 地址用于网络层,帮助在不同网络中路由数据包。主要用于确定设备在网络中的位置
        • MAC 地址用于数据链路层,帮助在同一局域网内传输数据包。用于唯一标志网络接口。
      2. 类型:
        • IP 地址有 IPv4 和 IPv6 两种类型,可以是静态(DHCP分配)或者静态手动分配
        • MAC 地址:硬编码到网络接口硬件中的 48 位地址,通常是固定不变的。
      3. 可见性和范围:
        • IP 地址可以跨网络互连,全球唯一,互联网上可见
        • MAC 地址仅在LAN使用,互联网上不可见
      4. 结构:
        • IP 地址具有层次结构:当节点移动到不同网络时,节点的IP地址发生改变
        • MAC 地址是平面结构:带有同一网卡的节点,在任何网络中都有同样的MAC地址
    • 网络适配器:负责MAC地址的封装和识别

      • 发送适配器:将目的 MAC 地址封装到帧中并发送。所有其他适配器都会收到这个帧。

      • 接收适配器:检查该帧的目的 MAC 地址是否与自己的 MAC 地址相匹配

        • 匹配:接收,取出数据报,交给上层
        • 不匹配:丢弃

        广播帧:发送给所有节点的帧:全1地址(用于寻找)—— FF-FF-FF-FF-FF-FF

    • 节点的三种不同地址表示:主机名(应用层)、IP地址(网络层)、MAC地址(数据链路层)

      • 在链路上传输时,根据 MAC 地址确定相应的节点

      • 通信时,需要进行地址转换

        • DNS域名系统:将主机名解析到 IP 地址

          DNS 为互联网中任何地方的主机解析主机名

        • ARP地址解析协议:将 IP 地址解析到 MAC 地址

          ARP 只在一个 局域网 范围内起作用(只为同一 LAN 上的节点解析 IP 地址)

    • ARP(Address Resolution Protocol)

      • ARP 表:LAN 上的每个节点(主机、路由器)都有这个表
        • 为某些局域网节点进行 映射
        • TTL(存活时间)通常为20分钟,20分钟后该表项会被删除
      • 假设 主机A 希望发送数据报给 主机 B:
        1. 首先查找 B 的 MAC 地址是否在 A 的 ARP 映射表中
        2. 如果不在,那么 A 广播 ARP 查询分组,其中包含 B 的 IP 地址。(查询分组是一个广播帧,即目的MAC地址是FF-FF-FF-FF-FF-FF)
        3. 局域网中所有的节点都会收到 ARP 查询分组,其余主机发现查询的不是本机的MAC地址,因此不进行回应。只有 B 收到ARP查询分组后,返回 B 的 MAC 地址给主机 A ,包含有 B 的 MAC 地址的帧发送给主机 A (单播)。
        4. 于是,主机A在自己的ARP表中缓存B主机的IP地址和MAC地址。
      • 注意:ARP是即插即用的(和DHCP一样)——节点创建 ARP 表不选哟网络管理员的干预。
      • 漏洞:ARP 欺骗攻击!

      广播在 计网 中的几个应用:

      • ARP 广播(数据链路层的协议)
      • DHCP 广播(应用层的协议)
      • 路由器和邻居广播,更新路由表(网络层)
    • 发送数据报到子网以外的例子:

    在这里插入图片描述

    整个过程:

    1. A的网络层构建IP数据报,传给数据链路层封装成 数据帧(由于主机A发现接收主机B和自己不在同一LAN,所以目的MAC地址是路由器左边端口的MAC地址)
    2. 数据帧到达路由器后,接收并抽出数据报递交网络层,网络层根据IP地址判断该数据报要往右边端口转发,并且发现接受主机B和自己在同一LAN。因此数据帧的源MAC地址改为路由器右端的MAC地址,目的MAC地址改为接收主机B的。

    注:整个过程只改变源/目的 MAC 地址,但是源/目的IP地址不会变!

    WAN接口:路由器的广域网(WAN)接口通常有一个MAC地址,用于连接到外部网络或ISP(互联网服务提供商)。

    LAN接口:路由器的局域网(LAN)接口通常有多个MAC地址,每个接口(如有多个以太网端口)都有一个独立的MAC地址,用于与局域网中的设备通信。

    无线接口:如果路由器支持无线功能,它的无线接口(Wi-Fi)也会有一个MAC地址,用于无线通信。

    • 以太网:迄今为止最著名的 有线 局域网技术

      • 成功的原因:

        1. 第一个广泛使用的局域网技术
        2. 简单、便宜
        3. 版本不断更新,数据速率更高、成本更低
      • 物理拓扑结构分为:总线(效率低,已淘汰);星形(目前流行,中心是交换机,每个端口运行一个独立的以太网协议,节点之间相互不发生碰撞,但不能2个同时给1个说)

        在这里插入图片描述

      • 以太网链路层控制技术

        • 媒体访问控制(MAC)子层

          1. 数据封装:帧同步、帧定界;地址确定;错误检测机制
          2. 媒体访问管理:媒体分配(避免冲突);冲突解决
      • 以太网的帧结构:在这里插入图片描述

      1. 前同步码用于帧同步(收发双方的时钟同步,接收方一旦收到连续的8字节前同步码,可以确定有帧传过来),前同步码是无效信号,接收方收到后删除,不向上层传;CRC也不校验前同步码
      2. 类型:网络层协议的类型编号
      3. 数据:以太网的最大传输单元 MTU 是1500字节(若超出则要分段),最小长度是46字节(若小于要填充够46字节,接收方会去除填充的内容)
      • 以太网:不可靠的无连接服务
        • 无连接服务:通信时,不需要先握手
        • 不可靠服务:收到的帧可能含比特差错
          • 收到正确帧,不发确认帧
          • 收到出错帧,丢弃但不发否定帧
          • 发送适配器不重发
          • 丢弃数据的恢复通过终端传输层的可靠数据传输机制来实现
        • 以太网的MAC协议:使用无时隙的 CSMA/CD(二进制指数回退)
    • 链路层交换机:链路层设备

      • 工作:存储转发数据帧

        • 对于到达交换机的数据帧,交换机首先检查其目的MAC地址,然后根据MAC地址,有选择的将数据帧转发到一个或多个输出链路;
        • 如果输出链路是一个共享网段,将使用CSMA/CD来访问共享链路。
      • 特点:

        • 透明:主机不关心是否存在交换机(当一个主机向另一个主机发送数据帧时,它并不会知道某个交换机会收到这个数据帧,并将其转发到另一个节点)
        • 即插即用(同 DHCP 、ARP)、自学习(不需要手工配置,有类似路由表的 交换机转发表 )

        在这里插入图片描述

      • 加入交换机后,支持多个节点同时传输数据帧,而不会发生碰撞(交换机可以缓存数据帧)

        • 每个输入链路都使用以太网协议,全双工、无碰撞。转发率高。
      • 交换机的过滤/转发过程:

        1. 首先,记录到达链路和发送主机的MAC地址;
        2. 第二步,使用数据帧的目的MAC地址,在转发表中进行检索;
        3. 如果在转发表条目中找到对应的MAC地址,则执行第 4 点;否则执行第 5 点
        4. 如果目的MAC地址对应的端口与数据帧的到达端口相同,说明接收主机属于同一个共享网段,则直接将该数据帧丢弃。因为接收主机也会收到该数据帧;否则,转发端口与达到端口不一致,则将该数据帧转发到指定端口。结束。
        5. 交换机将该数据帧向除到达端口之外的所有端口转发,也就是泛洪。结束。
      • 交换机互联时:

        在这里插入图片描述

        问:如果主机A发送数据帧给主机G,那么交换机S1是怎么知道需要先把数据转发到S4和S3的?

        答:通过 泛洪和自学习。

        1. 当数据帧到达S1时,可能S1的转发表中没有G主机的MAC地址的表项,于是S1将该数据帧泛洪
        2. 那么S4的端口也会收到这个泛洪的数据帧,如果S4的转发表也没有G主机的MAC地址对应的表项,则S4会继续泛洪
        3. 于是S3也会收到数据帧,如果S3的转发表仍然没有G主机的MAC地址,则S3会继续向它的端口泛洪,直到数据帧到达G主机。
      • 多个交换机自学习:

        在这里插入图片描述

      • 问:交换机在识别目的MAC地址和源MAC地址的过程中是否需要接收并缓存完整的帧呢?

        答:两种模式:

        1. 快速分组(直通交换):交换机只需要读取前几个字节就可以做出转发决定,而不需要缓存整个帧。这样可以显著降低延迟。
        2. 存储转发:交换机会接收并检查整个帧,包括数据部分和帧校验序列(FCS),以确保帧没有错误。只有在帧被确认没有错误后,交换机才会转发帧。这种模式会增加延迟,但能提高数据传输的可靠性。
    • 三层交换机

      • 三层交换时相当于传统交换概念提出的

      • 传统的交换技术是在 OSI 网络参考模型中的第二层(从下往上数,即数据链路层)进行操作的,称为 二层交换机

      • 三次交换技术能够在网络模型中的第三层(网络层)实现数据包的高速转发

      • 简单来讲,就是 二层交换技术 + 三层转发技术。(二层交换机+基于硬件的路由器)

        在这里插入图片描述

        • 一次路由,多次交换。(图中 A B 不在同一子网)
      • 工作原理:

        • A在发送时,比较源和目的IP地址,判断是否在同一子网。
        • 若在,则二层转发
        • 若不在,则A要向“缺省网关”发出ARP请求,请求获取B的MAC地址。如果三层交换机知道B的MAC地址则回复A,否则广播。B收到广播后回复三层交换机。三层交换机将B的MAC地址保存到二层交换引擎的MAC地址表中,并回复A。
        • 然后 A 直接用B的MAC地址封装成数据帧,三层交换机接收到数据帧后直接进行二层交换。
    交换机 和 路由器 的比较
    • 二者都是存储转发设备
      • 路由器:网络层设备,检查网络层IP地址头部
      • 交换机:数据链路层设备,检查数据链路层MAC地址头部
    • 二者都有转发表
      • 路由器:使用路由算法计算转发表。基于IP地址转发
      • 交换机:通过泛洪、自学习来学习转发表。基于MAC地址转发
    VLAN(Virtual Local Area Network)

    在这里插入图片描述

    • 动机:假设CS的用户想要连入EE的交换机(如上图),如果把图中所有设备划分为一个LAN,会出现如下问题:
      • 所有2层广播流量(ARP、DHCP)会跨越整个网络
      • 安全、隐私、效率
    • VLAN定义:利用支持VLAN的交换机,可以在一个实际的物理局域网内,定义多个虚拟的局域网
    • 基于端口的VLAN:利用交换机内置的管理软件,将端口分组,使得一个单独的交换机像多个交换机那样工作

    在这里插入图片描述

    • 功能:

      • 流量隔离:从1-8号端口进/出的帧,只能访问1-8号端口
      • 动态成员:端口可以在VLAN之间动态调整
      • VLAN间转发:通过路由完成(此处通信必须通过路由器,若只有一个节点则会使用单臂路由器)
    • 跨越多个交换机的 VLAN:

      在这里插入图片描述

      • 干线端口承载定义在多个物理交换机之上的 VLAN 间的流量
      • 某一个 VLAN 内的流量帧,如果要跨域物理的交换机,需使用 802.1q 格式(以太网帧上 + 一个VLAN号)
        • 802.1q协议的作用:对干线端口之间传输的帧,添加/移除额外的头部字段

    总结与综合应用:

    参考:访问一个网页的全过程(超详细版)-CSDN

    以下的流程忽略了真实情景中的很多细节,但用于考试应该差不多了。

    • 应用层

      1. DNS 请求
        • 浏览器通过操作系统向配置的DNS服务器发起DNS请求,将域名 www.taobao.com 解析为IP地址。
      2. 生成 HTTP 请求报文
        • 获得IP地址后,浏览器构建HTTP请求报文,通常包括:请求/响应行,请求/响应头部,空白行,请求体/响应数据。
      3. 发送到传输层
        • HTTP请求报文 准备好后,发送到传输层。

      传输层

      1. TCP 三次握手
        • 在发送HTTP请求之前,浏览器与服务器需要建立TCP连接。这个过程包括:
          • SYN:客户端发送SYN报文段给服务器,表示请求建立连接。
          • SYN-ACK:服务器收到SYN后,回应SYN-ACK报文段,表示同意建立连接。
          • ACK:客户端收到SYN-ACK后,回应ACK报文段,连接建立完成。
      2. 打包为 TCP 报文段
        • 建立连接后,浏览器将HTTP请求报文加上TCP首部,形成TCP报文段。TCP首部包含源端口、目的端口、序列号等信息。
      3. 发送到网络层
        • TCP报文段 准备好后,发送到网络层。

      网络层

      1. 获取网络参数
        • 使用DHCP协议获取本地网络参数,包括IP地址、子网掩码和默认网关。
      2. 打包为 IP 数据报
        • 将TCP报文段加上IP首部,形成IP数据报。IP首部包含源IP地址、目的IP地址、TTL等信息。
      3. 发送到数据链路层
        • IP数据报 准备好后,发送到数据链路层。

      数据链路层

      1. ARP协议获取MAC地址
        • 在局域网内,如果不知道目的IP地址对应的MAC地址,使用ARP协议进行查询。ARP请求会广播到局域网,目标主机响应其MAC地址。
      2. MAC 寻址与转发
        • 数据链路层将IP数据报加上以太网帧首部,形成 以太网帧 。以太网帧包含源MAC地址、目的MAC地址等信息。
        • 以太网帧通过交换机和路由器传输,逐步到达淘宝服务器所在的局域网。

      服务器接收请求

      1. 服务器处理请求
        • 服务器的网络接口接收到以太网帧后,逐层解包,最终还原出HTTP请求报文。
        • 根据请求的URL路径、参数等,服务器处理相应的业务逻辑,生成HTTP响应。
      2. 服务器提供响应
        • 服务器将响应内容加上HTTP首部,形成HTTP响应报文,发送到传输层。

      传输层

      1. 打包为 TCP 报文段
        • 服务器将HTTP响应报文加上TCP首部,形成TCP报文段,发送到网络层。

      网络层

      1. 打包为 IP 数据报
        • 将TCP报文段加上IP首部,形成IP数据报,发送到数据链路层。

      数据链路层

      1. MAC 寻址与转发
        • 数据链路层将IP数据报加上以太网帧首部,形成以太网帧,通过网络设备逐步传回到客户端。

      客户端接收响应

      1. 四次挥手
        • 当所有数据传输完毕后,客户端和服务器通过四次挥手断开TCP连接:
          • FIN:客户端发送FIN报文段,表示不再发送数据。
          • ACK:服务器回应ACK报文段,表示收到。
          • FIN:服务器发送FIN报文段,表示不再发送数据。
          • ACK:客户端回应ACK报文段,连接断开。

      浏览器解析和渲染页面

      总结如下:

      输入URL → DNS获得IP → 生成HTTP请求报文到传输层 →

      三次握手 → 打包为TCP报文段(加含源/目的端口号的首部)发到网络层

      → DHCP协议获得IP地址、网关地址、子网掩码 → 打包为IP数据报(加含源/目的 IP 地址的首部)发送到数据链路层

      → ARP协议获取MAC地址 → 打包为以太网帧(加含源/目的MAC地址的首部)通过交换机和路由器传输到淘宝的LAN

      → 淘宝服务器

      → 服务器网络接口逐层解包,还原出HTTP请求报文,生成HTTP响应报文,发送至传输层

      → 打包为TCP报文段

      → 打包为IP数据报

      → 打包为以太网帧,逐步传回客户端

      → 四次挥手

      → 客户端逐层解包

      → 浏览器渲染展示

    第六章不写了,看实验流程,大概率代码改错。

  • 相关阅读:
    【算法-动态规划】最长公共子序列
    MySQL性能优化(硬件,系统配置,表结构,SQL语句)
    NET知识梳理—— AOP
    第 23 章 MySQL NDB Cluster 8.0
    tf.estimator
    SwiftUI4.0有趣的动画升级:新iOS16视图内容过渡动画
    【Linux】信号
    【go零基础】go-zero从零基础学习到实战教程 - 1项目表设计
    80个在线小游戏源码
    PWM配置智能小车电机-让小车动起来
  • 原文地址:https://blog.csdn.net/Catalany/article/details/139707929