5.1. web 的概念

Web(World Wide Web)即全球广域网,也称为万维网,它是一种基于超文本和HTTP的、全球性的、动态交互的、跨平台的分布式图形信息系统。是建立在Internet上的一种网络服务,为浏览者在Internet上查找和浏览信息提供了图形化的、易于访问的直观界面,其中的文档及超级链接将Internet上的信息节点组织成一个互为关联的网状结构。其他的细节信息在后续章节会详细讲到。

Web 1.0时代是一个群雄并起,逐鹿网络的时代,Web 1.0基本采用的是技术创新主导模式,信息技术的变革和使用对于网站的新生与发展起到了关键性的作用。新浪的最初就是以技术平台起家,搜狐以搜索技术起家,腾讯以即时通讯技术起家,盛大以网络游戏起家,在这些网站的创始阶段,技术性的痕迹相当之重。Web 1.0的盈利都基于一个共通点,即巨大的点击流量。无论是早期融资还是后期获利,依托的都是为数众多的用户和点击率,以点击率为基础上市或开展增值服务,受众群众的基础,决定了盈利的水平和速度,充分地体现了互联网的眼球经济色彩。

在Web 1.0时代,动态网站已经广泛应用,即World Wide Web,简称WWW,是英国人TimBerners-Lee 1989年在欧洲共同体的一个大型科研机构任职时发明的。通过WEB,互联网上的资源,可以在一个网页里比较直观的表示出来;而且资源之间,在网页上可以链来链去。

Web 2.0是相对于Web 1.0的新的时代。指的是一个利用Web的平台,由用户主导而生成的内容互联网产品模式,进而将其放到科技发展与社会变革的大视野下来看,Web 2.0可以说是信息技术发展引发网络革命所带来的面向未来、以人为本的创新 2.0模式在互联网领域的典型体现,是由专业人员织网到所有用户参与织网的创新民主化进程的生动注释。

Web 2.0更加注重交互性。不仅用户在发布内容过程中实现与网络服务器之间交互,而且,也实现了同一网站不同用户之间的交互,以及不同网站之间信息的交互。

“Web 2.0”的概念2004年始于出版社经营者O’Reilly和Media Live International之间的一场头脑风暴论坛。身为互联网先驱和O’Reilly副总裁,Dale Dougherty指出,伴随着令人激动的新程序和新网站间惊人的规律性,互联网不仅远没有“崩溃”,甚至比以往更重要。更进一步说,那些得以活过泡沫破裂的公司之间似乎拥有某种相同点。

在诞生于Web 1.0时代并且存活了下来,而且要继续领导Web 2.0时代的那些巨人的成功故事的背后,有一个核心原则,就是他们借助了网络的力量来利用集体智慧,例如开源项目。包括在大多数网络服务器中用到的Linux,Apache,MySQL,以及Perl,PHP或Python,依靠开放源码的方式,在网站上列有开放源码软件项目。任何人都可以添加一个项目,任何人都可以下载并使用项目代码。基于用户使用的结果,新的项目从边缘迁移到中心,过时的项目被边缘化。就造成了对软件的接受过程是一种有机自发的方式。

Web 2.0与Web 1.0的区别

(1)Web 2.0更加注重交互性。不仅用户在发布内容过程中实现与网络服务器之间交互,而且,也实现了同一网站不同用户之间的交互,以及不同网站之间信息的交互。

(2)符合Web标准的网站设计。Web标准是国际上正在推广的网站标准,通常所说的Web标准一般是指网站建设采用基于XHTML语言的网站设计语言,实际上,Web标准并不是某一标准,而是一系列标准的集合。Web标准中典型的应用模式是“CSS+XHTML”,摒弃了HTML 4.0中的表格定位方式,其优点之一是网站设计代码规范,并且减少了大量代码,减少网络带宽资源浪费,加快了网站访问速度。更重要的一点是,符合Web标准的网站对于用户和搜索引擎更加友好。

(3)Web 2.0网站与Web 1.0没有绝对的界限。Web 2.0技术可以成为Web 1.0网站的工具,一些在Web 2.0概念之前诞生的网站本身也具有Web 2.0特性,例如B2B电子商务网站的免费信息发布和网络社区类网站的内容也来源于用户。

