AI写作智能体 自主规划任务,支持联网查询和网页读取,多模态高效创作各类分析报告、商业计划、营销方案、教学内容等。 广告
## 2.2 Web 和 HTTP 20世纪90年代以前,互联网主要是研究人员、学者和大学生在使用,他们登录远程主机,在本地主机和远程主机之间传输文件,尽管这些应用非常有用和高效,但是并不被学术界和研究界以外的人知道。 20世纪90年代初,万维网(World Wide Web,1994)出现,将很多数据网上升为一个数据网,并被大众所熟知。 互联网最具有吸引力的是按需操作,当用户有需求时,可以得到想要的信息。 ### 2.2.1 HTTP 概况 超文本传输协议(HypeText Transfer Protocol,HTTP)是Web的应用层协议。网络应用的客户端、服务器端运行在不同的端系统上,通过交换HTTP报文进行会话,HTTP定了报文的结构和交换方式。 Web页面(Web Page)是由对象组成的,一个对象只是一个文件(HTML文件、JPEG图形、JAVA程序),且可通过URL寻址。多数Web页面包含一个HTML基本文件(Base HTML file)。 * Web浏览器(Web Browser)实现了HTTP的客户端 * Web服务器(Web Server)实现了HTTP的服务器端,用与储存Web对象以及对象URL寻址 HTTP使用了TCP作为运输协议,TCP保证了数据的传输。 HTTP是一种无状态协议(Stateless Protocol),即服务器不保存客户状态。 ### 2.2.2 非持续连接和持续连接 * 非持续连接(Non-persistent Connection):每个请求/响应对是经过单独的TCP连接发送 * 持续连接(Persistent Connection):所有请求/响应对是经过相同的TCP连接发送 非持续连接需要对每个请求的对象建立一个新的TCP连接,增大了服务器的压力。 ### 2.2.3 HTTP报文格式 #### 请求报文 报文为普通ASCII文本,方便人为识别。 > GET /somedir/page.html HTTP/1.1 > > Host: www.someschool.edu > > Connection: close > > User-agent: Mozilla/5.0 > > Accept-language: fr Line 1 为请求行(Request Line):方法字段、URL字段、HTTP版本字段 * 方法字段:GET、POST、HEAD、PUT、DELETE Line 2-5 为首部行(Header Line) * 主机地址:Host * 连接方式:Connection(非持续连接、持续连接),close指不希望使用持续连接 * 用户类型:User-agent * 语言版本:Accept-language 实体部分 * GET方法:实体部分为空,并且参数拼在URL中 * POST方法:信息写入实体部分 * HEAD方法:类似GET方法,只是服务器响应时用HTTP报文响应,而不是对象 #### 响应报文 > HTTP/1.1 200 OK > > Connection: close > > Date: Tue, 09 Aug 2011 15:44:04 GMT > > Server: Apache/2.2.3 \(CentOS\) > > Last-Modified: Tue, 09 Aug 2011 15:11:03 GMT > > Content-Length: 6821 > > Content-Type: text/html Line 1 为状态行(Status Line) * 200 OK:请求成功 * 301 Moved Permanently:请求对象已经永久转移,新的URL在响应报文的Location字段中 * 400 Bad Request:一个通用差错代理,表示请求不能被服务器所理解 * 404 Not Found:被请求文档不在服务器上 * 505 HTTP Version Not Supported:服务器不支持HTTP协议版本 ### 2.2.4 用户与服务器交互:Cookie HTTP服务器是无状态的,这样允许工程师们开发可以同时处理数以千计的TCP连接的服务器。 HTTP通过Cookie识别用户,Cookie包含4部分: * HTTP响应报文中的一个Cookie首部 * HTTP请求报文中的一个Cookie首部 * 客户端系统保留的Cookie,由浏览器管理 * 位于Web站点的一个后端数据库 ![](https://img.kancloud.cn/f1/ca/f1ca2c5dad5b2dd13bba4d9ba458bde7_614x546.png) ### 2.2.5 Web 缓存 Web缓存器(Web Cache)也称代理服务器(Proxy Server),它有自己的储存空间,可以保存最近请求过的对象副本。 Web缓存的作用: * 减少客户请求的响应时间 * 减少接入一个机构的接入链路通信量 Web缓存构成内容分发网络(Content Distribution Network,CDN),CDN公司在地理上部署了许多缓存器,因此使得大量流量实现本地化。 ### 2.2.6 条件GET方法 高速缓存可以使得用户的请求响应时间降低,但是缓存器中的对象副本可能过于陈旧。条件GET(Conditional GET)方法允许缓存器证实对象副本是否最新。 * 请求报文使用GET方法 * 请求报文中包含一个‘If-Modified-Since’的首部字段