互联网的诞生:从 ARPANET 到 World Wide Web

互联网已经成为现代社会最重要的基础设施之一。然而在二十世纪中期,计算机仍然是彼此孤立的大型设备。互联网的出现并非一次性发明,而是几十年技术积累的结果。从早期计算机互联需求,到 ARPANET 的建立,再到 TCP/IP、DNS 与 World Wide Web 的出现,一条清晰的技术演化路径逐渐形成。 本文按照时间顺序,简要梳理互联网诞生的关键历史节点。 一、互联网出现之前:孤立的计算机时代(1950s–1960s) 二十世纪五十至六十年代,计算机具有以下特征: 通常一台计算机会服务一个机构,例如大学实验室、科研机构或军方单位。不同机构之间的数据交换主要依赖磁带、纸带等离线方式。 随着科研合作需求增加,一个问题逐渐显现: 如何让不同计算机之间实现远程通信和资源共享。 这一需求成为计算机网络研究的起点。 二、ARPANET:互联网的起点(1969) 互联网历史通常以 ARPANET 作为起点。 ARPANET 由美国国防部的 ARPA(Advanced Research Projects Agency) 资助建设,其目标是让不同科研机构的计算机能够互联。 1969 年,ARPANET 建立了最初的四个节点: 这些节点通过专用通信线路连接,形成最早的计算机网络。 互联网历史上的第一条消息 1969 年 10 月 29 日,UCLA 向 Stanford Research Institute 发送远程登录指令: login 系统在发送过程中崩溃,仅成功传输前两个字符: lo 因此,互联网历史上的第一条网络信息实际上是: lo 这一事件后来成为互联网发展史中广为流传的一个细节。 三、关键技术:分组交换(Packet …

构建全球域名变化观测系统:从 Root DNS 到 Zone File 监控

一、DNS 根服务器体系 DNS(Domain Name System)是互联网最核心的基础设施之一。在 DNS 架构中,最顶层是 Root DNS(根服务器)。 全球共有: 13 个逻辑根服务器 它们分别为: 需要注意的是: 当前全球 root server 节点数量已经超过: 因此根服务器实际上分布在全球各地,例如: 日本的 M-root 由 WIDE Project 运营。 二、Root Zone 的规模 Root DNS 的数据量其实非常小。 Root zone 文件记录的内容是: 也就是说,它只保存: 当前 root zone 文件大小大约: 包含 DNSSEC 后约: 因此: 整个 Root DNS 可以轻松镜像。 获取地址: 三、监控 Root …

域名的诞生:互联网最早的域名与顶级域名体系

互联网今天已经拥有数亿个域名,但很少有人知道:域名体系其实诞生于 1985 年。 本文将系统介绍: 一、互联网为什么需要域名 在互联网早期,计算机之间通信依赖 IP 地址。 例如: 26.0.0.73 这种数字地址虽然对计算机来说没有问题,但对于人类来说: 因此工程师提出了一种新的系统: DNS(Domain Name System)——域名系统 DNS 的作用就是: 把人类可读的名称转换为计算机可识别的 IP 地址。 例如: symbolics.com → IP地址example.net → IP地址 二、DNS 系统的提出 DNS 系统在 1983 年被正式提出,并在随后几年逐渐部署。 DNS 的设计核心是: 层级结构(Hierarchical Structure) 互联网被组织成一棵树: .├── com├── org├── net├── edu├── gov└── mil 最顶端的 . 被称为: Root(根域) 所有域名最终都属于这棵树。 三、第一个域名的诞生 …

TCP/IP 协议详解:互联网通信的核心架构

互联网能够在全球范围内稳定运行,依赖于一套统一的通信规则体系。其中最核心的就是 TCP/IP 协议族(TCP/IP Protocol Suite)。它定义了数据如何在网络中被封装、传输、路由以及接收,是现代互联网的基础。 本文将从 协议结构、分层模型、关键协议、数据传输过程以及连接机制 等方面,对 TCP/IP 进行系统介绍。 一、TCP/IP 协议的基本概念 TCP/IP 是 Transmission Control Protocol / Internet Protocol 的缩写。 它并不是单一协议,而是 一组协议的集合,用于解决网络通信中的三个核心问题: 在 TCP/IP 体系中: 可以用一个简单的类比理解: 协议 作用 IP 负责确定数据要发送到哪里 TCP 负责确保数据完整到达 如果将网络通信比作邮寄包裹: 二、TCP/IP 的四层模型 TCP/IP 协议通常采用 四层结构模型。 Application Layer 应用层Transport Layer 传输层Internet Layer 网络层Network Interface 网络接口层 常见协议在各层中的位置: 应用层HTTP …

从网段到 CIDR:理解 IP 地址后面的 /24、/31 与路由聚合

在学习 TCP/IP 网络时,很多概念表面上看只是记忆题,比如“网段”“子网掩码”“CIDR”“广播地址”“路由聚合”。但这些概念其实都不是孤立存在的,它们共同描述了一件事: 互联网中的地址如何被组织、划分、识别与转发。 本文从最基础的“网段”开始,一直讲到家庭网络为什么几乎总是 /24,以及互联网为什么必须依靠 CIDR 聚合 才能维持全球路由系统的可扩展性。 一、网段是什么 所谓网段,本质上就是: 一组属于同一个网络范围、可以按同一套网络规则被识别的 IP 地址集合。 更直白一点说,网段就是“某一批 IP 地址所在的那个网络范围”。 例如: 192.168.1.1192.168.1.2192.168.1.3192.168.1.10192.168.1.254 这些地址如果使用相同的网络前缀,就可以被认为属于同一个网段,例如: 192.168.1.0/24 这表示: 因此,网段不是单个 IP,而是一个地址范围。 二、为什么要有网段 如果没有“网段”概念,那么整个网络世界就会变成“所有设备都直接平等地散落在一个巨大地址池里”,这会带来两个问题: 第一,地址管理混乱。第二,转发效率极低。 所以 TCP/IP 网络采用的不是“纯主机编号”结构,而是: 网络部分 + 主机部分 这意味着一个 IP 地址不是纯随机编号,它内部自带结构。例如: 192.168.1.25 在某种掩码条件下,可以理解成: 也就是“在 192.168.1 这个网络里的第 25 号主机”。 这就是网段存在的意义:先确定属于哪个网络,再确定这个网络里的哪一台设备。 三、IP 地址后面的 /24 是什么意思 像下面这样的写法: 192.168.1.10/24 …

Packet Switching(分组交换)原理解析

一、引言 现代互联网建立在 Packet Switching(分组交换) 的基础之上。这一设计使得全球网络能够在分布式环境中稳定运行,并具备极强的容错能力和扩展能力。 与早期电话网络的 Circuit Switching(电路交换) 不同,Packet Switching 将数据拆分为多个独立的数据包,通过网络中的不同路径传输,最终在接收端重新组合。 本文介绍 Packet Switching 的基本概念、传输过程以及其在互联网架构中的重要作用。 二、Packet Switching 概念 Packet Switching(分组交换) 是一种网络通信方式,其核心思想为: 将完整的数据拆分为多个数据包(packet),分别在网络中独立传输,并在接收端重新组合。 每个 packet 通常包含两部分: 数据部分(payload)控制信息(header) Header 中通常包含以下信息: 由于每个 packet 都携带目标地址,因此它们可以在网络中独立路由。 三、数据传输过程 在 Packet Switching 网络中,数据并不会沿着固定路径传输,而是由网络中的路由设备动态决定路径。 例如,从日本访问美国服务器时,数据可能经过多个网络节点: 客户端 ↓本地路由器 ↓ISP ↓国际骨干网络 ↓目标服务器 在这一过程中,不同的数据包可能走不同路径,例如: Packet1: Osaka → Tokyo → Los Angeles …

一个HTTP请求的曲折经历

原文: https://www.neroht.com/article-detail/18 一个HTTP请求的曲折经历 nero发布于 2020-04-30 09:04:73 写在前面 作为程序员的我们每天都在和网络请求打交道,而前端程序员接触的最多的就是HTTP请求。平时工作中,处理网络请求之类的操作是最多的了。但是一个请求从客户端发出到被服务端处理、再回送响应,再被客户端接收这一个闭环的底层细节可能并没有深究过,本篇文章是我的一篇读书笔记,总结出来恰好涉及到了这一过程,分享出来希望可以对大家有所启发。 文中某些点如果表述有误,欢迎指出来,不胜感激。 从一个经典的面试题说起 从输入URL到页面展现的过程 输入URL后,会先进行域名解析。优先查找本地host文件有无对应的IP地址,没有的话去本地DNS服务器查找,还不行的话,本地DNS服务器会去找根DNS服务器要一个域服务器的地址进行查询,域服务器将要查询的域名的解析服务器地址返回给本地DNS,本地DNS去这里查询就OK了。 浏览器拿到服务器的IP地址后,会向它发送HTTP请求。HTTP请求经由一层层的处理、封装、发出之后,最终经由网络到达服务器,建立TCP/IP连接,服务器接收到请求并开始处理。 服务器构建响应,再经由一层层的处理、封装、发出后,到达客户端,浏览器处理请求。 浏览器开始渲染页面,解析HTML,构建render树,根据render树的节点和CSS的对应关系,进行布局,绘制页面。 这4个步骤包含了一个HTTP请求的完整生命周期,文章着重介绍第2步和第3步,也就是请求是如何在两个物理端点之间进行通信的。数据的发出和接收必然会经历一些处理、解析的过程,这些过程在系统的不同层次进行。 分层 一个HTTP请求从源端发出到在终端接收的处理过程都是要经过以下四层。其中每一层都有各自的协议。 我们先来理解一下协议是什么,协议是经过约定,双方共同承认,并且需要共同遵守的规则。上面的每一层,都有各自的协议,协议的执行者是通信链路两端内的对应层。每一层通过协议来理解数据,并进行处理。 上图中只举例出了最常见的协议,实际上每一层都有细分的协议: 应用层:应用程序负责将数据以相应规则(协议)进行包装,发给传输层 HTTP:超文本传输协议 FTP:文件传输协议 SMTP:简单邮件传送协议 SNMP:简单网络管理协议 传输层:负责将应用层传过来的数据进行分组,为确保终端接收数据的顺序和完整性,会对每个分组进行标记,交给网络层 TCP:传输控制协议 UDP:用户数据协议 网络层:负责将传输层发来的数据分组发送到目标终端 IP:网际协议 ICMP:Internet互联网控制报文协议 IGMP:Internet组管理协议 链路层:为网络层发送和接收数据单元 ARP:地址解析协议 RARP:逆地址解析协议 封装和分用 数据在经过每一层的时候都要被对应的协议包装,到达终端的时候,要一层一层的解包。这两个过程叫封装和分用。 发送时,用户数据被HTTP封装为报文,每一层会将上层传过来的报文作为本层的数据块,并添加自己的首部,其中包含了协议标识,这一整体作为本层报文向下传递。 接收时,数据自下而上流动,经过每一层时被去掉报文首部,根据报文标识确定正确的上层协议,最终到应用层被应用程序处理。 封装 源端发送HTTP报文时,报文会以数据流的形式通过一条已经打开的TCP连接按序传输,TCP收到数据流后会将其分割成小的数据块,每个小块被添加的TCP首部与数据块共同组成了TCP分组,分组经由网络层发送,网络层遵循IP协议,当收到分组发送请求后,会将分组其放入IP数据报,填充报头,将数据报发经由链路层发送出去。 这一过程经过每层的时候都会被增加一些首部信息,有时还需要增加尾部信息,每一层都会把数据封装到各自的报文中, 并在报文首部添加协议标识,这个过程叫封装。 分用 终端接收到一个以太网数据帧时,数据自底层向上流动,去掉发送时各层协议加上的报文首部,每层协议都要检查报文首部的协议标识,从而确定上层协议,保证数据被正确处理,这个过程叫分用。 终端从链路层接收到数据请求后,进入网络层对数据进行解析,交给给传输层,校验分组顺序和完整性,从数据块中取出数据,得到HTTP报文,交给应用层进行处理。这个过程会逐层剥离报头还原数据。 逐层分析 我们已经知道,数据是从源端自上而下到终端自下而上被一层层处理的,现在就来看一下每层都做了什么事情。 HTTP HTTP属于应用层,用户触发交互所产生的行为数据和服务端对此的响应都由它封装成HTTP报文,再交由下层协议进行处理。报文的作用是客户端与服务端沟通的载体,双方都要遵循统一规则对信息进行处理,这一规则称为HTTP。 …