集线器(hub)
集线器工作在物理层,它用于将网络设备进行直连。下面进行举例说明:
- 假设A、B、C三台电脑同时连在一台集线器上。当A电脑给B电脑发送一条信息后,该信息首先会进入集线器的中继电路。
- 集线器的中继电路在收到该信息后会将该信息无脑发送给连接在该集线器上的所有设备,也即B、C电脑均会收到该信息。
- B电脑在收到该信息后层层剥开包头信息发现是发给自己的,最终会收下。
- C电脑在收到该信息后剥开数据链路层包头后,发现目标MAC地址填的不是自己的,则最终会丢掉。
交换机(switch)
交换机工作在数据链路层,它也是用于同一个局域网内数据转发。交换机自身维护了一张MAC地址表,其中记录了交换机各个端口对应的设备MAC地址,保证数据包的精确转发。下面进行记录说明:
-
假设A、B、C三台电脑连在了一台交换机上。当A电脑需要给B电脑发送一条信息后,该信息首先会进入交换机的交换电路。
-
交换机在收到该信息后剥开数据包的MAC包头以获取目标MAC地址。交换机从自身的MAC地址表中获取目标MAC地址对应的端口(即B电脑所连的交换机端口号),并将消息发送给对应端口。MAC地址表格式如下:
-
最后B电脑会收到该信息,并层层剥开消息包头确认是发给自己的从而收下该数据包。
从上面可知,交换机相对于集线器在网络消息转发过程中效率更高,因为交换机在转发消息时可以实现精准转发,大大减少了网络中的无效消息发送。另外交换机维护的MAC地址表是在实际中不断学习产生的,并且若目标设备长时间未发送消息交换机会把该条对应关系从MAC地址表中删除。下面针对两种特殊情况进行说明:
- 交换机在查询MAC地址表时发现目标MAC地址对应的端口和这个包的源端口在同一个端口
这说明该消息报的源主机和目标主机在同一个直连网络环境中,并且连在交换机的同一个端口,它们之间可以直接发送消息,不需要经过交换机,因此交换机将丢掉该消息,否则会出现重复发送,目标主机将两次收到该消息。 - 交换机无法在自身维护的MAC地址表中找到目标MAC地址对应的端口
这种情况往往是由于该目标MAC设备第一次通过交换机收发消息,或者目标MAC设备长时间未使用交换机收发消息,导致交换机删除了该条MAC-端口映射关系。此时,交换机将收到的消息广播到每一个端口(此时,交换机处理和集线器处理相同)。对应主机从端口收到消息后会给交换机发送一个响应消息,交换机在收到该响应消息后就可以将该MAC地址对应的端口映射关系更新到MAC地址表中,从而实现了MAC地址表自适应学习过程。
注:
一、 交换机和网桥的作用是基本相同的,只不过两者所能连接的设备数有差异。网桥只有两个网口,也即实现两台电脑的连接,而交换机可以实现多台电脑的连接。因此可以将网桥理解为两个网线口的交换机,交换机为多网线口的网桥。
二、我们通常所说的交换机即为二层交换机(工作在网络模型的第二层-数据链路层)。而三层交换机(工作在网络模型的第三层-网络层),其实就是路由器。
路由器(router)
路由器工作在网络层,用于两个局域网间的消息转发。交换机的MAC地址表中需要记录所有设备MAC地址和端口映射关系,一旦该局域网中网络设备过多,交换机的MAC地址表将非常庞大,这会极大地影响数据转发效率。因此路由器将数据转发工作做了进一步优化。
为了实现数据转发,路由器维护了一张路由表。路由表中记录了各个目标网络号对应的出口。目标网络号可包括同局域网中一大串目标主机,因此这极大地简化了路由表的内容,降低了数据转发的负担。路由表格式如下:
路由器和交换机的区别:
- 交换机工作在数据链路层,本身没有MAC地址和IP地址;而路由器工作在网络层,一般有两个网卡,即有两个MAC地址和IP地址。
- 由于路由器具有MCA地址和IP地址,因此其能成为数据链路层的发送方和接收方;而交换机不行
- 由于交换机没有MAC地址,因此其不能判断收到的数据MAC地址是不是自己的,只能无脑转发;而路由器可以判断所收到的数据是不是自己的,若不是则丢弃。
- 交换机在MAC地址表中若没有找到转发端口则会进行广播查找;而路由器在路由表中没有找到转发端口时则直接丢弃。
光猫(modem)
光猫是一种调制解调器,将光信号转化为电信号。因为交换机、路由器的网口输入信号都是电信号,而当前应用比较广泛的光纤传输的是光信号,因此需要先用光猫将光信号转化为电信号再传给路由器。从路由器发出的电信号同样也会通过光猫将电信号转化为光信号,发送到光纤传输。
常见网络设备连接形式如下图:
参考:https://mp.weixin.qq.com/s/LutsbzjVMFkxzY8f8MpZJw