zoukankan      html  css  js  c++  java
  • 图解http读书笔记

    以前对HTTP协议一知半解,一直不清楚前端需要对于HTTP了解到什么程度,知道接触的东西多了,对于性能优化、服务端的配合和学习中也渐渐了解到了HTTP基础的重要性,看了一些大神对HTTP书籍的推荐,也就找了这本《图解HTTP》来学习一些基础,对于这本书来说,每页都有一些很生动的配图,阅读起来不会像理论书籍那么的枯燥,配图都画的很有意思,值得一看,下面是我的一些读书笔记,也不算是笔记吧,只是摘出了我觉得的重点。

    第一章 了解web及网络基础

        HTTP的基础知识 超文本传输协议
        http诞生→发展,各版本的区别
        *网络基础 TCP/IP
            TCP/IP协议族,HTTP协议是属于它内部的一个子集
            TCP/IP协议族按层次分为:
                应用层:FTP、DNS、HTTP等
                传输层:TCP、UDP
                网络层:IP 用来处理网络上流动的数据包
                数据链路层:连接网络的硬件
            分层的好处:更前面模块化的意义相同,每个分层之需要处理自己的工作相应该层面的变化,让设计变得更简单;
            TCP协议:
                将大块数据分割成以报文段为单位的数据包进行管理,使用三次握手的策略确认数据最终是否送达到对方;
                三次握手:发送端首先发送一个带有SYN标志的数据包给接收端,接收端收到后,回传一个带有SYN/ACK标志的数据包以示传达确认信息。最后发送端再回传一个带ACK标志的数据包,代表握手结束。
            域名解析的DNS服务:属于应用层的协议,提供域名到IP地址之间的解析服务;
     

    第二章 简单的HTTP协议

        请求报文格式:由请求方法、请求URI、协议版本、可选的请求首部字段和内容实体构成。
        响应报文格式:由协议版本、状态码、用以解释状态码的原因短语,可选响应首部字段以及实体主体构成。
        HTTP是不保持状态的协议(无状态协议):对发送过的请求或响应不做持久化处理。不保留之前一切的请求或响应报文信息;
        使用cookie技术可以实现期望的保持状态功能;
        HTTP方法:
            GET:获取资源
            POST:传输实体主体
            PUT:传输文件(不带验证机制,存在安全性问题,一般不适用)
            HEAD:获得报文首部
            DELETE:删除文件和PUT一样存在安全问题
            OPTIONS:询问支持的方法
            TRACE:追踪路径
            CONNECT:要求用隧道协议连接代理
        持久连接节省通信量: 一个页面需要请求许多的资源,如果每个请求都需要TCP连接建立和端口会产生大量的通信开销;
            解决方式:持久连接(HTTP keep-alive):只要任意一端没有明确提出断开连接,则保持TCP连接状态;
                                好处:减少TCP连接的重复建立和断开所造成的开销,减轻服务器的负载,提高页面显示速度
                                http1.0所有的连接默认都是持久连接
        管线化:类似于多线程,无需等待响应亦可直接发送下一个请求,同时并行发送多个请求;
     
    第三章:HTTP报文内的HTTP信息
        报文结构:报文首部 + 空行 + 报文主体
        通过编码提升传输速率:
            1、压缩传输内容编码:服务端压缩 → 客户端解码(gzip、compress、deflate、identity)
            2、分割发送的分块传输编码
            3、获取部分内容的范围请求 请求头部 Range: bytes = 5000-10000 指定资源的byte范围
     

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

      类别     原因短语    
    1xx informational(信息性状态码) 接收的请求正在处理    
    2xx success(成功状态码    ) 请求正常处理完毕
    200 OK 请求被正常处理了
    204 No Content 请求已成功处理,但返回的响应报文不含实体的主体部分
    206 Partial Content 客户端使用了范围请求,服务端成功执行了部分GET请求
    3xx redirection(重定向状态码) 需要进行附加操作以完成请求
    301 Moved Permanently     永久重定向,请求的资源已被分配了新的URI,以后应使用新的URI
    302 Found     临时重定向,请求的资源已被分配了新的URI,希望(本次)使用新URI访问
    303 See Other     由于请求对应的资源存在着另一个URI,应使用GET方法定向获取请求的资源(与302相比,明确应使用GET方法)
    304 Not Modified 客户端方式附带条件请求,服务端运行请求访问资源,但因发生请求未满足条件的情况,直接返回304(服务端资源未改变,可使用客户端未过期的缓存)
    307 Temporary Redirect     临时重定向,与302相同,307遵照浏览器标准,不会从POST变成GET
    4xx client error(客户端错误状态码) 服务端无法处理请求
    400 Bad Request 请求报文中存在语法错误
    401 Unauthorized     发送的请求需要有通过HTTP认证(BASIC认证、DIGEST认证)的认证信息,若之前已进行1次请求,则表示用户认证失败
    403 Forbidden 对请求资源的访问被服务器拒绝了
    404 Not Found 服务器上无法找到请求的资源,也可以在服务器端拒绝请求且不说明理由时使用
    5xx server error(服务端错误状态码) 服务端处理请求出错
    500 Internal Server Error 服务器端在执行请求时发生了错误
    503 Service Unavailable     服务器暂时处于超负载或正在进行停机维护,现在无法处理请求

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

        用单台虚拟主机实现多个域名:虚拟主机可以寄存多个不同主机名和域名的web网站,因此在发送HTTP请求时,必须在Host首部内完整制定主机名或域名的URI。
        通信数据转发的应用程序:代理、网关、隧道;
            代理:中间人,对请求和响应转发;不改变请求URI,每次转发会追加写入Via首部信息
            网关:接受请求,转发通信数据,如果自己拥有资源就能像源服务器一样对请求进行处理。
            隧道:建立一条与其他服务器的通信线路,使用SSL等加密手段进行通信。隧道目的是确保客户端与服务端进行安全的通信
        资源的缓存:减少对源服务器的访问,节省通信流量和通信时间;
        缓存的有效期限
     


    第6章 HTTP报文首部

    分为 请求报文  和 相应报文
    请求报文:请求行、请求首部字段、通用首部字段、实体首部字段
    响应报文:状态行、响应首部字段、通用首部字段、实体首部字段
     
    首部字段的结构:  字段名:字段值
     
    4种http首部字段类型:
    通用首部字段、实体首部字段(请求报文和响应报文都会使用的首部)
    请求首部字段
    响应首部字段
     
    非http/1.1 首部字段:
    47种,常用的: Cookie、Set-Cookie和Content-Disposition等
     
    HTTP首部字段 分为两种类型:
    端到端首部 End-to-end Header
    该类型的首部会转发给请求或响应对应的最终接受目标,且必须保存在由缓存生产的响应中,另外规定他必须被转发;
    逐跳首部 Hop-by-hop Header
    该类型的首部只对单次转发有效,会因通过缓存或代理而不再转发;HTTP/1.1和之后版本中,如果使用该类型的首部,需要提供Connection首部字段
     
    属于逐跳首部的有: Connection、Keep-Alive 、Proxy-Authenticate、 Proxy-Authorization、Trailer、TE、Transfer-Encoding、 Upgrade
    不属于以上首部的,都为端到端首部类型;
     
    通用首部字段:
    1、Cache-control:操作缓存的工作机制;
    指令参数可选多个,用 , 分割;
        public
        private
        no-cache
        no-store
        s-maxage
        max-age
        min-fresh
        max-stale
        only-if-cached
        must-revalidate
        proxy-revalidate
        no-transform
        扩展: 通过cache-extension标记(token),可以扩展Cache-Control首部字段内的指令
     
    2、Connection:用于控制不再转发给代理的首部字段和管理持久连接;
        Connection: 不再转发的首部字段名;
        Connection:close  断开连接
     
    3、Date:表明创建HTTP报名的日期和时间
        多种格式
     
    4、Pragma:HTTP/1.1之前版本的遗留字段,用于向后兼容;
        例如:无法保证中间服务器使用的HTTP协议版本,所以在采用Cache-Control:no-cache;时需要加上Pragma:no-cache;来进行兼容处理;
     
    5、Trailer:用于实现说明在报文主体后记录了哪些首部字段,可应用于HTTP/1.1版本分块传输编码时;
     
    6、Transfer-Encoding:规定了传输报文主体时采用的编码方式;HTTP/1.1的传输编码方式仅对分块传输编码有效;
     
    7、Upgrade:用于检测HTTP协议及其他协议是否可使用更高的版本进行通信,其参数值可以用来指定一个完全不同的通信协议;
        Upgrade首部字段产生作用的Upgrade对象仅限于客户端和邻接服务器之间,so使用首部字段Upgrade时,还需要额外制定Connertion:Upgrade;
     
    8、Via:追踪客户端与服务器直接的请求和响应报文的传输路径。报文经过代理或网关时,就会在Via中附加该服务器的信息,然后再进行转发;       经常会和TRACE方法一起使用;
     
    9、Warning:告知用户一些与缓存相关的问题的警告;
        格式: Warning  [警告码]  [警告的主机:端口号]  ”[警告内容]“  ([日期时间])
        110
        111
        112
        113
        199
        214
        299
  • 相关阅读:
    Hard Rock
    Codeforces Round #416 (Div. 2) B. Vladik and Complicated Book
    codeforces 793B. Igor and his way to work
    codeforces 1B Spreadsheets
    HDU 1069 Monkey and Banana
    codeforces 2B The least round way
    【机器学习】 通俗说拟合
    python-八皇后问题
    python-核心知识思维导图
    python-@property 属性
  • 原文地址:https://www.cnblogs.com/milo-wjh/p/6752905.html
Copyright © 2011-2022 走看看