目录
- 前言
- 一、中继器、集线器
- 1.1 中继器
- 1.2 集线器
- 二、网桥、交换机
- 2.1 网桥
- 2.1.1 认识网桥
- 2.1.2 网桥的工作原理
- 2.1.3 生成树网桥
- 2.2 交换机
- 2.2.1 交换机的特征
- 2.2.2 交换机的交换模式
- 2.2.3 交换机的功能
- 三、路由器、网关
- 3.1 路由器的介绍
- 3.2 路由器的工作过程
- 3.2.1 前置知识
- 3.2.2 路由器的工作过程
- 总结
前言
理解这些设备的关键是他们运行在不同的层次上。之所以存在不同层的问题,是因为不同的设备使用不同的信息来决定如何交换。在典型的场景中,用户生成某些数据,然后将这些数据发送给一台远程的机器。这些数据先被传输给传输层,传输层会加上一个头(比如TCP)头,然后将结果单元往下传递给网络层。网络层也会加上一个头,形成网络层数据包(比如,形成一个IP包)。然后,该分组再往下到达数据链路层,数据链路层加上它自己的头和校验和(CRC)并将结果帧交给物理层传送出去。
一、中继器、集线器
1.1 中继器
中继器是模拟设备,主要用来处理自己所连线缆上的信号。在一个线缆上的信号被清理、放大,然后在被放到另一个线缆上。中继器并不理解帧、数据包和帧头,它们只知道把比特编码成电压的符号。例如,在经典以太网中,为了将电缆的最大长度从500米扩展到2500米,以太网允许最多使用4个中继器来增强信号。
1.2 集线器
集线器有许多条输入线路,它将这些输入线路连接在一起。从任何一条线路上到达的帧都被发送到所有其他的线路上。如果两帧同时到达,它们将会冲突,就好像它们在同一根同轴电缆上遇到后发生碰撞一样。连接到同一个集线器上的所有线路必须以同样的速度运行。集线器与中继器不同,它们(通常)不会放大入境信号,并且可以有多个输入线路。但是,集线器与中继器一样,都属于物理层设备,因而不会检查链路层地址,也不任何方式使用该地址。
二、网桥、交换机
2.1 网桥
2.1.1 认识网桥
网桥是一种工作在数据链路层的网络设备,通过检查数据链路层地址来转发帧。
网桥连接两个或多个局域网。与集线器一样,一个现代网桥有多个端口,通常具有4~48条某个类型的输入线。与集线器不同的是,网桥的每个端口被隔离成它自己一个冲突域;如果端口是全双工的点到点线路,则需要用到CSMA/CD算法。
网桥比集线器提供了更好的性能,隔离网桥端口还意味着输入线路可以不同的速度运行,甚至可以是不同的网络类型。网桥具有连接到10、100、1000Mbps以太网的端口。从一个端口接受帧并从另一个端口发送出去,需要网桥内部进行缓冲。如果帧的速度大于网桥的重发速度,网桥就可能耗完缓冲空间而不得不丢弃帧。
例如,一个千兆以太网以最快的速度向一个10Mbps以太网倾斜比特流,网桥将不得不缓冲这些比特流,接受端的网桥将可能耗完缓冲空间。即使所有的端口都以相同的速度运行,这个问题还是会存在,因为有可能多个端口往相同的端口发送帧。
网桥最初被用来连接不同种类的局域网,但由于不同局域网之间的差异,比如802.11对服务质量和安全性的要求,而以太网却没有这些概念,网桥处理这些问题的能力不够好。
因此,现代网桥(交换机)通常工作在一种网络类型,用于连接同一种网络的不同设备,然后用路由器连接不同类型的网络。
两个局域网桥接在一起的拓扑情况分两种情况:
- 连接两个多点LAN的网桥
- 连接7个点到点站点的网桥(包括集线器)
2.1.2 网桥的工作原理
每个网桥工作在混杂模式下,它接受隶属于每个端口的站发送的帧。网桥必须决定是否转发或丢弃收到的每一帧。
对于一个入境帧,它在网桥中的路由过程取决于这个入境帧从哪个端口来(源端口),以及它要往哪个目标地址去(目标端口)。整个转发过程如下:
- 如果去往目标地址的端口与源端口相同,则丢弃该帧
例如,
在图一的拓扑结构中,站A往站B发送一个帧,网桥B1查询哈希表得知,该帧的去往目标地址的端口与源端口相同,则丢弃该帧。
在图二的拓扑结构中,在点对点的链接中,用集线器把一组计算机连接到网桥,站E和站F都连接到集线器H1,进而在连接到网桥B2。如果站E发送一个帧给站F,根据集线器的工作方式,集线器会将收到的每一帧往其每一个端口发送帧,即集线器将中继该帧到B2以及F。该帧最终会从端口2到达网桥B2,网桥查询哈希表得知,发现该帧的目标地址的端口和源端口相同,网桥B2只需丢弃该帧。 - 如果去往目标地址的端口与源端口不同,则转发该帧到目标端口
- 如果目标端口未知,则使用泛洪法,将帧转发到所有的端口,除了入境帧的端口
那么,问题来了,网桥是如何找到目标地址和端口的对应关系呢?
执行这项工作的一个简单方法是为每个网桥配备一个大的哈希表。该表列出每个可能的目的地以及对应的输出端口。
当网桥第一接入网络时,哈希表为空。此时,网桥会采用一种泛洪算法(flooding algorithm):对于每个发送未知目的地址的入境帧,网桥会将该帧输出到所有的端口,该帧的输入端口除外。随着时间的推移,网桥将会学习到每个目标地址在哪里。一旦知道了一个目标地址,以后发给该地址的帧会被放到正确的端口,而不再使用泛洪。
网桥所用的算法是后向学习法(backward learning)。网桥工作在混杂模式下,它可以看到每个端口上发送的所有帧。通过检查这些帧的源地址,网桥就可获得通过那个端口能访问到哪些机器。
其工作流程如下:
当打开、关闭或者移动机器和网桥时,网络的拓扑结构会发生变化。为了处理这种动态的拓扑结构,一旦构造出了哈希表项后,帧的到达时间也被记录在相应的表项中。当一帧到达时,如果源地址已在表中,那么对应表项中的时间被更新为当前时间。因此,与每个表项相关联的时间值反映了网桥最后看到该机器发出一帧的时间。
在网桥中,有一个进程定期扫描哈希表,并且将时间值在几分钟以前的表项都清除。
2.1.3 生成树网桥
为了提高可靠性,网桥之间可使用冗余链路。比如可以在一对网桥之间并行设置两条链路。这种设计课确保一条链路宕掉后,网络不会被分成两组计算机,使得他们无法通信。拓扑结构如下图所示:
但是,这种冗余造成了拓扑环路。以图2.1.3举个例子。
假设站A给以前没有观察到的某个站发送帧,即网桥B1的哈希表上没有记录该帧的目标地址对应的端口。每个网桥遵循着常规的处理规则:对于未知目的地的帧,泛洪该帧到网桥所有的其他端口。把从站A到达网桥B1的帧称为F0。网桥B1把F0的副本F1和F2分别通过端口2和端口3发出。
当网桥B2收到帧F1和F2时,网桥B2不知道(也无法知道)这些帧是同一个帧的副本,则网桥B2把这两个帧当做不同的帧处理。因此网桥B2将F1副本发送到其他端口,同样把副本F2发往其他端口。则F1的副本F4被网桥B2通过端口2发出,F2的副本F3被网桥通过端口1发出。然后网桥B1又收到了两个未知目的地的帧,同样复制泛洪。
上面的结果造成了同一个帧被无限循环,导致链路拥塞。
解决方法:让网桥相互之间通信,然后用一颗可以到达每个网桥的生成树覆盖实际的拓扑结构。
为了建立生成树,网桥运行一个分布式算法。每个网桥周期性地从它的所有端口广播一个配置信息给邻居,同时处理来自其他网桥的消息,这些消息不被转发,因为它们的用途是构建树,这棵树被用于随后帧的转发。过程如下:
- 全体网桥必须首先选择一个网桥作为生成树的根。
每个网桥在自己的配置信息中包含一个标识符并作为根网桥选择的标识符。网桥标识符基于mac地址,MAC地址有网卡制造商预先设置好,确保唯一性。全体网桥选择具有最低标识符的网桥作为生成树的根。经过足够的消息交换和扩散,最终所以网桥都同意这个根。 - 构造从根到每个网桥的最短路径树。
为了找到从根到每个网桥的最短路径,网桥在它们的配置消息中包含于根的距离。每个网桥记住它找到的到根的最短路径。然后关闭那些不属于最短路径一部分的端口。 - 根据最短路径树转发每个帧,并自动检测拓扑结构的变化,从而更新生成树。
2.2 交换机
交换机是现代网桥的另一个称呼。它们的差异更多的体现在市场上而不是技术方面。
开发网桥时正是经典以太网被广泛使用之际,网桥倾向于连接相对数目较少的局域网,因而端口数也相对较少。现代交换机的安装都使用了点对点连接(例如双绞线),单个计算机通过双绞线直接插入到交换机端口,因此交换机的端口数往往比较多。
“交换机”也可作为一般术语使用。使用网桥,功能是明确的。另一方面,交换机可以指以太网交换机,也可以指一个完全不同的转发决策设备,例如电话交换机。
现在,交换机用来连接同一个网络的不同机器。
2.2.1 交换机的特征
- 用于连接同一个网络的不同设备
- 全双工,一个端口可以同时输入帧,也可以发送帧
- 连接到每个端口的带宽可以不同,自适应。
2.2.2 交换机的交换模式
- 直通式交换
- 交换机只要看到MAC地址就可决定如何转发帧,有可能一旦从入境线路输入帧的目的地址字段马上就可以转发,此时帧的其余部分可能还在输入。
- 优点是延迟较小
- 缺点是小于64字节的帧以及坏帧也一块转发,可能浪费带宽。
- 存储转发
- 转发之前要收到完整的帧并进行CRC校验,确定目的地址
- 交换机将整个帧存储在内存缓冲区中,直到获得有效资源才将其发往目的地
- 好处是能够抛弃小于64字节的帧以及其他受损的帧,节约宽度
- 缺点是延迟较大且不固定,因为在转发之前要收到并处理完整的帧
- 碎片隔离
- 收到帧的前64个字节后立即进行转发
- 当帧的大小小于64字节,则丢弃该帧,如果某个帧大于64字节,则不会进行校验,收到前64个字节后直接转发,即使这个帧是一个受损的帧
2.2.3 交换机的功能
- 地址学习
- 帧的转发和过滤
- 环路防止(生成树)
三、路由器、网关
3.1 路由器的介绍
路由器工作在网络层,用来跨网段通信,路由器具有判断网络地址和选择IP路径的功能,它能在多网络互联环境中,建立灵活的连接,可用完全不同的数据分组和介质访问方法连接各种子网,路由器只接受源站或其他路由器的信息,属网络层的一种互联设备,因此路由器是互联网中必不可少的网络设备之一,主要分为本地路由器和远程路由器。
常见的家庭路由器包含LAN口和WAN口。LAN口用于连接家庭设备,WAN口用于接入运营商网络,以连接互联网。
3.2 路由器的工作过程
3.2.1 前置知识
当忽略路由器的WAN口,路由器就是一台交换机。当对WAN口进行讨论时,那么就涉及到两个不同网络的互联,两个互联的网络进行数据的交换需要通过网关才可以就行。此时,路由器就担任网关的角色。
那么网关到底是什么呢?在回答这个问题之前,先介绍如何判断一个IP属于哪个网段。
32位的IP地址由高位的可变长网络和低位的主机两部分数据组成。
把可变长网络全部设置为1,主机全置为0,则得到子网掩码。
IP地址&子网掩码 = 网络部分
根据网络部分判断两个IP地址是否属于同一子网。
3.2.2 路由器的工作过程
下面通过一个例子说明路由器的工作过程,并说明网关到底是什么,发挥怎样的作用。
先画出一个网络的拓扑结构。
当在PC0执行命令ping 192.168.2.10,执行过程如下:
- PC0通过比对网络位,判断PC5是否与其属于在同一个网段
PC0的IP地址为192.168.1.10,子网掩码255.255.255.0,则PC0的子网:192.168.1.0
PC5的IP地址为192.168.2.10,PC0用自己的子网掩码&PC5的IP地址,PC0发现自己和PC5不在同一个子网。 - PC0发现自己和PC5不在同一个子网,那么PC0会把数据包先发给网关2,即192.168.1.1/24
PC0如何知道网关2呢?
答案是,在配置PC0的IP地址时,会为PC0配置网关IP,这样当PC0发送的数据包的目标主机和自己不在同一个子网,那么就把数据包发给自己的网关。 - PC0通过使用ARP协议解析出网关2的MAC地址。PC0把数据包的目标MAC地址改为网关2的MAC地址,PC0的数据包就发送给网关。
- 网关收到数据包后,查看目标IP,根据目标IP查询路由表。路由表记录去往每个子网对应的端口,网关将数据包的MAC地址改为PC5的MAC地址。然后通过端口fa0/0发出。
通过上面的过程可以发现,网关是一个运行在路由器的一个转发进程,路由器担任网关这个角色,路由器从而把两个不同的网络互联起来。
总结
中继器和集线器属于物理层设备
网桥属于数据链路层设备,主要作用是实现数据帧的转发和过滤;现代网桥称作交换机。交换机在现代用于连接同一网络的不同设备。
路由器用于连接两个不同的网络,网关是一个运行在路由器上的转发进程。当两个不同网络的计算机通信时,路由器担任网关角色,以实现两个不同网络的计算机进行数据的交换。