计算机网络:数据链路层

循环冗余检验 CRC

在发送端先把数据划分为组,假设每组 k 个比特。现假定待传送的数据为 M。CRC 运算就是在数据 M 的后面添加供差错检验用的 n 位冗余码,构成 (k + n) 位的一个帧发送出去。

n 位冗余码可以使用以下方法得出:用二进制的模 2 运算进行 2n 乘 M 的运算,这相当于在 M 后添加 n 个 0。得到的 (k + n) 位的数除以收发双方事先商定的长度为 (n + 1) 位的除数 P,得出商是 Q 而余数是 R (n 位,比 P 少一位)。
re
假定 M = 101001 (k = 6),除数 P = 1101 (n = 3),首先对被除数 M 进行移位运算得到被除数 M' = M * 23 = 101001000

*注:模 2 除法既不向上位借位,也不比较除数和被除数的相同位数值的大小,余数首位是 1 就商 1,是 0 就商 0。

得到余数 R 为 001,拼接到实际发送的数据 M'' = 101001001,接收端接收到 M'' 后除以相同的除数 P,得到的余数如果为 0,则说明数据无差错。

网络中间设备

数据链路层的中间设备是网桥,两个以太网通过网桥连接起来后,会成为一个覆盖范围更大的以太网,而原来的每个以太网就可以称为一个网段

网桥想外暴露了多个接口,每个接口连接一个以太网,网桥内部还要维护一个转发表用来转发帧,假设有两个以太网 (A, B, C)(D, E, F),分别接在接口 12,则对应的转发表为:

地址 接口
A 1
B 1
C 1
D 2
E 2
F 2

当 A -> B,网桥收到 A 要发送给 B 的数据帧,在转发表中查询 B 所在的接口为 1,而发送方 A 所在的接口也为 1,网桥由此知道 A 和 B 同属于一个以太网,不需要自己转发,所以会丢弃该帧。

当 F -> C,网桥接收到后发现 C 的接口为 1,则将该帧在通过接口 1 转发出去。

优点:

  • 过滤通信量,增大吞吐量。
  • 不同的以太网连接后仍然保持了独立的碰撞域,系统整体的吞吐量为各个以太网之和。
  • 扩大了物理范围。
  • 可以连接不同的物理层,比如 10Mb/s 和 100Mb/s 的以太网。

缺点:

  • 转发帧时不仅需要查询转发表,还要执行退避算法,增加了时延。
  • 在 MAC 子层没有流量控制功能,当网络负荷很重时,网桥中缓存可能会溢出导致帧丢失。
  • 网桥只适合用户不多的和通信量不太大的以太网,否则可能会因为传播过多的广播信息而导致网络拥塞,这就是所谓的广播风暴。

透明网桥

透明网桥是指以太网上的站点并不知道所发送的帧要经过哪些网桥,以太网上的站点都看不见以太网上的网桥。透明网桥还是一种即插即用的设备,无需人工配置转发表就可以工作。

当网桥刚接入时,转发表是空的,之后会按照自学习算法处理收到的帧,逐步建立起转发表。原理为:若是从某个站点 A 发送的帧从接口 x 进入某网桥,那么从这个接口出发沿相反方向一定可以把一个帧传送到 A。

例如有以下网络结构 (A, B) -- [1] X [2] -- (C, D) -- [1] Y [2] -- (E, F)XY 表示透明网桥:

A -> B 时,网桥 X 接收到转发帧后发现自身的转发表中没有 A 对应的接口记录,于是新增一条记录,并将该帧通过除去 A 对应的接口 1 之外的接口转发出去,网桥 X 的转发表变为:

地址 接口
A 1

网桥 Y 接收到后同样会在自身转发表中新增一条记录,然后通过接口 2 转发出去,网桥 Y 的转发表变为:

地址 接口
A 1

F -> C 时,Y 的转发表中会新增一条 F:2 的记录,然后通过接口 1 转发出去,Y 的转发表变为:

地址 接口
A 1
F 2

X 接收到以后会在转发表中新增一条 F:2 的记录,然后通过接口 1 转发出去,X 的转发表变为:

地址 接口
A 1
F 2

B -> A 时,X 发现转发表中无 B 的记录,于是新增 B:1,然后发现转发表中有 A 的记录,并且与 B 属于统一接口,便知道无需自己转发,X 的转发表变为:

地址 接口
A 1
F 2
B 1

实际上,网桥除了会记录地址和接口以外,还会记录帧进入该网桥的时间。由于网络拓扑结构经常会发生变化,网桥会周期性扫描转发表,将一段时间以前的记录删除,使得转发表总能反应最新的网络拓扑状态。

透明网桥还使用了一个生成树算法,即互联在一起的网桥在彼此通信后,就能找出原来的网络拓扑的一个子集,在这个子集中,整个连通的网络中不存在环路,即在任何两个站之间只有一条路径。该算法即为最小生成树算法,常用的有普利姆 (Prim) 和克鲁斯卡尔 (Kruskal) 算法。

源路由网桥

透明网桥最大的优点就是即插即用,但是对网络资源的利用还不充分。于是另外一种有发送帧的源站负责路由选择的网桥诞生了,这就是源路由网桥。

源路由网桥是在发送帧时,把详细的路由信息放在帧的首部中。为了发现合适的路由,源站以广播的形式向欲通信的目的站发送一个发现帧作为探测用。发现帧将在整个扩展的以太网中沿着所有可能的路由传送。在传送过程中,每个发现帧都记录所经过的路由、当这些帧发现达到目的站时,就沿着各自的路由返回源站。源站得知这些路由后, 从所有可能的路由中选择出一个最佳路由。以后,凡是从这个源站想该目的站发送的帧的首部,都必须携带源站所确定的这一路由信息。

发现帧还可以帮助源站确定整个网络可以通过的帧的最大长度。

源路由网桥对主机是不透明的,主机必须知道网桥的标识以及连接到哪一个网断上。使用源路由网桥可以利用最佳路由。若在两个以太网之间使用并联的源路由网桥,则可使通信量较平均的分配给每一个网桥。使用透明网桥则只能使用生成树,而使用生成树一般并不能保证所使用的路由是最佳的,也不能在不同的链路中进行负载均衡。

多接口网桥——以太网交换机

交换机的每个接口都直接与一个单个主机或另一个集线器相连(普通交换机则是和一个网段相连),并且一般都工作在全双工模式下。交换机可以通过连通多对接口,使每一对相互通信的主机都能像独占传输媒体一样,无碰撞的传输数据。和透明网桥类似,交换机也是一种即插即用的设备,转发表也是通过自学习建立的。当两个站通信完成后就断开连接。