《图解HTTP》第1、2、3章读书笔记

第一章:了解web及网络基础

1.1 使用HTTP协议方问web

访问web时,有一个客户端请求文件资源、服务端响应请求发送文件资源的过程,这个过程使用到的就是HTTP协议。

1.2 HTTP的诞生

HTTP最开始被设想出来是为了用来共享文档。

为了实现共享文档的设想,定义了:文档标记语言HTML、文档传输的协议HTTP、表示文档资源位置的URL,还诞生了web浏览器、web服务器。

之后,还出现了Apache(现在它是一种web服务器标准)。

目前主流用的HTTP协议版本是1.1,版本2.0尚未普及。

1.3 网络基础TCP/IP

TCP/IP是互联网相关的各类协议族的总称。

这一大堆协议族可分为4层,从上到下分别是,应用层、网络层、传输层、链路层,分层之后,各层只需要管好自己负责的任务,不需要关心整个传输过程。

HTTP协议属于应用层。FTP协议和DNS服务也属于应用层。

TCP协议和UDP协议属于传输层。

IP协议属于网络层。

链路层负责跟硬件打交道。

1.4 与HTTP关系密切的协议:IP、TCP、DNS

简单介绍下几个跟HTTP特别有关的协议:

IP负责找到确切的目的地,根据IP地址,还有与IP地址对应的,几乎不会改变的MAC地址,来找到确切的通信对象。

TCP负责会把应用层要传输的数据切割成一个个数据包,并采用3次握手策略来确认对方是否真的接收到了数据。

DNS服务,负责把主机名或者域名对应成IP地址。

1.5 URI和URL

URI是资源定位标识符,表示通过某协议访问资源的时候,资源的定位标识。

URL是表示资源在互联网上所处的位置。所以URL是URI的子集。

(还是没大看懂这个定义,先搁置)

书中HTTP相关内容会按RFC标准来介绍,但现实中,也有些web服务器和客户端就没完全按RFC标准来实现,所以可能会有些实际情况跟RFC上说的不一样。



第二章

本章简单介绍一下HTTP协议1.1版本的内容。

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

应用HTTP协议时,必定分为客户端和服务端,两台计算机的角色可以呼唤,但对于一条通信线路来说,必定一端是服务端另一端是客户端。

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


HTTP协议规定,通信只能从客户端开始建立,由客户端先发请求。

请求报文的构成:请求方法、请求URI、协议版本、首部字段(可选)、内容实体

响应报文的构成:协议版本、响应状态码和其原因短语(如200 OK、404 NOT FOUND这种)、首部字段(可选)、内容实体

2.3 HTTP是不保存状态的协议

HTTP协议不对请求和响应之间的通信状态进行保存,这是为了更快第处理大量事务、确保协议的可伸缩性,特意把HTTP协议设计成如此简单的。

但是这样不能满足稍微复杂一点的场景需求,所以引入了Cookie技术,有了Cookie,就能实现状态的保存。

2.4 请求URI定位资源

HTTP协议用URI来定位互联网上的资源,在请求报文里就有指定URI。报文里填写的URI可以是完整的URI,也可以是相对HOST的相对URI。此外,如果客户端想对服务端本身发起请求,而不是想访问资源,可以把URI填写成一个*号。

2.5 HTTP方法

GET:用来访问资源。指定的资源经服务器端解析后返回响应内容。

POST:用于传输实体主体,客户端一般用POST方法向服务端传输实体主体,虽然GET也可以传输,但是POST更专门用来做这个事。得到的响应是服务端接收了传输数据之后的处理结果。

PUT:用于客户端向服务端上传文件。一般的web网站不使用这个方法,因为存在安全问题。

HEAD:获得报文首部,用于确认URI的有效性及资源更新的日期时间

DELETE:用于删除文件,与PUT方法一样存在安全问题,一般网站不用。

OPTIONS:用来查询指定URI支持哪些方法。

TRACE:让web服务端将之前的请求通信返回给客户端,用来追踪一条请求从客户端到目标服务器(可能经历多次中转)经历的改变。但是这个方法容易遭到攻击所以也很少用。

CONNECT:要求与代理服务器通信时建立隧道,主要是用SSL和TLS协议把通信内容加密后经网络隧道传输。

2.6 持久连接节省通信量

HTTP最早的版本是每进行一次通信,都要断开一次TCP连接,如果一个客户端需要访问很多资源,比如说访问一个web页面里的多个图片资源,就要多次建立TCP连接、多次断开。

为了节省开销,HTTP1.1版本提出了持久连接,就是HTTP keep-alive,只要任意一端没有提出断开,就保持TCP连接状态。

在持久连接的基础上,请求可以以管线化方式发送,也就是不必等待上一个请求结束再发下一个请求,而是同时发送多个请求。

2.7 使用Cookie进行状态管理

服务端的响应报文内,首部字段可以增加Set-Cookie,向客户端存储信息。之后客户端会在请求报文里带上Cookie。



第三章 HTTP报文内的HTTP信息

3.1 HTTP报文

HTTP报文是由多行数据构成的字符串文本。报文可以分成报文首部和报文主体,其中报文主体可以没有。

3.2 报文结构

请求报文的首部:请求行(请求的方法、URI、HTTP协议版本号)、请求首部字段、通用首部字段、实体首部字段、其它

响应报文的首部:状态行(响应结果的状态码、原因短语、HTTP协议版本号)、响应首部字段、通用首部字段、实体首部字段、其它

3.3 编码提升传输速率

HTTP在传输数据时,可以通过编码提升传输速率

报文主体和实体主体的区别:报文主体是HTTP中的基本单位,由8位组字节流组成,通过HTTP通信传输。实体主体是传输的有效载荷,如果它不经过编码,就跟报文主体相等同,如果传输中经过了编码,实体主体就跟报文主体有区别。

HTTP协议中有一种被称作内容编码的功能,内容编码指定实体被编码的方式,然后就能把实体压缩,客户端接收到实体,然后对它进行解码。

常用的内容编码有gzip、compress、identity(不进行编码)等

为了大容量数据可以逐块加载,可以使用分块传输编码,把实体主体分块传输。

3.4 发送多种数据的多部分对象集合

HTTP采用了MIME标准,允许一份报文主体内可包含多种类型实体

当字段Content-Type为multipart/form-data时,或为multipart/byteranges时,报文主体内就可包含多类型实体。

3.5 获取部分内容的范围请求

在带宽不够的情况下,下载一个大文件需要较长时间,如果下载中网络中断,下次又要从头开始,为了接近这个问题,HTTP允许范围请求,即允许请求一个资源的第x字节到第y字节内容。

执行范围请求时,请求报文的首部会有Range字段,如:Range: bytes=5001-10000

表示请求该资源的第5001字节到第10000字节。

针对范围请求,服务端会返回状态码206,返回响应的内容。如果服务端不能响应范围请求,则会返回状态码200并把整个文件都返回去。

3.6 内容协商

内容协商机制是指客户端和服务器端就响应的资源内容进行交涉,然后提供给客户端最合适的资源,当请求报文首部包含对语言、字符集、编码方式等要求时(如Accept、Accept-Charset、Accept-Language、Content-Language这些字段),就是在与服务端进行内容协商。

内容协商有3种形式:服务器驱动协商、客户端驱动协商、透明协商(前两种方式结合)

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

推荐阅读更多精彩内容