目录

网关、路由器、三层交换机

本文分成两部分,第一部分介绍一些理论,第二部分是一个Demo演示。

三层交换机的三层是什么意思?

物理层

三层工业交换机的第一层是物理层,物理层是进行数据传输的基础,完全由硬件够成,由物理层构成数据传输的通信信道。物理层传输的只是bit流,规定了通道的机械,电气特性和跟上一层之间的接口。我门经常用的调制解调器和集线器都是属于物理层的网络设备。

数据链路层

三层工业交换机的第二层是数据链路层,数据链路层将提供的数据链路的控制和差错校验功能,将不可靠的物理链路变成可靠的数据链路。数据链路层的通信是以贞为单位,我们熟悉的交换工作也就是通过交换机实现的贞的交换工作,传统的交换机(二层交换机)是数据链路层的典型的网络设备,其前身是网桥,网桥工作在网络的第二层,它的作用之一是隔离网络广播风暴.交换机只能连接同一个子网的计算机,如果计算机的IP地址不在同一个子网中则只靠交换机不能实现通信,还要靠第三层中的路由器。

二层交换机是靠mac地址进行数据交换的,如果ip地址是在一个子网(下面会有演示,根据路由表能映射到某一个ip即表明在同一个子网),则直接进行交换,否则还得靠上层路由器进行数据包的转发。

网络层

三层工业交换机的第三层是网络层,网络层在OSI模型中可以说是至关重要的一层,它起到了承上启下的重要作用,如上段所说它负责子网之间的通信,著名的TCP/IP协议就是网络层中的协议。两个子网之间的通信要靠具有路由功能的路由器。从一个子网中发出数据包如果要到达另外一个子网中的计算机结点就要通过路由器计算出传输的路径。

什么是三层工业交换机?

三层工业交换机就是具有部分路由器功能的交换机。三层工业交换机其实就是二层交换工作+三层转发工作。并不是我们指交换机有"三层"东西。三层工业交换机最重要目的是加快大型局域网内部的数据交换。所具有的路由功能也是为这目的服务的,能够做到一次路由,多次转发。传统的交换工作是在OSI网络标准模型中的第二层——数据链路层进行操作的,而三层交换工作是在网络模型中的第三层实现了数据包的高速转发。对于数据包转发等规律性的过程由硬件高速实现,而像路由信息更新、路由表维护、路由计算、路由确定等功能,由软件实现。既可实现网络路由功能,又可根据不同网络状况做到最优网络性能。

下面是一个网络模型与通信软硬件的对应图

https://gitee.com/lienhui68/picStore/raw/master/null/20200902024956.png

网关、路由器、三层交换机的区别

网关是一个抽象的概念,具体说路由器可以做网关,三层交换机也可以做网关,甚至你的电脑也可以做网关。

而路由器和交换机则是具体的设备。

至于三层交换机和路由器的区别,其实没啥区别。

你要说区别的话Cisco/Broadcom更愿意称自己的产品为三层交换机,而Juniper则更愿意称自己产品为路由器。

交换机主要功能是交换数据,内部是硬件直接处理数据包的,也就是硬件转发。什么叫硬件转发呢?我们来举个简单的例子,比如逻辑电路里有一种零件叫选择器(mux)

https://gitee.com/lienhui68/picStore/raw/master/null/20200902022931.png

也就是可以通过下面的A1A2来控制输出Y到底跟哪个输入连通。内部结构是这样的:

https://gitee.com/lienhui68/picStore/raw/master/null/20200902022958.png

硬件处理的好处就是速度爆快,性能无敌好,资源占用极低。来一个数据包,交换机的CPU看都不用看直接怼给芯片,它就从指定的端口出去了。牛不牛?

二层交换机是看MAC地址,三层交换机则是看IP地址进行高速转发。

那有什么缺点呢?缺点就是它是一个铁憨憨,只会通过MAC/IP地址来转发数据,用文化人的说法叫缺乏灵活性。打个比方的话就是三层交换机大概相当于一个头脑简单四肢发达的筋肉男,脑子不太灵光但力大无穷。


