【图解HTTP】读书笔记

书名

图解HTTP

书摘

第一章 了解Web及网络基础

  1. 使用HTTP协议访问Web:

    1. HTTP:超文本传输协议

  2. HTTP的诞生:

    1. www构成技术:HTML、HTTP、URL

  3. 网络基础TCP/IP:

    1. TCP/IP分层:4层,应用、传输、网络、数据链路

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

      1. 如:FTP(文件传输协议)、DNS(域名服务)、HTTP

    3. 传输层:提供处理网络连接中2台计算机之间的数据传输:TCP、UDP

    4. 网络层:处理网络中流动的数据包,包是传输的最小单元。选择传输路径。IP

    5. 链路层:处理连接网络的硬件部分。包括操作系统,硬件的设备驱动,网卡。

  4. 与HTTP关系密切的协议:IP、TCP、和DNS

    1. 传输层IP协议:

      1. IP协议作用:把各种数据包传送给对方,IP地址(节点被分配的地址)+MAC地址(网卡所属的固定地址)mac不可更改。

      2. 通信方式:使用ARP协议凭借MAC地址进行通信。递归进行各个路由的mac访问

      3. ARP:地址解析协议,根据IP反查MAC地址。

    2. 确保可靠性的TCP协议:

      1. 服务:提供可靠的字节流服务:

      2. 字节流服务:为了方便传输将大数据切割为报文段以包为单位管理。

      3. 可靠:三次握手

  5. 负责域名的DNS服务:

    1. 服务:域名到IP的解析服务

  6. URI和URL

    1. URI :统一资源标识符:

      1. 资源:文件图形等。

      2. 标识:可标识的对象,有某个协议方案表示的定位标识符。协议方案是指访问资源所使用的协议类型名称。

      3. 协议方案:ftp、file、telnet

    2. URL:统一资源定位符,是URI的子集

       

    3. 区别:

      1. uri:代表资源的名称

      2. url:代表资源的地址

      3. http://files.hp.com 和ftp://files.hp.com.可能得到完全不同的内容

第二章 简单的HTTP协议:

  1. 通过请求和响应的交换达成通信

    1. 请求报文: 

    2. 响应报文;

       

       

  2. HTTP是无状态协议:

    1. 说明:不对请求和响应之间的通信状态进行保存和持久化。

    2. 目的:为了更快的处理大量事务,确保协议的可伸缩性,提高性能

    3. Cookie:为了解决无状态问题。

  3. 告知服务器意图的HTTP方法:

    1. GET:获取资源

    2. POST:传输实体主体

    3. PUT:传输文件,该方法呢不带验证机制,任何人都可以上传存在安全问题,可配合web程序或架构设计采用Rest使用。

    4. HEAD:获取报文首部:跟get一样。但是不返回保温主体。用于确认URI的有效性以及资源更新的日期时间。

    5. DELETE:删除文件,不安全

    6. OPTIONS:询问支持的方法:查询针对请求URI制定能够的资源支持的方法

    7. TRACE:追踪路径:用来确认连接过程中发生的一些列操作。

    8. CONNECT:要求在与代理服务器通信时建立隧道。

  4. 持久连接:

    1. 为了解决每次请求需要建立TCP链接。

    2. HTTP keep-alive: 默认开启,

    3. 管线化:

      1. 解决:串行请求的性能问题

      2. 多个请求并行

  5. 使用Cookie的状态管理:

    1. 运行方式:通过在请求和响应报文中写入Cookie信息来控制客户端状态

    2. 设置:服务器的响应表文有Set-Cookie首部字段信息。通知客户端保存。

    3. 报文:

       

