细说HTTP之上篇(1)


每天,都有数以亿万计的JPEG图片、HTML页面、文本文件、MPEG电影、WAV音频文件、Java小程序和其他资源在因特网上游弋。HTTP可以从遍布全世界的Web服务器上将这些信息快速、便捷、可靠的搬移到人们桌面上的Web浏览器上去。

HTTP,全称Hyper Text Transport Protocal,即超文本传输协议,定义了浏览器如何向服务器请求文档以及服务器怎样把文档传送给浏览器,它是万维网能够可靠的交换文件(包括文本,声音,图像等多种多媒体文件)的基础。

起源

超文本传输协议的前身是Xanadu项目,超文本的概念是Ted Nelson在1960年代提出的。1989年,Tim Berners Lee在CERN担任软件咨询师的时候,开发了一套程序,奠定了万维网的基础。1990年12月,超文本在CERN首次上线。1991年夏天,继Telnet等协议之后,超文本转移协议成为了互联网诸多协议的一份子。

特点

1、支持客户/服务器模式。支持基本认证 和安全认证。

2、 简单快速:客户向服务器请求服务时,只需传送请求方法和路径。请求方法常用的有GET、HEAD、POST。每种方法规定了客户与服务器联系的类型不同。由于HTTP协议简单,使得HTTP服务器的程序规模小,因而通信速度很快。

3、灵活:HTTP允许传输任意类型的数据对象。正在传输的类型由Content-Type加以标记。

4、HTTP 0.9和1.0使用非持续连接:限制每次连接只处理一个请求,服务器处理完客户的请求,并收到客户的应答后,即断开连接。采用这种方式可以节省传输时间。

HTTP 1.1使用持续连接:不必为每个web对象创建一个新的连接,一个连接可以传送多个对象。

5、无状态:HTTP协议是 无状态协议 。无状态是指协议对于事务处理没有记忆能力。缺少状态意味着如果后续处理需要前面的信息,则它必须重传,这样可能导致每次连接传送的数据量增大。

Web客户端和服务器交互过程和模型

客户端/服务器(client/server)这个术语可追溯到上个千年(20世纪80年代),表示通过网络连接起来的个人计算机。客户端/服务器也可用于描述两个计算机程序的关系--客户程序和服务器程序。客户向服务器请求某种服务(比如请求一个文件或数据库访问),服务器满足请求并通过网络将结果传送给客户端。虽然客户端和服务器程序可存在于同一台计算机中,但它们通常都运行在不同计算机上。一台服务器处理多个客户端请求也是很常见的。

最常见的Web客户端就是浏览器了,一次请求/响应的模型如下图所示:

这里需要说明的一点是,每次访问一个静态资源,比如一个html文件,一个png图片或者一个文本文档都会向服务器发出一个HTTP请求,每个HTTP请求都会经历上图的请求/响应模型。比如我们点开http://www.taobao.com/(淘宝网),我们会往服务器发送成百上千个HTTP请求,收到来自客户端的请求后,服务器会去寻找相应的资源,如果成功,就将对象,对象类型,对象长度以及其他信息放在HTTP响应中发回客户端。那么问题来了,服务器怎么去寻找相应的资源,凭据是什么?

URL与资源

URL是浏览器寻找信息时所需要的资源位置。通过URL,人类和应用程序才能找到使用并共享因特网上大量的数据资源。URL是人们对HTTP和其他协议的常用访问点:在浏览器中输入一串URL,浏览器就会在幕后发送适当的协议报文来获取人们所期望的资源。

URL的语法

大多数的URL方案的URL语法都建立在这个由9部分的通用格式上:

<scheme>://<user>:<password>@<host>:<port>/<path>;<params>?<query>#<frag>

几乎没有哪个URL中包含了所有这些组件。URL最重要的3个部分是方案(scheme)、主机(host)和路径(path)。 

URL的语法

目前常见的协议类型有很多种,常用的有http,https(更安全的http),mailto(邮件),ftp(文件传输),rtsp(音频视频),file,news,telnet等等。




相关内容