HTTP是什么?用来干嘛?
web浏览器,服务器和相关的web应用程序都是通过HTTP相互通信的的。HTTP是现代全球因特网中使用的公共语言。
互联网的web资源(各种类型的资源)是放在web服务器上,客户端可通过http来请求资源。
每天,都有数以亿万计的图片,html网页,文本文件,电影,wav音频,java程序,和其他资源在因特网流传。HTTP可以从遍布全世界的web服务器上将这些信息块迅速,便捷,可靠的搬移到人们着米娜的web浏览器上。
http是一种可靠的传输协议,因此即使数据来自地球的另一端,它也能够确保数据在传输的过程中不会被孙华或者产生混乱。
下面简单介绍下通过HTTP协议请求的web资源的流程涉及到一些知识点:(某些专项有专门的文章介绍)
web客户端和服务器
资源
web服务器是web资源的宿主,资源不一定是静态文件,也可以是根据需求生成内容的软件程序。如下图:
媒体类型
网上各种不同的数据类型,HTTP都会给每种通过web传输的对象打上MIME类型的数据格式标签。如下图:
MIME类型是一种文本标记,表示一种主要的对象类型和一个特定的子类型,中间用一条斜杠来分割。如:
- HTML文档由text/html类型标记
- 普通的ASCII由text/plain类型标记
- JPEG的图片由image/jpeg类型标记
- 等...
URI
每个资源都有一个名字,这样客户端就可以通过URI访问到资源了。URI称为统一资源标识符(Uniform Resource Indefiniter),URI就像因特网上的邮政地址一样,在世界范围内唯一标识并定位信息资源。
URL统一资源定位符是资源标识符最常见的形式。就是URI中的一种方式。URL描述了一台特定服务器上的某资源的特定位置。下图显示如何精确的访问某资源的位置:
URL遵循的标注怒格式,包含3部分:
- 第一部分成为方案(scheme), 说明访问资源使用的协议类型,通常是HTTP协议(http://)
- 第二部分给出了服务器的因特网地址(如:http://www.baidu.com)
- 其余部分指出了web服务器上的某个资源(如:/f?kw=国产动画)
事务
一个事务组成:由一条客户端发往服务器的请求命令和一个从服务器发回客户端的响应结果组成。这种通信时通过名未HTTP报文(HTTP message)的格式化数据块进行的,如下图:
方法:
HTTP支持计中不同请求命令,称为HTTP方法(HTTP method)。每个请求报文都包含一个方法。该方法告诉服务器执行什么动作(获取网页,运行网关程序,刪除文件...)
状态码:
每条HTTP响应报文都会放回一个状态码。由3个数字组成。告知客户端请求是否成功,是否需要采取其他动作。
web页面中可包含多个对象:
一个页面可以包含来自多个服务器的不同资源,如图:
报文
HTTP报文是由一行行字符串组成,纯文本。
HTTP报文包含三个部分:
- 起始行
- 第一行就是起始行,在请求报文中说明要做些什么,在响应报文中说明出现什么情况。
- 首部字段
- 起始行后跟着多个首部字段,每个字段包含(名: 值)。首部以空行结束。
- 主题
- 空行之后就是可选的报文主体,其中宝航了所有类型的数据。请求数据中包含要发送给服务器的数据,响应主体中包含要返回给客户端的数据。可包含任意的二进制数据。
连接
报文是如何通过传输控制协议(Transmission Control Protocol,TCP)连接从一个地方搬移到另一个地方的。
HTTP是个应用层协议,网络上传输,通信交给可靠的因特网传输协议TCP/IP:
TCP提供:
- 无差错的数据传输
- 按序传输
- 未分段的数据流(可以在任意时刻以任何尺寸将数据发送出去)
因特网自身是基于TCP/IP,TCP/IP是全世界计算机和网络设备常用的层次化分组交换网络协议集。
连接,IP地址及端口号:
HTTP客户向服务器发送报文前,需要用国际协议(Internet Protocol,IP)地址和端口号在客户端和服务端之间建立一条TCP/IP连接。
web的结构组件
- 代理
- 位于客户端和服务器之间的HTTP中间实体
- 缓存
- HTTP的仓库,使常用的页面副本可以保存在离客户端更近的地方
- 隧道
- 对HTTP通信报文进行盲转发的特殊代理
- 网关
- 连接其他应用程序的特殊web服务器
- Agent代理
- 发起自动HTTP请求的半智能web客户端(如:网络爬虫)
代理
HTTP代理服务器是web安全,应用集成以及性能优化的重要组成模块。
下图代理位于客户端和服务器之间,接收所有客户端的请求,并转发给服务端(可能会对请求进行修改),代表用户访问服务器。
出于安全考虑,通常会将代理作为转发所有web流量的可信任中间节点使用。可对请求和响应进行过滤。比如,在企业中对下载的应用程序进行病毒检测,对小学生屏蔽成人内容等。
缓存
web缓存(Web Cache)或代理缓存(Proxy Cache)是特殊的HTTP代理服务器,将经过代理传送的常用文档复制保存。
网关
网关(gateway)是一种特殊的服务器,作为其他服务器的中间实体使用。通常将HTTP流量转换成其他协议。
隧道
隧道(tunnel)是建立起来之后,就会在两条连接之间对原始数据进行盲转发的HTTP应用程序。HTTP隧道通常用来在一条或多条HTTP连接上转发非HTTP数据,转发不会窥探数据。
Agent代理
Agent代理是代表用户发起HTTP请求的客户端程序。所有发布web请求的应用程序都是HTTP Agent代理(如:浏览器,web机器人)