网络分层
网线替代了上面的灰色部分,实现物理层互联。
如果想要两台电脑互联成功,还需要确保每一层所需要的步骤都要做到位,这样数据才能确保正确投送并返回。
从数据链路层到物理层,数据会被转为01比特流。
此时需要把比特流传到另一台电脑。
通过一根网线,两段水晶头插入网口,把两台电脑连起来。
互联
A电脑和B电脑完成连接之后,可以尝试从A电脑中ping一下B,再从B电脑中ping一下A。如无意外,都能ping通。
A给B发个消息,从应用层到数据链路层,会分别加上A和B的各种’'身份信息"。比如在传输层会加上A和B的应用端口号,在网络层加上源和目的IP,在数据链路层会加上源和目的网卡的MAC头部信息。
B收到消息后逐层解包,验证,最后顺利到达应用层。实现AB两台机器消息互通。
集线器
每台电脑只有一个网线口,如何实现多人互联。
集线器就登场了,这是个工作在物理层的设备。
有多个网口,很好的解决了电脑上只有一个网口的问题,可以做到多台电脑的网线都插入到集线器上。
同时工作原理也非常简单,会把某个端口收到的数据,输入到中继电路。
中继电路的基本功能是将输入的信号广播到集线器的所有端口上。
集线器的内部结构
从A网口进入集线器的消息,此时还是电信号。这里经过一个PHY模块。
要理解PHY模块的作用,首先要先了解每个网口,都可能接着网线,而每根网线的传输的格式都是有可能不同的。而PHY的作用,就是把这些格式转化为一个通用的格式。
经过PHY的处理后,以电信号的形式输入到中继电路,被无脑广播,再次经过PHY模块后变成BCD网口的格式输出。
交换机
如何机器很少的情况下,每次都是广播发消息倒还好。
如果机器越来越多,每台机器发一条消息,都会被广播,就有点顶不住了,对网络资源浪费就有些严重了。
那么,有没有可能做到,A发给B的消息,就不要转发给C呢?
可以的,把集线器换成交换机。
交换机,又叫switch,跟集线器长得很像。
但是功能更强一些,从网络分层上来说,属于数据链路层,比集线器所在的物理层还要高一层。
所有发到交换机的数据,都会先进入交换机的缓存区。接着消息再被转发到对应机器上。
注意这里用的是转发,而不是集线器的广播,交换机是怎么做到转发的呢?
MAC地址表
交换机内部维护了一张MAC地址表。
记录了 端口号和MAC地址的对应关系。
这个表的数据是交换机不断学习的结果。
当A发消息到交换机时,交换机发现消息是从1号端口进来的,则会在MAC地址表上,记录A的MAC地址对应1号端口。
如果A没有很长时间没发消息到这个1号端口,那这条记录就会过期并被删除。
那么,当时间足够长,ABC 都发过消息给交换机后,地址表就会有完整的关系信息。
交换机内部结构
其实对比可以发现,交换机和集线器内部结构很像。
重点需要提到的是MAC模块。消息以电信号的形式从网口进入,到了PHY会被转成通用格式的电信号。而MAC模块的作用是把这个电信号转为数字信号,这样就能提取出MAC包头,并通过MAC数据帧末尾的FCS校验这个包有没有问题,如果没问题,则把数据放到内存缓冲区里,否则直接丢弃。
另外,这个MAC模块,虽然这么叫。但其实交换机MAC模块不具有 MAC 地址。因此交换机的端口不核对接收方 MAC 地址,而是直接接收所有的包并存放到缓冲区中。
放入到内存缓冲区后,还会把MAC地址和端口号记录到MAC地址表中。同时检查目的MAC地址在不在MAC地址表中,在的话则会转发到对应端口。否则广播。
网桥
网桥,本质上可以理解为两个网线口的交换机,正好可以把两台电脑给连起来,也叫桥接。而交换机,则是多网线口的网桥,可以把多台电脑给连(桥接)起来。
其他功能方面,大差不差,不必太过纠结。
路由器
交换机网口是有限的,市面上电脑这么多,交换机里的MAC地址表难道全都要记住吗?
显然做不到。为了解决这个问题。
于是就有了路由器,工作在网络层,比数据链路层更高一层。
网络层引入了IP的概念。
路由表
路由器的作用,可以帮助我们在互联网世界里转发消息到对应的IP。
对比一下。
交换机,是通过 MAC 头部中,接收方 MAC 地址,来判断转发目标的。
路由器,则是根据 IP 头部中, IP 地址来判断的。
由于使用的地址不同,记录转发信息的表也会不同。
类似交换机的MAC地址表,路由器也维护了一张路由表。
而路由表,是用于告诉路由器,什么样的消息该转发到什么端口。
路由器的内部结构
路由器内部,分为控制平面和数据平面,说白了就是对应软件部分和硬件部分。
硬件部分跟交换机很像。数据从A网口进入,此时数据还是网线上格式的电信号,会被PHY模块转为通用信号格式,再被MAC模块转为数字信号,通过FCS进行错误校验,同时校验MAC地址是否是自己,通过校验则进入内存缓冲区,否则丢弃。
再进入软件部分,由路由选择处理器,通过一定规则(软件逻辑),查询路由表判断转发目标和对应转发口,再经由硬件部分的交换结构转发出去。
如果路由表中无法找到匹配记录,路由器会丢弃这个包,并通过ICMP消息告知发送方。
路由器和交换机的主要区别
MAC模块的区别
路由器和交换机不同点在于,它的每个网口下,都有一个MAC地址和IP地址。
正因为路由器具有 MAC 地址,因此它能够成为数据链路层的的发送方和接收方。
怎么理解这句话?
前面提到交换机,是不具备MAC地址的,而MAC报头是需要填上目的MAC地址的。因此交换机从来都不是数据的目的地,它只简单转发数据帧到目的地。
但路由器,是有MAC地址的,因此MAC报头就可以写上,下一站目的地就是xx路由。
到了路由器后,路由器可以再次组装下一站的目的MAC地址是再下一个路由,通过这一点,让数据在路由和路由之间传输。
而同时因为交换机不具有MAC地址,因此也不会校验收到的数据帧的MAC地址是不是自己的,全部收下做转发。而路由器则会校验数据帧的MAC报头里的目的MAC地址是不是自己,是的话才会收入内存缓冲区,否则丢弃。
找不到转发目的地时的处理方式有区别
如果在路由表中无法找到匹配的记录,路由器会丢弃这个包,并通过 ICMP消息告知发送方。
而交换机在MAC地址表里找不到转发端口时会选择广播。
这里的处理方式两者是不同的,原因在于网络规模的大小。
交换机连接的网络最多也就是几千台设备的规模,这个规模并 不大。如果只有几千台设备,遇到不知道应该转发到哪里的包,交换机可以将包发送到所有的端口上,虽然这个方法很简单粗暴,但不会引发什么 问题。
但路由器工作的网络环境就是互联网,全世界所有的设备都连接在互联网上,规模非常大,并且这个规模还在持续扩大中。如果此时它的操作跟交换机一样,将不知道应该转发到哪里的包发送到整个网络上,那就会产生大量的网络包,造成网络拥塞。因此,路由器遇到不知道该转发到哪里的包, 就会直接丢弃。
路由器和光猫有什么区别
不管是交换机还是路由器,前面都是提到网口输入的是电信号。但现在流行的是光纤传输,传输的是光信号。
而光猫(modem),是一种调制解调器,其实就是用于光电信号转换的设备。
接收数据时,可以将光纤里的光信号转化为电信号,发给路由器,路由器内部再转成数字信号,并在此基础上做各种处理。
相反,也会把路由器传来的电信号转为光信号,发到光纤,并进入互联网。
总结
-
两台电脑可以通过一根网线直接连接,进行通信。
-
机器一多,可以把网线都接到集线器(物理层)上,但是集线器会不管三七二十一进行广播。
-
不想广播,可以用(二层)交换机(数据链路层),又叫多端口网桥,它比较聪明,会自我学习生产MAC地址表,知道消息发到哪,那就不需要广播啦
-
互联网电脑这么多,交换机MAC地址表总不能全放下吧。改用路由器(网络层),也叫三层交换机,通过网段的方式定位要把消息转发到哪,就不需要像交换机那样苦哈哈一条条记录MAC地址啦。
-
路由器和光猫之间是好搭档,光猫负责把光纤里的光信号转换成电信号给路由器。
-
现在一般情况下,家里已经不用集线器和交换机了,大部分路由器也支持交换机的功能。所以可以看到,家里的台式机电脑一般就连到一个路由器,再连个光猫就够能快乐上网了。
原文: 硬核!阿里面试就是不一样!30张图带你搞懂路由器,集线器,交换机,网桥,光猫有啥区别?