《图解HTTP》读书笔记

《图解HTTP》读书笔记

第一章:了解Web及网路基础

TCP/IP协议

把互联网想关联的协议集合起来总称为TCP/IP协议 TCP/IP 协议族按层次分为:应用层,传输层,网络层,数据链路层web

应用层

决定了向用户提供应用服务时通讯的活动。 TCP/IP 协议族内预存了各种通用的应用服务,好比:FTPDNS 服务就是其中两类 HTTP 协议也处于该层数据库

传输层

传输层对上层应用层,提供处于网络链接中的两台计算机之间的数据传输。 在传输层有两个性质不一样的协议:TCP(Transmission Control Protocol,传输控制协议)和 UDP(User Data Protocol,用户数据报协议)浏览器

网路层(又名网络互联层)

网路层用来处理网络上流动的数据包。数据包是网络传输的最小数据单位,该层规定了经过怎样的路径(所谓的传输路线)到达对方的计算机,并把数据包传送给对方。与对方计算机之间经过多台计算机或网络设备进行传输时,网络层所起的做用就是在众多的选项内选择一条传输路线。缓存

链路层(又名数据链路层,网络接口层)

用来处理链接网络的硬件部分。包括操做系统、硬件的设备驱动、NIC(Network Interface Card,网络适配器,即网卡),及光纤等物理可见部分,硬件上的范畴均在链路层的做用范围以内。安全

TCP/IP 通讯传输流

Xnip2019-08-15_08-10-59

利用TCP/IP 协议族进行通讯时,会经过分层顺序与对方进行通讯,发送端从应用层往下走,接收端则从应用层往上走。 发送端在层与层之间传输数据时,没通过一层时一定会被打上一个该层所属的首部信息,反之,接收端在层与层之间传输数据时,每通过一层时会把对应的首部消去。- 这种把数据信息包装起来的作法称为封装。服务器

确保可靠性的 TCP 协议

按层次分,TCP位于传输层,提供可靠的字节流服务(字节流:为了方便传输,将大块数据分割成以报文段为单位的数据包进行管理)。 TCP 协议为了更容易传送大数据才把数据分割,并且 TCP 协议可以确认数据最终是否送达到对方。网络

如何确保数据能到达目标?

TCP 协议采用了三次握手策略。用TCP协议把数据包送出去之后,TCP不会对传送后的状况置之不理,它必定会向对方确认是否成功送达,握手过程使用了TCP的标志:SYN(synchronize)和 ACK(acknowledgement)。 发送端首先先发送一个带SYN标志的数据包给对方,接收端收到后,回传一个带有 SYN/ACK 标志的数据包以示传达确认信息,最后,发送端再回传一个带 ACK 标志的数据包,表明握手结束。若捂手过程当中在某个阶段莫名中断,TCP协议会在此以相同的顺序发送相同的数据包异步



Xnip2019-08-15_13-49-34

负责域名解析的 DNS 服务

DNS(Domain Name System)服务是和HTTP协议同样位于应用层的协议,它提供域名到IP地址之间的解析服务。大数据

浏览一个网址的全过程:网站

Xnip2019-08-16_07-03-22

URL(Uniform Resource Locator,统一资源定位符) 和 URI(统一资源标示符)

URL 是访问web页面须要输入的网页地址 URI 是由某个协议方案表示的资源的定位标示符,协议方案是指访问资源所使用的协议类型名称

URI 用字符串标识某一互联网资源,而URL表示资源的地点(互联网上所处的位置),可见 URL 是 URI 的子集。

第二章:简单的HTTP协议

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

Xnip2019-08-16_07-24-28

HTTP 是一种不保存状态,即无状态协议。

HTTP 协议自身不对请求和响应之间的通讯状态进行保存。目的是为了更快的处理大量事务,确保协议的可伸缩性。 后来有一些场景须要保存客户端的状态,好比登陆状态,因而引入了 Cookie 技术。有了 Cookie 再用HTTP协议通讯,就能够管理状态了。

