1.HTTP
HTTP全名超文本传输协议,是一个应用层协议,主要用于万维网中的信息传输。它被广泛地用于在web浏览器和web服务器之间传输文本、图像、视频、音频等。
2.web客户端和服务器
Web内容都是存储在web服务器上的,web服务器使用HTTP协议,所以web服务器也被称作HTTP服务器。HTTP客服端通过HTTP协议向HTTP服务器发送请求报文,HTTP根据不同的请求返回相应的HTTP响应报文。HTTP请求中包含了客户端对服务器中对象的请求,服务器收到该请求后会寻找相应的对象,如果成功,就会将其放在HTTP响应报文返回给客户端。
3.资源
Web服务器是web资源的宿主,web资源是web内容的源头。
最简单的web资源就是web服务器文件系统中的静态文件,这些文件可以包含任意内容:文本文件、HTML文件、图片、音频、视频等。
但资源不一定是静态文件,资源还可以是根据需要生成内容的软件程序。程序会根据请求的不同生成不同的动态内容。
a)媒体类型
HTTP使用MIME类型来标识通过web传输的各种文件的类型。web服务器会为所有HTTP对象附加一个MIME类型,当web客户端从服务器中取回一个对象时,会去查看对象的MIME类型来确定自己是否能够处理这个对象。
MIME类型是一种文本标记,表示一种主要的对象类型和一个特定的子类型,中间由一个斜杠来分隔。
text/html 标记HTML格式的文本文档
text/plain 标记普通的ASCII文本文档
image/jpeg 标记JPEG格式的图片
image/gif 标记GIF格式的图片
b)URI
每个web服务器都有一个名字,这样客户端可以通过这个名字来表明自己所请求的资源。服务器资源名被称为统一资源标识符(URI),URI类似邮政地址,在全网络范围唯一标识并定位信息资源。
URI有两种形式,URL和URN。
c)URL
统一资源定位符(URL)是资源标识符最常见的形式,URL描述了一台特定服务器上某资源的特定位置。
URL遵循特定的格式,分为三个部分:
第一部分称为方案,说明访问资源所使用的网络协议,通常为HTTP协议(http://)。
第二部分为服务器的英特网地址(域名或IP地址)。(例,www.abcd.com)
第三部分指定服务器上的某个资源。(例,/home/index.html)
c)URN
统一资源名(URN)作为特定内容的唯一名称,与资源的位置无关。URN仍处于试验阶段,尚未大范围使用。
4.事务
一个HTTP事务由一个请求命令和一个响应结果组成,这种通信通过名为HTTP报文的格式化数据块进行的。
a)方法
HTTP支持几种不同的请求命令,这些命令称为HTTP方法。每条HTTP请求都包含一个方法,这个方法会告诉服务器要执行什么动作(获取一个web页面、运行一一个网关程序、删除一个文件等)。下面列出几个常用的方法:
GET 从服务器向客服端发送命名资源
PUT 将来自客户端的数据存储到一个命名的服务器资源中
DELETE 从服务器中删除命名资源
POST 将客户端数据发送到一个服务器网关应用程序
HEAD 仅发送命名资源响应中的HTTP首部
b)状态码
每条HTTP响应报文返回时都会携带一个状态码,状态码是一个三位数字的代码,告知客户端请求是否成功,或者是否需要采取其他动作。
伴随每个数字状态码,HTTP还会发送一个解释性的“原因短语”文本,这个短语只用于进行描述,所有的处理过程都只与状态码相关。
5.报文
HTTP报文分为请求报文和响应报文,它们都是由以下三部分组成的,其中起始行和首部字段皆是文本行:
a)起始行
报文的第一行是起始行,在请求报文中用来说明要做些什么,在响应报文中表明出现什么情况。下面是典型格式:
请求:方法+URL+协议版本
响应:协议版本+状态码+原因短语
b)首部字段
起始行后面有零个或多个首部字段,每个首部字段包含一个名字和一个值,两者用冒号(:)分隔。首部以一个空行结束。
c)主体
空行之后就是可选的报文主体,其中包含所有类型的数据。请求主体中包含了要发送给服务器的数据,响应主体中装载要返回给客户端的数据。不同于起始行和首部字段都是结构化的文本行,主体可以包含任意的二进制数据(图片、音频、视频、程序),当然也可以包含文本。
6.web结构组件
a)代理
代理位于客服端和服务器之间,接受所有客服端HTTP请求,并将这些请求转发给服务器。对于用户来说,这些应用程序就是一个代理,代表用户访问服务器。代理可以对请求和响应进行过滤。
b) 缓存
web缓存或代理缓存是一种特殊的HTTP代理服务器,可以将经过代理传送的数据缓存下来,可以将这个副本直接返回给下一个请求该副本的客户。显然将那些会被频繁请求的web内容缓存在代理服务器中能够极大地提高客户端的访问速度。
c)网关
网关是一种特殊的服务器,作为其他服务器的中间实体使用。通常用于将HTTP流量转换成其他的协议。网关接受请求是就好像自己是资源的源端服务器一样。
HTTP客户端<–HTTP–>HTTP/FTP网<–FTP–>FTP服务器
d)隧道
隧道是建立起来之后,就会在两条连接之间对原始数据进行盲转发的HTTP应用程序。HTTP隧道通常用来在一条或多条连接上转发非HTTP数据,转发时不会窥探数据。
HTTP隧道常见用途是同过HTTP连接承载加密的安全套接字层(SSL)流量。这样SSL流量就可以通过只允许web流量通过的防火墙了。
e) Agent代理
用户代理是代表用户发起HTTP请求的客户端程序,所有发布web请求的应用程序都是HTTP Agent代理。web浏览器就是一种Agent代理。比如爬虫也是一种Agent代理。