[toc]

第一章 了解web及网络基础

  1. Web是建立在HTTP协议上通信的

  2. HTTP属于TCP/IP协议族内部的一个子集

  3. 应用层:FTP、DNS、HTTP

    传输层:TCP和UDP

    网络层:数据包

    链路层:网卡光纤等硬件

  4. IP协议:IP地址可以和MAC地址进行配对,使用ARP(一种用以解析地址的协议)协议凭借MAC地址进行通信

    TCP协议:提供可靠的字节流服务,能确保数据到达对方,三次握手策略(SYN和ACK是使用TCP的标志)

  5. DNS:提供域名到IP地址之间的域名解析服务,双方都可查

  6. URL是URI的子集

  7. 如果TCP\IP用域名发请求就一定会用dns

第二章 简单的HTTP协议

  1. 用HTTP协议可以明确区分客户端与服务端

  2. 请求报文是由请求方法、请求URL、协议版本、可选的请求首部字段和内容实体构成

    响应报文基本上由协议版本、状态码、解释状态码的原因短语、可选的响应首部字段、实体主体构成

  3. HTTP是无状态协议,不保存之前发送过的请求或响应

    有了cookie再使用HTTP协议通信就可以管理状态了

  4. HTTP方法:

    GET用来请求访问已被URL识别的资源;

    POST用来传输实体的主体;

    PUT方法用来传输文件;

    HEAD用于确认URL的有效性与资源更新的时间日期等;

    DELET请求URL删除指定的资源;

    OPTIONS用来询问请求的URL指定的资源请求的方法;

    TRACE让WEB服务器端将之前的请求通信返回给客户端;

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

  5. 持久连接,HTTP/1.1默认持久连接

  6. 客户端请求报文(没有cookie)-服务器端响应报文(生成cookie信息)-客户端请求报文(自动携带cookie)

第三章 HTTP报文内的HTTP信息

  1. HTTP报文大致分为报文首部和报文主体
  2. 编码提升传输效率:压缩传输的内容编码、分块传输编码
  3. MIME多用途因特网邮件扩展机制
  4. 获取部分内容的范围请求,range字段指定资源byte范围
  5. 内容协商技术:服务器驱动协商、客户端驱动协商、透明协商

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

  1. 类别 原因短语
    1XX 信息性状态码 接收的请求正在处理
    2XX 成功状态码 请求正常处理完毕
    3XX 重定向状态码 需要进行附加操作以完成请求
    4XX 客户端错误状态码 服务器无法处理请求
    5XX 服务器错误状态码 服务器处理请求出错
  2. 200 OK:表示从客户端发来的请求在服务器端被正常的处理了

    204 NO CONTENT:请求成功处理,没有资源可返回

    206 PATIAL CONTENT:表示客户端进行了范围请求,服务端成功执行了这部分

    301 MOVED PERMANENTLY:需要进行书签引用的变更,永久性重定向

    302 FOUND:临时性重定向,资源不是被永久移动而是临时性质

    303 SEE OTHER:与302大致相同,但303明确表示使用GET方法访问

    304 NOT MODIFIED:找到资源,未符合条件请求,返回时不包含任何相应的主体部分

    307 TEMPORARY REDIRECT:临时重定向,与302大致相同

    400 BAD REQUEST:请求报文中存在语法错误

    401 UNAUTHORIZED:请求需要有通过HTTP认证的认证信息

    403 FORBIDDEN:对请求资源的访问被服务器拒绝

    404 NOT FOUND:服务器上无法找到请求资源

    500 INTERNAL SERVER ERROR:服务器端在执行请求时发生错误

    503 SERVICE UNAVAILABLE:服务器暂时处于超负载或停机维护,无法处理请求

  3. 状态码和状态不一致

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

  1. 在相同的IP地址下,由于虚拟主机可以寄存多个不同主机名和域名的web网站,因此在发送HTTP请求时,必须在HOST首部内完整指定主机名或域名的URL
  2. 代理是一种有转发功能的应用程序,网关是转发其他服务器通信数据的服务器,隧道是在两者之间进行中转并保持双方通信连接的应用程序
  3. 缓存代理、透明代理
  4. 网关可以由HTTP请求转化为其他协议通信
  5. 隧道的目的是确保客户端与服务端安全通信,隧道不会解析HTTP请求

