Web技术(一):互联网的设计与演化(URL + HTML + HTTP)

本文介绍了Web技术的起源与发展,包括Web浏览器和服务器的历史,以及Web的三大构建技术:URL、HTML和HTTP。URL解决了资源的命名和寻址问题,HTTP提供了浏览器与服务器间的通信标准,HTML定义了超文本文档的表示格式。Web从静态文本发展到动态交互,HTML从HTML 1.0到HTML 5,HTTP从HTTP/1.0进步到HTTP/3,不断优化性能和安全性。Web技术的演进推动了互联网的快速发展。
摘要由CSDN通过智能技术生成

前言

你知道当我们在网页浏览器( Web browser )的地址栏中输入网址( URL: Uniform Resource Locator )时, Web 页面是如何呈现的吗?(下图摘自文章:30 张图解 HTTP 常见的面试题
Web浏览器访问网页
Web 页面当然不能凭空显示出来,根据 Web 浏览器地址栏中指定的URL,Web 浏览器从 Web 服务器端获取文件资源(resource)等信息,从而显示出 Web 页面。像这种通过发送请求获取服务器资源的一方(比如 Chrome、Internet Explorer、Firefox 等),都可称为客户端(client);响应Web 客户端请求,并提供资源的一方(比如 Apache、Nginx、IIS 等),都可称为服务器端(server)。Web客户端向服务器请求资源,Web服务器响应资源的过程如下:
Web浏览器请求服务器响应过程

一、Web技术简史

1982年,美国国防部宣布TCP/IP为所有军用计算机联网的标准,并将TCP/IP协议部署到ARPANET中。1989 年 ,加州大学伯克利分校同意将为BSD UNIX开发的 TCP/IP 代码纳入公共领域,包括 IBM 在内的各种企业供应商在商业 TCP/IP 软件版本中包含此代码,这进一步推动了 TCP/IP 的传播。

1989年初,CERN(欧洲粒子物理研究所)中由 Tim Berners-Lee 领导的小组提交了一个针对 Internet 的新协议和一个使用该协议的文档系统,该小组将这个新系统命名为Word Wide Web(又被称为“WWW”、“W3”,中文名字为“万维网”、"环球网"等,常简称为Web),它的目的在于使全球的科学家能够利用 Internet 交流自己的工作文档,从而让远隔两地的研究者们共享知识。这个新系统被设计为允许 Internet 上任意一个用户都可以从许多文档服务计算机的数据库中搜索和获取文档,而且多个文档之间可通过超链接相互关联形成超文本(HyperText),最终连成可相互参阅的 WWW(World Wide Web,万维网)。

1990年底,Tim Berners-Lee 领导的小组已经构建了工作网络所需的所有工具:超文本传输协议(HTTP);超文本标记语言(HTML);第一个Web浏览器(名为WorldWideWeb,也是一个网页编辑器);第一个HTTP服务器软件(后来称为CERN httpd);第一个Web服务器主机(http://info.cern.ch)以及描述项目本身的第一个网页。第二年 Word Wide Web 系统被移植到了其他计算机平台并投入使用,Web技术的五大要素:HTML、HTTP、URL、Web浏览器、Web服务器,就此发明问世。1994年,Tim Berners-Lee决定成立万维网联盟(W3C),通过标准化流程来规范相关技术(HTTP、HTML等)的进一步发展。

  • URL(Uniform Resource Locator):解决了文档的命名和寻址识别问题;
  • HTTP(HyperText Transfer Protocol):解决了浏览器与服务器应用层之间的交流问题;
  • HTML(HyperText Markup Language):定义了超文本文档的表示格式;
  • Web浏览器:用于向服务器发起请求,并且解析收到的文档;
  • Web服务器:用于保存文档,并且响应来自浏览器的请求。

1.1 Web浏览器技术简史

1993 年,现代浏览器的祖先 NCSA(National Center for Supercomputer Applications,美国国家超级计算机应用中心)研发的Mosaic 问世了,1994年大家熟知的网景浏览器Netscape Navigator 1.0发布了,第二年Internet Explorer 1.0也发布了,由此进入Web互联网时代。(下图取自:网络的演变
浏览器技术发展
Web客户端的主要任务是展现信息内容,而HTML语言则是信息展现的最有效载体之一。1990年,Tim Berners-Lee领导的小组构建的HTML 1.0超文本标记语言是继承自SGML(Standard Generalized Markup Language)标准通用标记语言的,可以实现文本与文本之间通过超链接相互关联(这种通过超链接实现文本关联的技术称为超文本技术),由于SGML过于复杂且不利于信息的传递和解析,Tim Berners-Lee对其进行了大刀阔斧的简化和完善,一种为Web量身定制的语言 HTML 就诞生了。

最初的HTML语言只能在浏览器中展现静态的文本或图像信息,这满足不了人们对信息丰富性和多样性的强烈需求,于是由静态技术向动态技术的转变成为了Web客户端技术演进的永恒定律。1996年,著名的Netscape浏览器在其2.0版中增加了对JavaScript的支持,Microsoft的IE 3.0也在这一年开始支持Java技术,喜欢动画、交互操作、客户端应用的开发人员可以用Java或JavaScript语言随心所欲地丰富HTML页面的功能了。

真正让HTML页面又酷又炫、动感无限的是CSS(Cascading Style Sheets)技术。1996年底,W3C提出了CSS的建议标准,随后 IE 3.0 和Netscape 4.0 引入了对CSS的支持,CSS大大提高了开发者对信息展现格式的控制能力,让HTML页面中的各种要素"活动"了起来。

1.2 Web服务器技术简史

1993年,同浏览器NCSA Mosaic一起问世的还有对应的服务器NCSA httpd,紧随其后的是现在已然成为 Web 服务器标准之一的Apache(Apache httpd),当时它以 Apache 0.2 的姿态出现在世人眼前,到目前依然是全球最受欢迎的Web服务器软件。微软的 IIS (Internet Information Services)也是最早出现的Web服务器软件之一,其早期使用的是Gopher通信协议,直到IIS 5.0版本才切换为HTTP通信协议,随后成为全球第二大最受欢迎的Web服务器软件,但从2014年开始被新晋的Nginx反超且差距越拉越大。截止到2020年,主流Web浏览器与Web服务器软件的市场占有率对比如下:
Web客户端与服务器市场份额
最早的Web服务器简单地响应浏览器发来的HTTP请求,并将存储在服务器上的HTML文件返回给浏览器,此时Web服务器只能提供静态文本或图片的共享服务。可随着 Web 越来越普及,仅靠这样的做法已不足以应对所有的需求,更需要引入由程序创建 HTML 内容的做法。第一种真正使服务器能根据运行时的具体情况,动态生成HTML页面的技术是大名鼎鼎的CGI(Common Gateway Interface)技术,CGI 1.0的标准草案于1993年由NCSA提出。

CGI定义了Web服务器与应用程序间通信的接口标准,使Web服务器可以通过CGI程序执行Web应用程序,完成动态请求的处理,然后拼接成HTML代码返回给Web服务器,最后再将生成的HTML代码响应给Web浏览器。CGI程序通过环境变量和标准输入获得请求的各种参数信息,通过标准输出返回应答;服务器并不关心CGI程序是用什么语言编写的,它仅通过环境变量和标准输入、输出与CGI程序交互。
CGI
每当有一个请求对应到一个CGI程序时,服务器就启动一个进程执行这个CGI程序,因此CGI程序对主机的资源消耗比较大(想想如果有1000个并发请求会怎么样),同时它的响应速度也会比较慢(进程的启动比较花时间)。所以人们开始寻找CGI的替代者,这导致了FastCGI技术的出现。简单来说,FastCGI本质上就是一个常驻内存的进程池技术,由调度器负责将传递过来的CGI请求发送给处理CGI的handler进程来处理,在一个请求处理完成之后,该处理进程不销毁,继续等待下一个请求的到来。

1994年,Rasmus Lerdorf发明了专用于Web服务端编程的PHP(Personal Home Page Tools)语言,与以往的CGI程序不同,PHP可以把程序嵌入到HTML代码中去执行,不仅能更好的组织Web应用的内容,而且执行效率比外部程序更高,Web应用的开发者可以用一种更加简便、快捷的方式实现动态Web功能。

1996年,Microsoft借鉴PHP的思想,在其Web服务器IIS 3.0中引入了ASP(Active Server Pages)技术(使用的脚本语言是VBScript和JavaScript),并于2002年被ASP.NET取代。1997年,以Sun公司为首的Java阵营发布了Servlet技术,第二年JSP(Java Server Pages)技术诞生,Servlet和JSP的组合(还可以加上JavaBean技术)让Java开发者同时拥有了类似CGI程序的集中处理功能和类似PHP的HTML嵌入功能,Java的运行时编译技术也大大提高了Servlet和JSP的执行效率。随着Web服务器端动态页面技术的普及,社交网络、论坛、电子商务、信息查询、全文检索等各式各样的Web应用蓬勃兴起,人们终于可以享受到信息检索、信息交换、信息处理等更为便捷的信息服务了,万维网也开始快速发展。
Servlet与CGI对比
Servlet程序与CGI程序的明显不同就是:

  • Servlet 运行在与 Web 服务器程序相同的进程中(Servlet 的运行环境叫做 Web 容器或 Servlet 容器),Servlet 常驻内存,在每次请求时可从线程池启动相对进程级别更为轻量的线程,程序的执行效率从而变得更高;
  • CGI 运行在与 Web 服务器程序不同的进程中,每次请求启动一个新的CGI 进程,即便是改进后的FastCGI 常驻内存,程序的执行效率依然跟Servlet 有不小的差距。

服务器端网页动态交互功能的不断丰富,伴随的是代码逻辑的复杂度快速上升,同时Web客户端形态越来越多样(比如手机、平板、电脑、智能电视等),Web应用需

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

流云IoT

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值