感悟《计算机网络:自顶向下》(01.概述)

互联网的组成

       随着科技的不断发展,互联网已经成为我们日常生活中不可或缺的一部分。我们打开手机,无聊时看主播、饿了就叫外卖和出去玩打滴滴,享受三驾马车经济的同时,就是在使用互联网。既然我们像呼吸空气一样使用互联网,那互联网是什么呢?

互联网是什么?

       互联网是人类有史以来创造的最大规模的复杂系统,而且它还在不断成长,尝试从几个方面理解它。

       首先,互联网最重要的组成部分就是网络基础设施,包括:计算机、服务器、路由器和光纤等物理设备。这些设备通过无线或有线的方式相互连接,从而形成了网络,为互联网的运行提供基础支持。

       其次,应用程序也是互联网的重要组成部分。这些应用程序包括:浏览器、邮件客户端、即时通讯软件、在线购物平台和短视频直播等等。这些应用程序通过网络基础设施来实现自身功能,使人们的生活更加便利和高效。

       最后,数据也是互联网的重要组成部分。随着互联网的发展,人们可以使用互联网来共享和传输各种数据,包括:文本、图片、视频和音频等。这些数据在互联网上的共享和传输不仅可以促进信息的交流,也为人们的生活和工作提供了更多的选择和方便。

       可以看到,互联网和计算机网络相互成就,因此可以给出该公式:互联网 = 网络基础设施 + 分布式应用 + 数据

       如上图所示,网络中的主机节点主要包括两部分:应用以及基础设施(操作系统和硬件),基础设施提供了socket编程界面,应用依赖socket使用网络服务。应用可以是客户端程序,比如:微信或者淘宝,也可以是服务端程序,比如:淘宝的交易中心系统。

       除了主机节点之外,网络中还包含了大量的路由器,这些路由器可以理解为主机节点的缩小版,它们专注于分组交换和转发,主机节点和路由器构成了互联网的基础设施。

一些概念

       计算机网络涉及的概念非常多,这里选择了部分概念做介绍,如下表所示:

名称 描述 举例
节点 主机和交换节点 主机可以是终端设备或服务器,交换节点比如常见的路由器或交换机
存在于主机到互联网的连接,或者交换节点之间的连接 一般来说,主机到互联网的连接称为接入网,交换节点之间的连接称为骨干(或核心)网
协议 语法、语义、次序和实体之间的动作 有场景和逻辑交互的意义

计算机网络发展历史

       1967年,ARPA网建立,要求是没有中间节点,可用性高的网络,是不是军方要求核打击后能够继续有效工作,还是别的原因,这个不可知,但其结构目标是一切的基础。

       1969年,ARPA网从1个节点扩展到了4个节点。

       1972年,ARPA网进行公众演示,当时基于NCP协议。

       1979年,ARPA网增加到200多个节点。

       1983年,Cerf和Kahn提出IP协议,IP协议可以over到不同的数据链路上,ARPA网从NCP切换到IP协议上,开始整合其他网络。

       1983年,UNIX捆绑TCP/IP协议栈,BSD版本内置支持,促成互联网大发展。

       当互联互通的基础设施搭建完成,配套的系统和软件有了支持,互联网的发展就铺平了道路,而互联网上的分布式应用就迎来了大发展,一切变得日新月异。

分组交换与电路交换

       互联网是计算机网络史上最大规模的应用,它是由网络基础设施和分布式应用构成的,或者说互联网就是构建在网络基础设施上的分布式应用。互联网和计算机网络是逐步发展演绎出来的,尤其是网络基础设施,它肯定不是为了这个庞大系统而全新设计的,它一定是基于现有的基础设施进行构建的,因为这样最经济。

