Web的应用层协议是超文本传输协议(HyperText Transfer Protocol,HTTP),是Web的核心。HTTP使用TCP作为它的支撑运输层协议,HTTP客户机发起一个与服务器的TCP连接,一旦建立连接,浏览器和服务器进程就会通过(Socket)套接字接口访问TCP。
HTTP是无状态协议:因为HTTP服务器不保存关于客户机的任何信息。
HTPP可以使持久连接也可以使非持久连接。
非持久连接:必须为每个请求的对象建立和维护一个全新的连接,对于这样的每个连接,在客户机和服务器都要分配TCP的缓冲区和变量,这会给服务器带来严重的负担。
持久连接:在相同的客户机与服务器之间的后续请求和响应报文可通过相同的连接进行连接传送。
HTTP请求报文格式:
GET /somedir/page.html HTTP/1.0
HOST: www.someschool.deu
Connection: close
User-agent: Mozilla/4.0
Accept-language: fr
以上的1为请求行(request line)2、3、4、5为首部行(header line),请求行有三个字段:方法字段、URL字段和HTTP协议版本字段。方法字段可以取值:GET、POST、HEAD、PUT和DELETE。host是服务器的主机名,Connection为close,表示服务器使用非持久连接,User-agent用来定义用户代理,即向服务器发送请求的浏览器的类型,Accept-language表示用户想使用的服务器语言版本(此处是法语版本),如果服务器中有这样的没有这样样的语言,服务器会返回默认版本。
HTTP响应报文格式:
HTTP/1.0 200 ok
Connection:close
Date:Thu,03 Jul 2003 12:00:15 GMT
Server:Apache/1.3.0(Unix)
Last-Modified:Sun,6 May 2007 09:23:24 GMT
Content-Length: 6821
Content-Type:text/html
(data data ...............)
响应报文有三部分组成:初始状态行(status line),6个首部行(header line),实体主体
Date指的是服务器产生并发送该报文的日期和时间,Content-length表示被发送对象的字节数,Content-Type指的是实体主体中的对象是HTML文本。