(4)Web 2.0的核心不是技术而在于指导思想。Web 2.0有一些典型的技术,但技术是为了达到某种目的所采取的手段。Web 2.0技术本身不是Web 2.0网站的核心,重要的在于典型的Web 2.0技术体现了具有Web 2.0特征的应用模式。因此,与其说Web 2.0是互联网技术的创新,不如说是互联网应用指导思想的革命。

(5)Web 2.0是互联网的一次理念和思想体系的升级换代,由原来的自上而下的由少数资源控制者集中控制主导的互联网体系,转变为自下而上的由广大用户集体智慧和力量主导的互联网体系。

  1. Web 2.0体现交互,可读可写,体现出的方面是各种微博、相册,用户参与性更强。

Web 3.0是Internet发展的必然趋势,是Web 2.0的进一步发展和延伸。Web 3.0在Web 2.0的基础上,将杂乱的微内容进行最小单位的继续拆分,同时进行词义标准化、结构化,实现微信息之间的互动和微内容间基于语义的链接。Web 3.0能够进一步深度挖掘信息并使其直接从底层数据库进行互通。并把散布在Internet上的各种信息点以及用户的需求点聚合和对接起来,通过在网页上添加元数据,使机器能够理解网页内容,从而提供基于语义的检索与匹配,使用户的检索更加个性化、精准化和智能化嘲。对Web 3.0的定义是网站内的信息可以直接和其他网站相关信息进行交互,能通过第三方信息平台同时对多家网站的信息进行整合使用;用户在Internet上拥有直接的数据,并能在不同网站上使用;完全基于Web,用浏览器即可以实现复杂的系统程序才具有的功能。 Web 3.0浏览器会把网络当成一个可以满足任何查询需求的大型信息库。Web 3.0的本质是深度参与、生命体验以及体现网民参与的价值。

Web 3.0的技术特性

(1)智能化及个性化搜索引擎。

(2) 数据的自由整合与有效聚合。

(3)适合多种终端平台,实现信息服务的普适性。

Web 3.0与Web 1.0、Web 2.0的区别

从用户参与的角度来看:

Web 1.0特征是以静态、单向阅读为主,用户仅是被动参与;

Web 2.0则是一种以分享特征的实时网络,用户可以实现互动参与,但这种互动仍然是有限度的;

Web 3.0则以网络化和个性化为特征,可以提供更多人工智能服务,用户可以实现实时参与。

从技术角度看:

Web 1.0依赖的是动态HTML和静态HTML网页技术;

Web 2.0则以Blog、TAG、SNS、RSS、Wiki、六度分隔、XML、AJAX等技术和理论为基础;

Web 3.0的技术特点是综合性的,语义Web、本体是实现Web3.0的关键技术。

从应用角度来看:

传统的门户网站如新浪、搜狐、网易等是Web 1.0的代表;

博客中国、校内网、Facebook、YouTube等是Web 2.0的代表;

iGoogle、阔地网络等是Web 3.0的代表。

5.1.1. Web应用技术

Web技术表现为三种形式,即超文本(hypertext)、超媒体(hypermedia)、超文本传输协议(HTTP)等。Web技术指的是开发互联网应用的技术总称,一般包括Web服务端技术和Web客户端技术。

Web客户端技术

Web客户端的主要任务是展现信息内容。Web客户端设计技术主要包括:HTML语言、Java Applets、脚本程序、CSS、DHTML、插件技术以及VRML技术。

Web服务端技术

