第五章复习重点
- 奇偶校验(一比特 & 二维)
- 校验和
- CRC
- ALOHA效率的计算
- CSMA
- MAC(比较IP地址和MAC地址的不同)
- 发送数据报到子网以外的例子
- 泛洪和自学习
- 交换机和路由器(个人感觉还是有可能考吧)
- VLAN
- 逛淘宝的Web历程(综合应用)
第五章复习大纲
- 理解链路层服务的主要功能
- 差错检查、纠错
- 共享广播信道:多点接入问题
- 链路层寻址
- 局域网技术:Ethernet、VLANS
- 链路层技术的实现
5.1 链路层概述
-
术语:
- 节点(nodes):主机和路由器
- 链路(links):沿着通信路径连接相邻节点的通信信道。分为:有线 & 无线。
- 数据帧(frame):第二层的分组,封装了的数据报
-
职责:将第三层网络层封装的数据报 从一个节点传到与该节点 直接有物理链路相连的 另一个节点
-
数据报在不同链路上发送:例如在第一段链路上采用以太网技术,在中间链路采用帧中继技术,在最后一跳链路采用802.11无线以太网技术。(类比先坐小汽车到机场,到机场又坐飞机,最后坐火车)
三段链路采取不同的链路层协议(不同的协议提供不同的服务,数据传输 靠谱/不靠谱)
-
链路层提供的服务:
- 封装成帧,接入链路
- 在相邻节点间可靠传输数据帧
- 流量控制
- 差错检查
- 错误纠正
- 半双工和全双工(半双工:链路的两个节点都可以发送数据,但是不能同时发)
-
区分两个服务:
-
链路层提供的服务:
-
将数据报封装成数据帧,增加相应的头部和尾部信息。如果是共享链路,则接入链路。
不同于 IP 地址,在数据帧头部用 MAC 地址来标志 源/目的MAC 地址
-
-
以太网能够提供的链路层服务:
- 在相邻节点之间可靠传输数据帧,当传输链路是比特错误率很低的链路时,例如光纤和双绞线,很少使用可靠数据传输机制;
- 而在无线链路这样的高比特错误率链路时,通常会增加可靠数据传输机制。
- 为什么要在链路层和端到端都实现可靠传输?
答:链路层负责处理 局部链路上的错误和重传,确保邻近设备之间的传输可靠性;端到端层次则负责 整个路径的错误检测和纠正,确保数据完整性和顺序。这种多层次的策略可以更有效地应对不同类型的传输问题,提升整体网络通信的可靠性和性能。
- 既然在传输层实现了端到端的可靠数据传输,为什么还需要在链路层提供可靠数据传输呢?
答:这种多层次的设计提供了局部错误的 快速处理、减少了传输层的负担、提高了局部链路的效率、确保了不同网络技术之间的互操作性,并满足了不同应用和服务的需求。通过在多个层次上提供可靠性,可以构建一个更健壮、高效的网络传输系统。
-
-
链路层实现的位置:主机、路由器
-
主机:网络适配器(网卡)上
-
以太网卡,802.11卡;以太网芯片组
-
实现链路层和物理层功能
-
发送方:
- 封装数据报为数据帧
- 增加差错检测比特,可靠数据传输,流量控制等机制
-
接收方
- 执行检查错误、可靠数据传输、流量控制
- 抽取数据报,将其递交上层(网络层)
-
-
5.2 差错检测和纠错
奇偶校验
1. 一比特奇偶校验
- 发送方:在要发送的信息 D(d位)后面附加一个奇偶校验位,使得1的个数是奇数(奇校验)或偶数(偶校验),将这 d+1 位一起发送
- 接收方:
- 检测收到的信息(d+1位)中 1 的个数
- 奇校验:如果发现偶数个1,至少有一个比特发生差错。
- 偶校验:如果发现奇数个1,至少有一个比特发生差错。
- 可以查出任意奇数个错误,但不能发现偶数个错误(因为偶数个错误奇偶性是匹配的)。
- 若比特差错概率很小,差错独立发生,那么一比特奇偶校验就可以满足要求了
- 若差错集中一起出现,一帧中未检测差错的概率达50%
- 检测收到的信息(d+1位)中 1 的个数
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 比特)
- 余数为0:传输正确,去掉尾部的r位,得到数据D
- 余数不为0:传输发生差错
- 用生成多项式 G 去除接收到的 DR(d+r 比特)
-
-
模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 个节点有数据发送时,它能以 R R R bps的速率发送
-
当 M M M 个节点要发送数据时,每个节点的平均发送速率为 R M \frac{R}{M} MR
-
完全分散:
-
不需要主节点协调传输
-
不需要时钟、时隙同步
-
-
简单
-
-
类型:
- 信道划分协议:信道分成小的“片”(时隙)
- 随机访问协议(满足理想情况的第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!λke−λ,
λ
\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 计算的结果一致。
- 泊松分布:
P
(
X
=
k
)
=
λ
k
k
!
e
−
λ
P(X=k)=\frac{\lambda ^{k}}{k!}e^{-\lambda}
P(X=k)=k!λke−λ,
λ
\lambda
λ 是平均帧到达率。可以表示单位时间内所有帧每个状态的概率(已经算上所有帧了,所以就不用 乘以N 了)
-
CSMA(Carrier Sense Multiple Access):载波侦听多路访问
-
载波侦听:某个节点在发送之前,先监听信道
-
信道忙:有其他节点正在往信道发送帧,该节点随机等待
-
信道空:该节点开始传输整个数据帧
自己说话之前先听一下有没有其他人正在说话,不要打断别人!
-
-
特点:
-
发前监听,可减少冲突
-
由于 传播时延 的存在,仍然可能出现冲突,并造成信道浪费。
信道浪费:节点没有进行冲突检测,即使发生冲突,节点仍然继续传输它们的帧。但是该帧已经被破坏!
距离和传播时延对概率有影响
-
-
-
带冲突检测的 CSMA(CSMA/CD,Collision Detection)
-
增加了“冲突检测”
- 一旦检测到冲突就立即停止传输,尽快重发
-
目的:缩短无效传送时间,提高信道利用率
-
以太网采用 CSMA/CD
-
运行机制
-
适配器从网络层得到分组,创建帧
-
如果适配器侦听到信道空闲,开始传送帧。如果忙,等到信道空闲才传送帧
-
如果适配器在传送整个帧时,都没有检测到其他传输,则完成该帧的传送
-
如果适配器在发送中检测到其它传送,就放弃传送,并发送一个拥塞信号
-
放弃传送后,适配器进入 指数回退阶段 ,假设该帧经过 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
-
-
-
轮流协议:
-
回顾 多路访问协议的理想特性:
- 只有一个节点活动时,吞吐量 R R R bps;
- 有 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 地址的不同?
- 层级和用途
- IP 地址用于网络层,帮助在不同网络中路由数据包。主要用于确定设备在网络中的位置
- MAC 地址用于数据链路层,帮助在同一局域网内传输数据包。用于唯一标志网络接口。
- 类型:
- IP 地址有 IPv4 和 IPv6 两种类型,可以是静态(DHCP分配)或者静态手动分配
- MAC 地址:硬编码到网络接口硬件中的 48 位地址,通常是固定不变的。
- 可见性和范围:
- IP 地址可以跨网络互连,全球唯一,互联网上可见
- MAC 地址仅在LAN使用,互联网上不可见
- 结构:
- 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 上的每个节点(主机、路由器)都有这个表
- 为某些局域网节点进行 <IP address , MAC address , TTL> 映射
- TTL(存活时间)通常为20分钟,20分钟后该表项会被删除
- 假设 主机A 希望发送数据报给 主机 B:
- 首先查找 B 的 MAC 地址是否在 A 的 ARP 映射表中
- 如果不在,那么 A 广播 ARP 查询分组,其中包含 B 的 IP 地址。(查询分组是一个广播帧,即目的MAC地址是FF-FF-FF-FF-FF-FF)
- 局域网中所有的节点都会收到 ARP 查询分组,其余主机发现查询的不是本机的MAC地址,因此不进行回应。只有 B 收到ARP查询分组后,返回 B 的 MAC 地址给主机 A ,包含有 B 的 MAC 地址的帧发送给主机 A (单播)。
- 于是,主机A在自己的ARP表中缓存B主机的IP地址和MAC地址。
- 注意:ARP是即插即用的(和DHCP一样)——节点创建 ARP 表不选哟网络管理员的干预。
- 漏洞:ARP 欺骗攻击!
广播在 计网 中的几个应用:
- ARP 广播(数据链路层的协议)
- DHCP 广播(应用层的协议)
- 路由器和邻居广播,更新路由表(网络层)
- ARP 表:LAN 上的每个节点(主机、路由器)都有这个表
-
发送数据报到子网以外的例子:
整个过程:
- A的网络层构建IP数据报,传给数据链路层封装成 数据帧(由于主机A发现接收主机B和自己不在同一LAN,所以目的MAC地址是路由器左边端口的MAC地址)
- 数据帧到达路由器后,接收并抽出数据报递交网络层,网络层根据IP地址判断该数据报要往右边端口转发,并且发现接受主机B和自己在同一LAN。因此数据帧的源MAC地址改为路由器右端的MAC地址,目的MAC地址改为接收主机B的。
注:整个过程只改变源/目的 MAC 地址,但是源/目的IP地址不会变!
WAN接口:路由器的广域网(WAN)接口通常有一个MAC地址,用于连接到外部网络或ISP(互联网服务提供商)。
LAN接口:路由器的局域网(LAN)接口通常有多个MAC地址,每个接口(如有多个以太网端口)都有一个独立的MAC地址,用于与局域网中的设备通信。
无线接口:如果路由器支持无线功能,它的无线接口(Wi-Fi)也会有一个MAC地址,用于无线通信。
-
以太网:迄今为止最著名的 有线 局域网技术
-
成功的原因:
- 第一个广泛使用的局域网技术
- 简单、便宜
- 版本不断更新,数据速率更高、成本更低
-
物理拓扑结构分为:总线(效率低,已淘汰);星形(目前流行,中心是交换机,每个端口运行一个独立的以太网协议,节点之间相互不发生碰撞,但不能2个同时给1个说)
-
以太网链路层控制技术
-
媒体访问控制(MAC)子层
- 数据封装:帧同步、帧定界;地址确定;错误检测机制
- 媒体访问管理:媒体分配(避免冲突);冲突解决
-
-
以太网的帧结构:
- 前同步码用于帧同步(收发双方的时钟同步,接收方一旦收到连续的8字节前同步码,可以确定有帧传过来),前同步码是无效信号,接收方收到后删除,不向上层传;CRC也不校验前同步码
- 类型:网络层协议的类型编号
- 数据:以太网的最大传输单元 MTU 是1500字节(若超出则要分段),最小长度是46字节(若小于要填充够46字节,接收方会去除填充的内容)
- 以太网:不可靠的无连接服务
- 无连接服务:通信时,不需要先握手
- 不可靠服务:收到的帧可能含比特差错
- 收到正确帧,不发确认帧
- 收到出错帧,丢弃但不发否定帧
- 发送适配器不重发
- 丢弃数据的恢复通过终端传输层的可靠数据传输机制来实现
- 以太网的MAC协议:使用无时隙的 CSMA/CD(二进制指数回退)
-
-
链路层交换机:链路层设备
-
工作:存储转发数据帧
- 对于到达交换机的数据帧,交换机首先检查其目的MAC地址,然后根据MAC地址,有选择的将数据帧转发到一个或多个输出链路;
- 如果输出链路是一个共享网段,将使用CSMA/CD来访问共享链路。
-
特点:
- 透明:主机不关心是否存在交换机(当一个主机向另一个主机发送数据帧时,它并不会知道某个交换机会收到这个数据帧,并将其转发到另一个节点)
- 即插即用(同 DHCP 、ARP)、自学习(不需要手工配置,有类似路由表的 交换机转发表 )
-
加入交换机后,支持多个节点同时传输数据帧,而不会发生碰撞(交换机可以缓存数据帧)
- 每个输入链路都使用以太网协议,全双工、无碰撞。转发率高。
-
交换机的过滤/转发过程:
- 首先,记录到达链路和发送主机的MAC地址;
- 第二步,使用数据帧的目的MAC地址,在转发表中进行检索;
- 如果在转发表条目中找到对应的MAC地址,则执行第 4 点;否则执行第 5 点
- 如果目的MAC地址对应的端口与数据帧的到达端口相同,说明接收主机属于同一个共享网段,则直接将该数据帧丢弃。因为接收主机也会收到该数据帧;否则,转发端口与达到端口不一致,则将该数据帧转发到指定端口。结束。
- 交换机将该数据帧向除到达端口之外的所有端口转发,也就是泛洪。结束。
-
交换机互联时:
问:如果主机A发送数据帧给主机G,那么交换机S1是怎么知道需要先把数据转发到S4和S3的?
答:通过 泛洪和自学习。
- 当数据帧到达S1时,可能S1的转发表中没有G主机的MAC地址的表项,于是S1将该数据帧泛洪
- 那么S4的端口也会收到这个泛洪的数据帧,如果S4的转发表也没有G主机的MAC地址对应的表项,则S4会继续泛洪
- 于是S3也会收到数据帧,如果S3的转发表仍然没有G主机的MAC地址,则S3会继续向它的端口泛洪,直到数据帧到达G主机。
-
多个交换机自学习:
-
问:交换机在识别目的MAC地址和源MAC地址的过程中是否需要接收并缓存完整的帧呢?
答:两种模式:
- 快速分组(直通交换):交换机只需要读取前几个字节就可以做出转发决定,而不需要缓存整个帧。这样可以显著降低延迟。
- 存储转发:交换机会接收并检查整个帧,包括数据部分和帧校验序列(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协议的作用:对干线端口之间传输的帧,添加/移除额外的头部字段
总结与综合应用:
以下的流程忽略了真实情景中的很多细节,但用于考试应该差不多了。
-
应用层
- DNS 请求
- 浏览器通过操作系统向配置的DNS服务器发起DNS请求,将域名
www.taobao.com
解析为IP地址。
- 浏览器通过操作系统向配置的DNS服务器发起DNS请求,将域名
- 生成 HTTP 请求报文
- 获得IP地址后,浏览器构建HTTP请求报文,通常包括:请求/响应行,请求/响应头部,空白行,请求体/响应数据。
- 发送到传输层
- HTTP请求报文 准备好后,发送到传输层。
传输层
- TCP 三次握手
- 在发送HTTP请求之前,浏览器与服务器需要建立TCP连接。这个过程包括:
- SYN:客户端发送SYN报文段给服务器,表示请求建立连接。
- SYN-ACK:服务器收到SYN后,回应SYN-ACK报文段,表示同意建立连接。
- ACK:客户端收到SYN-ACK后,回应ACK报文段,连接建立完成。
- 在发送HTTP请求之前,浏览器与服务器需要建立TCP连接。这个过程包括:
- 打包为 TCP 报文段
- 建立连接后,浏览器将HTTP请求报文加上TCP首部,形成TCP报文段。TCP首部包含源端口、目的端口、序列号等信息。
- 发送到网络层
- TCP报文段 准备好后,发送到网络层。
网络层
- 获取网络参数
- 使用DHCP协议获取本地网络参数,包括IP地址、子网掩码和默认网关。
- 打包为 IP 数据报
- 将TCP报文段加上IP首部,形成IP数据报。IP首部包含源IP地址、目的IP地址、TTL等信息。
- 发送到数据链路层
- IP数据报 准备好后,发送到数据链路层。
数据链路层
- ARP协议获取MAC地址
- 在局域网内,如果不知道目的IP地址对应的MAC地址,使用ARP协议进行查询。ARP请求会广播到局域网,目标主机响应其MAC地址。
- MAC 寻址与转发
- 数据链路层将IP数据报加上以太网帧首部,形成 以太网帧 。以太网帧包含源MAC地址、目的MAC地址等信息。
- 以太网帧通过交换机和路由器传输,逐步到达淘宝服务器所在的局域网。
服务器接收请求
- 服务器处理请求
- 服务器的网络接口接收到以太网帧后,逐层解包,最终还原出HTTP请求报文。
- 根据请求的URL路径、参数等,服务器处理相应的业务逻辑,生成HTTP响应。
- 服务器提供响应
- 服务器将响应内容加上HTTP首部,形成HTTP响应报文,发送到传输层。
传输层
- 打包为 TCP 报文段
- 服务器将HTTP响应报文加上TCP首部,形成TCP报文段,发送到网络层。
网络层
- 打包为 IP 数据报
- 将TCP报文段加上IP首部,形成IP数据报,发送到数据链路层。
数据链路层
- MAC 寻址与转发
- 数据链路层将IP数据报加上以太网帧首部,形成以太网帧,通过网络设备逐步传回到客户端。
客户端接收响应
- 四次挥手
- 当所有数据传输完毕后,客户端和服务器通过四次挥手断开TCP连接:
- FIN:客户端发送FIN报文段,表示不再发送数据。
- ACK:服务器回应ACK报文段,表示收到。
- FIN:服务器发送FIN报文段,表示不再发送数据。
- ACK:客户端回应ACK报文段,连接断开。
- 当所有数据传输完毕后,客户端和服务器通过四次挥手断开TCP连接:
浏览器解析和渲染页面
总结如下:
输入URL → DNS获得IP → 生成HTTP请求报文到传输层 →
三次握手 → 打包为TCP报文段(加含源/目的端口号的首部)发到网络层
→ DHCP协议获得IP地址、网关地址、子网掩码 → 打包为IP数据报(加含源/目的 IP 地址的首部)发送到数据链路层
→ ARP协议获取MAC地址 → 打包为以太网帧(加含源/目的MAC地址的首部)通过交换机和路由器传输到淘宝的LAN
→ 淘宝服务器
→ 服务器网络接口逐层解包,还原出HTTP请求报文,生成HTTP响应报文,发送至传输层
→ 打包为TCP报文段
→ 打包为IP数据报
→ 打包为以太网帧,逐步传回客户端
→ 四次挥手
→ 客户端逐层解包
→ 浏览器渲染展示
- DNS 请求
第六章不写了,看实验流程,大概率代码改错。