图解HTTP-读书笔记

作者: 安卓Boy | 来源:发表于2017-03-17 10:27 被阅读131次

    前言:
    最近这段时间慢慢的在补充基础知识,其中最先开始看的一本书就是【图解HTTP】这本书非常适合新手入门,里面的内容把广泛上需要了解的HTTP相关知识点都讲,又不会让读者记得泛泛或者小儿科,以下是我在阅读的时候做的读书笔记以加深印象已经理解。

    IMG_1188.JPG
    第一章 了解Web及网络基础
    • Web使用一种名为HTTP(HyperText Transfer Protocol,超文本传输协议)的协议作为规范,完成客户端到服务器端一系列运作流程,也就是说,Web是建立在HTTP协议上通信的。

    • 通常互联网是在 TCP/IP 协议族的基础上运作的,HTTP属于这个族的一个子集。

    • TCP/IP 协议很重要的一个概念就是分层。按层次分别为:
      应用层 >>> 传输层 >>> 网络层 >>> 链路层。
      一个HTTP请求发出后,大致的流程即是这样的:
      首先客户端在应用层发出一个想看某个Web页面的HTTP请求 >>>
      为方便传输,传输层把从应用层收到的数据(HTTP请求报文)分割成多个数据包并标记序号后,转发给网络层 >>>
      在网络层增加作为通信目的地的MAC地址后转发给链路层。
      至此,发往网络的通信请求就准备好了。

    • 发送端或者接收端,层与层之间传递数据时,每一层会被打上或消去该层所属的首部信息。

    • DNS(Domain Name System)服务是和 HTTP 协议一样位于应用层的协议。它提供域名到 IP 地址的解析服务。

    • TCP 协议位于传输层,提供可靠的字节流服务。因为传输层将数据分割,TCP 协议采用三次握手(three-way handshaking)策略以确保数据准确送达:首先发送一个带有 SYN 标志的数据包给对方 >>>
      接收端收到后回传一个带有 SYN/ACK 标志的送达确认信息 >>>
      最后发送端再回传一个带有 ACK 标志的数据包。
      至此,“握手”结束。

    • IP 协议位于网络层。作用是把各种数据包发送给对方。在此期间,会通过一个 ARP 协议将 IP 地址解析为 MAC 地址。

    第二章 简单的HTTP协议
    • HTTP 协议规定,请求从客户端发出,最后服务器端响应请求并返回。也就是说,一定是从客户端开始建立通信,服务器端没有接收到请求之前不会发送响应。

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

    GET /html/index.html HTTP/1.1
    Host: ddrenched.com
    name=ddrenched
    
    • 响应报文是由协议版本、状态码、状态码原因短语、响应首部字段(可选)和主体构成。
    HTTP/1.1 200 OK
    Date: Fri, 30 Jua 2017 10:59:19 GMT
    <html>
    ...
    
    • HTTP 是不保存状态的协议:不对请求和响应的通信状态进行保存。
      每当有新的请求发送时,就会有对应的新响应产生。
      这是为了快速处理大量任务。

    • HTTP 方法

      • GET:获取资源。该方法用来请求访问已经 URI 识别的资源。
      • HEAD:获取报文首部。和 GET 方法一样,只是不返回报文主 体。常用来确认 URI 的有效性和资源的更新时间等。
      • POST:传输实体资源。该方法用来传输实体的主体。虽然 GET 方法也可以传输实体的主体,但一般用 POST 方法。
      • PUT:用来传输文件。要求在请求报文的主体中包含内容,然后保存到请求的 URI 指定的位置。
      • DELETE:用来删除文件。与PUT方法相反,DELETE 方法按照请求 URI 删除指定资源。
      • OPTION:用来查询请求的 URI 资源支持的方法。
    • CONNECT:要求与代理服务器通信时建立隧道,实现用隧道协议进行 TCP 通信。主要是为了使用 SSL(Secure Socket Layer,安全套接)和 TLS(Transport Layer Security,传输层安全)协议把信息内容加密后经网络隧道传输。

    • 持久连接:只要任意一方(客户端和服务器端)没有明确提出断开连接,则保持 TCP 连接状态。
      在 HTTP1.1 中,所有连接默认都是持久的。

    • Cookie 技术通过在请求和响应报文中写入 Cookie 信息来控制客户端状态。
      Cookie 会根据服务器端发送的响应报文内的一个叫 Set-Cookie 的首部字段,通知客户端保存 Cookie。当下次客户端发送请求到服务器端时,客户端会在报文中加入 Cookie 值再发送出去。

    第4章 返回结果的 HTTP 状态码
    • 状态码的职责是描述客户端发出请求的返回结果,状态码以三位数字和原因短语组成。
      数字中的第一位指定了响应类别:

    • 1XX:Informationao(信息性状态码)接受的请求正在处理

    • 2XX:Success(成功状态码)请求正常处理完毕

    • 3XX:Redirection(重定向状态码)需要附加操作以完成请求

    • 4XX:Client Error(客户端错误状态码)服务器无法处理请求

    • 5XX:Server Error (服务器错误状态码)服务器处理请求错误

    • 2XX 成功

      • 200 OK:客户端发来的请求被服务器正常处理了。
      • 204 No Content:服务器正常处理,但返回的响应报文实体中没有主体。
    • 3XX 重定向

      • 301 Moved Permanently:永久性重定向。表示请求的的资源已被分配了新的 URI,以后应使用资源现在所指的 URI。
        如果已经把资源对应的 URI 保存为书签,这时应该按照 Location 首部字段提示的 URI 重新保存。
      • 302 Found:临时性重定向。表示请求的资源已被分配了新的 URI,希望用户(本次)使用新的 URI 访问。
        和301状态码相似,但302只是临时的,比如 URI 被保存成书签,但不会像301那样去更新书签。
      • 303 See Other:表示由于对应的资源存在着另一个 URI,应使用 GET 方法定向获取请求资源。
      • 304 Not Modified:表示客户端发送附带请求时(If-Match,If-None-Match,If-Modified-Since,If-Unmodified-Since,If-Range,中任一首部),服务器端允许请求访问资源,但因发生了未满足条件的情况,直接返回304。
        304状态码返回时,不包含任何响应主体部分。
        304虽然被划分在3XX中,其实和重定向没什么关系。
      • 307 Temporary Redirect:临时重定向。与302有着相同含义。
    • 4XX 客户端错误

      • 400 Bad Request:表示请求报文中语法错误。当错误发生时,需要求改请求内容后再次发送请求。
      • 401 Unanthorized:表示发送的请求需要通过 HTTP 认证。
      • 403 Forbidden:表示对请求资源的访问被服务器拒绝了。
        未获得系统访问权限,访问权限出现问题等情况都可能发生403。
      • 404 Not Found:表示服务器上无法找到请求的资源。
    • 5XX 服务器错误

      • 500 Internal Server Error:表示服务器执行请求时发生错误。
      • 503 Service Unavailable:表示服务器暂时超载无法处理。
    第5章 与 HTTP 协作的 Web 服务器
    • HTTP/1.1 协议允许一台服务器搭建多个 Web 站点。

    • Web 托管服务可以用一台服务器为多个域名运行,这是使用了 Virtual Host(虚拟主机)的功能。

    • 客户端使用 HTTP 协议访问服务器时,会经常采用域名的方式。在互联网上,域名通过 DNS 服务映射到 IP 地址。可见,当请求发送至服务器时,已经是 IP 地址形式的访问了。

    • 由于用作寄存的服务器的 IP 地址是相同的,多个虚拟主机寄存的不同 Web 站点如何区分呢? 必须在 Host 首部内指定主机名或域名的 URI。

    • 代理。代理服务器的基本行为就是接受客户端的请求后转发给其它服务器。代理不改变 URI,直接发送给前方持有资源的目标服务器(称为源服务器)。从源服务器返回的响应经过代理服务器后再传给客户端。

    • 在 HTTP 通信中,可以级联多台代理服务器。请求和响应的转发会经由数台类似锁链一样链接起来的代理服务器。每次转发,需要附加 Via 首部字段以标示经过的主机信息。

    • 网关工作机制和代理十分相似,网关能使通信线路上的服务器提供非 HTTP 协议服务。

    • 隧道的目的是确保客户端与服务器进行安全的通信 。
      隧道可以按要求建立一条与服务器的通信线路,届时使用加密手段进行通信。

    第6章 HTTP 首部

    ---未完

    相关文章

      网友评论

        本文标题:图解HTTP-读书笔记

        本文链接:https://www.haomeiwen.com/subject/latenttx.html