路由器是做什么的呢?确实可以跨网段转发数据,但路由器真正的用途是计算路由。什么叫计算路由呢,这就要从互联网的结构说起了。

大家知道早期互联网其实是军事用途,其目的在于构筑一个几乎无法被摧毁的信息交换网络。

https://gitee.com/lienhui68/picStore/raw/master/null/20200902025344.png

树状结构的网络往往有一个或者几个中枢,一旦被摧毁整个网络就瘫痪了。而这种网状结构的网络,即使你摧毁少数节点,或者切断一些径路,数据仍然可以绕路到达,整个网络仍然是有效的。

节点之间会根据一定的算法计算出到其他节点代价最小的路径,具体怎么算的,随便读个工科应该就懂了,自己想学可以去看看图论哈。

如果网络结构不变,最短径路算好放在那就行了。但一旦网络发生变化,比如某个节点坏掉了,或者某条线断了,那就要路由器来重新计算。由于路由协议不同,一部分节点甚至全部节点都要重新计算到其他节点的路由,这个计算量其实蛮大的。

这个计算量有多大的呢?早期互联网并没打算接入那么多设备,网段划的简单粗暴,地址分个ABC类就完事了。后来设备和网络越来越多,大家就只好把大的网络切成小网段用,比如一个/16的网段切成四个/18的网段,一个/20的网段切成16个/24的网段,etc…

切来切去网段(节点)越来越多,到这些网段(节点)的全部路由信息称之为全路由(Full route),全路由在2020年初这个时间点上大概有70万条,一般的路由器要计算大概3到20分钟吧,而早期的路由器由于内存什么限制恐怕还算不了这么多路由。

计算路由这个问题太复杂了,加上各种各样的路由协议,很难硬件解决。也就是用常规通用计算机的方案,用高性能的CPU来算,或者说路由器其实跟普通的电脑没有本质差别。顺便说一下Cisco路由器的IOS其实可以拿到模拟器上跑,几乎可以完整的模拟出路由器的各种行为。

所以打个比方的话路由器就相当于一个瘦弱的学霸,脑子倒是灵感但你指望它转发数据那还是算了吧。


估计你也发现问题了:那我们给筋肉男安上一个不错的脑子,那不就两全其美了吗?!

其实大家也是这样做的,所以传统意义上路由器用的越来越少,越来越多的地方(尤其是电信企业)开始用高端三层交换机来替代传统路由器。而高端路由器和高端三层交换机的界限也越来越模糊,所以前面不也跟你说了么,Cisco习惯称这样的产品为三层交换机,Juniper则习惯称之为路由器。

顺便说一下,现在网络发展的趋势叫做网络扁平化(fabric化),用以替代传统的核心-汇聚-接入三层结构。什么叫扁平化呢?白话解释就是,最好能把所有的网络设备都直接怼到一个巨型的三层交换机上来交换数据,这样对大家都好。

基于这样的思路,三层交换机逐渐取代传统路由器成为互联网的核心。

三层交换机把二层交换机跟路由器给怼到一起了,tcp/ip模型中的网络层表示osi里的网络层、链路层、物理层,也许不久后会有一个设备同时把这三层做的事情统一给做了。

最后,我知道你们买的无线路由花了不少钱,但也别傻了吧唧的随意就把无线路由的WAN口往上接,能用LAN口尽量用LAN口。除非绝对必要,也就是一定要路由器拨号的情况,你再用WAN口。因为网络扁平化不是说说而已的,交换机的转发性能是压倒性的,真不是你几千元就能抹平的(何况几千也不都使用在路由转发这一块了)。

最糟糕的情况莫过于光猫已经拨号了,还把无线路由的WAN口往光猫的LAN口上怼。上网是能上的,速度稳定性都不咋样,还可能出各种奇怪问题。

这时候把光猫换成桥接模式,路由拨号,哎!问题都消失了。然后得出结论就是光猫性能不行。

