计算机网络的起源与发展历程
文章目录
- 前言
- 时代背景
- ARPANET 的诞生
- TCP/IP 协议簇与 Internet 的诞生
- HTTP 协议与 Web 世界
- 结语
前言
在当今数字化时代,计算机网络已经成为我们生活中不可或缺的一部分。无论是在家庭、学校、还是工作场所,我们都能感受到网络的巨大影响。随着互联网的普及和技术的进步,我们享受到了前所未有的便利生活,可以与世界各地的人们交流互动,获取信息、分享经验,甚至是开展全球性的合作与交易。网络已经将整个世界连接在了一起,为我们的工作、学习、娱乐等方面带来了前所未有的便利。让我们一起感受这个数字时代带给我们的无限可能性,探索计算机网络的发展历史。
时代背景
在第二次世界大战落下帷幕之后,世界格局迅速演变,美国和苏联崛起成为两个超级大国。为了避免新一轮全球范围冲突的发生,并且尽可能在相对和平的状态下争夺全球的话语权,两国及其同盟国开始了长达数十年的角逐,对抗的方式通过科技军备竞赛、太空竞赛、外交竞争以及局部代理战争的 “冷” 方式进行,因此也被称为美苏冷战。
1957 年 10 月 4 日,苏联于拜科努尔航天中心毫无先兆的发射了人类历史上第一颗人造地球卫星—斯普特尼克1号(Sputnik 1),这也就意味着他们已经拥有了两个优势
1. 拥有了将卫星送入轨道的能力
2. 洲际弹道导弹的技术已被成功验证,长距离打击已经成熟
在日趋严峻的冷战对抗形势下,这无疑直接对美国国家安全造成严重威胁,为了不落后于苏联,国会授权国防部(DOD)成立了高级研究计划局(ARPA,Advanced Research Project Agency),主要任务是将科学技术应用于军事领域,确保美国的军事科技处于全球领先地位,防止遭受潜在敌人的尖端科技突破 。
1961 年 10 月,苏联 R-16 洲际导弹成功完成飞行试验,这意味着美国本土已面临着远程核导弹打击的威胁。为了保证能在苏联的第一轮核打击下具备一定的生存和反击能力,美国国防部授权 APRA 研究一种 “分布式“ 的指挥系统,整个系统由无数的节点组成,即使其中的某些节点被摧毁,其它节点之间仍能相互通信。
ARPANET 的诞生
1962年,MIT的约瑟夫·利克莱德(J. C. R. Licklider)加入ARPA,将办公室名称从命令控制研究(Command and Control Research)改为信息处理技术办公室(IPTO,Information Processing Techniques Office),并担任IPTO的第一任主管,工作的重点主要是研究可抵御敌军打击的军用通讯系统,其它任务还包括电脑图形、网络通讯、超级计算机等课题,于是乎,研究“分布式“ 指挥系统的任务就落在了IPTO的头上。利克莱德写了一份备忘录,里面描述了他所设想的一套全球互联计算机的“银河网络”概念,通过这些互联的计算机,每个人都能够从任何站点快速的访问数据和程序。
1965年,威尔士计算机科学家唐纳德·戴维斯(Donald Davies)提出了分组交换的概念,意思是将计算机传输的消息进行分组,他在咨询了一位语言学家后选择使用“packets” 数据包 这个词来描述这些消息分组,这些数据包能在网络上独立的从源地址传输到目的地址,这些线路的选择便称为路由,当然每组之间能自由的选择不同的路由,并最终在目的地重新组装成原来的样子。
1966年,美国航空航天局(NASA)的鲍勃·泰勒(Bob·Taylor)接任信息处理技术办公室的第三任主管。在他的领导下,一项具有历史意义的计算机网络概念逐渐成形。泰勒对计算机通信的前景有着远见,意识到不同系统之间互通的重要性。他在考查了一个由三台电传打字机和三台计算机组成的小型通信网络后,坚信不被兼容的计算机通信毫无意义。为此,他倡导建立一个兼容的协议,使所有终端能够无障碍地互相通信。很快,泰勒的新型通信网络项目完成了内部立项,ARPA 将其命名为阿帕网(ARPANET),这也将人类通信的未来引领了新的方向。
为了推动ARPANET项目的实现,泰勒开始积极招募人才。其中,麻省理工学院(MIT)林肯实验室的拉里·罗伯茨(Lawrence Gilman Roberts)受邀加入,并担任了ARPANET的项目经理和首席架构师。同时,他还邀请了美国加州大学洛杉矶分校(UCLA)的分组交换理论专家伦纳德·克兰罗克(L.Kleinrock),以及兰德公司科学家保罗·巴兰(Paul Baran)加入团队。值得一提的是,巴兰提出的“分布式通信理论”提供了两个重要思想:
1. 网络的控制权应该完全分散。
2. 网络应该采用分组交换(Packet Switching)替代电路交换(Circuit Switching)。
这些理论的提出使每个节点在数据路由时都具备了同等地位,奠定了未来互联网的最基本特征。
罗伯茨设计的阿帕网(ARPANET)是第一个具有分布式控制的广域分组交换网络。在这个设计中,主机不再负责处理数据路由的任务,而是由一个小型、廉价的计算机来承担,这个计算机被称为IMP(Interface Message Processor,接口信号处理机)。IMP的作用是连接、调度和管理网络。主机将数据包发送给IMP,IMP会查看目标地址,然后将数据包传递到本地连接的主机,或者传递给另一个IMP。有了IMP,大型主机不再需要直接参与联网,从根本上解决了计算机系统不兼容的问题。IMP也可以看作是现今路由器的雏形。
为了防止数据包丢失,发送方的IMP会暂存数据包,直到接收方的IMP发送确认信息(ACK)。如果没有收到确认信息,发送方的IMP会重新发送数据包。在那个时候,确认信息的重传机制是由中间路由节点来完成的,直到后来逐步演进为由主机的TCP/IP协议栈来完成。这一设计为当今互联网的核心基础设施奠定了基础,并且影响着网络通信技术的发展方向。
1968年,罗伯茨提交了一份名为《资源共享的计算机网络》的研究报告,重点阐述了在ARPA内部建立计算机互联的重要性,以实现大家研究成果的共享。基于这份报告,国防部开始组建“高级研究计划网”,即著名的“阿帕网”。拉里·罗伯茨因此成为了“阿帕网之父”。同年夏天,美国国防部正式启动了阿帕网(ARPANET)项目的商业招标,开启了这一里程碑式计划的实施阶段。
1969年,ARPA建立了IMP的研发测试中心,由马萨诸塞州坎布里奇市中标的 BBN(Bolt Beranek and Newman Inc.)公司进行制造,基础硬件选用了配备12KB 内存的 Honeywell DDP-516 小型计算机。与此同时,泰勒被派往越南,随后辞去了职务,罗伯茨则接任了IPTO的主任。项目开始的第一阶段,罗伯茨计划在美国西南部建立一个四节点网络,第一个节点在加州大学洛杉矶分校(UCLA),第二个节点在斯坦福大学研究学院(SRI),第三个节点在加州大学圣巴巴拉分校(UCSB),第四个节点在犹他州大学(UTAH),每个节点使用一台大型计算机,采用分组交换技术,通过专门的 IMP 设备以及由 AT&T 公司提供的速率为 50kbps 的通信线路进行连接。
在这个阶段,BBN公司的罗伯特·卡恩,Robert Elliot Kahn)也加入了阿帕网(ARPANET)项目,并前往加州大学洛杉矶分校参与工作。与此同时,罗伯茨曾经的麻省理工学院同事伦纳德·克莱因罗克(Leonard Kleinrock)教授带着 40 多名技术人员和研究生进行安装和调试。根据事先的约定,在加州大学这一端只需要输入“LOG”这3个字母,然后斯坦福大学那一端的主机就会自动产生“IN”这两个字母,从而组成“LOGIN”,用以验证两个节点之间的通信是否成功。
至此,第一个阿帕网(ARPANET)就在 1969 年诞生了,将加利福尼亚州大学洛杉矶分校、加州大学圣巴巴拉分校、斯坦福大学、犹他州大学四所大学的 4 台大型计算机进行了互联,第一个四节点的网络诞生,社会开始迈入 “网络时代”。
尽管按照现代标准来看,这个最早的网络显得非常原始,传输速度也很慢,难以令人满意。然而,阿帕网的四个节点及其连接,已经具备了网络的基本形态和功能。因此,阿帕网的诞生被普遍认为是网络传播的“创世纪”。
TCP/IP 协议簇与 Internet 的诞生
在阿帕网(ARPANET)开始正式运行后,人们发现各个节点的IMP在进行连接时需要一种能够同时被4台IMP统一识别的信号,用以开启和关闭通信管道。否则,这些IMP无法准确判断何时应该接收信号,何时应该停止接收。
为了解决这一问题,加利福尼亚大学洛杉矶分校的斯蒂芬·大卫·克罗克(Stephen David Crocker)在ARPANET 项目设计初期创建了一个名为NWG(Network Working Group)的网络工作研究小组。他们致力于通过编写一种中间层软件通信协议,使主机之间的通信得以实现,同时他也记录了阿帕网相关的开发文档,最终演变为用来记录互联网规范、协议、过程等的标准文件—请求意见稿(英语:Request for Comments,缩写:RFC)。
1970年12月,这个小组成功实现了阿帕网(ARPANET)第一版的通信协议,命名为网络控制协议 NCP(Network Control Protocol)。
1971年,BBN公司的雷.汤姆林森(Ray Tomlinson)对已有的传输程序 SNDMSG(Send Message) 进行修改,使用两台由数字设备公司制造的DEC-10计算机,通过阿帕网(ARPANET)进行了通信。为了区分用户与计算机名,他决定采用@符号进行分隔,@前面加用户名,后面加计算机名,于是我们所熟知的电子邮件 E-mail 诞生了,电子邮件从根本上改变了人们的交流方式,可以说算的上是互联网最长寿的产品了。
1972 年,罗伯特·卡恩在国际计算机通信大会(ICCC)上演示了阿帕网,这也是阿帕网(ARPANET)的首次公开亮相。经过几年的发展,阿帕网已经拥有了 40 个节点,其中E-mail、FTP 和 Telnet 成为当时最主要的网络应用。尤其是 E-mail,占据了整体流量的75%。与此同时,在阿帕网的成功推动下,计算机网络领域涌现出了一些其他的网络类型,比如:夏威夷的分组无线电网络(ALOHA NET),太空卫星的卫星网络(SAT NET)等等。于是,如何将阿帕网(ARPANET)与其它网络进行连接成为新的挑战。
随着 ARPANET 的发展和用户对网络需求的不断提升,人们开始发现 NCP 协议存在着很多缺陷,协议在设计时对网络中机器设备的标准化要求过高。
1. NCP 支持的主机数量有限
2. NCP 只能在相同计算机操作系统架构的环境中运行
对于一个分布广泛的网络而言,这些缺陷就必然成为发展路上最大障碍,针对 NCP 协议存在的问题,卡恩意识到只有深入理解各种操作系统细节,才能建立一种各种操作系统都兼容的协议。于是他提出了 “开放网络架构” 的思想,即各个网络可以单独进行设计与开发,网络接口可以向外提供,并且能够通过一种通用的连接方法进行互联。
1973年,来自斯坦福大学的文顿·瑟夫(Vinton G. Cerf)加入了 ARPA,他设想出了新的计算机网络交流协议,开始负责领导基于 NWG 改建的 INWG 工作小组。于是,卡恩邀请瑟夫一起研究新传输协议的各个细节,并在不久后共同提出了 TCP 传输协议(Transmission Control Protocol)。为了验证 TCP 协议的可用性,INWG 开始试验基于 TCP 协议的客户端 (Client) 软件将一个数据发送到距离 10 万公里外的服务端 (Server)软件。结果观察数据在传输过程中没有任何丢失,TCP 协议的可行性得到了验证。于是阿帕网(ARPANET)通过卫星通信的方式采用TCP协议实现了与夏威夷、英国伦敦大学和挪威皇家雷达机构的联网。ARPANET 从美国本地互联网络逐渐进化成为了一张国际性的互联网络。同年,施乐帕洛阿尔托研究中心的鲍勃·梅特卡夫 (Bob Metcalfe) 开发了以太网技术,它定义了三个网络类别(A、B 和 C)以适应网络范围。
A类代表大型全国性网络(网络数量少,主机数量多)
B类代表区域规模网络
C类代表局域网(主机数量相对较少的大量网络)
1975年,阿帕网(ARPANET)被转交到美国国防部通信处(Defense Department Communicationg Agence)。此后阿帕网不再是实验性和独一无二的了。大量新的网络在1970年代开始出现,包括计算机科学研究网络(CSNET,Computer Science Research Network),加拿大网络(CDNET,Canadian Network),因时网(BITNET,Because It’s Time Network)和美国国家自然科学基金网络(NSFNET,National Science Foundation Network)。
1977 年,此时APRA 改建为 DARPA(美国国防部高级研究计划署),DARPA 与 BBN 公司、斯坦福大学和伦敦大学学院签订商业合同,正式开始在不同的硬件平台上开发 TCP 协议的验证版本:TCPv1 和 TCPv2。随后卡恩和瑟夫利用 TCPv2 完成了一个具有里程碑意义的实验,数据包从一辆载有无线传输器的箱式货车发出,进入阿帕网,然后通过专用卫星链路到达伦敦,再通过卫星传输网络,到达阿帕网, 最后传回南加州大学信息科学研究所,行程 9.4 万英里,没有丢失一个比特的数据信息。
1978 年,随着数据包传输到应用程序时出现损坏或重新排序的问题出现,单纯的由TCP协议进行纠正就显得相对复杂了,应用程序也能够基于数据进行处理了。于是文顿·瑟夫(Vinton G. Cerf)、罗伯特·卡恩,Robert Elliot Kahn)、丹尼·科恩(Danny Cohen)和约翰·普斯特尔(Jon Postel)合力将 TCP 协议从分层思想的角度划分为 2 个协议
1. 传输层的 TCP 协议,用来检测网络传输中差错,涉及流量控制和丢失数据包恢复等服务功能,负责可靠传输。
2. 网络层的 IP 协议,负责在不同的网络之间进行互联,提供单个数据包的寻址和转发。
它们合称 TCP/IPv3,并在不久的将来演进为稳定版本 TCP/IPv4,传送控制协议/互联网协议(TCP/IP)这个现代网络的根基正式投入使用。对于那些不需要 TCP 服务的应用程序,也添加了一种称为用户数据报协议 (UDP,User Datagram Protocol) 的替代方案,以便提供对 IP 服务的直接访问。
1980 年,DARPA 开始研究如何将不同的网络类型连接起来,并启动了 互联网项目(Internetting project),研究成果被称为 Internet,因特网。这个项目让刚刚崭露头角的 TCP/IPv4 协议获得了施展空间。至此,基于 TCP/IP 协议标准的 Internet 诞生了,鲍伯·卡恩和文顿·瑟夫也因此被誉为 “互联网之父”。
1981 年,DARPA 资助 BBN 公司和加州大学伯克利分校,把 TCP/IP 协议实现到 UNIX 操作系统。值得一提的是,当时还在上研究生的天才程序员比尔·乔伊(Bill Joy)对 TCP/IP 协议深感兴趣,但却对 BBN 提供的代码深恶痛绝。于是他另起炉灶,只用了几天时间就在 BSD UNIX 发行版中实现了一个高性能的 TCP/IP 协议栈。当然那时的 TCP/IP 协议很很简单,但 BSD Socket 直到今天还在发挥着余热。
1982 年,阿帕网(ARPANET) 开始采用 TCP/IP 协议替代 NCP 协议,NCP 协议成为历史。
1983 年,TCP/IP开始成为通用协议。美国国防部开始将阿帕网(ARPANET)划分为两部分,一部分用于军事和国防部门的军事网(MILNET),一部分用于民间的阿帕网(ARPANET )版本。由于互联网规模的扩大,为了方便人们使用网络,计算机主机也被分配了名称,这样就不必去记住数字形式的IP地址。最初主机数量相当有限,因此维护所有主机名及其关联地址的单表是可行的。但随着大量独立管理的网络的加入,单个表维护已经不能满足需求,于是南加利福尼亚大学的 保罗·莫卡派乔斯(Paul Mockapetris)发明了域名系统 (DNS,Domain Name System),允许使用可扩展的分布式机制将主机名(例如 www.example.org)解析为 Internet 地址,称为域名,再将域名与IP地址进行相互映射,成为一个新的数据库。
1984 年, TCP/IP 协议得到美国国防部的认可,成为计算机领域共同遵守的一个主流标准。实际上,TCP/IP 协议的发展也并非一帆风顺,其中最大的竞争对手就是国际标准化组织(ISO)。ISO 在制定国际化标准上经验十足,很快就提出了 OSI 七层模型,并大力推广。面对挑战,那时文顿.瑟夫努力劝说让 IBM、DEC、HP 等主机大厂支持 TCP/IP 协议,但都遭到了拒绝。因为在他们看来 TCP/IP 只是一届研究项目,无力与在商业社会中获得过巨大成功的 ISO 抗衡。而美国国防部的应对策略则是将 TCP/IP 协议与 UNIX 系统、C 语言捆绑在一起,并由 AT&T 向美国各个大学发放非商业许可证。这样才迫使这些跟 UNIX 系统有紧密联系的企业转向 TCP/IP 的怀抱。这为 UNIX 系统、C 语言、TCP/IP 协议的发展拉开了序幕,它们分别在操作系统、编程语言、网络协议这 3 个关键领域影响至今。
1985 年,TCP/IP 协议栈已成为 UNIX 操作系统密不可分的组成部分。随着微型计算机的出现以及UNIX 的广泛传播也极大助力了 TCP/IP 的发展。最终将它放进了Sun公司的微系统工作站。后来,几乎所有的操作系统都开始支持 TCP/IP 协议,经典的 TCP/IP 五层模型已成气候。
1986年,美国国家科学基金会(NSF)为了促进学术研究,自己出资,基于 TCP/IP 协议,建立完全属于自己的 NSFNET,它的发展非常迅速,很快将全美各地的大学、政府和私人科研机构连接起来。同时,NSFNET的网络传输速度也很快,比当时民用的 ARPANET 要快 25 倍以上。渐渐地,NSFNET 开始取代 ARPANET,成为 Internet 的主干网。当 NSFNET 成为互联网中枢后,ARPANET 的重要性被大大减弱了。
1989年,世界上第一家商业互联网服务提供商 The World https://theworld.com 开始提供商业互联网接入服务,开启了互联网商业运营的篇章。在此之前,无论是阿帕网还是美国国家科学基金会网络,它们的目的都是非商业用途,主要用于军事与学术研究,商业性质的计算机是无法接入的,于是也就诞生出了互联网服务提供商ISP(Internet Service Provider)这个名词。
1990年 6 月 1 日,阿帕网(ARPANET)正式退出历史舞台。这位出生在冷战时期的网络先驱,将自身化为点点星光后隐匿于历史长河之中。
1990 年 9 月,由 Merit、IBM 和 MCI 公司联合建立了一个非营利的组织 ANS(Advanced Network&Science Inc.,先进网络科学公司)。ANS 的目的是建立一个全美范围的 T3 级主干网,能以 45Mbps 的速率传送数据。
1991 年底,NSFNET 主干网与 ANS T3 级主干网进行互联互通,并宣布开始对全社会进行商业运营,网络连接数量开始指数级增长。Internet 真正变成了全球互联网,开始走进人们的生活。
HTTP 协议与 Web 世界
时间回到 1989 年,这时的商业互联网已经兴起,当时在瑞士日内瓦核子研究中心 (CERN)工作的 蒂姆·伯纳斯·李(Tim Berners-Lee)想要借助商业互联网的风口,让更多的普通人参与到互联网中来,于是他提出了一种可以在 Internet 上构建超链接文档的技术,即 HTTP/Web 技术,并提出了 3 点基本要素:
1. URI(Uniform Resource Identifier,统一资源标识符):Internel 中的统一资源标识符,用于唯一标识一个 Internet 上的资源。
2. HTML(Hyper Text Markup Language,超文本标记语言):使用 HTML 标签来构建超文本文档,HTML 标签将文字,图形、动画、声音、表格、链接等内容格式进行了统一。
3. HTTP(Hyper Text Transfer Protocol,超文本传输协议):最初设计来用于传输 HTML 的协议,处于 TCP/IP 应用层,传输的数据主体称为 Message(消息),基于 TCP 传输协议。
他所定义的资源,指的是 Internet 上的一个实体,它可以是一段文本、一张图片、一首歌曲、一种服务等。URI 就是在 Internet 中标识一个资源的唯一编号,包含了 URL 和 URN 这 2 种形式,由于 URL 更具有空间层次设计,如今已经成为了主流。
URL(Uniform Resource Loader,统一资源定位符):侧重于 “定位”,类似一个地址,XX省XX市XX区XX单元XX室。
URN(Uniform Resource Name,统一资源名称):侧重于 “命名”,类似身份证号。
1990 年 12 月 25 日,蒂姆·伯纳斯·李和罗伯特·卡里奥(Robert Cailliau)一起实现了基于 HTTP 协议的 Web 服务,并通过 Internet 成功完成了 HTTP 客户端和 Web服务端的第一次通信。
1991 年 8 月 6 日,蒂姆·伯纳斯·李基于 HTTP 和 HTML 设计并开发了世界上第一个网页浏览器,当时这个浏览器只能显示文字,并发布了第一个 Web 网站,它运行在 CERN 的服务器上,旨在帮助研究人员共享信息和文献。基于 HTML,该网站可以提供一些链接,让用户通过单击超链接跳转到其他页面或文档,这种超链接的设计 Web 技术最重要的创新之一。同年,蒂姆·伯纳斯·李正式提出了万维网 WWW(World Wide Web)的概念,世界迎来了网页时代。他也成为了万维网之父。
1992 年,几个因特网组织合并成立统一的因特网协会 (ISOC),此时的因特网已经注册了超过 100 万台主机,并持续指数级疯狂增长,Internet,真正变成了全球互联网,开始走进人们的生活。
1993年,马克·安德森(Marc Andreessen)开发了Mosaic(马赛克)浏览器,相比于蒂姆·伯纳斯·李的浏览器加了图片显示的功能,后来他发现了其中蕴含的商业价值,成立了大名鼎鼎的网景公司,又由此改进出网景浏览器(Netscape Browser)。
1994 年 10 月 1 日,蒂姆·伯纳斯·李创建了非营利性的 W3C(World Wide Web Consortium,万维网联盟),邀集 Microsoft、 Netscape、 Sun、Apple、IBM 等共 155 家互联网上的著名公司。由蒂姆·伯纳斯·李担任 W3C 的主席,致力于 WWW 协议的标准化,并进一步推动 Web 技术的发展。
在当时的浏览器热潮下,蒂姆·伯纳斯·李曾经考虑过成立一家叫做 WebSoft 的公司做网页浏览器。但很快他就放弃了,他担心这么做会导致激烈的市场竞争,开发出技术上互不兼容的浏览器、最终把 WWW 割裂成一个个利益集团。
最初,由于那时候网络资源匮乏,HTTP/0.9 版本相对简单,采用纯文本格式,且设置为只读,所以当时整个 HTTP Request Message 只有一行,比如:GET [http://www.example.com]。只能使用 GET 的方式从 Web 服务器获得 HTML 文档,响应以后则关闭。响应中也只包含了文档本身,无响应头,无错误码,无状态码。
1995 年 10 月 24 日,联邦网络委员会(FNC) 一致通过了一项决议,定义了“互联网”一词。该定义是与互联网和知识产权界成员协商制定的。
(部分)原文如下:RESOLUTION: The Federal Networking Council (FNC) agrees that the following language reflects our definition of the term “Internet”. “Internet” refers to the global information system that --(i) is logically linked together by a globally unique address space based on the Internet Protocol (IP) or its subsequent extensions/follow-ons; (i) 通过基于互联网协议(IP)或其后续扩展/后续协议的全球唯一地址空间在逻辑上链接在一起;(ii) is able to support communications using the Transmission Control Protocol/Internet Protocol (TCP/IP) suite or its subsequent extensions/follow-ons, and/or other IP- compatible protocols; (ii) 能够支持使用传输控制协议/互联网协议 (TCP/IP) 套件或其后续扩展/后续协议和/或其他 IP 兼容协议的通信;(iii) provides, uses or makes accessible, either publicly or privately, high level services layered on the communications and related infrastructure described herein.
(iii) 公开或私下提供、使用或提供基于本文所述的通信和相关基础设施的高级服务。
同年,由布莱恩·贝伦多夫(Brian Behlendorf)发布了基于 HTTP/0.9 的 Apache HTTP Server 开源项目。同年,网景和微软开启浏览器大战,但好在蒂姆·伯纳斯·李担心的 “撕裂“ 并未发生,HTTP 协议已经逐成气候。随着 Apache HTTP Server 的诞生,以及同时期其他的多媒体等技术发展迅速,都进一步促使 HTTP 协议的演进。紧跟着 1996 年,HTTP/1.0 发布,更好的支持采用图文网页形式。
- 增加 HTTP Header 格式。
- 增加协议版本号。
- 增加 POST 方法。
- 增加 HEAD 方法。
- 增加文件处理类型。
- 增加响应状态码。
- 提供国际化支持。
经过几年的发展,1999 年,HTTP/1.1 发布并成为标准,写入 RFC。至此,HTTP 协议已然成为了 Web 世界的奠基石。
- 增加 PUT 等方法。
- 增加缓存处理机制:在 Header 增加了如:Entity tag,If-Unmodified-Since,If-Match,If-None-Match 等可供选择的 Request Body 来控制缓存策略。
- 增加带宽优化机制:在 Header 增加了 Range 字段,它允许只请求资源的某个部分,而不是一揽子返回,得以更充分地利用带宽和网络连接。
- 增加错误通知的管理:新增了 24 个错误状态响应码。
- 增加 Host 虚拟主机:支持 HTTP Server 虚拟主机技术。可以在一台物理服务器上存在多个虚拟主机(Multi-homed Web Servers),并且它们共享一个 IP 地址,通过不同 Hostname 区分。
- 增加长连接机制:默认使用长连接,应对日益复杂的网页(网页内的图片、脚本越来越多了)。
随着 HTTP/1.1 被纳入 RFC 标准,同在 1992 年,由 HTTP/1.0 和 1.1 的主要设计者 罗伊·托马斯·菲尔丁 (Roy Thomas Fielding) 宣布成立了 Apache 软件基金会,并作为 Apache 基金会的第一任主席,从此,Apache Web Server 和 HTTP 协议携手共生共荣。除了 HTTP 协议,Apache 软件基金会旨在促进各种开源软件项目的开发和使用,其中 Apache HTTP Server 作为首个核心项目。这为 Apache HTTP Server 的长期发展奠定了良好的基础,同时也缔造了繁荣的开源生态系统,孵化了包括:Tomcat、Hadoop、Lucene、OpenOffice 等开源项目。至今而至,Apache 软件基金会已成为了全球最大的开源组织之一。
1998 年,美国成立非营利性民间组织 ICANN(Internet Corporation for Assigned Names and Numbers,互联网名称与数字地址分配机构),它由商务部的国家电信和信息管理局监督,负责全球互联网域名系统、根服务器系统、IP 地址资源的协调、管理和分配。由 ICANN 的下属机构 IANA(Internet Assigned Numbers Authority,互联网号码分配机构)负责管理全球互联网域名的根服务器。
2014 年,ICANN决定将监管权移交给一个由多方利益相关者管理的独立机构。
2016 年 10 月 1 日,ICANN 表示,正式将互联网的控制权移交给一个非盈利的全球互联网多方利益相关者组织。这标志着美国结束对这一互联网核心资源近 20 年的单边垄断,对于每一个网民来说都是一大喜事。
结语
现如今,互联网如同一座无形的桥梁,将人类连接在了一起。它不仅是技术的进步,更是社会的演进。我们应当怀着感激之情,向那些开创者致敬,正是他们的智慧和勇气,让我们拥有了今日的便利与可能。然而,它的发展绝非孤立于时代洪流之外。它源于对军事通信的需求,蕴含着人类对于信息传递的渴望。正是在这样的历史背景下,互联网才得以蓬勃发展,成为了如今连接全球的巨大网络。在互联网的浪潮中,我们见证了信息的自由传播,思想的碰撞与交流。然而,也要警惕信息泛滥与隐私泄露等问题。唯有在共同努力下,我们才能在数字化的未来中创造出更美好的明天。
让我们怀揣着对过去的感恩,对未来的期许,书写属于我们这个时代的互联网诗篇。
相关文章:
计算机网络的起源与发展历程
文章目录 前言时代背景ARPANET 的诞生TCP/IP 协议簇与 Internet 的诞生HTTP 协议与 Web 世界结语 前言 在当今数字化时代,计算机网络已经成为我们生活中不可或缺的一部分。无论是在家庭、学校、还是工作场所,我们都能感受到网络的巨大影响。随着互联网的…...
2024-4-12-实战:商城首页(下)
个人主页:学习前端的小z 个人专栏:HTML5和CSS3悦读 本专栏旨在分享记录每日学习的前端知识和学习笔记的归纳总结,欢迎大家在评论区交流讨论! 文章目录 作业小结 作业 .bg-backward {width: 60px; height: 60px;background: url(..…...
一、flask入门和视图
run启动参数 模板渲染 后端给前端页面传参 前端页面设置css from flask import Flask, render_template,jsonify# 创建flask对象 app Flask(__name__)# 视图函数 路由route app.route("/") def hello_world():# 响应,返回给前端的数据return "h…...
Selenium+Chrome Driver 爬取搜狐页面信息
进行selenium包和chromedriver驱动的安装 安装selenium包 在命令行或者anaconda prompt 中输入 pip install Selenium 安装 chromedriver 先查看chrome浏览器的版本 这里是 123.0.6312.106 版 然后在http://npm.taobao.org/mirrors/chromedriver/或者https://googlechrom…...
SpringBoot:一个注解就能帮你下载任意对象
介绍 下载功能应该是比较常见的功能了,虽然一个项目里面可能出现的不多,但是基本上每个项目都会有,而且有些下载功能其实还是比较繁杂的,倒不是难,而是麻烦。 所以结合之前的下载需求,我写了一个库来简化…...
oracle全量、增量备份
采用0221222增量备份策略,7天一个轮回 也就是周日0级备份,周1 2 4 5 6 采用2级增量备份,周3采用1级增量备份 打开控制文件自动备份 CONFIGURE CONTROLFILE AUTOBACKUP ON; 配置控制文件备份路径 CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVI…...
React Router 5 vs 6:使用上的主要差异与升级指南
React Router 5 的一些API 在 React Router 6 上有时可能找不到,可能会看到如下画面:export ‘useHistory’ was not found in ‘react-router-dom’ … React Router目前有两个大的版本,即React Router 5、6。React Router 6 在设计上更加简…...
基于LNMP部署wordpress
目录 一.环境准备 二.配置源并安装 三.配置Nginx 四.配置数据库 五.上传源码并替换 六.打开浏览器,输入虚拟机ip访问安装部署 七.扩展增加主题 一.环境准备 centos7虚拟机 关闭防火墙和seliunx stop firewalld #关闭防火墙 setenforce 0 …...
openGauss_5.1.0 企业版快速安装及数据库连接:单节点容器化安装
目录 📚第一章 官网信息📚第二章 安装📗下载源码📗下载安装包📗修改版本📗解压安装包📗运行buildDockerImage.sh脚本📗docker操作📕查看docker镜像📕启动dock…...
微信小程序 uniapp+vue城市公交线路查询系统dtjl3
小程序Android端运行软件 微信开发者工具/hbuiderx uni-app框架:使用Vue.js开发跨平台应用的前端框架,编写一套代码,可编译到Android、小程序等平台。 前端:HTML5,CSS3 VUE 后端:java(springbootssm)/python(flaskdja…...
2024年MathorCup数模竞赛B题问题一二三+部分代码分享
inputFolderPath E:\oracle\images\; outputFolderPath E:\oracle\process\; % 获取文件夹中所有图片的文件列表 imageFiles dir(fullfile(inputFolderPath, *.jpg)); % 设置colorbar范围阈值 threshold 120; % 遍历每个图片文件 for i 1:length(imageFiles) % 读…...
Ubuntu日常配置
目录 修改网络配置 xshell连不上怎么办 解析域名失败 永久修改DNS方法 临时修改DNS方法 修改网络配置 1、先ifconfig确认本机IP地址(刚装的机子没有ifconfig,先apt install net-tools) 2、22.04版本的ubuntu网络配置在netplan目录下&…...
GMSSL-通信
死磕GMSSL通信-C/C++系列(一) 最近再做国密通信的项目开发,以为国密也就简单的集成一个库就可以完事了,没想到能有这么多坑。遂写下文章,避免重复踩坑。以下国密通信的坑有以下场景 1、使用GMSSL guanzhi/GmSSL进行通信 2、使用加密套件SM2-WITH-SMS4-SM3 使用心得 …...
linux 磁盘分区Inode使用率达到100%,导致网站无法创建文件报错 failed:No space leftondevice(
linux 磁盘分区Inode使用率达到100%,导致网站无法创建文件报错 failed:No space left on device 由于这问题直接导致了,网站无法正常运行! 提交工单求助阿里后,得到了答案! 工程师先让我执行 df -h 和 df -i 通过分析…...
探索Python库的奇妙世界
探索Python库的奇妙世界 Python作为一种流行的编程语言,因其简洁的语法、强大的库支持和广泛的应用场景而备受开发者青睐。在这篇文章中,我们将深入探讨Python库的世界,了解它们如何帮助我们更高效地编写代码,并展示一些最有用的…...
SQL Server 存储函数(funGetId):唯一ID
系统测试时批量生成模拟数据,通过存储函数生成唯一ID。 根据当前时间生成唯一ID(17位) --自定义函数:根据当前时间组合成一个唯一ID字符串:yearmonthdayhourminutesecondmillisecond drop function funGetId;go--自定义函数&…...
当你的项目体积比较大?你如何做性能优化
在前端开发中,项目体积优化是一个重要的环节,它直接影响到网页的加载速度和用户体验。随着前端项目越来越复杂,引入的依赖也越来越多,如何有效地减少最终打包文件的大小,成为了前端工程师需要面对的挑战。以下是一些常…...
第6章:6.3.2 一张表总结正则表达式的语法 (MATLAB入门课程)
讲解视频:可以在bilibili搜索《MATLAB教程新手入门篇——数学建模清风主讲》。 MATLAB教程新手入门篇(数学建模清风主讲,适合零基础同学观看)_哔哩哔哩_bilibili 本节我们用一张表来回顾和总结MATLAB正则表达式的基本语法。这个…...
VBA 实现outlook 当邮件设置category: red 即触发自动创建jira issue
1. 打开: Outlook VBA(Visual Basic for Applications) 方法一: 在邮件直接搜索:Visual Basic editor 方法二: File -> Options -> Customize Ribbon-> 打钩 如下图: 2.设置运行VBA 脚本: File -> Options -> Trust center -> Trus…...
办公软件巨头CCED、WPS迎来新挑战,新款办公软件已形成普及之势
办公软件巨头CCED、WPS的成长经历 CCED与WPS,这两者均是中国办公软件行业的佼佼者,为人们所熟知。 然而,它们的成功并非一蹴而就,而是经过了长时间的积累与沉淀。 CCED,这款中国大陆早期的文本编辑器,在上…...
Spring Boot 实现流式响应(兼容 2.7.x)
在实际开发中,我们可能会遇到一些流式数据处理的场景,比如接收来自上游接口的 Server-Sent Events(SSE) 或 流式 JSON 内容,并将其原样中转给前端页面或客户端。这种情况下,传统的 RestTemplate 缓存机制会…...
2025盘古石杯决赛【手机取证】
前言 第三届盘古石杯国际电子数据取证大赛决赛 最后一题没有解出来,实在找不到,希望有大佬教一下我。 还有就会议时间,我感觉不是图片时间,因为在电脑看到是其他时间用老会议系统开的会。 手机取证 1、分析鸿蒙手机检材&#x…...
深入解析C++中的extern关键字:跨文件共享变量与函数的终极指南
🚀 C extern 关键字深度解析:跨文件编程的终极指南 📅 更新时间:2025年6月5日 🏷️ 标签:C | extern关键字 | 多文件编程 | 链接与声明 | 现代C 文章目录 前言🔥一、extern 是什么?&…...
AI书签管理工具开发全记录(十九):嵌入资源处理
1.前言 📝 在上一篇文章中,我们完成了书签的导入导出功能。本篇文章我们研究如何处理嵌入资源,方便后续将资源打包到一个可执行文件中。 2.embed介绍 🎯 Go 1.16 引入了革命性的 embed 包,彻底改变了静态资源管理的…...
初探Service服务发现机制
1.Service简介 Service是将运行在一组Pod上的应用程序发布为网络服务的抽象方法。 主要功能:服务发现和负载均衡。 Service类型的包括ClusterIP类型、NodePort类型、LoadBalancer类型、ExternalName类型 2.Endpoints简介 Endpoints是一种Kubernetes资源…...
使用Spring AI和MCP协议构建图片搜索服务
目录 使用Spring AI和MCP协议构建图片搜索服务 引言 技术栈概览 项目架构设计 架构图 服务端开发 1. 创建Spring Boot项目 2. 实现图片搜索工具 3. 配置传输模式 Stdio模式(本地调用) SSE模式(远程调用) 4. 注册工具提…...
Rust 开发环境搭建
环境搭建 1、开发工具RustRover 或者vs code 2、Cygwin64 安装 https://cygwin.com/install.html 在工具终端执行: rustup toolchain install stable-x86_64-pc-windows-gnu rustup default stable-x86_64-pc-windows-gnu 2、Hello World fn main() { println…...
libfmt: 现代C++的格式化工具库介绍与酷炫功能
libfmt: 现代C的格式化工具库介绍与酷炫功能 libfmt 是一个开源的C格式化库,提供了高效、安全的文本格式化功能,是C20中引入的std::format的基础实现。它比传统的printf和iostream更安全、更灵活、性能更好。 基本介绍 主要特点 类型安全:…...
k8s从入门到放弃之HPA控制器
k8s从入门到放弃之HPA控制器 Kubernetes中的Horizontal Pod Autoscaler (HPA)控制器是一种用于自动扩展部署、副本集或复制控制器中Pod数量的机制。它可以根据观察到的CPU利用率(或其他自定义指标)来调整这些对象的规模,从而帮助应用程序在负…...
6.9-QT模拟计算器
源码: 头文件: widget.h #ifndef WIDGET_H #define WIDGET_H#include <QWidget> #include <QMouseEvent>QT_BEGIN_NAMESPACE namespace Ui { class Widget; } QT_END_NAMESPACEclass Widget : public QWidget {Q_OBJECTpublic:Widget(QWidget *parent nullptr);…...
