💻 CSC1003 TBL1 网络与计算机史
TBL = Things Beyond Lecture。是讲座跳过的 PPT 内容,你可以在Chat.1里找到这些内容的简略版。
网络与计算机的历史
20世纪40年代,是命令行时代。第一台全电子通用计算机 ENIAC 于45年诞生于美国宾州大学。当时人们输入一行命令,计算机执行一行。
20世纪50年代,是批处理时代。操作员将用户的程序和数据装入卡带和磁带,计算机按照一定的顺序读取命令。同一时间只能运行一个程序。
20世纪60年代,是分时系统时代。客户用的设备:终端(terminal),是没有多少算力的,它们只是用于输入和输出的设备,通过网络连接到主机(host),也就是中央计算机,由后者进行计算和数据处理。多个终端与一个计算机相连,允许多个用户同时使用一台计算机的系统。这种私人网络更多是为了共享算力,且 hosts 间也是不相连接的。但同一时期,互联网的前身 ARPANET 也在美国国防部 ARPA 部门诞生了。
70至80年代,是网络兴起时代。个人计算机(PC)兴起并普及,传统意义上的 host 与 terminal 逐渐合并,用户端可以独立进行计算,比如台式机。这也导致了“主机”一词容易出现歧义,PC 中的计算机部分称为本地设备(localhost)。1983年,ARPANET 转换到TCP/IP 协议,互联网正式诞生。1984年,DNS系统推出,用户通过易于记忆的URL地址访问网络资源,不再直接使用IP地址。
20世纪90年代起,是互联网兴起时代。互联网随着World Wide Web在1991年全球范围的发布一起,从一个半封闭的科研网络转变为一个面向公众的全球网络。又随着浏览器与ISP的兴起,逐渐走向商业化并普及化。
从一行命令、一个程序、一台终端、一个内网到一个全球互联网,计算机网络的发展与普及速度远超于其它任何科技。
协议(protocol)与接口(port)
当处理访问信息时,我们可以将计算机视作一位严厉且完美主义的英语教授,她不接受洋泾浜或者混乱的语法。即使 “Long time no see” 对于一位普通的 English native speaker 是可以理解的,但这位教授认为:一切语言都包涵信息,而语法准确是信息理解准确的必要前提。而计算机的各个组件也必须严格的按照特定的“语法”,即协议,才可以顺利通信,比如所有信息传输都符合分组传输协议。我们这位教授所谓的“准确”就是“唯一的,无歧义的”,不能有各种方言。英语就该是老伦敦腔,而互联网上的通信也必须遵守国际标准OSI。
计算机网络是高效的,简洁的。假设我要把“Hello world”这一句话传给美国加州的同学,如果不改动信息本身,我只能把它们写下来,邮寄出去。网络通信可以理解为反复地转译一段信息,把原本的信息装在一个包裹里,并贴上翻译后的信息,以此类推,直到最终只用 0 和 1 两种状态码组成的“语言”来表示。这种语言因为简洁,而有各种表达媒介,比如电势的高和低,光的有和无……无论如何,每一次翻译就会进入一个层,层内交流用协议,而层间交流用接口。
OSI分层模型
我们以百度搜索为例,解析OSI模型中最核心的几层和它们遵守的协议。
当试图在百度上查询信息时需要输入它的 URL 地址,此时直接接触到的是应用层,遵守 HTTPS(超文本传输)协议,超文本是浏览器页面的构造语言,在 macOS 的浏览器里敲 Fn+F12 就会显示出来。同一层的协议还有 TELNET、SMTP、HTML、SSL等。这一层的目的是确保网页 UI 正常显示,浏览器服务正常运行。
下一个比较重要的是传输层,遵守 TCP(传输控制)协议,TCP 是面向有连接型传输,ICMP(Ping 命令)就是 TCP 的一种。同一层的协议还有 UDP(面向无连接型传输),比如视频信号传输。UDP 迅速但无顺序、不稳定、可能丢包。以下是TCP 协议著名的三次握手: 第一步:客户端向服务器发送一个带有 SYN(同步) 标志的数据包,表示希望建立连接,并包括一个初始序列号。 第二步:服务器收到 SYN 包后,返回一个带有 SYN 和 ACK(确认) 标志的数据包,确认收到客户端的 SYN,并发送自己的初始序列号。 第三步:客户端收到 SYN-ACK 后,再发送一个带有 ACK 标志的数据包,确认服务器的序列号,连接建立。 这一层的目的是确保信息传输的安全性和完整性。
然后是网络层,遵守 IP(网络)协议,先前输入的百度 URL 地址经过 DNS 服务器或者本地 DNS 配置解析为 IP 地址。我们常说的 “DNS 污染”,大陆人使用 VPN 的原因之一,就是因为无法解析出 IP 地址。IP是一种“软地址”,在同子网中唯一,但不是唯一的,比如所有本地设备的 loopback IP 地址都是127.0.0.1。这一层的目的是确保寻址的可行性,在硬件设备上确保信息可以传递到目标地址。
接着是数据链路层,遵守 MAC 协议,与 IP 不同,MAC也 称为物理地址,它是“硬地址”、绝对地址。MAC地址是唯一的,且每个设备都储存了同一子网中的所有设备的MAC地址,可以在终端中键入 arp -a 查询。ARP与 DNS 功能很像,但它将 IP 解析为 MAC。这一层的目的是负责物理层面上互连的,节点之间的数据帧的生成和接收。
换而言之,每当层级向物理层下降,都会在原有数据包头部增加一个符合该层协议的“快递信息标签”,确保无论是世界各地的哪种“快递公司”和“驿站”都可以将信息往正确的方向传输。其实,数据传输就是封装包裹,解开包裹的循环。
最后一层是物理层,本层只有 0 和 1 两个状态码。这一层的目的是确保比特流的传输和光电信号转换。
然后,当我的访问信息传输到百度服务器时,返回信息会议相似方法包装并传输回我的地址。
监测本地设备的数据流
Wireshark是一个可以监控计算机数据流的软件。通过右键数据帧并 “copy bytes as hex + ASCII dump”,扔给 GPT 分析就可以让计算机初学者也能理解自己上网为什么404、丢包之类的。
Reference
https://lfool.gitbook.io/computer-network/di-yi-zhang-wang-luo-ji-chu-zhi-shi