zoukankan      html  css  js  c++  java
  • 《图解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关系密切的协议:IPTCP和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攻击(服务停止攻击/拒绝服务攻击))
  • 相关阅读:
    Linux系统之-TCP-IP链路层
    TCP-IP协议简介
    一些概念
    Bolzano-Weierstrass 定理
    Newton 插值法
    用 Ipe 画图
    Codeforces #677D Vanya and Treasure
    Codeforces #990E Post Lamp
    hihoCoder #1763 道路摧毁
    hihoCoder #1758 加减
  • 原文地址:https://www.cnblogs.com/iceywu/p/11806340.html
Copyright © 2011-2022 走看看