《计算机网络自顶向下方法-第七版》第二章总结

2 Principle of Network Applications

2.2 The Web and HTTP

HTTP协议定义了Client和Server之间如何交换信息以及信息的格式。一个网页由多个object构成,一般包含一个base HTML file,其中包含了其他object的URL。URL由两部分组成,存储object的Server的Hostname + object的所在路径。

HTTP底层依赖TCP协议,Client发起与Server的TCP连接,Client发送HTTP Request Message,接收HTTP Response Message,Server则相反。事实上HTTP是一个无状态协议,Server并不会保存与其交互的Client的状态,这能够简化Server的设计,但是有时候对Client进行标记是必要的,可以用Cookie解决该问题。

Client可能连续向Server发起一系列Request,如果为每个Request建立TCP连接,则称为Non-persistent Connection,这种方式的弊端为:建立大量的HTTP连接会消耗大量的系统资源并且建立每个TCP连接都需要额外的一个RTT,增加了延时。与之相反的是,默认的HTTP协议都会利用单一的TCP连接传输连续的Request,直到给定时间没有接收到Request之后,Server会将TCP连接关闭。这种方式称为Persistent Connection。

HTTP Request Message如下所示:

GET /somedir/page.html HTTP/1.1  // Request Line
Host: www.someschool.edu      // Header Lines
Connection: close
User-agent: Mozilla/5.0
Accept-language: fr

  

Request Message由Request line,Header lines以及Entity body组成,Header lines与Entity body之间存在一个空行。在如上所示的Header Lines中,Host字段并不多余,因为它可以被Client与Server中间的Web Cache所使用。而Connection字段,则是Client用于通知Server不必建立Persistent Connection。User-agent则标示了发送Request的浏览器类型,Server可能对于不同的浏览器发送同一个object的不同版本。

HTTP Response Message如下所示:

HTTP/1.1 200 OK    // Response Line
Connection: close   // Header Line
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 ...)

  

Response Message类似地由Response line,Header lines以及Entity body组成。Header lines中的Date字段表明Server构建以及发送Response的时间。Last-Modified字段则表示获取的object上一次修改的时间,它可以用于检测缓存的对象是否需要更新。几种常用的返回状态如下:

200 OK:Request成功并且在Response中包含了所需的信息

301 Move Permanently:请求的object已经被永久转移了,但是Response Header中的Location字段表明了object新的URL,Client可以根据该URL再次发起请求

400 Bad Request:常用的错误码,表明Server不理解请求的含义

505 HTTP Version Not Supported:Server并不支持请求中的HTTP版本

猜你喜欢

转载自www.cnblogs.com/YaoDD/p/10401669.html