告知服务器意图的HTTP方法

  • GET : 获取
  • POST: 传输实体主体
  • PUT : 传输文件
  • HEAD: 得到报文首部
  • DELETE: 删除文件
  • OPTIONS: 询问支持的方法
  • TRACE:追踪路径
  • CONNECT:要求用隧道协议链接代理

持久链接节省通讯量

HTTP 初始版本,每进行一次HTTP通讯就要断开一次TCP链接,当年数据小没问题,但随着HTTP的普及,HTTP所传输的内容越来越多,每次请求都会形成无谓的TCP链接创建和断开,增长通讯量的开销。

为解决上述TCP链接的问题,HTTP/1.1 和 一部分 HTTP/1.0 相处了持久链接的方法,特色是:只要任意一端没有明确的提出断开链接,则保持TCP链接状态。

管线化

持久链接使得多数请求以管线化(pipelining)方式发送成为可能,之前发送请求后需等待并受到响应,才能发送下一个请求。管线化技术出现后,不用等待响应亦可直接发送下一个请求。这样就能作到同时并行发送多个请求。而不须要一个接一个地等待响应了。

第三章:HTTP报文内的HTTP信息

请求报文和响应报文的首部内容由如下数据组成:

  • 请求行 包含用于请求的方法,请求 URI 和 HTTP 版本

  • 状态行 包含响应结果的状态码,缘由短语和HTTP版本

  • 首部字段 包含请求和响应的各类条件和属性的各种首部 通常有四种首部:通用首部,请求首部,响应首部和实体首部

  • 其余 可能包含HTTP的RFC 里未定义的首部(Cookie等)

编码提高传输速率

报文

是HTTP通讯中的基本单位,由8位字节流组成,经过 HTTP 通讯传输

实体

做为请求或响应的有效载荷数据(补充项)被传输,其内容由实体首部和实体主体组成

HTTP 报文的主体用于传输请求或响应的实体主体。一般,报文主体等于实体主体。只有当传输中进行编码操做时,实体主体的内容发生变化,才致使它和报文主体产生差别。

第四章:返回结果的HTTP状态码

状态码的类别

类别 缘由短语
1xx Infomational(信息性状态码) 接收的请求正常处理
2xx Success(成功状态码) 请求正常处理完毕
3xx Redirection(重定向状态码) 须要进行附加操做以完成请求
4xx Client Error(客户端状态错误码) 服务器没法处理请求
5xx Server Error(服务器状态码) 服务器处理请求出错

常见错误码

2xx - 成功

  • 200 OK : 请求被正常处理。
  • 204 No Content : 请求成功但返回的响应报文中不含实体的主体部分,通常只须要从客户端往服务器发送信息,而对客户端不须要发送新信息内容的状况下使用。
  • 206 Partial Content : 客户端进行了范围请求,服务器成功执行了这部分GET请求,响应报文中包含由 Content-Range 指定范围的实体内容

3xx - 重定向

  • 301 Moved Permanently : 永久性重定向,该状态码表示请求的资源已被分配了新的URI,之后应使用资源如今所指的URI。
  • 302 Found : 临时性重定向,表示请求的资源已被分配了新的URI,但愿用户本次能使用新的URI访问
  • 303 See Other : 表示因为请求对应的资源存在着另外一个URI,应使用GET方法定向获取请求的资源。
  • 304 Not Modified : 表示客户端发送附带条件的请求时,服务端容许请求访问资源,但未知足条件的状况。
  • 307 Temporary Redirect : 临时重定向

4xx - 客户端错误

  • 400 Bad Request : 请求报文中存在语法错误,当错误发生时,需修改请求的内容后再次发送请求。
  • 401 Unauthorized : 表示发送的请求须要有同感HTTP认证的认证信息。
  • 403 Forbidden : 代表对请求资源的访问被服务器拒绝了。例如未获取到文件系统的访问权限
  • 404 Not Found : 代表服务器上没法找到请求的资源。

