计算机网络入门

63 阅读3分钟

想要成为一流的 PostgreSQL 内核工程师,就必须对计算机网络有良好的了解,因此,依托于《计算机网络》,我展开了学习,并将学习的心得,记录于此。

计算机网络关注的核心问题,就是信息的交换问题,换而言之,找出一种合理有效的方式,对计算机的数据进行传输。

我们将从两个角度对计算机网络进行考察。

宏观层面:金字塔式的万物互联

在这里插入图片描述

所有的数据传输,归根结底就是电子信号的传输,而布局于各个城市的有线网络,就这么串珠成链式地搭建起了全球互联的骨架。

而无线网络(如 WiFi,卫星)等,也只是为各个设备接入有线网络而服务的。

因此,宏观层面地网络实际上就是一张巨大的网络,他们包罗万象,但并不无序,事实上,他们保持着金字塔式的结构,逐层上升,最终到到“全球 ISP"的顶点。

但是对于我们而言,我们一般喜欢从微观层面研究我们的网络,因为这更加符合我们日常开发的特点。

微观层面:两台主机的互联互通

在宏观层面上,我们的网络,是金字塔式的,但是在微观的角度上面看,我们的网络,就成为了“点对点"的见面。

换而言之,我们可以将其理解为“主机连接主机"

在这里插入图片描述

区别就在于,两台主机,究竟是直接连接,还是需要经过中转站,进行间接连接。

开发者层面:远程文件读写

同时,我们也要看到,在实际的开发之中,操作系统的存在让一切变得更加简单,一方面,操作系统屏蔽了硬件操作的细节,让硬件资源的管理负担在开发者这一层几近于无,而另一方面,操作系统对我们开放了大量的操作系统调用接口,用简化的设计帮助我们更有效的开发程序。

以我们开发 PostgreSQL 时所使用的 Linux 操作系统为案例,它将网络数据包的收发,抽象为了“远程文件读写"。

在这里插入图片描述

而其它复杂的管理工作,则由操作系统进行代劳。

我们只需要关注:

  1. 我们需要连接到哪个网络地址(类比为打开一个已知地址的文件)
  2. 我们需要读写多少数据(类比于读写文件)
  3. 我们是否需要结束连接(类比于关闭文件)

当然,在实际开发之中,情况远远比这三点复杂,而我们在这里所提及的关注点,更加类似于客户端的思路,这就需要引入新的理念与新的知识。

这超出了本文的篇幅,所以我打算放在后面进行讨论。