集线器、交换机、路由器之间的区别

计算机网络毫无疑问必须是得由至少2台计算机组成。那么多台计算机相互链接必须得一个硬件。这些硬件一般分为3类:集线器、交换机、路由器。他们虽然都是起链接作用,但是他们的工作原理和适用范围还是有些许不同。

1.1、集线器

集线器

集线器是最简单的网络设备,他本身不具备任何处理逻辑。每个一插孔就是一个端口,对应一台网络设备。一旦收到任何信号,集线器会将该信号广播到本集线器的所有端口,不管这个端口是不是目标地址。所有的消息接收者会解析数据包中的携带的mac地址信息,如果和网卡的mac地址一致就会将这个数据包接收,反之则抛弃。

这些数据传输都发生在“物理层”(即OSI第一层),因为集线器并不解析数据包中的任何内容。仅仅只是将信号进行放大,然后发送给链接到的所有设备。打个比方,可以简单的理解为把几根导线并联在了一起,一旦有信号,就发送到了所有的导线上。而信号也仅仅只是电压的高低变化而已。由于集线器的这个特性,如果同时多个端口发送数据包,那么数据包所代表的电压信号会在集线器中相互混杂以至于所有的消息都是混乱的,无法解析的。因此集线器是一个“半双工”的通讯设备。“半双工”意味着同时只能由一个端口发送数据。这样的限制无疑降低了整个网络的通讯速度。随着交换机接入的设备增多,网络的速度会越来越慢。所以集线器只适用于小网络的组建。

1.2、交换机

交换机

交换机工作在“数据链路层”(即OSI第二层),也就是说他会解析“数据帧”中的mac地址,根据mac地址来匹配到底发送到哪个端口,而不是像集线器一样给所有的端口进行广播,这样几乎就做到了点对点的通信。A端口和B端口通信时,并不会占用C端口和D端口通信的宽带。由于交换机并不是简单的导线并联,而是通讯时会在逻辑上建立临时的专用通道,因此交换机也可以进行“全双工”通讯。毫无疑问,在宽带利用率上交换机是比集线器做得更好的。那么有一个核心问题,交换机是怎么知道各个端口上对应网卡的mac地址的呢?

其实交换机内部会维护一张mac的地址的表来记录每个端口对应的mac地址。交换机对这个MAC地址表会有一个学习的过程:

  • 一开始这个表是空的,因为他暂时还没被任何设备连接。
  • 当接入设备后,A端口向B端口发送消息,交换机会解析数据帧中的源MAC地址对应A端口记录到MAC表中。
  • 交换机发现在路由表中找不到目标MAC地址的是那个端口,于是会将消息发送给所有与交换机链接的端口。
  • B端口的设备接收到消息,并且解析数据帧发现目标MAC地址与本机匹配之后,会向A端口返回一个消息。
  • 交换机接收到这个返回的消息后,再次解析数据帧的源地址,得到B端口和对应的MAC地址,并记录到MAC地址表中。
  • 此时两个端口对应的MAC地址都已经学习完毕。

1.3、路由器

路由器

路由器工作在”网络层“(即OSI第三层),也就是说需要解析数据包中目的的ip地址来确定转发目标。路由器和交换机一个最大的不同是他可以将数据转发到其他网络中去(如:192.168.0.10路由到192.168.1.11),也就是说可以将不同的几个网段进行互通。那么具体怎么寻址是靠路由器中维护的路由表来决定的。路由表有静态路由和动态路由。静态路由表是指人工维护的路由表,动态路由表则由各种复杂的算法自行决定路由表中的内容。

当你在控制台中输入route print后,可以看到本机的路由表信息。

windows路由表

第一条路由记录是默认路由,也就是说如果匹配不到任何一条路由记录,那么就使用192.168.1.108(本机ip)这个接口将数据发送到192.168.1.1网关。这个网关也就是路由器地址。如果你访问百度、或者知乎等外网资源,那么默认就会使用这个路由。这个路由再会向上匹配,寻找去百度最佳的路线。

再看第五条路由,表示如果你访问的是局域网地址如192.168.1.2,那么就192.168.1.108(本机ip)这个接口直接将数据发送到192.168.1.2。因为在同一个局域网,可以直接发送。

交换机的原则

  • 路由器要求将数据包路由到非本地的其他网络
  • 路由器使用路由表将数据从不同的网路间传输。

基本功能

  • 路由决策;为了到达目的地到底走什么路径。
  • 内容转发;将数据从转发到其他设备。

原文链接:https://www.jdkdownload.com/network_hardware.html