2.2.1 HTTP概况
Web的应用层协议是超文本传输协议(HypterText Transfer Protocol,HTTP),它是Web的核心,在[RFC 1945]和[RFC 2616]中进行了定义。
HTTP由两个程序实现,一个是客户程序,一个是服务器程序
Web页面是由对象组成的,一个对象只是一个文件,多数Web页面含有一个HTML基本文件,以及几个引用对象。
HTML基本文件通过对象的URL地址引用页面中的其他对象。每个URL地址由两部分组成:存放对象的服务器主机名和对象的路径名。
HTTP定义了Web客户向Web服务器请求Web页面的方式,以及服务器向客户传送Web页面的方式
HTTP使用TCP作为它的支撑运输协议。
服务器向客户发送被请求的文件,而不存储任何关于该客户的状态信息。HTTP服务器并不保存关于客户的任何信息,所以我们说HTTP是一个无状态协议。
2.2.2 非持续链接和持续链接
2.2.3 HTTP 报文格式
1.HTTP请求报文
下面提供了一个典型的HTTP请求报文:
GET /somedir/page.html HTTP/1.1 ##请求行
##首部行
Host:www.someschool.edu
Connection:close
User-agent:Mozilla/5.0
Accept-language:fr
请求行分为3个字段:方法字段(GET,POST,HEAD,PUT,DELETE),URL字段和HTTP版本字段
当浏览器请求一个对象的时候,使用GET方法,在URL字段带有请求对象的标识,浏览器实现的是HTTP1.1版本。
首部行中Host指明了对象所在的主机,Connection:close告知服务器不使用持续链接。User-agent指出发送请求的浏览器类型,这里就是火狐浏览器,Accept-language指出语言版本。
2.HTTP响应报文
HTTP/1.1 200 OK ##状态行
##首部行
Connection:close
Date:Tue,18 Aug 2015 15:44:04 GMT
Server:Apache/2.2.3 (centos)
Last-Modified:Tue,18 Aug 2015 15:11:03 GMT
Content-Length:6821
Content-Type:Text/html
##实体体
(data data data data data ...)
状态行有3个字段:协议版本字段,状态码和响应状态信息。
一些常见的状态码和相关的短语包括:
- 200 OK 请求成功,信息在返回的响应报文中。
- 301 Moved Permanently:请求的对象已经被永久转移了,新的URL定义在响应报文的Location:首部行。客户软件将自动获取新的URL
- 400 Bad Request:一个通用差错代码,指示该请求不能被服务器理解
- 404 Not Found:被请求的文档不在服务器上
- 505 HTTP Version Not Supported:服务器不支持请求报文使用的HTTP协议版本
首部行中Connection:close告知客户发送完报文后关闭TCP连接。Date指示服务器产生并发送该响应报文的日期和时间。这个时间是指服务器找到该文件,并且插入报文中进行发送的时间。Server:指示服务器。Last-Modified:对象创建或者最后修改的时间。Content-Length:指示了被发送对象中的字节数,Content-Type指示了对象时HTML文本。
2.2.4 用户与服务器的交互:cookie
Web站点通过cookie来进行站点对用户跟踪
cookie有4个组件:
- 在HTTP响应报文中的一个cookie首部行
- 在HTTP请求报文中的一个cookie首部行
- 在用户端系统中保留有一个cookie文件,并由用户浏览器就行管理
- 位于Web站点的一个后端数据库
2.2.5 Web缓存
Web缓存也叫代理服务器,它是能够代表初始Web服务器来满足HTTP请求的网络实体
Web缓存器有自己额磁盘存储空间,并在存储空间中保存最近请求过的对象副本。
1)浏览器创建一个到Web缓存器的TCP连接,并向Web缓存器中的对象发送一个HTTP请求。
2)Web缓存器进行检查,看看本地是否存储了该对象副本。如果有,Web缓存器向客户浏览器用HTTP响应报文返回
3)如果Web缓存器中没有该对象,它就打开一个与该对象的初始服务器的TCP连接。Web缓存器则在这个缓存器到服务器的TCP连接上发送一个该对象的HTTP请求。在收到该请求后,初始服务器向该Web缓存器发送具有该对象的HTTP响应。
4)当Web缓存器接收到该对象的时候,它在本地存储空间存储一份副本,并向客户的浏览器用HTTP响应报文发送该副本。