互联网协议 — 数据交换技术
Posted 范桂飓
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了互联网协议 — 数据交换技术相关的知识,希望对你有一定的参考价值。
目录
文章目录
数据交换技术
交换技术是随着电话通信的发展和使用而出现的通信技术。电话刚开始使用时,只能实现固定的两个人之间的通话,随着用户的增加,人们开始研究如何构建连接多个用户的电话网络,以实现任意两个用户之间的通信。
传统的 2 层交换技术
从广义上讲,任何数据的转发都可以叫做交换(Switch)。但是,传统的、狭义的第 2 层交换技术,仅包括数据链路层的转发。
二层交换机主要用在小型局域网中,计算机数量在二、三十台以下,这样的网络环境下,广播包影响不大,二层交换机的快速交换功能、多个接入端口和低廉价格,为小型网络用户提供了完善的解决方案。交换式局域网技术使专用的带宽为用户所独享,极大地提高了局域网传输的效率。
具有路由功能的 3 层交换技术
在大规模局域网中,为了减小广播风暴的危害,就必须把大型局域网按功能或地域等因素划分成多个小局域网。与此同时,就出现了不同子网间的互访需求,但这是二层交换技术无法实现的。为了从技术上解决这个问题,网络厂商利用第 3 层交换技术开发了三层交换机,又称路由交换机,它是传统交换机与路由器的智能结合。简单地说,可以处理网络第 3 层数据转发的交换技术就是第三层交换技术。
从硬件上看,在第三层交换机中,与路由器有关的第 3 层路由硬件模块,也插接在高速背板/总线上。这种方式使得路由模块可以与需要路由的其它模块间,高速交换数据。三层交换机是为 IP 设计的,接口类型简单,拥有很强的 3 层包处理能力,价格又比相同速率的路由器低得多,非常适用于大规模局域网络。
具有网络服务功能的 7 层交换技术
第 7 层交换技术通过逐层解开数据包的每层封装,并识别出应用层的信息,以实现对数据内容的理解。可以处理网络应用层数据转发的交换技术就是第 7 层交换技术。其主要目的是充分利用带宽资源,对互联网上的应用、内容进行管理,提高网络服务水平,数据流优化和智能负载均衡,完成互联网向智能化的转变。第 7 层交换技术通过应用层交换机实现了所有高层网络的功能,使网络管理者能够以更低的成本,更好地分配网络资源。
从硬件上看,七层交换机将所有功能集中在一个专用的特殊应用集成电路或 ASIC(Application-specific Integrated Circuit,专用集成电路)上。ASIC 比传统路由器的 CPU 便宜,而且通常分布在网络端口上,在单一设备中包括了 50 个 ASIC,可以支持数以百计的接口。
网桥(Bridge)
网桥是一种数据链路层设备,实现中继,对数据帧进行转发的技术,除了对所接收的信号进行放大之外,还可以根据 MAC 地址来划分区块,以此来隔离冲突域,将多个二层物理网段在数据链路层连接起来的网络设备。一个网桥就是一个输入到输出的桥接(bridging)
下图所示,物理网段 1 和物理网段 2 中的主机分别通过集线器集中连接起来,两个物理网段各自形成一个冲突域。而网桥的背板信道不是共享的(每个端口的数据收发都有一条单独的信道),所以网桥隔离了两个冲突域。
通过上面的描述可以感受到,网桥最核心的作用就是:与集线器配合将规模较大的局域网划分成多个既互相对独立又能互相通信的两个局域网子网段(划分冲突域),从而改善各个子网段的性能、可靠性和安全性。
网桥的主要缺点:由于网桥在进行数据帧转发前会对数据帧进行缓冲,与中继器相比引入了更多的时延。而且网桥不提供流控功能,因此在流量较大时有可能会造成过载,从而丢失数据帧,不能最佳地利用网络带宽。所以网桥通常用于链接数量不多的,具有相同或相似体系结构网络系统。
网桥基于 MAC 的转发原理
- 缓存:网桥首先会对收到的数据帧进行缓存并处理;
- 过滤:判断入帧的目标节点是否位于发送这个数据帧的物理网段中(同一端口中),如果是,网桥就不把帧转发到网桥的其他端口;
- 转发:如果数据帧的目标节点位于另一个网络,网桥就将帧发往正确的物理网段(向另一端口转发);
网桥的 MAC 自学习原理
网桥还可以基于物理网段的 MAC 地址进行学习,并根据 MAC 地址表对数据帧进行交换。MAC 地址表,也叫 MAC-Port 映射表,也就是通常所说的 CAM(Content Addressable Memory,内容可寻址存储器)表,保存的是对应 MAC 地址主机与所连接的网桥(或交换机)端口的映射。
-
当网桥收到集线器的广播帧后,网桥会把数据帧中的源 MAC 地址和目的 MAC 地址与网桥缓存中保存的 MAC 地址表进行比较。
-
最初,网桥的缓存中是没有任何 MAC 地址的,所以一开始它也不知道目标主机和源主机都在哪个物理网段上,收到的所有数据帧都直接以泛洪(Flood)方式转发到另一个端口上,同时会把数据帧中的源 MAC 地址所对应的网桥端口记录下来。
-
在数据帧被某个 PC 接收后,也会把对应目的 MAC 地址所对应的物理网段记录在缓存中的 MAC 表中。这样,经过多次 “学习”,就可以在 MAC 地址表中把整个网络中各主机 MAC 地址与对应的物理网段全部记录下来。因为网桥的端口通常是连接集线器的,所以一个网桥端口会与多个主机 MAC 地址进行映射。
-
当网桥收到的数据帧中源 MAC 地址和目的 MAC 地址都在网桥 MAC 地址表中可以找到时,网桥会比较这两个 MAC 地址是否属于同一个物理网段。如果是同一物理网段,则网桥不会把该帧转发到下一个端口,直接丢弃,起到冲突域隔离作用。相反,如果两个 MAC 地址不在同一物理网段,则网桥会把从一个物理网段发来的数据帧转发到连接另一个物理网段上,然后再通过所连接的集线器进行复制方式的广播。
MAC 地址表的表项可以由管理员手动绑定创建,也可以由网桥(或交换机)自动学习得到。如果在交换机上,可以通过一些命令(如 Cisco 交换机是使用 show mac-address-table
)查看。下面是一个在交换机上查看 MAC 地址和端口映射表的示例,其中列出了交换机中为 CPU 分配的静态(Static)MAC 地址和通过学习功能自动学习得到的动态(Dynamic)MAC 地址,其中的 Ports 列显示的是对应 MAC 地址主机所连接的端口,VLAN 列则为对应主机连接端口所属的 VLAN。
switch # show mac-address-table
Mac Address Table
-------------------------------------------
Vlan Mac Address Type Ports
---- ----------- -------- -----
All 0100.0ccc.cccc STATIC CPU
All 0100.0ccc.cccd STATIC CPU
All ffff.ffff.ffff STATIC CPU
1 0000.0c07.accb DYNAMIC Gi0/1
1 0002.8501.de00 DYNAMIC Gi0/1
1 0015.f915.8e80 DYNAMIC Gi0/1
1 0016.7694.c009 DYNAMIC Gi0/1
1 0020.ed14.399c DYNAMIC Gi0/1
1 0030.b637.8e10 DYNAMIC Gi0/1
1 0050.ba10.404a DYNAMIC Gi0/1
100 0007.847b.c40a DYNAMIC Gi0/1
100 00d0.d3a4.7cec DYNAMIC Gi0/1
110 0006.28bb.71c0 DYNAMIC Gi0/1
110 00d0.d3a4.7cec DYNAMIC Gi0/1
120 0000.b497.8250 DYNAMIC Fa0/20
120 0002.b3d8.68e7 DYNAMIC Fa0/20
120 0002.b3d8.6928 DYNAMIC Fa0/20
120 0003.a03a.03fc DYNAMIC Fa0/19
交换机(Switch)
-
传统 Switch:可以看成是更先进的网桥,是由多个网桥集成的设备,也工作在数据链路层。一个交换机口的输入到另一个交换机口的输出也可以认为是一个 bridging(桥接)。交换机中的 MAC 地址表实际上就是为了网桥能工作而存在的,提供基于 MAC 地址的转发功能。一个 N 口的交换机可以看出是
N*(N-1)
个网桥的集合。 -
三层 Switch:就是包含了 L3 Routing 功能的交换机。
交换机的每一个端口就是一个冲突域,同时可以通过配置交换机端口组的方式来划 VLAN。同一个 VLAN 中主机的广播包会在 VLAN 对应的端口组中进行广播,这也是基于交换机的 MAC-Port 映射表来实现的。
交换机的工作原理
-
交换机根据收到数据帧中的源 MAC 地址建立该地址与交换机端口的映射关系,并将其写入 MAC-Port 映射表中。
-
交换机将数据帧中的目的 MAC 地址与已建立的 MAC-Port 映射表进行比较,以决定在哪个端口进行转发。
-
如果数据帧中的目的 MAC 地址不在 MAC 地址表中,则向所有端口转发。这一过程称为泛洪(Flood)。当收到回应后,交换机就自动 “学习” 到了一个新的 MAC 地址与端口的对应关系并写入到内存中的 MAC-Port 映射表。
-
广播帧和组播帧向所有的端口转发。
如上图,主机 A 发送的报文被送到交换机 S1 的 eth0 口,由于 eth0 与 eth1、eth2 桥接(交换机任意两个端口之间为桥接关系)在一起,故而报文被复制到 eth1 和 eth2,并且发送出去,然后被主机 B 和交换机 S2 接收到,而 S2 又会将报文转发给主机 C、D。
若主机 C 向主机 A 发送一个报文,报文来到了交换机 S1 的 eth2 网口上。假设 S1 刚刚启动,还没有学习到任何地址,就不会知道这个报文应该从哪个端口转发了,这时只好将报文转发到所有的端口(接收报文的那个端口除外),这就是所谓的二层网络泛洪(Flood),将报文转发给 eth0 和 eth1。同时,S1 会根据报文的源 MAC 地址,记录下 “主机 C 是通过本交换机的 eth2 端口接入的”。于是当主机 A 向 C 发送报文时,S1 只需要将报文转发到 eth2 网口即可。而当主机 D 向 C 发送报文时,假设交换机 S2 将报文转发到了 S1 的 eth2 网口(实际上 S2 也多半会因为地址学习而不这么做),则 S1 会直接将报文丢弃而不做转发(因为主机 C 就是从 eth2 接入的,意味着 D 和 C 在同一个交换机上)。
然而,网络拓扑不可能永不改变。假设我们将主机 B 和主机 C 换个位置,当主机 C 发出报文时(不管发给谁),交换机 S1 的 eth1 口收到报文,于是交换机 S1 会更新其学习到的地址,将原来的 “主机 C 是通过 eth2 网口接入的” 改为 “主机 C 是通过 eth1 网口接入的”。但是如果主机 C 一直不发送报文呢?S1 将一直认为 “主机 C 是通过 eth2 网口接入的”,于是将其他主机发送给 C 的报文都从 eth2 转发出去,结果报文就丢失了。所以交换机的地址学习需要有超时策略。对于交换机 S1 来说,如果距离最后一次收到主机 C 的报文已经过去一定时间了(默认为 5 分钟),则 S1 需要忘记 “主机 C 是通过 eth2 网口接入的” 这件事情。这样一来,发往主机 C 的报文又会被转发到所有网口上去,而其中从 eth1 转发出去的报文将被主机 C 收到。
需要注意的是,当一台交换机收到一个数据帧时,分析数据帧头部的目的地址,并地址表中进行查找,如果有匹配项,则将数据帧从该匹配项所关联的交换机端口交换出去,如果没有匹配项,则将数据帧进行泛洪(Flood),将该数据帧在除了接收帧之外的所有端口上发出去。在数据网络中,如果交换机之间存在环路,泛洪数据帧将在环路中循环交换转发产生广播风暴,占用所有网络资源,以致整个网络没有资源传送其他有效数据帧而瘫痪。
网桥与交换机的区别
网桥和交换机同样都有一张 MAC-PORT 映射表(CAM),不一样的是:网桥的 MAC 地址表是一对多的(一个 Port 对多个 MAC 地址);而交换机的 CAM 表却是一对一的(一个 Port 对应一个 MAC 地址),如果一个端口有了新的 MAC 地址,它不会新增 MAC-Port 记录,而是修改原有的记录。对比如下列两张图:
VS
在现代的机房中,已经很难看见网桥和集线器设备了,基本都是物理服务器与交换机直连的架构,一台物理服务器就是一个冲突域,极大的提高了网络带宽的性能。
以上是关于互联网协议 — 数据交换技术的主要内容,如果未能解决你的问题,请参考以下文章