电路交换

       计算机通信看起来和电话电报通信非常相似,后者完成信息或语音的调制,调制后电信号的传输,收到电信号后的解调以及内容还原,从点到点传输数据上来看,计算机通信也需要完成类似工作,而电路交换就是将计算机网络建设在电路交换网络上。

       电路交换需要建立物理连接,或者说物理连接是一直准备好的,家里会有一条电话线通过电线杆连接到电信公司,这根线路是独享资源的。在一根线路上,电信号是以正弦波的形式传播,同时接入网络的设备也不会只有一个,因此可以通过频率(FDM)、时间(TDM)和波长(WDM)等多个维度,将多个信息合并发送(或接收),将通路利用起来。利用波的叠加,同时传输数据,提升利用率。

       无论是采用何种区分形式,在调制和解调两端一定会对这些波长、频率或时间(间隔)有一致的理解,过高的频率在传输中会产生损耗,抵达目标方后由于信号的衰减失真而无法被识别。同样,过多的波进行复合,也会导致一样的结果。因此说到底,就好比在一张白纸上用不同颜色的笔写字,少数几种一起写就好了,内容含量高也好识别,如果几十上百种颜色一起招呼上,那就变成鬼画符,没人认识了。

       说到调制解调的过程,就需要双方进行协商,以前家里Modem进行拨号上网时,Modem拨号时会传出嗡嗡声,其实就是它和电信公司对端的Modem进行协商时的声音。虽然电路交换可以建立计算机网络连接,完成数据传输和交换,但是它存在一些问题,主要有以下几点:

       第一,建立连接耗时。可以看到网络连接建立需要双方协商,以及线路准备,连接建立的时间长,存在比较大的开销。

       第二,线路独享,浪费资源。在电报电话通信中,物理线路点到点是直连的,它服务于两点的通信,当两点之间没有数据传输时,也不能服务他人,这种独享的线路,资源利用率不高。

       第三,可靠性不高。电路交换依赖两点可靠的工作状态以及线路的稳定,如果线路出现故障,影响面就会很大,因为数据传输并不会绕过去。

       除此之外,计算机网络通信的特点与电报电话是完全不同的,前者是离散的,后者是集中的。计算机网络通信需要时不时的进行数据交换,交换目的随机且离散,而电报电话目的性很强,进行连接通话时数据交换集中,不会出现线路占用但上面没有跑数据的情况。

       因此,计算机网络通信其实不适合采用电路交换技术。

分组交换

       分组交换,核心是存储与转发分组,即Packet网络包。分组即包,包即分组。分组交换下的计算机网络都采用存储和转发的方式处理网络包,即输入,处理和输出。相比电路交换,虽然延迟高了,但共享性却提升了。网络节点可以处理多方发送的网络包,为了能够提升网络节点(比如:路由器)的处理能力,通常会使用队列,任何分组交换网络设备(包括:主机)都会有队列,这个队列一般存在于设备内置的存储中,处理过程如下图所示:

       如上图所示,网络设备接收网络数据包,然后将其放置入接受队列中,分组交换设备从接受队列中取出数据包进行处理后,放置到发送队列中,再由分组交换设备从发送队列中取出后,从另一个网络端口进行输出。可以看到,对于网络包的处理,就是生产者和消费者模型,虽然它会出现排队导致的延迟,最差的情况下还会出现由于队列满导致网络包被丢弃,但是分组交换还是非常适合计算机网络通信,主要表现在以下几点:

       第一,支持海量主机。不同于电路交换要求两点之间存在物理直连,分组交换设备以及线路是可以复用与多个网络设备的。

       第二,需要拥塞控制。对于分组交换网络,如果某些节点向网络大量发送数据包,部分设备或者线路就会负载升高,数据包在队列中排队,产生数据拥塞,最终导致网络不可用。

       如果用分布式消息系统来理解分组交换,是非常合适的,虽然分布式消息系统使用计算机网络,而计算机网络基本都是基于分组交换技术的。

       分组交换相较于电路交换,成本低了,支持的设备量级大了,但延迟也增加了,其延迟主要表现在以下几个方面:

名称 描述
排队延迟 在设备中的队列进行排队的耗时
处理延迟 分组设备在接受和处理网络包时需要时间
传输延迟 分组设备将网络发送到线路上的耗时
传播延迟 网络包在线路或媒介中传输的耗时

       使用分组交换网络需要关注延迟。

发展过程

       分组交换比电路交换更适合计算机网络,既然理论都这么认为,那么就干脆独立新建一套分组交换网络来适应计算机?这固然不错,但随着计算机网络一起发展的计算机数量很少,并没有现如今数以百亿级的量级,还轮不到为它单独建立一套网络,因此还是在电路交换基础上进行逐步优化。

       首先对于核心网络,它属于ISP(Internet Service Provider)共治的计算机网络,因此它的自主性很强,可以使用大量分组交换网络设备进行重新建设。由于分组交换设备能够同时服务于多个主机,所以互联网核心网络中大量使用分组交换设备进行互联互通。

       其次对于接入网络,它就可以利用电路交换网络,以电路交换的形式接入,最终在电信公司完成电路交换到分组交换的转换,这样利用毛细血管般的电路交换网络,完成尽可能多的主机接入。当然国内也有公司不信邪,比如:长城宽带,自己铺专线,这个专线就采用分组交换方式进行接入,由于成本太高,最后垮了。

       除了长城宽带这种非典型ISP,大部分互联网使用者最早接触的应该是56K Modem的拨号上网,它采用与固话通信频率一致的4KHz频段进行通信,当它工作的时候,别人打你家电话是处于占线状态的。除了上网时不能打电话,速度也很慢,后来DSL出现了,不再使用4KHz电话频段,而是在电话线上使用4KHz以上的部分频段,一部分频段作为上行,一部分频段作为下行,由于上下行频段数量不相同,下行大于上行,因此简称为ADSL

       既然是将数据调制成信号送到电信公司即可,有线电视的同轴电缆线也可以完成这个工作,因此基于电视Cable的ISP也出现了,比如:华数,通过对有线电视线路的轻度改造,也是可以完成上网工作的。

       使用Modem以及Cable的接入方式,本质上还是在电路交换上完成数据传输,直到光纤入户后,使用全新铺设的光缆,就不一样了。因为在光缆上跑的就是分组交换了,接入网到这一步就算是迁移完成了。

