@guoxs
2015-09-19T21:38:48.000000Z
字数 3043
阅读 3095
HTTP
Web 服务器是Web 资源(Web resource)的宿主。Web 资源是Web 内容的源头。最简单的Web 资源就是Web服务器文件系统中的静态文件,资源不一定非得是静态文件,还可以是根据需要生成内容的软件程序。
MIME 类型(Multipurpose Internet Mail Extension):多用途因特网邮件扩展。为每种需要通过Web传输的对象打上标签,便于识别。
在报文中显示为:Content-type:image/jpeg
常见的MIME类型:
文件类型 | MIME类型 |
---|---|
HTML | text/html |
ASCII文档 | text/plain |
JPEG | image/jpeg |
GIF | image/gif |
QuickTime影片 | video/quicktime |
Powerpoint | application/vnd.powerpoint |
URI:统一资源标识符(Uniform Resource Identifier),,在世界范围内唯一标识并定位信息资源。
URL:统一资源定位符,资源标识符最常见的形式。描述了一台特定服务器上某资源的特定位置。可以明确说明如何从一个精确、固定的位置获取资源。
一个简单的http事务:
HTTP 支持几种不同的请求命令,这些命令被称为HTTP 方法(HTTP method)。这个方法会告诉服务器要执行什么动作(获取一个Web 页面、运行一个网关程序、删除一个文件等)。
一些常见的HTTP方法:
HTTP方法 | 描述 |
---|---|
GET | 从服务器向客户端发送命名资源 |
PUT | 将来自客户端的数据存储到一个命名的服务器资源中去 |
DELETE | 从服务器中删除命名资源 |
POST | 将客户端数据发送到一个服务器网关应用程序 |
HEAD | 仅发送命名资源响应中的HTTP 首部 |
每条HTTP 响应报文返回时都会携带一个状态码。状态码是一个三位数字的代码,告知客户端请求是否成功,或者是否需要采取其他动作。
一些常见的HTTP状态码:
HTTP状态 | 描述 |
---|---|
200 | OK。文档正确返回 |
302 | Redirect(重定向)。到其他地方去获取资源 |
404 | Not Found(没找到)。无法找到这个资源 |
从Web 客户端发往Web 服务器的HTTP 报文称为请求报文(request message)。从服务器发往客户端的报文称为响应报文(response message)。
HTTP 报文包括以下三个部分:
HTTP网络协议栈
HTTP 是个应用层协议。HTTP无需操心网络通信的具体细节;它把联网的细节都交给了通用、可靠的因特网传输协议TCP/IP。
TCP提供:
• 无差错的数据传输;
• 按序传输(数据总是会按照发送的顺序到达);
• 未分段的数据流(可以在任意时刻以任意尺寸将数据发送出去)。
只要建立了TCP连接,客户端和服务器之间的报文交换就不会丢失、不会被破坏,也不会在接收时出现错序了。
在HTTP 客户端向服务器发送报文之前,需要用网际协议(Internet Protocol,IP)地址和端口号在客户端和服务器之间建立一条TCP/IP 连接。
连接步骤:
(a) 浏览器从URL 中解析出服务器的主机名;
(b) 浏览器将服务器的主机名转换成服务器的IP 地址;
(c) 浏览器将端口号(如果有的话)从URL 中解析出来;
(d) 浏览器建立一条与Web 服务器的TCP 连接;
(e) 浏览器向服务器发送一条HTTP 请求报文;
(f) 服务器向浏览器回送一条HTTP 响应报文;
(g) 关闭连接,浏览器显示文档。
协议版本 | 描述 |
---|---|
TTP/0.9 | 1991年原型版本,存在很多严重的设计缺陷。只支持GET方法,不支持多媒体内容的 |
HTTP/1.0 | 广泛使用的版本,添加了版本号、各种HTTP首部、一些额外的方法,以及对多媒体对象的处理。 |
HTTP/1.0+ | 在1.0基础上添加了许多新特性,例如:持久的keep-alive 连接、虚拟主机支持,以及代理连接支持。 |
HTTP/1.1 | 重点关注的是校正HTTP设计中的结构性缺陷,明确语义,引入重要的性能优化措施,并删除一些不好的特性。当前使用的版本。 |
HTTP-NG/HTTP/2.0 | HTTP/1.1 后继结构的原型建议,它重点关注的是性能的大幅优化,以及更强大的服务逻辑远程执行框架。 |
位于客户端和服务器之间的HTTP中间实体,接收所有客户端的HTTP 请求,并将这些请求转发给服务器(可能会对请求进行修改之后转发)。
出于安全考虑,通常会将代理作为转发所有Web流量的可信任中间节点使用。代理还可以对请求和响应进行过滤。
Web 缓存(Web cache)或代理缓存(proxy cache)是一种特殊的HTTP代理服务器,可以将经过代理传送的常用文档复制保存起来。
网关(gateway)是一种特殊的服务器,作为其他服务器的中间实体使用。通常用于将HTTP流量转换成其他的协议。网关接受请求时就好像自己是资源的源端服务器一样。客户端可能并不知道自己正在与一个网关进行通信。
隧道(tunnel)是建立起来之后,就会在两条连接之间对原始数据进行盲转发的HTTP应用程序。HTTP隧道通常用来在一条或多条HTTP连接上转发非HTTP数据,转发时不会窥探数据。
HTTP 隧道的一种常见用途是通过HTTP连接承载加密的安全套接字层(SSL,Secure Sockets Layer)流量,这样SSL 流量就可以穿过只允许Web流量通过的防火墙了。
用户Agent代理是代表用户发起HTTP请求的客户端程
序。所有发布Web请求的应用程序都是HTTP Agent代理。