《图解HTTP》读后总结

阅读时间:2019.10.30-2019.11.6

阅读心得

从知乎上看到有人推荐这本书,本身对计算机网络方面学习的比较少,于是就买来这本书开始看。这本书总体看下来比较轻松,因为书中的插画非常卡通,而且因为整本书都是在围绕HTTP进行讲解,所以内容上不会设计太多其他深奥的知识。读完之后,我对HTTP有了一个基本的认识,从以前只知道它是一个协议,到现在能够搞清楚这个协议内部的结构、返回的状态码等等,这都得益于这本小巧但又细致的书。也希望感兴趣的伙伴可以去读一读这本书呀!

阅读总结

【这本书一共有十一章,每一章都根据侧重点的不同展开介绍。在这里我将本书的章节框架展开,并根据自己读完的理解给每个部分做个小结,也方便自己日后复习。】

第一章:了解Web即网络基础

  • 1.1 使用HTTP协议访问Web(什么是HTTP?什么是客户端服务器端?)
  • 1.2 HTTP的诞生(诞生原因:知识共享;WWW(即Web)构建技术:HTML、HTTP、URL)
  • 1.3 网络基础TCP/IP

         (HTTP是TCP/IP内部的一个子集;TCP/IP的传输流?发送端从应用层往下走,每通过一层增加首部,接收端从链路层往上走,每通过一层删除首部)

            TCP/IP分层如下表所示:

应用层 各类应用服务,比如FTP(文件传输协议)、DNS(域名系统)
传输层 将计算机之间的数据进行分割、传输;TCP(传输控制协议)、UDP(用户数据报协议)
网络层 处理在网络上流动的数据包,在众多的选项内选择一条传输路线;数据包是网络传输的最小数据单位
链路层 处理连接网络的硬件部分,包括控制操作系统、硬件的设备驱动、NIC(网络适配器,即网卡)、光纤等物理可见部分

 

  • 1.4 与HTTP关系密切的协议:IP\TCP和DNS

         (IP网际协议:网络层;IP地址可变换,MAC地址基本不会变;ARP协议:根据IP地址反查MAC地址;IP间的通信依赖MAC地址来搜索下一个中转目标)

         (TCP协议:传输层;字节流服务:大数据分割成报文段单位的数据包;三次握手:SYN标志、SYN/ACK标志、ACK标志)

         (DNS服务:应用层(HTTP协议也在应用层);域名与IP地址之间(双向查找)的解析服务)

  • 1.5 负责域名解析的DNS服务(见上1.4)
  • 1.6 各种协议与HTTP协议的关系

         (客户端输入网址,DNS解析对应的IP地址,HTTP生成请求报文,TCP分割成报文段,IP边中转边发送,TCP接收报文段并重组,HTTP处理请求内容)

  • 1.7 URI和URL

         (URI:统一资源标识符,URL:统一资源定位符,URL是URI的子集)

            绝对URI的格式:

http:// user:pass@ www.example.jp: 80 /dir/index.htm? uid=1# ch1
协议方案名 登录信息(认证) 服务器地址 服务器端口号 带层次的文件路径 查询字符串 片段标识符

 

第二章:简单的HTTP协议

  • 2.1 HTTP协议用于客户端和服务器端之间的通信(客户端?服务器端?)
  • 2.2 通过请求和响应的交换达成通信(请求报文响应报文的组成?)
  • 2.3 HTTP是不保存状态的协议(发送过的请求和响应都不保存状态--引进了Cookie技术来保持状态)
  • 2.4 请求URI定位资源(如果对服务器本身发起请求,可用一个*来代替请求URI)
  • 2.5 告知服务器意图的HTTP方法
GET 获取资源
POST 传输实体主体
PUT 传输文件
HEAD 获得报文首部
DELETE 删除文件
OPTIONS 询问支持的方法
TRACE 追踪路径
CONNECT 要求用隧道协议连接代理

 

  • 2.6 使用方法下达命令(见上2.5)
  • 2.7 持久连接节省通信量(持久连接:任意一端没有明确提出断开连接,则保持TCP连接状态;管线化:不用等待响应亦可直接发送下一个请求)
  • 2.8 使用Cookie的状态管理(请求报文(没有Cookie信息的状态)--响应报文(服务器端生成Cookie信息)--请求报文(自动发送保存着的Cookie信息))

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

  • 3.1 HTTP报文(报文首部+空行+报文主体)
  • 3.2 请求报文及响应报文的结构

       ( 请求报文的结构:请求行+请求首部字段+通用首部字段+实体首部字段+其他;响应报文的结构:请求行+请求首部字段+通用首部字段+实体首部字段+其他)

 

