链路层网络
一、 链路层网络概述
1. 链路层所处位置
学习了网络层你可能会觉得,网络层既然已经可以做到把报文发到指定的主机了,那要链路层有啥用呢?殊不知网络层的能力就是由链路层向上提供的。“链路”存在于每个网络设备之间(路由器与路由器,主机与路由器。。。)。正是因为有了这些链路确保了点到点的传输是可靠的,IPv6才有机会取消了网络层校验。
总之,链路层位于网络层任意两直接连接的网络设备之间,提供可靠的服务;网络层是构成了世界整体互联网的骨架——网络的网络,向上提供尽力而为的服务。
2. 链路层网络
今天的互联网时代,链路层主要依靠两种网络来实现其功能:以太网和WLAN。
- **以太网(Ethernet):**以太网占据了几乎所有的有限局域网的市场份额,是一种稳定高速的网络。由于以太网本身就可以提供十分可靠的传输服务,所以使用以太网的链路层并不设置校验、重传机制。
- **WLAN(Wireless Local Area NetWork,无线局域网):**WLAN是一系列协议的集合,为用户提供无线网络访问的功能。毫无疑问,WLAN和以太网在物理层的实现是完全不同的(物理层的实现机制是通信工程专业的知识),所以在链路层对这两种网络的处理方法也不一样。WLAN网络由于其本身的不稳定性,所以使用WLAN的链路层需要设置校验和重传机制。
二、 链路层交换机
最后,我们需要搞清楚互联网两种交换机的区别——网络层交换机(Router, 路由器)与链路层交换机(Switch, 交换机)
1. 链路层交换机的作用
我们知道,路由器可以把分组从一个路由器发往另一个路由器。。现在回想网络层转发的最后一跳,分组是如何从路由器分发到局域网主机上的呢?这个事情就是靠链路层交换机来实现!
链路层交换机的发展经历了:总线 -> 集线器(Hub) -> 交换机 的发展过程。在这个过程中,交换机的作用得到增强和完善:
-
**总线:**为了实现把分组从路由器转发到局域网分组这个事情,最直接的想法肯定是用一堆线把路由器和各主机之间连接上,搞定!但这样显然不够优雅,工业上的做法是采用总线技术——把路由器和各个主机用总线串在一起,像一条绳上的蚂蚱一样。。这样就避免了线太多的烦恼。
图1 总线交换不过这样做有着明显的问题:其中最大的问题就是安全性,总线上任一点被破坏,那么所有主机都要完蛋。。
另外,这样做转发的效率会很低,因为Router发送的每个分组所有主机都能收到,然而却只有一个主机会真正使用!这极大地形成了总线资源浪费,血亏。。。。除此以外,总线的设计还会不可避免的发生“分组碰撞”问题,就是大家都公用一套总线,你发我也发,就会撞车了。。还需要设计专门的算法来解决这个问题(类比一下CPU层面的总线锁。。)
-
集线器:为了克服总线的安全性不足的缺点,集线器的做法是把总线装到一个“盒子”里面,从而起到保护总线的作用。集线器各主机提供一些接口,供其数据交换。但集线器并没有改变总线交换的本质,当多个主机接入时,浪费总线资源和分组碰撞问题会越来越明显,转发效率就会越来越低。
图2 集线器交换 -
交换机交换
最后,发展到了交换机时代,交换机外部结构和集线器没啥区别,但是内部却采用了更合理的“单独频道”策略。啥意思呢,它并不像总线那样是“共享频道”的,而是变成了每个主机都可以选择自己想把分组转发到哪里。在交换机内可以任意指定设备,这条信道就是单独为二者使用的。自然,也就不会出现浪费总线资源和分组碰撞的问题了。