《图解HTTP》大纲思维导图

  • 图解HTTP

    • 第1章 了解 Web 及网络基础

      • TCP/IP协议族

        • TCP/IP是把与互联网相关联的协议集合起来的总称

        • 层次化

          • 应用层(FTP、DNS、HTTP协议)

            • 应用层决定了向用户提供应用服务时的通信活动

          • 传输层(TCP、UDP)

            • 传输层对上层应用层,提供处于网络连接中的两台计算机之间的数据传输

          • 网络层

            • 网络层用来处理在网络上流动的数据包

          • 数据链路层

            • 用来处理连接网络的硬件部分

          • 图示 IP 协议、 TCP 协议和 DNS 服务在使用HTTP 协议的通信过程中各自发挥了哪些作用

      • URI 和 URL

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

        • URI( Uniform Resource Identifier,统一资源标识符)

          • 绝对 URI 的格式

        • URL(Uniform Resource Locator, 统一资源定位符)

          • URL正是使用 Web 浏览器等 访问 Web 页面时需要输入的网页地址

    • 第 2 章 简单的 HTTP 协议

      • HTTP 是不保存状态的协议

        • TTP 是一种不保存状态, 即无状态协议。HTTP 协议自身不对请求和响应之间的通信状态进行保存。 也就是说在 HTTP 这个级别, 协议对于发送过的请求或响应都不做持久化处理。

          • 有了 Cookie 再用 HTTP 协议通信, 就可以管理状态了,Cookie 技术通过在请求和响应报文中写入 Cookie 信息来控制客户端的状态

      • 告知服务器意图的 HTTP 方法

        • GET : 获取资源

          • 指定的资源经服务器端解析后返回响应内容。

        • POST: 传输实体主体

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

        • PUT: 传输文件

          • PUT 方法用来传输文件。 就像 FTP 协议的文件上传一样, 要求在请求报文的主体中包含文件内容, 然后保存到请求 URI 指定的位置。

        • HEAD: 获得报文首部

          • HEAD 方法和 GET 方法一样, 只是不返回报文主体部分。 用于确认URI 的有效性及资源更新的日期时间等。

        • DELETE: 删除文件

          • DELETE 方法用来删除文件, 是与 PUT 相反的方法。 DELETE 方法按请求 URI 删除指定的资源。

        • OPTIONS: 询问支持的方法

          • OPTIONS 方法用来查询针对请求 URI 指定的资源支持的方法。

        • TRACE: 追踪路径

          • TRACE 方法是让 Web 服务器端将之前的请求通信环回给客户端的方法。

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

          • CONNECT 方法要求在与代理服务器通信时建立隧道, 实现用隧道协议进行 TCP 通信。 主要使用 SSL(Secure Sockets Layer, 安全套层)和 TLS(Transport Layer Security, 传输层安全) 协议把通信内容加 密后经网络隧道传输

      • 持久连接节省通信量

        • 背景:HTTP 协议的初始版本中, 每进行一次 HTTP 通信就要断开一次 TCP连接。随着 HTTP 的普及, 文档中包含大量图片的情况多了起来

        • 解决:HTTP/1.1 和一部分的 HTTP/1.0 想出了持久连接的方法。 持久连接的特点是, 只要任意一端没有明确提出断开连接, 则保持 TCP 连接状态。

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

    • 第 3 章 HTTP 报文内的 HTTP 信息

      • 请求报文及响应报文的结构

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

        • 状态行:包含表明响应结果的状态码, 原因短语和 HTTP 版本。

        • 首部字段:包含表示请求和响应的各种条件和属性的各类首部。

      • 编码提升传输速率

        • 报文主体和实体主体的差异

          • 报文( message):是 HTTP 通信中的基本单位, 由 8 位组字节流(octet sequence,其中 octet 为 8 个比特) 组成, 通过 HTTP 通信传输。

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

        • 压缩传输的内容编码

          • 常用的内容编码有以下几种:gzip( GNU zip)、compress( UNIX 系统的标准压缩)、deflate( zlib)、identity( 不进行编码)

          • 执行范围请求时, 会用到首部字段 Range 来指定资源的 byte 范围

      • 内容协商返回最合适的内容

        • 内容协商技术有以下 3 种类型

          • 服务器驱动协商( Server-driven Negotiation)

            • 由服务器端进行内容协商。 以请求的首部字段为参考, 在服务器端自动处理。

          • 客户端驱动协商( Agent-driven Negotiation)

            • 由客户端进行内容协商的方式。 用户从浏览器显示的可选项列表中手动选择。 还可以利用 JavaScript 脚本在 Web 页面上自动进行上述选 择。

          • 透明协商( Transparent Negotiation)

            • 是服务器驱动和客户端驱动的结合体, 是由服务器端和客户端各自进行内容协商的一种方法

    • 第 4 章 返回结果的 HTTP 状态 码

      • 状态码的职责是当客户端向服务器端发送请求时, 描述返回的请求结果。

        • 数字中的第一位指定了响应类别, 后两位无分类, 响应类别有以上 5种。只要遵守状态码类别的定义, 即使改变 RFC2616 中定义的状态码, 或服务器端自行创建状态码都没问题。

      • 2XX 成功

        • 2XX 的响应结果表明请求被正常处理了

        • 200 OK

          • 表示从客户端发来的请求在服务器端被正常处理了。

        • 204 No Content

          • 该状态码代表服务器接收的请求已成功处理, 但在返回的响应报文中不含实体的主体部分。 另外, 也不允许返回任何实体的主体。

            • 一般在只需要从客户端往服务器发送信息, 而对客户端不需要发送新信息内容的情况下使用。

        • 206 Partial Content

          • 该状态码表示客户端进行了范围请求, 而服务器成功执行了这部分的GET 请求。 响应报文中包含由 Content-Range 指定范围的实体内容。

      • 3XX 重定向

        • 3XX 响应结果表明浏览器需要执行某些特殊的处理以正确处理请求

        • 301 Moved Permanently

          • 永久性重定向。 该状态码表示请求的资源已被分配了新的 URI, 以后应使用资源现在所指的 URI。 也就是说, 如果已经把资源对应的 URI 保存为书签了, 这时应该按 Location 首部字段提示的 URI 重新保存。

        • 302 Found

          • 临时性重定向。 该状态码表示请求的资源已被分配了新的 URI, 希望用户(本次) 能使用新的 URI 访问。

            • 和 301 Moved Permanently 状态码相似, 但 302 状态码代表的资源不是被永久移动, 只是临时性质的。 换句话说, 已移动的资源对应的 URI 将来还有可能发生改变。

        • 303 See Other

          • 该状态码表示由于请求对应的资源存在着另一个 URI, 应使用 GET方法定向获取请求的资源

            • 303 状态码和 302 Found 状态码有着相同的功能, 但 303 状态码明确表示客户端应当采用 GET 方法获取资源, 这点与 302 状态码有区 别。

        • 304 Not Modified

          • 该状态码表示客户端发送附带条件的请求 2 时, 服务器端允许请求访问资源, 但未满足条件的情况。

            • 304 状态码返回时, 不包含任何响应的主体部分。 304 虽然被划分在 3XX 类别中, 但是和重定向没有关系

        • 307 Temporary Redirect

          • 临时重定向

            • 该状态码与 302 Found 有着相同的含义。 尽管 302 标准禁止 POST 变换成 GET, 但实际使用时大家并不遵守。307 会遵照浏览器标准, 不会从 POST 变成 GET。 但是, 对于处理响应时的行为, 每种浏览器有可能出现不同的情况。

      • 4XX 客户端错误

        • 4XX 的响应结果表明客户端是发生错误的原因所在

        • 400 Bad Request

          • 该状态码表示请求报文中存在语法错误。 当错误发生时, 需修改请求的内容后再次发送请求。

        • 401 Unauthorized

          • 该状态码表示发送的请求需要有通过 HTTP 认证(BASIC 认证、DIGEST 认证) 的认证信息。另外若之前已进行过 1 次请求, 则表示用户认证失败。

        • 403 Forbidden

          • 该状态码表明对请求资源的访问被服务器拒绝了。

            • 服务器端没有必要给出拒绝的详细理由, 但如果想作说明的话, 可以在实体的主体部分对原因进行描述, 这样就能让用户看到了。

        • 404 Not Found

          • 该状态码表明服务器上无法找到请求的资源

            • 也可以在服务器端拒绝请求且不想说明理由时使用

      • 5XX 服务器错误

        • 5XX 的响应结果表明服务器本身发生错误

        • 500 Internal Server Error

          • 该状态码表明服务器端在执行请求时发生了错误。也有可能是 Web应用存在的 bug 或某些临时的故障

        • 503 Service Unavailable

          • 该状态码表明服务器暂时处于超负载或正在进行停机维护, 现在无法处理请求。 如果事先得知解除以上状况需要的时间, 最好写入RetryAfter 首部字段再返回给客户端。

    • 第 5 章 与 HTTP 协作的 Web 服 务器

      • 通信数据转发程序 : 代理、 网关、 隧道

        • 代理

          • 代理是一种有转发功能的应用程序, 它扮演了位于服务器和客户端“中间人”的角色, 接收由客户端发送的请求并转发给服务器, 同时也接收服务器返回的响应并转发给客户端。

        • 网关

          • 网关是转发其他服务器通信数据的服务器, 接收从客户端发送来的请求时, 它就像自己拥有资源的源服务器一样对请求进行处理。 有时客户端可能都不会察觉, 自己的通信目标是一个网关。

        • 隧道

          • 隧道是在相隔甚远的客户端和服务器两者之间进行中转, 并保持双方通信连接的应用程序。

    • 第 6 章 HTTP 首部

      • HTTP 报文首部

        • HTTP 请求报文

        • HTTP 响应报文

      • HTTP 首部字段

        • HTTP 首部字段是由首部字段名和字段值构成的, 中间用冒号“:” 分隔

      • 4 种 HTTP 首部字段类型

        • 通用首部字段( General Header Fields)

          • 请求报文和响应报文两方都会使用的首部

        • 请求首部字段( Request Header Fields)

          • 从客户端向服务器端发送请求报文时使用的首部。 补充了请求的附加内容、 客户端信息、 响应内容相关优先级等信息。

        • 响应首部字段( Response Header Fields)

          • 从服务器端向客户端返回响应报文时使用的首部。 补充了响应的附加内容, 也会要求客户端附加额外的内容信息。

        • 实体首部字段( Entity Header Fields)

          • 针对请求报文和响应报文的实体部分使用的首部。 补充了资源内容更新时间等与实体有关的信息。

      • 其他首部字段

        • X-Frame-Options

          • 首部字段 X-Frame-Options 属于 HTTP 响应首部, 用于控制网站内容在其他 Web 网站Frame 标签内的显示问题。 其主要目的是为了防止点击劫持(clickjacking) 攻击。

          • DENY : 拒绝

          • SAMEORIGIN : 仅同源域名下的页面(Top-level-browsingcontext) 匹配时许可

        • X-XSS-Protection

          • 首部字段 X-XSS-Protection 属于 HTTP 响应首部, 它是针对跨站脚本攻击(XSS) 的一种对策, 用于控制浏览器 XSS 防护机制的开关。

          • 0 : 将 XSS 过滤设置成无效状态

          • 1 : 将 XSS 过滤设置成有效状态

        • DNT

          • 首部字段 DNT 属于 HTTP 请求首部, 其中DNT 是 Do Not Track 的简称, 意为拒绝个人信息被收集, 是表示拒绝被精准广告追踪的一种方 法。

          • 0 : 同意被追踪

          • 1 : 拒绝被追踪

        • P3P

          • 首部字段 P3P 属于 HTTP 相应首部, 通过利用 P3P(The Platform for Privacy Preferences, 在线隐私偏好平台) 技术, 可以让 Web 网站上的个人隐私变成一种仅供程序可理解的形式, 以达到保护用户隐私的目的

    • 第 7 章 确保 Web 安全的HTTPS

      • 共享密钥加密的困境

        • 加密和解密同用一个密钥的方式称为共享密钥加密(Common key crypto system) , 也被叫做对称密钥加密。

        • 可究竟怎样才能安全地转交? 在互联网上转发密钥时, 如果通信被监听那么密钥就可会落入攻击者之手, 同时也就失去了加密的意义。 另外还得设法安全地保管接收到的密钥。

      • 使用两把密钥的公开密钥加密

        • 公开密钥加密方式很好地解决了共享密钥加密的困难。公开密钥加密使用一对非对称的密钥。 一把叫做私有密钥(private key) , 另一把叫做公开密钥(public key) 。 顾名思义, 私有密钥不能让其他任何人知道, 而公开密钥则可以随意发布, 任何人都可以获得。

        • 使用公开密钥加密方式, 发送密文的一方使用对方的公开密钥进行加密处理, 对方收到被加密的信息后, 再使用自己的私有密钥进行解密。 利用这种方式, 不需要发送用来解密的私有钥,也不必担心密钥被攻击者窃听而盗走

        • 公开密钥加密与共享密钥加密相比, 其处理速度要慢

      • HTTPS 采用混合加密机制

        • 在交换密钥环节使用公开密钥加密方式, 之后的建立通信交换报文阶段则使用共享密钥加密式。

      • 证明公开密钥正确性的证书

        • 遗憾的是, 公开密钥加密方式无法证明公开密钥本身就是货真价实的公开密钥。为了解决上述问题, 可以使用由数字证书认证机构(CA Certificate Authority) 和其相关机关颁发的公开密钥证书。

    • 第 8 章 确认访问用户身份的认证

      • 核对的信息通常是

        • 密码: 只有本人才会知道的字符串信息

        • 动态令牌: 仅限本人持有的设备内显示的一次性密码

        • 数字证书: 仅限本人( 终端) 持有的信息

        • 生物认证: 指纹和虹膜等本人的生理信息

        • IC 卡等: 仅限本人持有的信息

      • HTTP 使用的认证方式

        • BASIC 认证( 基本认证)

        • DIGEST 认证( 摘要认证)

        • SSL 客户端认证

        • FormBase 认证( 基于表单认证)

        • 此外, 还有 Windows 统一认证(Keberos 认证、 NTLM 认证)

  • 5
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值