第六章 HTTP首部

  1. HTTP首部字段将定义成缓存代理和非缓存代理行为,分成两种类型:端到端首部和逐跳首部

  2. cache-control字段能操作缓存的工作机制

  3. 表示是否能缓存的指令:

    public指令。明确表示其他用户也可以利用缓存

    private指令。响应只以特定用户作为对象

    no-cache指令。客户端不会接收缓存过的指令,目的是为了防止从缓存中返回过期的资源

  4. 控制可执行缓存的对象的指令:

    no-store指令。规定缓存不能在本地存储请求或响应的任一部分

  5. 指定缓存期限和认证的指令:

    s-maxage指令。与max-age相同,但但只适用于供多位用户使用的公共缓存服务器

    max-age指令。缓存服务器不对资源有效性再做确认,数值代表资源保存为缓存的最长时间

    min-fresh指令。

    max-stale指令。可指示缓存资源,即使过期也接收

  6. connection字段的作用:控制不再转发给代理的首部字段,管理持久连接

  7. Date表明创建HTTP报文的日期和时间

  8. q是权重值,取值1~0

  9. host会告诉服务器请求资源所处的互联网主机名和端口号

  10. referer字段会告知服务器请求的原始资源的URL

  11. user-agent字段会将创建请求的浏览器和用户代理名称等信息传达给服务器

  12. age字段告知客户端源服务器在多久前创建了响应,代理创建响应时必须加上age

  13. etag字段可将资源以字符串的形式做唯一性标识

  14. location可以将响应接收方引导至某个与请求URL位置不同的资源

  15. 实体首部allow字段用于通知客户端能够支持指定资源的所有HTTP方法

  16. 首部字段名 说明 首部类型
    Set-Cookie 开始状态管理所使用的Cookie信息 响应首部字段
    Cookie 服务器接收到的Cookie信息 请求首部字段
  17. 一旦Cookie从服务器端发送至客户端,服务器端就不存在可以显式删除Cookie的方法,可以通过覆盖已过期的Cookie实现对客户端Cookie的实质性删除操作

  18. HttpOnly属性可以防止XSS

第七章 确保WEB安全的HTTPS

  1. HTTP的不足:

    • 通信使用明文(不加密),内容可能会被窃听
    • 不验证通信方身份,有可能遭遇伪装
    • 无法证明报文完整性,有可能已遭篡改
  2. 通信加密:SSL(安全套接层)和TLS(安全传输层协议),HTTPS=HTTP+SSL

  3. 内容加密

  4. 通过SSL使用证书

  5. 中间人攻击(MITM):请求或响应在传输途中遭攻击者拦截并篡改内容的攻击

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

    HTTPS其实就是身披SSL协议外壳的HTTP

  7. 共享密钥加密-公开密钥加密

  8. HTTPS采用混合加密机制:在交换密钥环节使用共享密钥加密,在建立通信交换报文阶段使用共享密钥加密

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

  1. BASIC认证(基本认证):采用Base64编码,无法实现认证注销操作
  2. DIGEST认证(摘要认证):接收质询码,返回响应码,nonce字段,提供防止密码被窃听的保护机制,不存在防止用户伪装的保护机制
  3. SSL客户端认证:客户端证书,双因素认证
  4. 使用Cookie来管理Session(会话)

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

  1. Ajax:利用JavaScript和DOM达到局部WEB页面替换加载的异步通信手段
  2. Comet:通过延迟应答,模拟实现服务器端向客户端推送的功能
  3. SPDY:没有完全改写HTTP协议,而是在TCP/IP应用层与传输层之间通过新加会话层的形式运作,规定通信中使用SSL
  4. 使用SPDY后HTTP新增功能:多路复用流,赋予请求优先级,压缩HTTP首部,推送功能,服务器提示功能
  5. WebSocket:建立联系后双方都可以直接向对方发送报文

第十章 构建Web内容的技术

第十一章 Web的攻击技术