ISP与ICP

       主机节点通过ISP接入到互联网,而ISP的数量成千上万,它们之间需要相互连通。ISP也会有大小,就好比银行一样,小的ISP负责接入终端用户,大的ISP可以连接多个ISP。

       通过多个ISP的互联互通,主机之间可以通过ISP实现相互访问,互联网的基础设施就构建起来了。ISP之间可以通过IX(Internet eXchanger)进行连接,一般这种设备出现在骨干网上,或者简单的情况,双方通过使用几个路由器建立对等网络来进行数据交换,也是可以完成ISP互联的。

       ICP(Internet Content Providers),互联网内容提供商,比如:谷歌或者腾讯。早期ICP是在ISP的数据中心里租用几台服务器,然后搭建网站对外提供服务,但由于成本、效能和可用性等多方面因素,规模以上的ICP就会自建数据中心。

       以谷歌为例,一个数据中心内有上万台服务器,它们会向全球提供服务。ICP自建的数据中心一般会放在比较大的ISP数据中心旁,通过光纤连到数据中心,完成互联网的接入。

       如上图所示,ISP和ICP组成了多张复合的网,ISP负责将终端接入到互联网,而ICP也参与进来,建立数据中心,与ISP相连。

网络分层

       计算机和计算机网络的发展是相互促进的,越来越多的计算机应用都需要使用到计算机网络提供的服务,为了避免计算机网络重走计算机“差异化”发展的老路,就需要制定一套规范,使得不同类型的计算机都能够接入到网络中,同时在不同类型的计算机系统上开发网络应用,也会有一致的标准。

       通信背景的人在一顿晚饭后,认为7是一个不错的数字,在此基础上制定了OSI参考模型,也就是那个只存在于书上的OSI七层模型。我们现实中,实际是TCP/IP模型7层的OSI和4层的TCP/IP之间的对应关系与描述如下表所示:

名称 描述 TCP/IP参考模型
应用层 定义应用程序使用的通信协议,比如:HTTP协议 应用层
表示层 应用数据格式转换为可以在网络上互通的格式,比如:编解码,JPEG格式等 应用层
会话层 管理通信连接,比如:逻辑会话,session 应用层
传输层 建立和断开连接,比如:网络连接,TCP/UDP 传输层
网络层 支持地址划分和数据路由,比如:IP协议、ICMP 互联网层(网络层)
数据链路层 互相物理连接的两台设备之间进行通信,比如:以太网,MAC 网络接口层
物理层 二进制到电或光信号的互转,面向媒介进行传递,比如:MAU 网络接口层

       目前虽然TCP/IP是事实标准,但是用5层还是会好一些,也就是:

  1. 应用层,负责应用协议,以及应用逻辑关系,可能是C/S架构的应用下,支持客户端和服务端的语义传递;
  2. 传输层,操作系统网络协议栈需要实现的功能,并且提供一致的SDK,能够支持应用开发面向字节的进行网络数据传输;
  3. 网络层,支持IP地址对设备的标识,能够以IP为基础,进行网络包的路由,从而满足分组交换的基本诉求;
  4. 数据链路层,点对点有效通信,设定媒介上传输的数据格式,到这里还是数字格式,面向字节;
  5. 物理层,链路层字节数据与媒介中传输信号的转换,有含义的信号传输。

       网络接口层还是分成数据链路层和物理层,前者是面向物理层的数据建模,它是连接网络层和物理层的桥梁,网络层可以依靠它来进行编程,就像IP协议需要以太网支持一样。数据链路层通过将MAC化后的字节,发送给物理层的MAU,再经过MAU的调制,就会转换为在物理层媒介上传输的信号。两个层次的职责还是很明确的,所以5层结构显得更加合适。

results matching ""

    No results matching ""