速通计算机网络
引言
生活中最不可或缺的是什么?一定是网络。在互联网高度发达的今天,网络已经成为我们赖以生存的工具。从工作、追剧、打游戏到购物、吃饭、刷视频,网络已经覆盖了生活中的全部场景。那么网络到底是什么?不同设备到底是如何相互连接的?如何访问到大洋彼岸的网站?海底电缆被切断有什么影响?
计算机的本质
计算机的本质,就是用来记录和处理无限信号的机器,电信号通过高低电平来表示0和1。计算机中由0和1组成的数据,称为二进制数据。但是对于人类来说,大量的0和1是无法被我们直接读懂的,所以计算机通过一系列的编码和封装处理,将二进制数据转换成各种文本、图像、音频、视频等形式供我们使用。但是从本质来看,我们平时使用的软件、网站、游戏,在计算机看来就是大量的0和1组成的数据而已。
网络的本质
网络,是用来让不同计算机设备相互连通的一种工具。例如我想实现两台计算机之间的通信。最简单的方式就是通过一根线来连接两个设备,让两台计算机通过电信号的传输实现网络通信没错,这确实很简单。但现在我将设备增加到三台,四台,五台,六台乃至更多,你会发现用来连接设备的网线数量也越来越多。而且这不是线性的上涨,而是指数上涨。
而要计算不同设备数量所需要的连接数,我们可以使用下面的公式计算得出七八九十台设备所需要的连接数。假如你有100台设备,只要再增加一台,就需要增加100条线,这很明显是不合理的。所以分析到这里,你就会发现这个伟大的发明太费线。
【C=n(n-1)/2 其中n为设备数,C为用于连接设备的线数】
Hub【集线器】
集线器(hub):转发消息的设备。将每台计算机与Hub相连,每增加一个设备,只需要新增一个连接,这样所需的总连接数就会大大降低。
现在我有5台设备,如果设备1要给设备3发送消息,我们设想的方式是设备一发送给Hub,Hub发送给设备3。但是由于Hub同时连接了多台设备,它并不能确定到底哪个设备是设备3,所以它会采用一种简单粗暴的方式:群发。
这样目标设备可以成功接收到消息,当然这种模式的问题也很明显,就是隐私性较差。因为所有的设备都会接到消息,再由设备自己来判断是否要使用数据。
除此以外,集线器是半双工的工作模式,也就是无法同时向上和向下传输。这种模式就像生活中的对讲机。当某个频道中有人说话的时候,其他人只能听,不能说,无法像打电话一样实时交流,所以实时性会比较差。
交换机
交换机与集线器的最大区别:是交换机会记录不同设备的唯一标识,来区分不同的连接设备。而这个唯一标识,就是大家经常见到的MAC地址。
为了确保唯一性,每个网络设备的MAC地址在出厂的时候就已经被写好了,而且是全球唯一的无法修改。当然,这是正常情况下,在使用中,交换机会将每个设备的MAC地址与其对应的端口号记录为一张表。这时,如果设备a希望给设备c发消息,交换机就会根据MAC地址从表中查询到设备c的端口号来进行消息发送。设备c就可以成功的收到消息了。对比集间器交换机的出现,不仅解决了点对点的连接问题,还支持全双工模式,也就是允许两台设备之间同时进行双向的数据传输。这让网络传输方式像我们现在打电话一样实时交流,非常有效的提高了网络带宽的利用率。
除此以外,交换机还支持桥接,也就是通过一根线来连接两个交换机,实现两个交换机中设备的相互访问。例如,存在交换机1和交换机2,并分别连接了不同网络设备。这时,交换机1会将交换机2上面的网络设备端口记录为桥接连接的端口。然后再通过交换机2的MAC地址表来查找设备所在的端口,这样就实现了桥接网络。
分析到这里,你以为这个伟大的发明就没有弊端了吗?其实如果是在较小范围的局域网中使用,比如公司内网学校的教学网等场景下,交换机通常是可以胜任的。但如果我们将网络的覆盖范围继续扩大,例如覆盖一个地区乃至一个城市,问题就会非常明显。
- 因为交换机能记录的MAC地址是有限的,通常为几千或几万个,所以设备太多,会导致表被写满,而且交换机的桥接并不会扩大,这个表的容量。只会增加新的MAC地址记录。
- 从全局来看,在多个交换机连接的情况下,由于消息会在交换机之间传递,如果设备a和设备b所处的交换机在整条链路上的距离非常远。或者之间存在冗余链路,还可能会出现广播风暴和环路等问题。这意味着如果网络规模较大,一味的合并网络并不能有效解决问题。
路由器
为了找到一种更好的方式来连接多个网络,我们需要引入新的设备路由器。注意这里的路由器并不是指的家里连接WIFI用的无线路由器,而是一种专门的网络设备。路由器的作用是找到两个网络之间的更优路径,适用于多个网络的互联与数据转发。同时,为了更好的区分不同网络和网络中的设备,我们可以使用IP来进行标识。
现在存在多个由交换机组织的网络,且每个网络中都存在连接的设备,如果现在我需要让设备a1和设备b1通信。就可以使用路由器来连接多个网络,这时路由器会给不同网络分配网段,如网络a分配网段192.168.1.0/24,网络a连接到路由器的192.168.1.1端口,并且给我网络a内的设备a1分配IP为192.168.1.10。而网络b分配网段192.168.2.0/24,连接到路由器的192.668.2.1端口,并且给设为b1分配IP为192.68.2.20。
其中,不同网络连接到路由器的IP称为默认网关IP,这里要说明的是,IP只是某个设备的临时标识,更便于我们使用,但最终的通信还是要通过MAC地址来完成。当a1要向b1发送消息时,会先在网络a中寻找IP所对应的设备。如果找不到,就会将数据发送给路由器,在路由器中存在一个记录IP和端口映射关系的路由表。路由器会根据路由表来决定如何将数据包转发到网络b。
最后,在网络b中找到192.168.2.20所对应的b1的MAC地址,将数据发送给b1,这样就完成了一次跨网络的数据传输。这时a一会记录下b1的MAC地址,但是由于a1跟b1分处不同网段,他们是无法直接通信的。所以后续的通信呢,还是会通过路由器来进行转发操作,与初次通信的流程相比,并不会有太多简化。
全球网络主体构成
以上分析对于整个互联网来说,只是冰山一角。因为全世界范围内的网络设备数量非常庞大,以我们经常使用的公网IP来计算。(IPv4可以标识的网络设备为232),也就是43亿个网络设备左右,而IPV4在北京时间2019年11月26日就已经宣布耗尽(IPv6可标识2128个设备)。可见,要将如此多的网络设备都连接在一起,组成一个更加庞大的网络互联网,它的难度是何等之高。将它称为是人类创造的最大奇迹,也不为过。
由于全球范围太大,为了实现更加快速稳定的洲际通信。有许多国家的通信光缆制造商会在海底铺设通信光缆。目前,全球共有数百条海底光缆正在使用,而且还在不断建设中。我们之所以能够访问到大洋彼岸的网站,这些海底光缆功不可没,而这也是前段时间红海海底光缆被切断,引发大家担忧的原因。因为红海是全球最重要的三个电缆交汇点之一,如果这些光缆被切断,势必会影响亚欧非大陆之间的网络通信连接。