图解HTTP读书笔记(二) 简单的HTTP协议

前言:其它文章链接

图解HTTP读书笔记(一) 基础知识准备
1.什么是客户端什么是服务端?
客户端: 请求访问文本或图像等资源的一端
服务端: 提供资源响应的一端

2.请求的发起必定是客户端,服务端回复响应

我们来具体看看一个HTTP协议的请求
示例:

Snip20171030_15.png

1.客户端请求报文:


Snip20171030_16.png
Snip20171030_18.png

请求首部字段及内容实体后面会做详细说明.

2.服务端响应报文:

Snip20171030_19.png
Snip20171030_20.png

1.HTTP是不保存状态的协议
什么叫不保存状态?
答: 不保存状态,即无状态协议,HTTP协议自身不对请求和响应之间的通信状态进行保存。 看下面的图更好理解:

Snip20171030_21.png

使用HTTP协议,每当有新的请求发送时, 都会有对应的新响应产生。 协议本身并不保留之前的一切请求货响应报文的信息。

如此设计,是为了更快地处理大量事务,确保协议的可伸缩性

但是随着Web的不断发展,因无状态而导致业务处理变得棘手的情况增多。 例如用户登录淘宝买东西,需要一直保存用户的登录状态一样。 HTTP为了实现期望的保持状态功能,引入了Cookie技术。 Cookie技术可以管理状态。 在后面我们再详细介绍Cookie技术。

2.请求URI定位资源
在充分理解URI 和 URL 的基础上,可以把URI理解为URL

HTTP 协议使用URI定位互联网上的资源,正是因为URI的特定功能,在互联网上任意位置的资源都能访问到。

Snip20171030_22.png

指定请求URI的方式有很多种:

Snip20171030_27.png

3.告知服务器意图的 HTTP 方法
说来高大上,其实就是我们平时用的GET,POST...请求。 我们再来看看这些方法.

1.GET :获取资源
GET 方法用来请求访问已被URI识别的资源,指定的资源经服务器端解析后返回响应内容。就是说请求什么资源,那就保持原样返回。

Snip20171030_28.png

2.POST :传输实体主体
POST 方法用来传输实体的主体,虽然用GET 方法也可以传输实体的主体,但一般不用GET方法进行传输,而是用POST方法。虽说POST的功能和GET很相似,但POST的主要目的并不是获取响应的主体内容。

Snip20171030_29.png
Snip20171030_30.png

3.PUT :传输文件
PUT 方法用来传输文件,就像FTP协议的文件上传一样, 要求在请求报文的主体中包含文件内容,然后保存到请求URI指定的位置。
PUT 方法的局限是自身不带验证机制,任何人都可上传文件,存在安全性问题,因此一般的Web网站不实用该方法。

Snip20171030_31.png

4.HEAD :获得报文首部

Snip20171030_32.png

5.DELETE : 删除文件
DELETE方法用来删除文件,与PUT相反的方法,按请求URI删除指定的资源。 其也存在和PUT方法一样的局限性。

Snip20171030_33.png
Snip20171030_34.png

6.OPTIONS :询问支持的方法

Snip20171030_35.png

7.TRACE :追踪路径

Snip20171030_36.png
Snip20171030_37.png

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

Snip20171030_38.png
Snip20171030_39.png

9.HTTP/1.0和 HTTP/2.0 支持的方法

Snip20171030_40.png

列表里面的和上面讲解的方法并不完全,因为现在HTTP协议已经来到了2.0时代,但是万变不离其宗。 在本书笔记完结时,在最后会有一篇简单介绍HTTP/2.0的文章。

4. 持久连接节省通信量
HTTP 协议的初始版本中,每进行一次HTTP通信就要断开一次TCP连接。如图:

Snip20171030_41.png

这种模式在当年来看是可以的,因为数据文本量很小,但是在当下是肯定不可行的,会产生很多不必要的通信开销。
以请求网页资源时的多图片为例:

1509354199040.png

为解决以上TCP连接的问题,HTTP/1.0 和一部分的HTTP/1.0想出了持久连接(HTTP Persistent Connections, 也称为HTTP Keep-alive 或 HTTP Connection reuse)的方法。 持久连接的特点是: 只要任意一端没有明确提出断开连接,则保持TCP连接状态。

Snip20171030_43.png

持久连接的好处: 在于减少了TCP连接的重复建立和断开所造成的额外开销,减轻了服务器端的负载。 其次减少开销的那部分时间,使HTTP请求和响应能够更早结束,这样Web页面的显示速度也就加快了。

管线化
管线化:通俗理解成这个并行请求,在以前是只能等待上一个请求发送等待响应后,才能发送下一个请求。 管线化技术出现后,不用等待响应亦可直接发送下一个请求。

Snip20171030_44.png

5. 使用Cookie的状态管理
前面提到过,HTTP是无状态协议,无法根据之前的状态进行本次的请求处理。
举一个例子(用户绝对无法忍受的例子):
用户浏览一个需要登录的Web网页,如果Web页面本身无法进行状态的管理(不记录已登录状态),那么意味着每次跳转新页面的时候都需要进行重新登录,那岂不是要把这个用户逼疯啊...

Snip20171030_45.png

一个事务都是有两面性的, 这种无状态协议也有它的优点,由于不必保存状态,自然可以减少服务器的CPU及内存资源的消耗。 另一点说,也正是因为HTTP协议本身是非常简单的,所以才会被应用在各种场景里。

Snip20171030_46.png

那么如何保留HTTP这个无状态的优势同时又解决类似的矛盾问题,于是引入了Cookie技术

Cookie技术
Cookie技术通过在请求和响应报文中写入Cookie信息来控制客户端的状态.

简单的说: 就是服务端在第一次响应报文中有一个叫做Set-Cookie的首部字段信息, 客户端需要保存Cookie, 当下次客户端再往该服务器发送请求时,客户端会自动在请求报文中加入Cookie值后发送出去。 服务端发现该客户端发送过来的Cookie后, 会去检查究竟是从哪一个客户端发送来的连接请求, 然后对比服务器上的记录,最后得到之前的状态信息。

Snip20171030_47.png

再看看请求报文和响应报文中Cookie情况:

Snip20171030_48.png
Snip20171030_49.png

有关报文方面的知识将在下次读书笔记中提到。。。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 213,752评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,100评论 3 387
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 159,244评论 0 349
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,099评论 1 286
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,210评论 6 385
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,307评论 1 292
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,346评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,133评论 0 269
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,546评论 1 306
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,849评论 2 328
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,019评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,702评论 4 337
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,331评论 3 319
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,030评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,260评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,871评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,898评论 2 351

推荐阅读更多精彩内容