http权威指南

第一章 http概述

1.3.1 媒体类型
- http为每种web传输的数据格式加上MIME类型数据标签(multipurpose internet mail 

MIME类型

1.4 事务
  • 一个请求 + 一个响应 构成一个事务,通过 格式化的http报文实现
    1.4.1 方法
  • GET 从服务器向客户端发送命名资源
  • PUT 将客户端数据存储到命名服务器中
  • DELETE 从服务器删除命名资源
  • POST 将客户端信息发送到一个服务器网关应用程序
  • HEAD 仅发送命名资源响应中的HTTP首部
1.4.2 状态码
- 200 ok 
- 302 redirect
- 404 notfound

###第二章 URL与资源

  • 在获取用户URL的源端处处理组件不完全字符

第三章 HTTP报文

3.1 报文流
  • 不管是请求还是响应,所有报文向下游流动
    3.2 报文组成部分
    request:



    respose:



    ####### 3.2.2 起始行
  • 请求行:请求报文起始行:说明要做什么,响应报文说明:发生了什么
  • 响应行: http 版本,状态码, 状态文本描述
  • 状态码:
    状态码
    ####### 3.3.1 方法
  • 安全方法: GET HEAD 不产生动作即不会再拂去其上产生什么结果
  • HEAD:不获取资源情况下查看资源情况,查看响应状态码,了解对象情况,查看首部,了解资源是否被修改
  • TRACE:行程最后一站服务器弹回一条响应,携带收到的原始请求报文,方便发送方查看原始报文是否被修改

状态码与首部:查字典http 口袋书

第四章 连接管理

http的tcp/ip连接

  • tcp 的socket 套接字通信
    tcp  socket

####### 4.2 HTTP 事务时延

  • url 地址端口映射, tcp连接的建立,端口的释放时延
  • tcp链接建立的握手机制
  • tcp慢启动拥塞控制
  • 捎带确认的tcp延迟算法
  • time_wait 时延和端口耗尽

####### 4.4 并行连接

  • 并行连接可以加快加载速度,但是不是一定可以加快加载速度
  • 多个对象同时出现在页面,让用户感觉好像加快了加载

####### 4.5 持久连接

  • 在http设备事务处理结束之后将tcp连接保持在打开状态直到客户端决定关闭
  • http/1.0 + keep—live 连接
    客户端通过包含connection:keep_live首部请求将连接保持在打开状态
    服务器允许下一条请求将连接保持在打开状态,将响应中包含相同首部
    响应中没有conncetion: keep-live首部,客户端认为服务器不支持keep—live,会在响应之后关闭连接
  • keep-alive通用首部选项
    timeout: 响应首部发送,服务器保持连接活跃的时间
    max: 响应首部发送,服务器可以保持的活跃的连接数

####### 4.6 管道化连接
管道化连接限制

####### 4.7 连接关闭

  • 客户端、服务器、代理都可以在任何时刻关闭一条TCP传输连接
  • 事务多次执行所得结果相同, 则该事物是幂等的(GET\ HEA\ PUT\DELETE\ TRACE\ OPTIONS)

第五章 http结构

  • web服务器动作内容: 建立连接,接受请求,处理请求,访问资源,构建响应,发送响应,记录事物处理过程
  • 新连接添加到web服务器列表中,并驾驶连接的数据传输准备
  • ip地址解析成主机名用于访问控制和日志记录,但是会降低web事务处理速度
  • 服务器通过ident协议找到发起连接的用户名用于日志记录
  • 报文的内部解析
    报文内部解析

第六章 代理

  • 代理连接的是使用相同协议的应用程序,网关连接的是使用不同协议的端点
  • 反向代理代替web服务器处理请求必要时向web服务器请求资源
  • 网络交换代理:通过缓存减轻节点拥塞
  • 动态父代理:
    • 负载均衡:根据父代理工作负载决定选择哪一个父代理
    • 地理位置附近的路由
    • 协议类型路由
    • 基于订购的路由,高性能付费用户
      代理
  • 没有设置科幻段使用代理时,发送部分URL
  • 设置使用客户端代理时,发送完整URL
  • 通用代理服务器应该既支持完整URL,也支持部分URL
    ####### 追踪报文
  • via首部列出把报文途径的每个节点的有关信息
  • max-forward 最大转发次数

####### 代理认证

  • 受限请求到达服务器,服务器返回一个要求范文证书的的407代码里认证请求状态码
  • 用户收到407 响应,尝试从本地数据库寻找证书
  • 获得证书,客户端重新发送请求,在proxy-authorization首部字段提供所要求的的证书
  • 证书有效,代理将院士请求沿着传输链路向下传送,否则发送另外一条407 应答

第七章 缓存

  • 缓存:减少冗余数据传输,缓解网络瓶颈,降低对原始服务器的要求,降低时延
  • http再验证(revalidation):缓存与服务器一致性验证
    • 再验证命中:响应http304not modified
    • 再验证未命中:响应普通带内容的http200ok(更新缓存)
    • 对象被删除: 响应404not found 缓存删除相应副本
  • 字节命中率:缓存提供的字节在传输的所有字节中所占的比例
  • 提高文档命中率,阻止通往外部的web事务,有理由降低延迟, 提高字节命中率,阻止字节传向因特网,节省带宽
  • 缓存响应与服务器响应的区分: 缓存响应的date标签早于当前时间,服务器响应的data标签晚于当前时间
    缓存处理步骤

缓存副本新鲜度

文档过期
  • cache-control 首部:max-age 相对第一次生成时间的最大合法生存时间(version 1.1)
  • Expires 首部: 过期时间 (version 1.0)

    服务器再验证: 缓存文档过期,向服务器请求验证文档是否改变,改变则更新文档,为改变则跟新缓存文档首部(date)

  • 条件再验证(条件GET)
    • if-modified-since: 如果指定日期之后修改,执行GET请求,更新缓存
    • if-none-match :文档修改时更新版本标签,实体标签修改后条件首部可执行,实现缓存更新
  • no-store :禁止缓存对响应复制
  • no-cache :缓存本地,新鲜度验证之前不能提供给客户端

第八章 网关隧道及中继

  • 协议网关
    协议网关
  • 服务器协议网关、服务器端安全网关、客户端安全网关、应用程序服务器
  • web 隧道
    • web隧道用http连接传送非http流量,可以穿过只允许web流量的防火墙
      隧道

第九章 爬虫

  • 避免环路冗余,url规则化处理
  • 支持host首部以区别虚拟主机上的不同服务器
  • 条件请求(GET)减少页面请求冗余重复
  • 会话cookie:记录用户访问站点时的设置和偏好,用户推出浏览器时删除
  • 持久cookie: 硬盘存储,过期时间与临时cookie不同

    cookie:服务器为了跟踪用户而产生的id识别码,服务器根据id累计访问者的数据库信息

第十二章 认证

  • http质询与响应

    服务器收到http请求时,响应一个“认证质询”要求用户提供保密信息说明身份,
    再次发起请求时,要求附上保密证书(用户名和密码),证书不匹配则再次质询客户端,并产生错误信息

  • 摘要认证: 只发送密码摘要,不再明文发送密码本身
  • 摘要认证中使用随机数随机化摘要,随机数由www-authenticate 质询从服务器发送给客户端
    摘要握手机制

第十四章 http安全

https
  • 增加传输安全层,请求和响应全部加密处理
    ssl握手

第十七章 内容协商

内容协商

  • 服务器驱动协商:http服务器根据accept首部集自动评估发送的响应类型
  • Apache web服务器内容协商根据type-map类型映射文件,查找变体和先关内容协商首部集
    MultiViews指令自动为目录创建type-map文件
  • 透明协商:代理了解客户需求,代替客户向服务器请求相应最佳匹配变体类型

    不同变体代表文件类型不一样,必须同时缓存变体和器请求首部、服务器响应首部,代理选择最合适变体方会给用户

  • 转码:服务器不能满足客户端请求时,将已存在文档转化为用户可用文档

  1. 格式转换
  2. 信息综合
  3. 内容注入
  • 即时转换比静态预生成更加容易实现

第二十章 重定向与负载均衡

通用重定向方法
代理与缓存重定向

  • http重定向:短的重定向白问发回给客户端,或者找到负载最想内容服务器做负载均衡,重定向服务器回到用户端IP地址

    增加用户时延,原始服务器处理重定向流量,重定向服务器瘫痪导致站点瘫痪

  • DNS 重定向:DNS解析返回的ip地址是多个服务器地址的轮转或者负载最小选择或者跳过故障服务器(故障屏蔽)

    DNS缓存失效,同一个主机的多个服务被分支到多个服务器,每次解析得到的DNS地址均不一样

  • 任播寻址: 多个分离服务器拥有相同IP地址,通过主干路由器的最毒路径路由功能将客户请求发送给最近服务器

  • IP MAC转发
    mac转发

  • IP地址转发
    IP地址nat转发

  • 用户选择配置从代理服务器上获取内容

    代理崩溃时,系统无法联系原始服务器

  • 记录内容:http方法,http版本,请求资源url,响应状态码,请求与响应报文尺寸,事务开始时间戳,referer首部,user-agent 首部值

  • 日志格式
    日志格式