5xx - 服务器错误

  • 500 Internal Server Error : 服务器端在执行请求时发生了错误。
  • 503 Service Unavailable :代表服务器暂时处于超负载或正在进行停机去维护,如今没法处理请求。

第五章:与 HTTP 协做的 Web 服务器

一台 Web 服务器可搭建多个独立域名的 Web 网站,也可做为通讯路径上的中转服务器提高传输速率

代理

代理是一种由转发功能的应用程序,扮演了位于服务器和客户端中间人的角色,接收由客户端发送的请求并转发给服务器,同时也接收服务器返回的响应并转发给客户端 分缓存代理(缓存从源服务器获取的数据)和透明代理(对请求不作任何加工)

网关

网关是转发其余服务器通讯数据的服务器,接收从客户端发送来的请求时,它像本身拥有资源的源服务器同样对请求进行处理。 工做机制和代理相似,而网关可以使通讯线路上的服务器提供非HTTP协议服务。利用网关可以提升通讯的安全性,由于能够在客户端与网关之间的通讯线路上加密以确保链接的安全。

隧道

隧道是在相隔甚远的客户端和服务器二者之间进行中转,并保持双方通讯链接的应用程序。 可按要求创建一条与其余服务器的通讯线路,届时使用 SSL 等加密手段进行通讯。隧道的目的是确保客户端与服务器进行安全的通讯。

第六章:HTTP首部

HTTP 协议的请求和响应报文中必含HTTP首部,首部内容为客户端和服务器分别处理请求和响应提供所须要的信息。

请求报文

HTTP请求报文由:方法,URI,HTTP版本,HTTP首部字段等部分构成。

响应报文

HTTP响应报文由:HTTP版本,状态码(数字和缘由短语),HTTP首部字段等3部分构成。

HTTP首部字段

首部字段由首部字段名和字段值构成,中间用冒号 :分割。 例如HTTP首部中以 Content-Type 这个字段来表示报文主体的对象类型。

通用首部字段

Xnip2019-08-18_10-53-07

请求首部字段

Xnip2019-08-18_10-56-54

响应首部字段

Xnip2019-08-18_11-07-46

实体首部字段

Xnip2019-08-18_11-08-27

其余首部字段: HTTP 首部字段是能够自行扩展的

第七章:确保Web安全的HTTPS

HTTP 的缺点

  • 通讯使用明文(不加密),内容可能会被窃听
  • 不验证通讯方的身份,所以有可能遭遇假装
  • 没法证实报文的完整性,因此有可能已遭篡改

####加密处理防止被窃听

通讯的加密

HTTP 协议中没有加密机制,但能够经过和SSL(Secure Socket Layer,安全套接层)或 TLS(Transport Layer Security,安全传输层协议)的组合使用,加密HTTP的通讯内容。

用SSL创建安全通讯线路以后,就能够在这条线路上进行HTTP通讯的。与SSL组合使用的HTTP被称为 HTTPS(HTTP Secure,超文本传输安全协议)

内容的加密

经过使用证书,以证实通讯方就是意料中的服务器。

HTTP+加密+认证+完整性保护 = HTTPS

一般,HTTP直接和TCP通讯,当使用 SSL 时,则演变成先和 SSL 通讯,再由SSL 和 TCP 通讯了。

SSL 是独立于HTTP的协议,因此不光是HTTP协议,其余运行在应用层的SMTP和Telnet等协议都可配合SSL协议使用。能够说 SSL 是当今世界上应用最为普遍的网络安全技术。

HTTPS 采用共享密钥加密和公开密钥加密二者并用的混合加密机制。

使用SSL速度不可避免的会变慢:1.通讯慢 2.大量消耗CPU和内存等资源,致使处理速度变慢。

第八章:确认访问用户身份的认证

认证的几种常见方式:

  • 密码:只有本人才会知道的字符串信息
  • 动态令牌:仅限本人持有的设备内显示的一次性密码
  • 数字证书:仅限本人(终端)持有的信息
  • 生物认证:指纹和虹膜等本人的生理信息
  • IC卡等:仅限本人持有的信息