第三章 HTTP报文内的HTTP信息

  1. HTTP报文:

    1. 组成:报文首部+ 空行(CR+LF)+报问主体(非必有)

       

  2. 编码提升传输速率:

    1. 分割发送的分块传输编码:

    2. 常见编码编码:gzip、compress、deflate、identity

  3. 发送多种数据的多补发对象集合: 

    1. 需要在首部加Content-type

      1. multipart/form-data : web表单

      2. multipart/byteranges:

  4. 获取部分内容的范围请求:

    1. 首部字段:Range指定byte范围:5001-10000

      1. Range:bytes=5001-10000

  5. 内容协商返回最合适的内容:

    1. 问题:同一个uri不同的浏览器语言,返回的页面不通。

    2. 判断标准:首部字段

      1. Accept

      2. Accept-Charset

      3. Accept-Encoding

      4. Accept-Lauguage

      5. Content-Lauguage

    3. 内容协商技术的3中类型:

      1. 服务器驱动协商:首部参数参考

      2. 客户端驱动协商:浏览器显示的可选项列表。浏览器类型,os类型等。

      3. 透明协商:各自协商:

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

  1. 2XX

    1. 204:请求成功,没数据

    2. 206:获取部分数据,Range

  2. 3XX: 

    1. 301:永久重定向:

    2. 302:临时重定向

    3. 303:资源的uri已经更新,用新的,与302功能相同,

      1. 比如;post访问时,希望用get重定向访问。

      2. 当301,302,303返回时,浏览器都会把post改成get

    4. 304:资源在,但是为满足访问条件。

      1. 附加条件:get请求报文中包含:if-Match,if-Modified等。

    5. 307:Temporart Redirect:临时重定向,但是不会从post改成get

  3. 4XX:

    1. 400:bad request: 请求体错误

    2. 401:认证失败

    3. 403: 拒绝访问,

    4. 404:没有资源

  4. 5xx:

    1. 500:服务端bug

    2. 503:负载高

第五章 与HTTP协作的WEB服务器

  1. 单台虚拟主机实现多个域名

    1. 2个域名的dns解析后ip一样,需要根据完整的uri进行区分

  2. 通信数据转发程序:

    1. 代理:

      1. 介绍:不改变请求URI,直接发给目标服务器,每经过一个代理服务器,头部会写入Via信息 加上代理服务器的名称。

      2. 作用:利用缓存技术,极少网络带宽的流量,组织内部针对特定网站的访问控制。

      3. 分类:

        1. 是否使用缓存:缓存代理:

        2. 是否修改报文:非透明代理:加工报文。

    2. 网关:

      1. 作用:可以由http请求转化为其他通信协议,与代理类似

      2. 优点:提高通信的安全性,可以在网关进行数据库连接,进行逻辑拦截。

    3. 隧道:

      1. 目的:确保客户端能与服务器进行安全通信。进行数据中转。生命周期与链接相同。

  3. 保存资源的缓存

    1. 缓存服务器:代理服务器一种

    2. 浏览器缓存

第六章 HTTP报文首部

  1. 请求报文: 方法、uri、http版本、首部字段

  2. 响应报文:状态码、短语、首部字段

  3. HTTP首部字段:

    1. 作用传递额外重要信息,给服务器和客户端提供报文主体大小,语言,认证信息等

    2. Content-Type:text/html

    3. 4中首部字段类型:

      1. 通用: 

        1. Cache-Control:控制缓存

        2. Connection:逐跳首部、连接的管理

        3. Data、Via、Warning

        4. Pragma:报问指令

      2. 请求:

        1. Accept:用户代理可处理的媒体类型

        2. Accept-Charset:优先的字符集:

          1. iso-8859-5,unicode-1-1;q=1:q优先级

        3. Accept-Encoding:优先的内容编码:

          1. gzip、deflate

        4. Accept-lauguage:语言

        5. From:用户的电子邮箱

        6. Host:请求资源所在的服务器,

        7. User-Agent: http客户端程序的信息

        8. Referer:队请求中URI的原始获取方

        9. Range: 字节范围

      3. 响应:

        1. Age:推算资源创建经过时间

        2. Accept-Ranges: 是否接受字节范围请求

        3. Etag:资源的匹配信息

        4. Location:令客户端重定向指定URI

        5. Proxy-Auth:代理服务器对客户端的认证信息

        6. Server:HTTP服务器的安装信息

        7. Vary:代理服务器缓存的管理信息

        8. www-Auth:服务器对客户端认证

      4. 实体:

        1. Allow:可支持的http方法

        2. Expires:实体主体过期时间

        3. Last-Modified:资源最后修改时间

        4. Connect-Encoding、Lauthage、Length、Location、MD5、Range、Type:实体主体的编码、语言、大小、uri、报文摘要、位置范围、媒体类型

      5. 非HTTP/1.1首部字段:

        1. Cookie、Set-Cookie、Content-Disposition、

        2. DNT:1. 拒绝个人信息被收集、拒绝被精准广告追踪。

        3. X-XSS-Protection:针对跨站脚本攻击的对策,防护开关。

        4. X-Frame-Options:防止点击劫持攻击

        5. P3P

  4. HTTP/1.1通用首部字段:

    1. Cache-Control:

    2. Connection:

      1. 控制不在转发给代理的首部字段

      2. 管理持久连接,keep-alive、close

    3. Pragma:no-cache

  5. 请求首部字段:

