1. HTTP的操作过程:
HTTP是面向事务的应用层协议。HTTP协议本身是无连接的,为了保证数据的可靠传输,HTTP使用了面向连接的TCP作为运输层协议。所以,在发送HTTP报文之前都需要先建立TCP连接。在建立TCP连接的三次握手的前两部分完成后,万维网客户就把HTTP请求报文作为三次握手的第三个报文的数据发送给万维网服务器,服务器收到HTTP请求后,就把所请求的文档作为响应报文返回给客户。从此可看出,请求一个万维网文档所需的时间是该文档的传输时间加上两倍往返时间RTT。
HTTP/1.0使用非持续连接,每次请求一个文档都要有两倍RTT的开销。HTTP/1.1使用了持续连接,万维网服务器在发送响应后仍然在一段时间内保持这条连接,使同一个客户和该服务器可以继续在这条连接上传送后续的HTTP请求报文和响应报文。HTTP/1.1的持续连接有两种工作方式:非流水线方式和流水线方式。非流水线方式的特点,是客户在收到前一个响应后才能发出下一个请求。流水线方式的特点,是客户在收到HTTP的响应报文之前就能够接着发送新的请求报文。流水线工作方式使TCP连接中的空闲时间减少,提高了下载文档的效率。
2. 代理服务器:
代理服务器是一种网络实体,它又称为万维网高速缓存。代理服务器把最近的一些请求和响应暂存在本地磁盘中。若一个网络中使用了代理服务器,该网络中的主机浏览器向因特网的服务器请求服务时,就先和代理服务器建立TCP连接,并向代理服务器发出HTTP请求报文。若代理服务器中已经存放了所请求的对象,则把这个对象放入HTTP响应报文中返回给客户浏览器;否则,代理服务器就代表客户浏览器与因特网上的源点服务器建立TCP连接,并发送HTTP请求报文。源点服务器把所请求的对象放在HTTP响应报文中返回给代理服务器。代理服务器收到这个对象后,先复制在自己的本地存储器中,然后再把这个对象放在HTTP响应报文中,通过已经建立的TCP连接返回给客户浏览器。
3. HTTP的报文结构:
HTTP有两类报文:
(1)请求报文:从客户向服务器发送请求报文。
(2)响应报文:从服务器到客户的回答。
由于HTTP是面向文本的,因此在报文中的每一个字段都是一些ASCII码串,因而各个字段的长度都是不确定的。
HTTP请求报文和响应报文都是由三个部分组成。这两种报文格式的区别就是开始行不同。
(1)开始行:用于区分是请求报文还是响应报文。在请求报文中的开始行叫做请求行,而在响应报文中的开始行叫做状态行。
(2)首部行:用来说明浏览器、服务器或报文主体的一些信息。首部可以有好几行,但也可以不使用。
(3)实体主体:在请求报文中一般都不用这个字段,而在响应报文中也可能没有这个字段。
请求行包括:方法、请求资源的URL、HTTP的版本。所谓“方法”就是对所请求的对象进行的操作,这些方法实际上也就是一些命令。因此,请求报文的类型是由它所采用的方法决定的。
请求报文中常用的几种方法:
OPTION:请求一些选项的信息。
GET:请求读取由URL所标志的信息。
HEAD:请求读取由URL所标志的信息的首部。
POST:给服务器添加信息(例如:注释)
PUT:在指明的URL下存储一个文档。
DELETE:删除指明的URL所标志的资源。
TRACE:用来进行环回测试的请求报文。
CONNECT:用于代理服务器。
状态行包括:HTTP的版本、状态码、解释状态码的简单短语。状态码都是三位数字的,分为5大类共33种。
1xx:表示通知信息,如请求收到了或正在进行处理。
2xx:表示成功,如接受或知道了。
3xx:表示重定向,如要完成请求还必须采取进一步的行动。
4xx:表示客户的错误,如请求中有错误的语法或不能完成。
5xx:表示服务器的错误,如服务器失效无法完成请求。