与Web客户端技术从静态向动态的演进过程类似,Web服务端的开发技术也是由静态向动态逐渐发展、完善起来的。Web服务器技术主要包括CGI、PHP、ASP、ASP.NET、Servlet和JSP技术。

  • CGI(Common Gateway Interface)技术,即公共网关接口技术。最早的Web服务器简单地响应浏览器发来的HTTP请求,并将存储在服务器上的HTML文件返回给浏览器随着CGI技术的普及,聊天室、论坛、电子商务、信息查询、全文检索等各式各样的Web应用蓬勃兴起,人们可以享受到信息检索、信息交换、信息处理等各更为便捷的信息服务。

  • PHP(Personal Home Page Tools)技术。1994年,Rasmus Lerdorf发明了专用于Web服务端编程的PHP语言。与以往的CGI程序不同,PHP语言将HTML代码和PHP指令合成为完整的服务端动态页面,Web应用的开发者可以用一种更加简便、快捷的方式实现动态Web功能。

  • ASP(Active Server Pages)技术,即活动服务器页面技术。1996年,Microsoft借鉴Php的思想,在其Web服务器IIS 3.0中引入了ASP技术。ASP使用的脚本语言是我们熟悉的VBScript和Javascript。借助Microsoft Visual Studio等开发工具在市场上的成功,ASP迅速成为Windows系统下Web服务端的主流开发技术。

  • ASP.NET技术。由于它使用C#语言代替ASP技术的JavaScripe脚本语言,用编译代替了逐句解释,提高了运行效率,ASP.NET是建立.NET Framework的公共语言运行库上的编程框架,可用于在服务器上生成功能强大的Web应用程序,代替以前在WEB网页中加入ASP脚本代码,使界面设计与程序设计以不同的文件分离,复用性和维护性得到提高,已经成为面向下一代企业级网络计算的Web平台,是对传统ASP技术的重大升级和更新。

  • Servlet、JSP技术。以Sun公司为首的Java阵营于1997和1998年分别推出了Servlet和JSP技术。JSP的组合让Java开发者同时拥有了类似CGI程序的集中处理功能和类似PHP的HTML嵌入功能,此外,Java的运行时编译技术也大大提高了Servlet和JSP的执行效率。Servlet和JSP被后来的JavaEE平台吸纳为核心技术

上述的技术都是成熟且应用较多的举例,当下技术革新迅速,每个问题的答案都不会只有一个,选择适合自己的就可以。

5.1.2. HTTP 协议

HTTP (HyperText Transfer Protocal,超文本传输协议) 是应用层协议,使用 TCP 协议进行数据传输,常用端口号为 80,用于实现 Web 客户端 和 Web 服务器之间的通信。HTTP 协议规定了客户端和服务端之间通信的报文格式以及数据交换的流程。

TCP协议

传输控制协议(TCP,Transmission Control Protocol)是一种面向连接的、可靠的、基于字节流的传输层通信协议,由IETF的RFC 793定义。 TCP旨在适应支持多网络应用的分层协议层次结构。 连接到不同但互连的计算机通信网络的主计算机中的成对进程之间依靠TCP提供可靠的通信服务。TCP假设它可以从较低级别的协议获得简单的,可能不可靠的数据报服务。 原则上,TCP应该能够在从硬线连接到分组交换或电路交换网络的各种通信系统之上操作。

TCP为了保证报文传输的可靠,就给每个包一个序号,同时序号也保证了传送到接收端实体的包的按序接收。然后接收端实体对已成功收到的字节发回一个相应的确认(ACK);如果发送端实体在合理的往返时延(RTT)内未收到确认,那么对应的数据(假设丢失了)将会被重传。相比于UDP他的传输速度更快。

UDP协议

Internet 协议集支持一个无连接的传输协议,该协议称为用户数据报协议(UDP,User Datagram Protocol)。UDP 为应用程序提供了一种无需建立连接就可以发送封装的 IP 数据包的方法。RFC 768描述了 UDP。 Internet 的传输层有两个主要协议,互为补充。无连接的是 UDP,它除了给应用程序发送数据包功能并允许它们在所需的层次上架构自己的协议之外,几乎没有做什么特别的事情。面向连接的是 TCP,该协议几乎做了所有的事情。

HTTP 报文格式

HTTP 请求报文由三部分组成:

  • 请求行(Request line),声明请求方法、请求资源的URL路径、HTTP 版本号

  • 首部行(Header line),声明额外的信息,

  • 实体主体(Entity Body),存放需要传输的数据

其中的URL可以说是又一大创新。

URL: 统一资源定位系统(uniform resource locator;URL)是因特网的万维网服务程序上用于指定信息位置的表示方法。它最初是由蒂姆·伯纳斯·李发明用来作为万维网的地址。现在它已经被万维网联盟编制为互联网标准RFC1738。

