# http概述
URI: 统一资源标识符(Uniform Resource Identifier),在世界范围内唯一标识并定位信息资源。
URL: 统一资源定位符(Uniform Resource Location),是资源标识符最常见的形式。URL
描述了一台服特定务器上某资源的特定位置。URL
说明了协议、服务器和本地资源。
事物: 一个HTTP事物由一条请求命令和一个响应结果组成。这种通信是通过名为HTTP报文的格式化数据块进行的。
报文: HTTP报文是由一行一行的简单字符串组成的。HTTP报文都是纯文本。HTTP报文包括三个部分。
起始行
报文的第一行,在请求报文中用来说明要做些什么,在响应报文中说明出现了什么情况。
首部字段
每个首部字段都包含一个名字和一个值,两者之间用冒号来分隔。首部以一个空行结束。
主体
请求主体中包含了要发送给web服务器的数据;响应主体中装载了要返回给客户端的数据。
**TCP/IP:**HTTP是应用层,TCP是传输层,IP是网络层。HTTP协议位于TCP的上层。HTTP使用TCP来传输报文数据,TCP位于IP的上层。在HTTP客户端向服务器发送报文之前,需要用网际协议(IP)地址和(TCP)端口号在客户端和服务器之间建立一条TCP/IP连接。
基本的浏览器连接处理步骤如下:
- 浏览器从URL中解析出服务器的主机名。
- 浏览器将服务器的主机名转换成服务器的IP地址。
- 浏览器将端口号(如果有的话)从URL中解析出来。
- 浏览器建立一条与Web服务器的TCP连接。
- 浏览器向服务器发送一条HTTP请求报文。
- 服务器向浏览器回送一条HTTP响应报文。
- 关闭连接,浏览器显示文档。
**Telnet:**Telnet程序可以将键盘连接到某个目标TCP端口,并将TCP端口的输出回送到显示屏上。
Web的结构组件
代理
位于客户端和服务器之间的HTTP中间实体。接收客户端的HTTP请求,并将这些请求转发给服务器。
缓存
HTTP的仓库,使常用页面的副本可以保存在离客户端更近的地方。Web缓存或代理缓存是一种特殊的HTTP代理服务器。客户端从附近的缓存下载文档比从远程Web服务器下载快得多。
网关
连接其他应用程序的特殊Web服务器。作为其他服务器的中间实体使用。通常用于将HTTP流量转换成其他的协议。如HTTP/FTP网关会通过FTP URI的请求,通过FTP协议来获取文档,得到的文档会被封装成一条HTTP报文没法送给客户端。
隧道
对HTTP通信报文进行官转发的特殊代理。
Agent代理
发起自动HTTP请求的半智能Web客户端。
# 连接管理
- HTTP ——应用层
- TSL或SSL——安全层
- TCP ——传输层
- IP ——网络层
- 网络接口 ——数据链路层
HTTP报文传输过程:HTTP要发送一条报文是,会以流的形式将报文数据的内容通过一条打开的TCP连接按序传输。TCP收到数据流后,会将数据砍成称作段的小数据块,并将段封装载IP分组里,通过因特网进行传输。每个TCP段都是由IP分组承载,从一个IP地址发送到另一个IP地址。每个IP分组中包括:
- 一个IP分组首部(通常为20字节)
- 一个TCP段首部(同常为20字节)
- 一个TCP数据块(0个或多个字节)
IP首部包含了源和目的地地址、长度和其他一些标记。TCP段的首部包含了TCP端口号、TCP控制标记,以及用于数据排序和完整性检查的一些数字值。
TCP连接时通过4个值来标识的。原地址、源端口号、目的IP地址、目的端口号
,这4个值一起唯一的定义了一条连接。
HTTP事务延时的几种主要原因:
- DNS解析,通过DNS解析系统将URI中的主机名转换成一个IP地址。
- 建立TCP连接会耗费时间。
- 因特网传输请求报文和服务器处理请求报文都需要时间。
- web服务器回送HTTP响应,也需要时间。
# 代理
是位于客户端和服务器之间的HTTP中间实体。接收所有客户端的HTTP请求,并将这些请求转发给服务器。是web安全,应用集成以及性能优化的重要组成模块。
代理和网关的对比:代理连接的是两个或多个使用相同协议的应用程序。网关连接的是两个或多个使用不同协议的端点,扮演者协议转换器的角色。
# 为什么使用代理?
代理服务器可以改善安全性,提高性能,节省费用。代理服务器可以看到并接触到所有流过的HTTP流量,可以监视流量并对其进行修改,已实现很多有用的增值Web服务。以下是代理的几种常见用法:
儿童过滤器
文档访问控制
使用代理服务器在大量Web服务器和Web资源之间实现统一的访问控制策略,创建审核跟踪机制。
安全防火墙
Web缓存
代理缓存维护了常用文档的本地副本,并将他们按需提供,以减少缓慢且昂贵的因特网通信。
反向代理
假扮Web服务器,接收发给Web服务器的真实请求,发起与其他服务器 的通信,以便按需定位所请求的内容。
内容路由器
根据因特网流量状况以及内容类型将请求导向特定的Web服务器。
转码器
代理服务器可以将内容发送给客户端之前,修改内容的主体格式。
匿名者
匿名者代理会主动从HTTP报文中删除身份特性。
# 缓存
web缓存或者代理缓存是一种特殊的HTTP代理服务器,可以将经过代理传送的常用文档复制保存起来,下一个请求同一文档的客户端就可以享受缓存的私有副本所提供的服务了。客户端从附近的缓存下载文档要比从远程web服务器下载快得多。
# 网关、隧道及中继
网关(gateway):连接其他应用程序的特殊web服务器。是资源和应用程序之间的粘合剂。
隧道(tunnel):对HTTP通信报文进行盲转发的特殊代理。是建立起来之后,就会在两条连接之间对原始数据进行盲转发的HTTP应用程序。
Agent代理:是代表用户发起HTTP请求的客户端程序。