我的博客:枫之羽
一、简单的HTTP协议
1.1http协议用户客户端和服务器之间的通信
应用http协议时,必定是一端担任客户角色,另一端担任服务端角色。
客户端:请求文本或图像等资源的一端称为客户端;
服务端:提供资源响应的一端。
1.2通过请求和响应的交换达成通信
请求报文是由请求方法、请求URI、协议版本、可选的请求首部字段和内容实体构成的。
响应报文基本上由协议版本、状态码(表示请求成功或失败的数字代码)、用以解释状态码的原因短语、可选的响应首部字段以及实体主体构成。
1.3http是不保存状态的协议
http是一种不保存状态,即无状态(stateless)协议。http协议自身不对请求和响应之间的通信状态进行保存。也就是说在http这个级别,协议对于发送过的请求或响应都不做持久化处理。
http/1.1虽然是无状态协议,但为了实现期望的保持状态功能,于是引入了Cookie技术。有了Cookie再用http协议通信,就可以管理状态了。
1.4请求URI定位资源
http协议使用URI定位互联网上的资源。正式因为URI的特定功能,在互联网上任意位置的资源都能访问到。
当客户端请求访问资源而发送请求时,URI需要将作为请求报文中的请求URI包含在内。指定请求URI的方式有很多。
1.5告知服务器意图的http方法
GET:获取资源
POST:传输实体主体
PUT:传输文件
HEAD:获得报文首部
DELETE:删除文件
TRACE:追踪路径
CONNECT:要求用隧道协议连接代理
1.6使用方法下达命令
向请求URI指定的资源发送请求报文时,采用称为方法的命令。
方法的作用:**可以指定请求的资源按期望产生某种行为。**方法有GET、POST和HEAD等。
1.7持久连接节省通信量
http协议的初始版本中,每进行一次http通信就要断开一次。
使用浏览器浏览一个包含多张图片的HTML页面时,在发送请求访问HTML页面资源的同时,也会请求该HTML页面里包含的其他资源。因此,每次的请求都会造成无谓的TCP链接的建立和断开,增加通信量的开销。
1.7.1持久连接
为了解决上述TCP连接的问题,http/1.1和一部分http/1.0想出了持久连接(HTTP Persistent Connections,也称为HTTP keep-alive或HTTP connection reuse)的方法。
持久连接的特点是:只要任意一端没有明确提出断开连接,则保持TCP连接状态。
持久连接的好处在于减少了TCP连接的重复建立和断开所造成的额外开销,减轻了服务器的负载。另外,减少开销的那部分时间,使HTTP请求和响应能够更早结束,这样Web页面的显示速度也就相应提高了。
1.7.2管线化
持久连接使得多数请求以管线化(pipelining)方式发送成为可能。从前发送请求后需要等待并受到响应,才能发送下一个请求。管线化技术出现后,不用等待响应亦可直接发送下一个请求。
1.8使用Cookie的状态管理
http协议是无状态协议,在保存无状态协议这个特征的同时又要解决类似的矛盾为,于是引入了Cookie技术。Cookie技术通过在请求和响应报文中写入Cookie信息来控制客户端的状态。
Cookie会根据从服务器发送的响应报文内的一个叫做Set-Cookie的首部字段信息,通知客户端保存Cookie。当下次街护短再往该服务器发送请求时,客户端会自动在请求报文中加入Cookie值后发送出去。
二、HTTP报文内的HTTP信息
2.1报文
2.2请求报文及响应报文的结构
2.3编码提升传输速率
http在传输数据时可以按照数据原貌直接传输,但也可以在传输过程中通过编码提升传输速率。
2.3.1报文主体和实体主体的差异
**报文:**HTTP通信中的基本单位,由8位组字节流组成,通过HTTP通信传输。
**实体:**作为请求或响应的有效载荷数据(补充项)被传输,其内容由实体首部和实体主体组成。
HTTP报文的主体用于传输请求或响应的实体主体。
通常,报文主体等于实体主体。
三、返回结果的HTTP状态码
3.1状态码告知从服务器端返回的请求结果
状态码的职责是当客户端想服务器端发送请求时,描述返回的请求结果。
状态码如200 OK,以3位数字和原因短语组成。
数字中的第一位指定了响应类别,后两位无分类。