URL组成

  • 协议:模式/协议(scheme),在Internet中可使用多种协议,如HTTP,FTP等。在”HTTP”后面的“//”为分隔符

  • 域名:也可使用IP地址作为域名使用。

  • 端口:不是一个URL必须的部分,如果省略端口部分,将采用默认端口。

  • 虚拟目录:从域名后的第一个“/”开始到最后一个“/”为止。虚拟目录不是一个URL必须的部分。

  • 文件名:从域名后的最后一个“/”至“?”(或“#”或至结束)为止,是文件名部分。

  文件名部分不是一个URL必须的部分,如果省略该部分,则使用默认的文件名。

  • 参数:从“?”开始到“#”(或至结束)为止之间的部分为参数部分,又称搜索部分、查询部分。参数间用“&”作为分隔符。

  • 锚:或称片段(fragment),HTTP请求不包括锚部分,从“#”开始到最后,都是锚部分。锚部分不是一个URL必须的部分。

URI、URL和URN

统一资源标识符(Uniform Resource Identifier,URI)是一个用于标识某一互联网资源名称的字符串。 该种标识允许用户对任何(包括本地和互联网)的资源通过特定的协议进行交互操作。URI由包括确定语法和相关协议的方案所定义。

统一资源名称(Uniform Resource Name,URN)是URI的子集。Web上地址的基本形式是URI,它有两种形式: 一种是URL,这是目前URI的最普遍形式。另一种就是URN,这是URL的一种更新形式,URN不依赖于位置,并且有可能减少失效连接的个数。但是其流行还需假以时日,因为它需要更精密软件的支持。

URI与URL

URL是Uniform Resource Locator的缩写,译为”统一资源定位符”。URL是一种URI,它标识一个互联网资源,并指定对其进行操作或获取该资源的方法。可能通过对主要访问手段的描述,也可能通过网络“位置”进行标识。例如,http://www.wikipedia.org/ 这个URL,标识一个特定资源(首页)并表示该资源的某种形式(例如以编码字符表示的,首页的HTML代码)是可以通过HTTP协议从www.wikipedia.org 这个网络主机获得的。主要用在各种WWW客户程序和服务器程序上,特别是著名的Mosaic。采用URL可以用一种统一的格式来描述各种信息资源,包括文件、服务器的地址和目录等。

URI与URN

URI可被视为定位符(URL),名称(URN)或两者兼备。统一资源名(URN)如同一个人的名称,而统一资源定位符(URL)代表一个人的住址。换言之,URN定义某事物的身份,而URL提供查找该事物的方法。URN仅用于命名,而不指定地址。

HTTP 请求方法

现有的 HTTP 请求方法共有 9 种,包括由 HTTP1.0 定义的 GET、HEAD 、POST 三种方法 和在 HTTP1.1 版本中新增的 PUT、DELETE、CONNECT、OPTIONS、TRACE 和 PATCH 6种方法。

  • GET 请求指定的页面信息,并返回消息主体。

  • HEAD 类似于 GET 请求,只不过返回的响应中没有消息主体,仅获取报文的头部(状态行+首部行)

  • POST 向指定资源提交数据进行处理请求(例如提交表单或者上传文件)。数据被包含在消息实体中。POST 请求可能会导致新的资源的建立和/或已有资源的修改。

  • PUT 从客户端向服务器传送的数据取代指定的文档的内容。

  • DELETE 请求服务器删除指定的资源。

  • CONNECT HTTP/1.1 协议中预留给能够将连接改为管道方式的代理服务器。

  • OPTIONS 允许客户端查看服务器的性能。

  • TRACE 回显服务器收到的请求,主要用于测试或诊断。

  • PATCH 是对 PUT 方法的补充,用来对已知资源进行局部更新 。

HTTP 响应的状态码

有时我们浏览网页会出现一个404的提示,这就是响应状态码。

  • 1xx:信息 100 Continue

    • 101 Switching Proctocols

  • 2xx:成功 200 OK:请求成功

    • 201 Created:请求成功同时资源在服务器中创建

    • 202 Accepted:请求已接受,但尚未处理完

  • 3xx:重定向 301 Moved Permanently:页面永久转移到新 url

    • 302 Moved Temporarily:页面临时转移到新 url

  • 4xx:客户端错误 400 Bad Request:服务器不理解请求

    • 401 Unauthorized:被请求的页面需要用户名和密码。

    • 403 Forbidden:页面禁止访问

    • 404 Not Found:没有找到请求的资源

    • 405 Method Not Allowed:请求方法不被允许

  • 5xx:服务器错误 500 Internal Server Error:请求未完成。服务器遇到不可预知的情况。

    • 502 Bad Gateway:请求未完成。服务器从上游服务器收到一个无效的响应。

    • 503 Service Unavailable:请求未完成,服务器临时过载或宕机。

    • 504 Gateway Timeout:网关超时。