请求行 方法、请求URI、HTTP版本
状态行 状态码、原因状语、HTTP版本
首部字段 请求首部、响应首部、通用首部、实体首部
其他 HTTP的RFC里未定义的首部(Cookie等)

 

  • 3.3 编码提升传输速率

        (什么是报文?HTTP通信的基本单位,由8位组字节流组成;什么是实体?请求或响应的有效载荷数据;压缩传输的内容编码;分割发送的分块传输编码)

  • 3.4 发送多种数据的多部分对象集合(多部分对象集合(Multipart))
  • 3.5 获取部分内容的范围请求(首部字段Range指定资源的byte范围)
  • 3.6 内容协商返回最合适的内容(服务器驱动协商,客户端驱动协商,透明协商)

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

  • 4.1 状态码告知从服务器端返回的请求结果
  类别 原因状语
1XX Informational(信息性状态码) 接受的请求正在处理
2XX Success(成功状态码) 请求正常处理完毕
3XX Redirection(重定向状态码) 需要进行附加操作以完成请求
4XX Client Error(客户端错误状态码) 服务器无法处理请求
5XX Server Error(服务器端错误状态码) 服务器处理请求错误

 

  • 4.2 2XX成功(200 OK--请求成功;204 No Content--没有资源可返回;206 Partial Content--范围请求)
  • 4.3 3XX重定向

        (301 Moverd Permanently--永久性重定向;302 Found--临时性重定向;303 See Other--使用GET方法获取资源的另一个URI;

            304 Not modified--资源已找到,但未符合条件请求;307 Temporary Redirect--临时重定向,与302类似)

  • 4.4 4XX客户端错误

        (400 Bad Request--请求报文语法错误;401 Unauthorized--请求需要认证;403 Forbidden--未获得访问授权;404 Not Found--服务器上没有请求的资源)

  • 4.5 5XX服务器错误

         (500 Internal Server Error--服务器端在执行请求时发生了错误;503 Service Unavailable--服务器处于超负载或者正在停机维护)

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

  • 5.1 用单台虚拟主机实现多个域名(相同的IP地址下,虚拟主机可以寄存多个不同主机名和域名的Web网站)
  • 5.2 通信数据转发程序:代理、网关、隧道

        (代理:客户端和服务器端的中间人,接收请求和响应;源服务器?每次经过代理追加写入Via首部信息;缓存代理、透明代理)

        (网关:对请求进行处理;通过加密提高通信的安全性)

        (隧道:在相隔甚远的客户端和服务器两者之间进行中转,保持双方通信连接;通信双方断开连接时隧道结束)

  • 5.3 保存资源的缓存

        (缓存:代理服务器或者客户端本地磁盘内保存的资源副本)

第六章:HTTP首部

  • 6.1 HTTP报文首部
  • 6.2 HTTP首部字段
  • 6.3 HTTP/1.1通用首部字段
首部字段名 说明
Cache-Control 控制缓存的行为
Connection 连接管理
Date 创建报文的日期时间
Pragma 报文指令
Trailer 报文末端的首部一览
Transfer-Encoding 指定报文主体的传输编码方式
Upgrade 升级为其他协议
Via 代理服务器的相关信息
Warning 错误通知

 

  • 6.4 请求首部字段
首部字段名 说明
Accept 用户代理可处理的媒体类型
Accept-Charset 优先的字符集
Accept-Encoding 优先的内容编码
Accept-Language 优先的语言
Authorization Web认证信息
Expect 期待服务器的特定行为
From 用户的电子邮箱地址
Host 请求资源所在服务器
If-Match 比较实体标记(ETag)
If-Modified-Since 比较资源的更新时间
If-None-Match 与If-Match相反
If-Range 资源未更新时发送实体Byte的范围请求
If-Unmodified-Since 与If-Modified-Since相反
Max-Forwards 最大传输逐跳数
Proxy-Authorization 代理服务器要求客户端的认证信息
Range 实体的字节范围请求
Referer 对请求中URI的原始获取方
TE 传输编码的优先级
User-Agent HTTP客户端程序的信息

 

  • 6.5 响应首部字段