HTTP/1.1 使用的认证方式:

  1. BASIC认证(基本认证)
  2. DIGEST认证(摘要认证)
  3. SSL客户端认证
  4. FormBase认证(基于表单认证)

第九章:基于HTTP的功能追加协议

使用HTTP协议存在以下瓶颈:

  • 一条链接上只可发送一个请求
  • 请求只能从客户端开始,客户端不能够接收除响应之外的指令
  • 请求/响应首部未经压缩就发送。首部信息越多延迟越大
  • 发送冗长的首部,每次互相发送相同的首部形成的浪费较多
  • 可任意选择数据压缩格式。非强制压缩发送

Ajax 的解决方法

Ajax(Asynchronous JavaScript and XML, 异步JavaScript与XML技术) 是一种有效利用JavaScript 和 DOM(Document Object Model) 的操做,以达到局部Web页面替换加载的异步通讯手段。因为它只更新一部分界面,响应中传输的数据量会所以而减小。

Comet 的解决方法

一般,服务端接收到请求,在处理完毕后就会当即返回响应,但为了实现推送功能,Comet会先将响应置于挂起状态,当服务端有内容更新时,再返回该响应。所以,服务端一旦有更新,就能够当即反馈给客户端。

SPDY 的目标

SPDY 没有彻底改写HTTP协议,而是再TCP/IP的应用层与传输层之间经过新加会话层的形式运做。同时,考虑到安全性问题,SDPY规定通讯中使用SSL。

Xnip2019-08-22_08-54-17

SDPY的设计图示

使用 SDPY后,HTTP协议额外得到如下功能:

多路复用流

经过单一的TCP链接,能够无限制处理多个HTTP请求。全部请求的处理都在一条TCP链接上完成,所以TCP处理效率获得提升

赋予请求优先级
压缩HTTP首部
推送功能
服务器提示功能

服务器能够主动提示客户端请求所需的资源。

WebSocket

Web 浏览器与 Web 服务器之间全双工通讯标准。一旦Web服务器与客户端之间创建起 WebSocket 协议的通讯链接,以后全部的通讯都依赖这个专用协议进行,通讯过程当中可互相发送JSON,XML,HTML或图片等任意格式的数据。

WebSocket 通讯的主要特色:

  • 推送功能
  • 减小通讯量

第十章:构建Web内容的技术

HTML (HyperText Markup Language,超文本标记语言)。

CSS(Cascading Style Sheets,层叠样式表),能够指定如何展示HTML内的各类元素,属于样式表标准之一。

动态HTML(Dynamic HTML)

经过调用客户端脚本语言JavaScript,实现对HTML的Web页面的动态改造。利用 DOM(Document Object Model,文档对象模型)可指定欲发生动态变化的HTML元素。

Web应用

数据发布的格式及语言·

  • XML
  • RSS
  • JSON

第十一章:Web的攻击技术

HTTP 不具有必要的安全功能

SQL注入攻击

对Web应用使用的数据库,经过运行非法的SQL而产生的攻击。

HTTP首部注入攻击

攻击者经过在响应首部字段内插入换行,添加任意响应首部或主体的一种攻击。

  • 设置任何Cookie信息
  • 重定向至任意URL
  • 显示任意的主体(HTTP响应截断攻击)

目标遍历攻击

对本无心公开的文件目录经过非法截断其目录路径后,达成访问目的的一种攻击。

因设置或设计上的缺陷引起的安全漏洞

密码破解

算出密码,突破认证

DoS攻击

一种让运行中的服务呈中止状态的攻击。

  • 集中利用访问请求形成资源过载,资源用尽的同时,实际上服务也就呈中止状态
  • 经过攻击安全漏洞使服务中止

单纯来说就是发生大量合法请求,服务器很难分辨何为正常请求,何为攻击请求,所以很难防止DoS攻击。 多态计算机发起的DoS攻击成为 DDoS攻击(Distributed Denial of Service attack)。

相关文章
相关标签/搜索