第七章 确保Web安全的HTTPS

  1. HTTP的缺点:

    1. 通信使用明文不加密可被窃听:

      1. SSL(安全套接层) 或 TLS (安全层传输协议)

      2. 内容的加密:报文主体会被加密

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

      1. 问题:请求和响应方无法确定,没办法权限管理

      2. 解决: 查明对方证书

        1. 证书:第三方机构颁发,证明服务器和和客户端实际存在。

    3. 无法验证报文的完整性,可能篡改

  2. HTTP+加密+认证+完整性保护 = HTTPS

    1. 原理:

      1. SSL + HTTP

    2. 与http 分成的区别:

      1. http:应用(http)、TCP、 IP

      2. Https: 应用(http)、SSL、TCP、 IP

    3. SSL:位于应用层下,可与SMTP、Telnet等协议配合使用。

    4. SSL加密方法:

      1. 公开秘钥加密:

        1. 一把公钥、一把私钥,使用对方公钥加密 ,对方通过自己私钥解密。  性能低

        2. 问题:无法证明公开秘钥本身就是真正的秘钥,可能被替换。

          1. 解决方式:数字证书

          2. 业务流程:

            1. 服务器运营人员向数字证书机构提出公开秘钥申请,数字证书确认身份后,会对已申请的秘钥做数字签名,然后分配这个签名的公钥,将公开密钥放入公钥证书后绑定。

            2. 服务器会将这个公钥证书发给客户端。 

            3. 接到证书的客户端可使用机构的公开密钥对 服务端的证书进行验证,通过后,就确定了服务器的秘钥是对的,认证服务器的公开密钥是正式有效的数字证书认证机构。

          3. 问题:如何安全获取到机构的秘钥,浏览器会在安装的时候内置常用认证机关的公开密钥

      2. 对称秘钥加密: 加密解密用同一个秘钥

        1. 问题:秘钥如何安全的送到对方。

      3. HTTP采用混合加密机制:

        1. 在交换秘钥阶段通过公开密钥加密确保安全把公钥给对方。之后用对称加密。

    5. EV SSL 证书:

      1. 证书2个作用:

        1. 证明服务器是否规范

        2. 确认对方服务器背后运行企业是否真实存在。

      2. EV SSL证书的网站 浏览器地址是绿色。

    6. 客户端证书:

      1. 问题:证书获取以及发布无法保证。

      2. 需要用户自己安装客户端证书,需要付费

      3. 网上银行就再用。

    7. 自认证机构颁发的证书:

      1. 使用OpenSSL开源程序可以构建认证机构,自己给自己发证书

      2. 表现:浏览器访问时:

        1. 无法确认连接安全性、该网站的安全证书存在问题。

    8. HTTPS的安全通信机制

      1. SSL(9次握手) + HTTP (3次握手)

      2. 步骤:

        1. 客户端发送报文开始SSL通信,报文中包含SSL版本信息以及加密组件

        2. 对客户端进行应答,报文包含SSL信息以及机密组件(从客户端的组件中筛选),

        3. 服务器发送Cerificate报文,包含公开密钥证书

        4. 服务器发送 确认报文,最初节点SSL握手部分结束。

        5. 客户端发送 :报文中包含A算法随机密码串,已经用公钥加密。

        6. 客户端发送:提示服务器之后的报文采用A算法密码串加密

        7. 客户端发送:Finished报文,包含连接至今全部报文的整体校验值。握手是否成功以服务器能否解密成功为依据

        8. 服务器发送同样的提示秘钥加密的报文

        9. 服务器发送同样的Finished报文

        10. Finished报文交换完毕后,SSL建立成功。发送http请求

        11. 应用层协议通信,发送http响应

        12. 客户端断开连接,之后发送TCP fin报文进行关闭。

    9. https使用:SSL+TSL

      1. SSL很慢:2-100倍

        1. 9个包的通信慢,消耗大量CPU以及内存

        2. 加密处理:消耗双方的CPU

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

  1. 何为认证:

    1. 认证方式

      1. 密码

      2. 动态令牌

      3. 数字证书

      4. 生物认证

      5. IC卡等。

    2. HTTP使用的认证方式

      1. BASIC 基本认证

        1. 当请求资源需要basic认证的时候返回401

        2. 接收到401,将用户id以及密码经过base64编码后发送给客户端

        3. 服务器接收到进行验证,通过返回uri资源

        4. 如果进行窃听会被盗。

      2. DIGEST 摘要认证

        1. 返回401+随机数

        2. 返回随机数+用户信息。

        3. 返回uri

        4. 比basic安全性高

      3. SSL 客户端认证:

        1. 可避免密码被盗的情况。

        2. 过程:

          1. 服务器发送报文请求提供证书

          2. 通过Client Certificate报文发送给服务器,

          3. 服务器验证过 获取证书中公开密钥,开始https

        3. SSL客户端采用双因素认证

          1. 表单+证书

        4. SSl客户端认证必要费用

      4. FormBase 基于表单认证

        1. 最普遍,

  2. Session管理及Cookie应用

    1. 服务器返回sessionid在set-cookie设置 cookie、客户端每次发送加上sessionid

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

  1. 背景:http很简单但是使用场景越来越多,无法满足。

  2. HTTP瓶颈:

    1. 如果服务器数据变更,就需要使用客户端探知更新。

    2. 瓶颈

      1. 一条连接1个请求

      2. 请求只能从客户端

      3. 请求首部未经压缩,数据多,延迟大

      4. 发送冗余首部。每次发送相同首部浪费

      5. 可任意选择数据压缩格式,非强制压缩

  3. 解决方法:

    1. ajax: 知识解决了大量数据的问题

    2. Comet通信:服务器更新,直接给客户端返回响应push 推送。

      1. 客户端的请求不立刻响应,等有更新的时候返回给客户端

    3. SPDY协议:消除瓶颈

      1. 没有替代http,在应用层 和传输层加了一层, http应用、SPDY会话、SSL表示、TCP传输

      2. 作用:控制数据的流动

        1. 多路复用流: 一个TCP链接处理多个HTTP请求

        2. 赋予请求优先级:发送多个请求,带宽有限时提高速度

        3. 压缩HTTP首部:

        4. 推送功能:支持服务器推送给客户端,直接推送不用请求

        5. 服务器提示:主动提示客户端请求所需的资源。

      3. 问题:

        1. SPDY仅仅是对一个网站ip进行的多路复用。

  4. 使用浏览器进行全双工通信的WebSocket:

    1. 目标:解决AJAX、和Comet里XMLHttpRequest附带的缺陷所引发的问题。

    2. 协议:

      1. 发起方:客户端,一旦建立连接,双方都可以通信。

      2. 推送功能:

      3. 减少通信量:只需要一次建立连接,总开销小,首部信息小,http建立后需要进行一次握手的步骤

      4. 握手请求:http 的Upgrade首部字段告诉服务器通信协议发送变更。

      5. 握手响应:返回状态码101,Switching Protocols。

  5. HTTP2.0

    1. 7项功能:

      1. 压缩:SPDY、Friendly

      2. 多路复用:Spdy

      3. TLS义务化:Speed+Mobility

      4. 协商:Speed+Mobility+Friendly

      5. 推送:Speed+Mobility

      6. 流量控制: Spdy

      7. webSocket: Speed+Mobility

  6. Web服务器管理文件的WebDAV

第十章 Web

  1. web应用

    1. CGI:通用网关接口,指Web服务器在接收到客户的发送的请求后转发给程序的一组机制,在CGI作用下,程序会对请求内容作出相应动作,比如创建HTML动态内容。

    2. CGI程序:使用CGI的程序。php、c等。

    3. java 的servlet:

      1. CGI:每次接到请求,都需要启动一次。访问大就会负载过高。

      2. servlet:运行在与web服务器相同的进程中,负载小。每个请求会创建一个servlet运行

第五章 web的攻击

  1. 单台虚拟主机实现多

随想

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值