《图解HTTP》第二章学习笔记

第二章

2.1 HTTP 协议用于客户端和服务器端之间的通信

应用 HTTP 协议时,必定是一端担任客户端角色,另一端担任服务器端角色。

2.2 通过请求和响应的交换达成通信

HTTP 协议规定,请求从客户端发出,最后服务器端响应该请求并返回。换句话说,肯定是先从客户端开始建立通信的,服务器端在没有接收到请求之前不会发送响应。

请求必定由客户端发出,而服务器端回复响应

具体示例:

请求报文是由请求方法、请求 URI、协议版本、可选的请求首部字段和内容实体构成的。

下面则是从客户端发送给某个 HTTP 服务器端的请求报文中的内容。

GET /index.htm HTTP/1.1
Host: hackr.jp

接收到请求的服务器,会将请求内容的处理结果以响应的形式返 回。

HTTP/1.1 200 OK
Date: Tue, 10 Jul 2012 06:50:15 GMT
Content-Length: 362
Content-Type: text/html
<html>
……

起始行开头的 HTTP/1.1 :表示服务器对应的 HTTP 协议版本。

紧挨着的 200 OK 表示请求的处理结果的状态码(status code)和原因 短语(reason-phrase)。下一行显示了创建响应的日期时间,是首部 字段(header field)内的一个属性。

下一行显示了创建响应的日期时间,是首部字段(header field)内的一个属性。

以一空行分隔之后的内容称为资源实体的主体(entity body)。

HTTP响应报文格式:响应报文基本上由协议版本、状态码(表示请求成功或失败的数字代 码)、用以解释状态码的原因短语、可选的响应首部字段以及实体主 体构成。

2.3 HTTP 是不保存状态的协议

2.4 请求 URI 定位资源

当客户端请求访问资源而发送请求时,需要将作为请求报文中的请求 URI 包含在内。

如果不是访问特定资源而是对服务器本身发起请求,可以用一个 * 来代替请求 URI。

以下示例是查询 HTTP 服务器端支持的 HTTP 方法种类。

OPTIONS * HTTP/1.1    

2.5 告知服务器意图的 HTTP 方法

GET:获取资源**

GET方法用来请求访问已被URI识别的资源。指定的资源经服务器端解析后返回相应内容。

POST:传输实体主体

POST方法用来传输实体的主体。

POST和GET虽然都能传输实体,但一般不用GET方法进行传输,POST的主要目的并不是获取响应主体内容。

PUT:传输文件

PUT方法用来传输文件。由于安全性问题,一般的Web网站不使用该方法。

(这里相应的意思是请求执行成功但无数据返回)

HEAD:

和GET方法一样,但不返回报文主体部分。

DELETE:删除文件

和PUT一样由于安全原因一般Web网站不使用。

OPTIONS:询问支持的方法

TRACE:追踪路径

TRACE 方法是让 Web 服务器端将之前的请求通信环回给客户端的方法。发送请求时,在 Max-Forwards 首部字段中填入数值,每经过一个服务器端就将该数字减 1,当数值刚好减到 0 时,就停止继续传输,最后接收到请求的服务器端则返回状态码 200 OK 的响应。客户端通过TRACE方法可以查询到发送出去的请求是怎样被加密/篡改的。

CONNECT:要求用隧道协议连接代理

CONNECT 方法要求在与代理服务器通信时建立隧道,实现用隧道协议进行 TCP 通信。主要使用 SSL(Secure Sockets Layer,安全套接层)和 TLS(Transport Layer Security,传输层安全)协议把通信内容加密后经网络隧道传输。

CONNECT 代理服务器名:端口号 HTTP版本

2.6使用方法下达命令

这一块内容比较无关紧要。

2.7持久连接节省通信量

在HTTP协议的初始版本中,每进行一次HTTP通信就要断开一次TCP连接,这意味着每次请求都会造成无谓的TCP连接建立和断开而增加通信量开销。

因此出现了持久连接(HTTP Persistent Connections,也称为 HTTP keep-alive 或 HTTP connection reuse)的方法。其特点为只要任意一段没有明确提出断开连接,则保持TCP连接状态,减轻了服务器的负载,提高Web页面的显示效率。

持久连接使得多数请求以管线化方式发送成为可能。管线化技术出现后,不用等待响应亦可直接发送下一个请求。

2.8使用Cookie的状态管理

由于HTTP是无状态协议,它不会对之前发生过的请求和相应的状态进行管理。

因此引入了Cookie技术。通过在请求和响应报文中写入Cookie信息来控制客户端状态。

客户端保存由服务器端发送的响应报文中叫做Set-Cookie的首部字段信息,下次客户端再往该服务器发送请求时,客户端会自动在请求报文中加入Cookie值发出。服务器通过客户端发送的Cookie得到之前的状态信息。

1.请求报文(无Cookie时状态)

GET /reader/ HTTP/1.1
Host: hackr.jp
*首部字段内没有Cookie的相关信息

2.响应报文(服务端生成Cookie信息)

HTTP/1.1 200 OK
Date: Thu, 12 Jul 2012 07:12:20 GMT
Server: Apache
<Set-Cookie: sid=1342077140226724; path=/; expires=Wed,
10-Oct-12 07:12:20 GMT>
Content-Type: text/plain; charset=UTF-8

3.请求报文(自动发送保存着的Cookie信息)

GET /image/ HTTP/1.1
Host: hackr.jp
Cookie: sid=1342077140226724
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值