首部字段名 说明
Accept-Range 是否接收字节范围请求
Age 推算资源创建经过时间
ETage 资源的匹配信息
Location 令客户端重定向至指定URI
Proxy-Authenticate 代理服务器对客户端的认证信息
Retry-After 对再次发起请求的时机要求
Server HTTP服务器的安装信息
Vary 代理服务器缓存的管理信息
WWW-Authenticate 服务器对客户端的认证信息

 

  • 6.6 实体首部字段
首部字段名 说明
Allow 资源可支持的HTTP格式
Content-Encoding 实体主体适用的编码方式
Content-Language 实体主体的自然语言
Content-Length 实体主体的大小(单位:字节)
Content-Location 替代对应资源的URI
Content-MD5 实体主体的报文摘要
Content-Range 实体主体的位置范围
Content-Type 实体主体的媒体类型
Expires 实体主体过期的日期和时间
Last-Modified 资源的最后修改日期时间

 

  • 6.7 为Cookie服务的首部字段
首部字段名 说明 首部类型
Set-Cookie 开始状态管理所使用的Cookie信息 响应首部字段
Cookie 服务器接收到的Cookie信息 请求首部字段

 

  • 6.8 其他首部字段(不再列举)

第七章:确保Web安全的HTTPS

  • 7.1 HTTP的缺点

        (a.通信使用明文(不加密),内容可能会被窃听

            b.不验证通信方的身份,有可能遭遇伪装

            c.无法证明报文的完整性,有肯能已经被纂改)

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

          (HTTP通信接口部分用SSL和TLS协议代替即为HTTPS;公开密钥加密技术)

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

  • 8.1 何为认证(判断访问服务器的对方)
  • 8.2 BASIC认证(基本认证;用户id+密码+Base64编码处理)
  • 8.3 DIGEST认证(摘要认证;响应摘要+质询码产生的计算结果)
  • 8.4 SSL客户端认证(客户端证书+密码)
  • 8.5 FormBase认证( 基于表单认证;按登录信息的验证结果认证)

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

  • 9.1 基于HTTP的协议
  • 9.2 消除HTTP瓶颈的SPDY

          (HTTP瓶颈:一条连接上只能发送一个请求;请求只能从客户端开始;请求/响应首部未经压缩就发送;发送冗长的首部;可任意选择数据压缩格式)

            (Ajax:只更新局部界面;Comet:服务器端有更新时载返回响应;SPDY:TCP/IP的应用层和传输层之间通过新加会话层的形式运作,通信中使用SSL)

  • 9.3 使用浏览器进行全双工通信的WebSocket(推送功能、减少通信量、握手/请求、握手/响应)
  • 9.4 期盼已久的HTTP/2.0(SPDY、HTTP Speed + Mobility、 Network-Friendly HTTP Upgrade)
  • 9.5 Web服务器管理文件的WebDav (可对Web服务器上的内容直接进行文件复制、编辑等操作的分布式文件系统)

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

  • 10.1 HTML(超文本标记语言、层叠样式表CSS
  • 10.2 动态HTML(调用客户端脚本语言JavaScript实现对HTML的Web页面的动态改造;DOM(文档对象模型)可指定预发生动态变化的HTML元素)
  • 10.3 Web应用(通过Web功能提供的应用程序;CGI;Servlet:能在服务器上创建动态内容的程序,是Java语言实现的一个接口,属于Java EE的一部分)
  • 10.4 数据发布的格式及语言(XML、RSS、JSON

第十一章:Web的攻击技术

  • 11.1 针对Web的攻击技术(主动攻击:直接访问Web应用,将攻击代码传入;被动攻击:例用全套策略执行攻击)
  • 11.2 因输出值转义不完全引发的安全漏洞(跨站脚本攻击(XSS)、窃取用户Cookie、SQL注入攻击、OS命令注入攻击、HTTP首部注入攻击、邮件首部注入攻击)
  • 11.3 因设置或设计上的缺陷引发的安全漏洞(强制浏览、不正确的错误消息处理、开放重定向)
  • 11.4 因会话管理疏忽引发的安全漏洞(会话劫持、会话固定攻击、跨站点请求伪造)
  • 11.5 其他安全漏洞(密码破解、点击劫持、DOS攻击(服务停止攻击/拒绝服务攻击))

 

posted @ 2019-11-06 22:10  遍唱阳春  阅读(365)  评论(0编辑  收藏  举报