从服务器向客户传送一个Web页面的步骤:假设该页面含有一个HTML基本文件和10个JPEG图形,并且这11个对象位于同一个服务器上,该HTML文件的URL地址为http://www.someschool.edu/somedepartment/home.index。
HTTP客户进程在80端口号发送一个到服务器www.someschool.edu的TCP连接请求。HTTP客户经它的套接字向该服务器发送一个HTTP请求报文。HTTP服务器进程经它的套接字接受该请求报文,从其存储器中检索出对象http://www.someschool.edu/somedepartment/home.index。,在一个HTTP响应报文中封装对象,并通过其套接字向客户端发送相应报文。HTTP服务器进程通知TCP断开该TCP连接。HTTP客户接收响应报文,TCP连接关闭。该报文指出封装的对象是一个HTML文件,提取出该文件后,得到对10个JPEG图形的引用。对每个引用的JPEG对象重复前4个步骤。如果是并行TCP连接会比串行TCP连接更快。往返时间(RTT):一个短分组从客户到服务器再返回客户所花费的时间。包括:分组传播时延、分组在中间路由器和交换机上的排队时延及分组处理时延。 请求接收一个HTML文件花费时间:2RTT+传输HTML文件的时间。
Web页面(HTML基本文件和10个JPEG图形)可以用单个TCP连接进行传送。一般一条连接经过一定时间间隔(超时间隔)未被使用,HTTP服务器就关闭该连接。
一个HTTP请求报文:
HTTP请求报文第一行叫做请求行,后继行叫首部行。请求行:方法字段、URL字段和HTTP版本字段。首部行:HOST:www.someschool.edu行和Connection:close行指明对象所在主机和是否采用持续连接。User-agent:Moziila/5.0指明用户代理,即浏览器类型。Accept-language:fr行表示想得到该对象的法语版本。一些请求行方法字段:
GET:使用GET方法时,实体主体为空。POST:向服务器请求一个Web页面,Web页面内容依赖于用户在表单字段中输入的内容,这个内容就是实体主体。在GET方法的URL字段添加数据字段也可以达到相同的效果。HEAD:类似于GET方法,但并不返回请求对象。PUT:上传对象到指定的Web服务器。DELETE:删除Web服务器上的对象。一个HTTP响应报文(两图是同一响应报文):
响应报文有三个部分:1个初始状态行、6个首部行和实体主体。初始状态行:协议版本、状态码和相应的状态信息。首部行:Connection:close表示发送完报文后关闭该TCP连接;Date:产生发送响应报文的日期;Server:报文产生的服务器;Last-Modified:对象创建和最后修改的日期时间;Content-Length:被发送对象中的字节数;Content-Type:实体主体中的对象类型是HTML文本。实体主体:要发送的对象数据。一些状态码和相关短语:
200 OK 请求成功302 Moved Permanently 请求的对象已经被永久转移了,新的URL定义在响应报文的Location:首部行中。400 Bad Request 一个通用的差错代码,该请求服务器不理解。404 Not Found 被请求的文档不在服务器上。505 HTTP Version Not Supported 服务器不支持请求报文使用的HTTP协议版本。Web缓存又叫代理服务器。它是能够代表初始服务器响应HTTP请求的网络实体。 假设浏览器正在请求www.someschool.edu/jdi.gif,将会发生如下情况:
浏览器建立一个到Web缓存的TCP连接,并向Web缓存中的对象发送一个HTTP对象。Web进行检查,看本地是否存在对象副本。如果存在,Web缓存用HTTP响应报文返回该对象给浏览器。如果不存在,它就打开一个与该对象的初始服务器的TCP连接,Web缓存发送一个HTTP请求到初始服务器。初始服务器收到后,将该对象用HTTP响应报文返回给Web缓存。当Web缓存器收到该对象时,它在本地存储空间存储一份副本,并向客户的浏览器用HTTP响应报文发送该副本。Web缓存广泛应用于内容分发网络(CDN)。