Lan和Wan的区别 两者数据的传输方式不同、两者定义不一样、两者的应用场景不一样

  • 两者数据的传输方式不同:

    LAN通过数据通信网或专用数据电路,与远方的局域网、数据库或处理中心相连接,构成一个较大范围的信息处理系统。WLAN的数据通过电磁波传输,也就是常说的空气传输。WLAN 利用电磁波在空气中发送和接受数据,而无需线缆介质。

  • 两者定义不一样:

    LAN,全称Local Area Network,中文名叫做局域网。顾名思义,LAN是指在某一区域内由多台计算机互联成的计算机组。WLAN,全称Wireless LAN, 无线局域网,在空中进行通信连接,使得无线局域网络能利用简单的存取架构让用户透过它,达到“信息随身化、便利走天下”的理想境界。

    https://gitee.com/lienhui68/picStore/raw/master/null/20200902030739.png

  • 两者的应用场景不一样:

    LAN应用于接电脑的网线,需要插到路由器的LAN口;或者应用于二级路由,一般都是从上级路由的LAN口接线。

    WLAN应用于大楼之间,大楼之间建构网络的连结,取代专线,简单又便宜;或者餐饮及零售,餐饮服务业可使用无线局域网络产品,直接从餐桌即可输入并传送客人点菜内容至厨房、柜台。零售商促销时,可使用无线局域网络产品设置临时收银柜台。

小结

  • 交换机不认识 IP,只认识 MAC。交换机(二层)是在内网,一个局域网内通信的设备。
  • 路由器是在不同的网段进行通信的设备。
  • 网关的英文名称:gateway,又叫做网间连接器、协议转换器。网关是一个网络硬件设备,一般情况下是路由器,也可以是一台服务器。如果数据是在局域网内通信,则不需要网关,如果数据不在局域网内通信,需要发到其他网段,就需要网关参与通信。 由于历史的原因,许多有关 TCP/IP 的文献曾经把网络层使用的路由器称为网关,在今天很多局域网采用都是路由来接入网络,因此通常指的网关就是路由器的 IP。 作为普通的用户,只需要记住,手动配置 IP 地址的时候,默认网关的地址就是路由器的 IP 地址,也就是你路由器的管理页面登陆地址。如果你选择自动获取 IP 地址,那么就不需要关注默认网关地址了,但路由器的 DHCP 服务器分配下来的默认网关也一定是路由器的 IP 地址。

演示

创建两个虚拟机

172.17.0.4

172.17.0.2

此时2是可以ping通4的

https://gitee.com/lienhui68/picStore/raw/master/null/20200830031211.png

为什么能ping通,我们看下路由表

https://gitee.com/lienhui68/picStore/raw/master/null/20200830015833.png

172.17.0.2 & 255.255.0.0 = 172.17.0.0 匹配上,选择网关0.0.0.0 也就是在同一个局域网直接使用交换机交换,不走网关。

lo 表示 本地回环地址,代表设备的本地虚拟网卡,所以默认被看作是永远不会宕掉的接口。在Windows操作系统中也有相似的定义,所以通常在安装网卡前就可以ping通这个本地回环地址。一般都会用来检查本地网络协议、基本数据接口等是否正常的。

增加一个回环地址

添加

ifconfig lo:0 IP地址/掩码

删除

ifconfig lo:0 down

172.17.0.2是ping不通172.8.8.8的

https://gitee.com/lienhui68/picStore/raw/master/null/20200830031453.png

172.17.0.2 查看路由表

https://gitee.com/lienhui68/picStore/raw/master/null/20200830031531.png

172.8.8.8只能匹配网关172.17.0.1,网关也不知道172.8.8.8在哪儿于是随便往外扔了。

如何解决

思路:在172.17.0.3这台主机上增加一行路由,给出正确的下一跳也就是172.8.8.8 物理网卡eth0 的ip地址172.17.0.4

现在就可以ping通我们自己加的回环地址了

172.8.8.8 和 255.255.255.255 与运算 得到目标网关172.17.0.4

vpn就是数据包背着数据包

ip-香港数据包里包着ip-谷歌数据包,ip-香港数据包到达香港后,香港服务器拆包,将ip-谷歌数据包发到谷歌。

参考

https://www.zhihu.com/question/367420262

https://zhidao.baidu.com/question/7155097.html