我爱编程

图解HTTP之CH2-简单的HTTP协议

2016-01-11  本文已影响52人  abyte

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

应用HTTP协议时,总是一端作为客户端发送请求,一端作为服务器响应请求,而且发送请求只能通过客户端发送。

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

请求总是由客户端发出,服务器响应,如果服务器没有收到请求不会作出响应的。
比如说有一个请求的实例

get.jpg

请求的格式是 方法 + URI + HTTP版本还有可选的请求首部。
响应的格式为 HTTP版本 + 状态码 + 状态

HTTP是不保存状态的协议

补充
HTTP为了提供快速的连接和减少服务器的负担,以便可以更快地处理大量事务,设计之初故意使用成不保存状态的。但是无状态的HTTP不能满足现在的需求,于是有了Cookie。

请求URI定位资源

客户端向服务器请求资源时要带上要请求的资源,比如说

https://www.baidu.com/img/baidu_jgylogo3.gif

请求的就是百度首页的logo

大量的HTTP请求

对于这样一个网页,如果每请求一个资源都要三次握手对服务器造成的负担太大,而采用持久化(keep-active)以减小服务器的压力,同时也会提高网页的加载速度。
持久连接的特点就是:任意一端没有断开连接,那么就保持TCP连接。

使用Cookie的状态管理

Cookie的作用是保存连接状态。比如说,登陆社交网站的用户需要持续的保持登陆的状态才能正常的上网,Cookie就是完成这样的事情。
具体来说,客户端获取从服务器的响应里面的set-cookie字段信息,客户端在下一次请求时带上这个字段。服务器响应请求时会查看这个cookie的信息和之前保存的设备信息是否一致,如果一致那么就返回之前保存的状态。

  1. 没有cookie时的请求报文
GET / HTTP/1.1
HOST:gX.com
*没有cookie信息
  1. 响应报文(服务器生成Cookie 信息)
HTTP/1.1 200 OK
Date:Sun, 10 Jan 2016 03:25:38 GMT
Server:Apache
<Set-Cookie:sid=143243234234323412355;path:/;Expires: Mon, 11 Jan 2016 15:55:31 GMT
>
  1. 请求报文
GET /image/ HTTP/1.1
Host: hackr.jp
Cookie:sid=143243234234323412355

而《图解HTTP》一书中图文讲解的这个知识点特别生动

noCookie.jpg Cookie.jpg
上一篇下一篇

猜你喜欢

热点阅读