1、HTTP的操作过程
为了使超文本的链接能够高效率地完成,需要用HTTP协议来传送一切必须的信息。 从层次的角度看,HTTP是面向事务的(transactionoriented)应用层协议,它是万维网上能够可靠地交换文件(包括文本、声音、图像等各种多媒体文件) 的重要基础。
万维网的工作过程
用户点击URL http://www.tsinghua.edu.cn/chn/yxsz/index.htm 后所发生的事件:
(1) 浏览器分析超链指向页面的URL。
(2) 浏览器向DNS请求解析www.tsinghua.edu.cn 的IP地址。
(3) 域名系统DNS解析出清华大学服务器的IP地址。
(4)浏览器与服务器建立TCP连接。
(5) 浏览器发出取文件命令:GET /chn/yxsz/index.htm。
(6) 服务器给出响应,把文件index.htm发给浏览器。
(7) TCP连接释放。
(8)浏览器显示“清华大学院系设置”文件 index.htm 中的所有文本。
HTTP 是面向事务的客户服务器协议。 HTTP 1.0 协议是无状态的(stateless)。 HTTP协议本身也是无连接的,虽然它使用了面向连接的TCP向上提供的服务。
HTTP1.0是非持续连接,每请求一个文档就要有两倍RTT的开销以及对客户端与服务器端每建立新连接都需重新分配缓存和相关变量。
HTTP/1.1 协议使用持续连接(persistent connection)。万维网服务器在发送响应后仍然在一段时间内保持这条连接,使同一个客户(浏览器)和该服务器可以继续在这条连接上传送后续的HTTP请求报文和响应报文。
这并不局限于传送同一个页面上链接的文档, 而是只要这些文档都在同一个服务器上就行。 目前一些流行的浏览器(例如,IE 11.0)的默认设置就是使用 HTTP/1.1。
非流水线方式:客户在收到前一个响应后才能发出下一个请求。这比非持续连接的两倍RTT 的开销节省了建立TCP连接所需的一个RTT时间。但服务器在发送完一个对象后,其TCP连接就处于空闲状态, 浪费了服务器资源。
流水线方式:客户在收到HTTP的响应报文之前就能够接着发送新的请求报文。一个接一个的请求报文到达服务器后,服务器就可连续发回响应报文。 使用流水线方式时,客户访问所有的对象只需花费一个RTT时间,使TCP连接中的空闲时间减少,提 高了下载文档效率。
2、代理服务器
代理服务器(proxy server) 又称为万维网高速缓存 (Web cache),它代表浏览器发出HTTP请求。万维网高速缓存把最近的一些请求和响应暂存在本地磁盘中。
当与暂时存放的请求相同的新请求到达时,万维网高速缓存就把暂存的响应发送出去,而不需要按URL的地址再去互联网访问该资源。 代理服务器可在客户端或服务器端工作,也可在中间系统上工作。
使用高速缓存可减少访问互联网服务器的时延:
没有使用高速缓存的情况
使用高速缓存的情况
(1) 浏览器访问互联网的服务器时,要先与校园网的高 速缓存建立TCP连接,并向高速缓存发出HTTP请求报文。
(2) 若高速缓存已经存放了所请求的对象,则将此对象放入HTTP响应报文中返回给浏览器。
(3) 否则,高速缓存就代表发出请求的用户浏览器,与互联网上的源点服务器建立 TCP 连接,并发送 HTTP 请求报文。
(4) 源点服务器将所请求的对象放在 HTTP 响应报文中返回给校园网的高速缓存
(5) 高速缓存收到此对象后,先复制在其本地存储器中 (为今后使用),然后再将该对象放在HTTP响应报文中,通过已建立的 TCP 连接,返回给请求该对象的浏览器。
3、HTTP的报文结构
HTTP 有两类报文:
请求报文——从客户向服务器发送请求报文。
响应报文——从服务器到客户的回答。
由于HTTP是面向文本的(text-oriented),因此在报文中的每一个字段都是一些ASCII码串,因而每个字段的长度都是不确定的。
报文由三个部分组成,即开始行、首部行和实体主体。 在请求报文中,开始行就是请求行。
“方法”是面向对象技术中使用的专门名词。所谓“方法” 就是对所请求的对象进行的操作,因此这些方法实际上也就是一些命令。因此,请求报文的类型是由它所采用的方法决定的。
“URL”是所请求的资源的URL。
“版本”是 HTTP 的版本。
响应报文的开始行是状态行。 状态行包括三项内容,即HTTP的版本,状态码,以及解释状态码的简单短语。
状态码都是三位数字
1xx 表示通知信息的,如请求收到了或正在进行处理。
2xx 表示成功,如接受或知道了。
3xx 表示重定向,表示要完成请求还必须采取进一步的行动。
4xx表示客户的差错,如请求中有错误的语法或不能完成。
5xx 表示服务器的差错,如服务器失效无法完成请求。
HTTP 请求报文的一些方法
方法(操作) | 意义 |
OPTION | 请求一些选项的信息 |
GET | 请求读取由URL所标志的信息 |
HEAD | 请求读取由URL所标志的信息的首部 |
POST | 给服务器添加信息(例如,注释) |
PUT | 在指明的URL下存储一个文档 |
DELETE | 删除指明的URL所标志的资源 |
TRACE | 用来进行环回测试的请求报文 |
CONNECT | 用于代理服务器 |
4、在服务器上存放用户的信息
万维网站点使用Cookie来跟踪用户。
Cookie表示在HTTP服务器和客户之间传递的状态信息。 使用Cookie的网站服务器为用户产生一个唯一的识别码。利用此识别码,网站就能够跟踪该用户在该网站的活动。