目录
- 前言
- 一、中继器、集线器
- 1.1 中继器
- 1.2 集线器
- 二、网桥、交换机
- 2.1 网桥
- 2.2 交换机
- 三、路由器、网关
- 3.1 路由器
- 3.2 网关
- 总结
前言
理解这些设备的关键是他们运行在不同的层次上。之所以存在不同层的问题,是因为不同的设备使用不同的信息来决定如何交换。在典型的场景中,用户生成某些数据,然后将这些数据发送给一台远程的机器。这些数据先被传输给传输层,传输层会加上一个头(比如TCP)头,然后将结果单元往下传递给网络层。网络层也会加上一个头,形成网络层数据包(比如,形成一个IP包)。然后,该分组再往下到达数据链路层,数据链路层加上它自己的头和校验和(CRC)并将结果帧交给物理层传送出去。
一、中继器、集线器
1.1 中继器
中继器是模拟设备,主要用来处理自己所连线缆上的信号。在一个线缆上的信号被清理、放大,然后在被放到另一个线缆上。中继器并不理解帧、数据包和帧头,它们只知道把比特编码成电压的符号。例如,在经典以太网中,为了将电缆的最大长度从500米扩展到2500米,以太网允许最多使用4个中继器来增强信号。
1.2 集线器
集线器有许多条输入线路,它将这些输入线路连接在一起。从任何一条线路上到达的帧都被发送到所有其他的线路上。如果两帧同时到达,它们将会冲突,就好像它们在同一根同轴电缆上遇到后发生碰撞一样。连接到同一个集线器上的所有线路必须以同样的速度运行。集线器与中继器不同,它们(通常)不会放大入境信号,并且可以有多个输入线路。但是,集线器与中继器一样,都属于物理层设备,因而不会检查链路层地址,也不任何方式使用该地址。
二、网桥、交换机
2.1 网桥
网桥是一种工作在数据链路层的网络设备,通过检查数据链路层地址来转发帧。
网桥连接两个或多个局域网。与集线器一样,一个现代网桥有多个端口,通常具有4~48条某个类型的输入线。与集线器不同的是,网桥的每个端口被隔离成它自己一个冲突域;如果端口是全双工的点到点线路,则需要用到CSMA/CS算法。
两个局域网桥接在一起的拓扑情况分两种情况:
- 连接两个多点LAN的网桥
- 连接7个点到点站点的网桥(包括集线器)
每个网桥工作在混杂模式下,它接受隶属于每个端口的站发送的帧。网桥必须决定是否转发或丢弃收到的每一帧。
对于一个入境帧,它在网桥中的路由过程取决于这个入境帧从哪个端口来(源端口),以及它要往哪个目标地址去(目标端口)。整个转发过程如下:
- 如果去往目标地址的端口与源端口相同,则丢弃该帧
例如,
在图一的拓扑结构中,站A往站B发送一个帧,网桥B1根据源端口和目标端口发现,该帧的去往目标地址的端口与源端口相同,则丢弃该帧。
在图二的拓扑结构中,在点对点的链接中,用集线器把一组计算机连接到网桥,站E和站F都连接到集线器H1,进而在连接到网桥B2。如果站E发送一个帧给站F,根据集线器的工作方式,集线器会将收到的每一帧往其每一个端口发送帧,即集线器将中继该帧到B2以及F。该帧最终会从端口2到达网桥B2,网桥检查该帧的目标地址的端口和源端口时,发现该帧的目标地址的端口和源端口相同,网桥B2只需丢弃该帧。 - 如果去往目标地址的端口与源端口不同,则转发该帧到目标端口
- 如果目标端口未知,则使用泛洪法,将帧转发到所有的端口,除了入境帧的端口
那么,问题来了,网桥是如何找到目标地址和端口的对应关系呢?
执行这项工作的一个简单方法是为每个网桥配备一个大的哈希表。该表列出每个可能的目的地以及对应的输出端口。
当网桥第一接入网络时,哈希表为空。此时,网桥会采用一种泛洪算法(flooding algorithm):对于每个发送未知目的地址的入境帧,网桥会将该帧输出到所有的端口,该帧的输入端口除外。随着时间的推移,网桥将会学习到每个目标地址在哪里。一旦知道了一个目标地址,以后发给该地址的帧会被放到正确的端口,而不再使用泛洪。
网桥所用的算法是后向学习法(backward learning)。网桥工作在混杂模式下,它可以看到每个端口上发送的所有帧。通过检查这些帧的源地址,网桥就可获得通过那个端口能访问到哪些机器。
其工作流程如下:
当打开、关闭或者移动机器和网桥时,网络的拓扑结构会发生变化。为了处理这种动态的拓扑结构,一旦构造出了哈希表项后,帧的到达时间也被记录在相应的表项中。当一帧到达时,如果源地址已在表中,那么对应表项中的时间被更新为当前时间。因此,与每个表项相关联的时间值反映了网桥最后看到该机器发出一帧的时间。
在网桥中,有一个进程定期扫描哈希表,并且将时间值在几分钟以前的表项都清除。
2.2 交换机
交换机是现代网桥的另一个称呼。它们的差异更多的体现在市场上而不是技术方面。
开发网桥时正是经典以太网被广泛使用之际,网桥倾向于连接相对数目较少的局域网,因而端口数也相对较少。现代交换机的安装都使用了点对点连接(例如双绞线),单个计算机通过双绞线直接插入到交换机端口,因此交换机的端口数往往比较多。
“交换机”也可作为一般术语使用。使用网桥,功能是明确的。另一方面,交换机可以指以太网交换机,也可以指一个完全不同的转发决策设备,例如电话交换机。
三、路由器、网关
3.1 路由器
路由器(Router)是连接因特网中各局域网、广域网的设备,它会根据信道的情况自动选择和设定路由,以最佳路径,按前后顺序发送信号。
路由器最重要的功能就是路由,路由是指路由器接收到数据时选择最佳路径将数据穿过网络传输到目标地址的行为,每个路由器负责自己的本地数据的路由或转发,通过多个路由器依次接力将数据最终传递到目标主机,路由的工作流程包括路由选择和路由转发两个方面。
路由器工作在网络层,用来跨网段通信,路由器具有判断网络地址和选择IP路径的功能,它能在多网络互联环境中,建立灵活的连接,可用完全不同的数据分组和介质访问方法连接各种子网,路由器只接受源站或其他路由器的信息,属网络层的一种互联设备,因此路由器是互联网中必不可少的网络设备之一,主要分为本地路由器和远程路由器。
路由器包含LAN口和WAN口。LAN口用于连接家庭设备,WAN口用于接入运营商网络,以连接互联网。
3.2 网关
当忽略路由器的WAN口,路由器就是一台交换机。当对WAN口进行讨论时,需要引入一个概念,叫做网关。
那么网关到底是什么呢?在回答这个问题之前,先介绍如何根据一个IP地址和子网掩码得到一个子网
32位的IP地址由高位的可变长网络和低位的主机两部分数据组成。
把可变长网络全部设置为1,主机全置为0,则得到子网掩码。
IP地址&子网掩码 = 网络部分
根据网络部分判断两个IP地址是否属于同一子网。
在知道如何判断一个IP地址是属于哪个子网之后,下面开始介绍网关的作用。
两个子网需要通信时,不可以直接进行通信,需用通过网关才可以通信。网关是一个运行在较高层次的转发进程。路由器可以担任网关的角色。路由器需要有两个网卡,网卡1连接一个子网,网卡2连接另一个子网。
下面举个例子说明网关的工作过程。
子网1的计算机A,IP地址为192.168.1.10/24,向另一台计算机B,IP地址为192.168.2.8/24,发送数据时,首先,计算机A会判断另一台计算机是否在同一个子网中,如果属于同一子网,则直接从网卡1将数据发出;如果不是,则将目标mac地址改为网关mac,然后将数据发送给网关。网关得到数据后,根据路由表查询得到计算机B属于子网2,网关修改数据的目标mac地址为计算机B的mac地址,将源mac地址修改为自己的mac,然后从子网2的网卡发出。