第一章 http概述

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

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:
<method> <reuqest-URL> <version>
<headers>
<entity-body>
respose:
<version> <status> <reason-phase>
<headers>
<entity-body>

####### 3.2.2 起始行

  • 请求行:请求报文起始行:说明要做什么,响应报文说明:发生了什么
  • 响应行: http 版本,状态码, 状态文本描述
  • 状态码:



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

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

第四章 连接管理

  • 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不同

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

第十二章 认证

  • http质询与响应

服务器收到http请求时,响应一个“认证质询”要求用户提供保密信息说明身份,

再次发起请求时,要求附上保密证书(用户名和密码),证书不匹配则再次质询客户端,并产生错误信息

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

第十四章 http安全

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

第十七章 内容协商

  • 服务器驱动协商:http服务器根据accept首部集自动评估发送的响应类型
  • Apache web服务器内容协商根据type-map类型映射文件,查找变体和先关内容协商首部集

    MultiViews指令自动为目录创建type-map文件
  • 透明协商:代理了解客户需求,代替客户向服务器请求相应最佳匹配变体类型

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

  • 转码:服务器不能满足客户端请求时,将已存在文档转化为用户可用文档
  1. 格式转换
  2. 信息综合
  3. 内容注入
  • 即时转换比静态预生成更加容易实现

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



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

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

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

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

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

  • IP MAC转发

  • IP地址转发

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

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

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

HTTP 权威指南的更多相关文章

  1. JavaScript权威指南 - 函数

    函数本身就是一段JavaScript代码,定义一次但可能被调用任意次.如果函数挂载在一个对象上,作为对象的一个属性,通常这种函数被称作对象的方法.用于初始化一个新创建的对象的函数被称作构造函数. 相对 ...

  2. JavaScript权威指南 - 对象

    JavaScript对象可以看作是属性的无序集合,每个属性就是一个键值对,可增可删. JavaScript中的所有事物都是对象:字符串.数字.数组.日期,等等. JavaScript对象除了可以保持自 ...

  3. JavaScript权威指南 - 数组

    JavaScript数组是一种特殊类型的对象. JavaScript数组元素可以为任意类型,最大容纳232-1个元素. JavaScript数组是动态的,有新元素添加时,自动更新length属性. J ...

  4. 《Ansible权威指南》笔记(3)——Ad-Hoc命令集,常用模块

    五.Ad-Hoc命令集1.Ad-Hoc命令集通过/usr/bin/ansible命令实现:ansible <host-pattern> [options]    -v,--verbose  ...

  5. 《Ansible权威指南》笔记(1)——安装,ssh密钥登陆,命令

    2016-12-23 读这本<Ansible权威指南>学习ansible,根据本书内容和网上的各种文档,以及经过自己测试,写出以下笔记.另,这本书内容很好,但印刷错误比较多,作者说第二版会 ...

  6. 读《Android编程权威指南》

    因为去年双十二购买了一折的<Android 编程权威指南(第一版)>,在第二版出来后图灵社区给我推送了第二版的优惠码,激动之余就立马下单购买电子书,不得不说Big Nerd Ranch G ...

  7. maven权威指南学习笔记(五)—— POM

    1. 简介 Archetype插件通过 pom.xml 文件创建了一个项目.这就是项目对象模型 (POM),一个项目的声明性描述. 当Maven运行一个目标的时候,每个目标都会访问定 义在项目POM里 ...

  8. maven权威指南学习笔记(一)——简介

    maven是什么?有什么用? Maven是一个项目管理工具,它包含了     一个项目对象模型 (Project Object Model),     一组标准集合,     一个项目生命周期(Pro ...

  9. 《javascript权威指南》读书笔记——第二篇

    <javascript权威指南>读书笔记——第二篇 金刚 javascript js javascript权威指南 今天是今年的196天,分享今天的读书笔记. 第2章 词法结构 2.1 字 ...

  10. 《javascript权威指南》读书笔记——第一篇

    <javascript权威指南>读书笔记——第一篇 金刚 javascript js javascript权威指南 由于最近想系统学习下javascript,所以开始在kindle上看这本 ...

随机推荐

  1. oracle、mysql、sql server等;流行数据库的链接驱动配置

    系统的写博客的时间不多,但是还想一直写来坚持,就没事写写积累下来的知识点吧 #ORACLE #jdbc.driver=oracle.jdbc.driver.OracleDriver#jdbc.url= ...

  2. JavaScript基础--小案例:在网页指定位置弹出错误信息(十二)

    案例分析:点击按钮后,在网页上指定区域,提示错误信息!5秒后,错误信息提示自动消失! <script languag="javascript" type="text ...

  3. 关于HTTP的几种

    301.404.200.304等HTTP状态,代表什么意思? 如果某项请求发送到您的服务器要求显示您网站上的某个网页(例如,用户通过浏览器访问您的网页或 Googlebot 抓取网页时),服务器将会返 ...

  4. plsql developer 导出导入存储过程和函数

    说明:需要把建表脚本及表数据分开导出,操作很简单.一.导出表及存储过程等对象:1. 登录PL-SQL Developer2. 选择只显示本用户的对象,如下图:3. 选择菜单“Tools——〉Expor ...

  5. 闭包的理解-from my own opinion

    闭包,说起来那么难,其实理解了作用域,那么理解闭包就容易多了. 全局环境,局部环境,这两个概念很好理解了.那么要深入理解下函数的局部环境. 函数的局部环境,也就是说在一个函数内定义的变量,这个变量只能 ...

  6. tornado 协程的实现原理个人理解;

    tornado实现协程的原理主要是利用了(1)python里面的generator (2)future类和ioloop相互配合,两者之间的相互配合是通过gen.coroutine装饰器来实现的: 具体 ...

  7. Linux Centos7下安装Python

    1.查看是否已经安装Python Centos7默认安装了python2.7.5 因为一些命令要用它比如yum 它使用的是python2.7.5. 使用python -V命令查看一下是否安装Pytho ...

  8. 北京网赛I题 hiho1391 (树状数组、区间覆盖最大值问题)

    题目链接:http://hihocoder.com/problemset/problem/1391 题意:A国和B国向对方分别投射N枚和M枚导弹(发射时间,飞行时间,伤害值),同时两国各自都有防御系统 ...

  9. 1、webservice的简单使用

    1.新建一个web端项目 2.点击添加项,选择web服务 3.在已经建好的项目中写一个方法 4.发布(发布方法选文件系统,web需要管理员权限) 生成文件夹: 5.配置IIS(略) 6.调用webse ...

  10. Oracle创建、删除表空间、用户

    1.创建临时表空间 create temporary tablespace linshi tempfile 'e:\linshi.dbf' size 50m autoextend on next 50 ...