HTTP 权威指南
第一章 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文件 - 透明协商:代理了解客户需求,代替客户向服务器请求相应最佳匹配变体类型
不同变体代表文件类型不一样,必须同时缓存变体和器请求首部、服务器响应首部,代理选择最合适变体方会给用户
- 转码:服务器不能满足客户端请求时,将已存在文档转化为用户可用文档
- 格式转换
- 信息综合
- 内容注入
- 即时转换比静态预生成更加容易实现
第二十章 重定向与负载均衡
- http重定向:短的重定向白问发回给客户端,或者找到负载最想内容服务器做负载均衡,重定向服务器回到用户端IP地址
增加用户时延,原始服务器处理重定向流量,重定向服务器瘫痪导致站点瘫痪
- DNS 重定向:DNS解析返回的ip地址是多个服务器地址的轮转或者负载最小选择或者跳过故障服务器(故障屏蔽)
DNS缓存失效,同一个主机的多个服务被分支到多个服务器,每次解析得到的DNS地址均不一样
任播寻址: 多个分离服务器拥有相同IP地址,通过主干路由器的最毒路径路由功能将客户请求发送给最近服务器
IP MAC转发
IP地址转发
用户选择配置从代理服务器上获取内容
代理崩溃时,系统无法联系原始服务器
- 记录内容:http方法,http版本,请求资源url,响应状态码,请求与响应报文尺寸,事务开始时间戳,referer首部,user-agent 首部值
- 日志格式
HTTP 权威指南的更多相关文章
- JavaScript权威指南 - 函数
函数本身就是一段JavaScript代码,定义一次但可能被调用任意次.如果函数挂载在一个对象上,作为对象的一个属性,通常这种函数被称作对象的方法.用于初始化一个新创建的对象的函数被称作构造函数. 相对 ...
- JavaScript权威指南 - 对象
JavaScript对象可以看作是属性的无序集合,每个属性就是一个键值对,可增可删. JavaScript中的所有事物都是对象:字符串.数字.数组.日期,等等. JavaScript对象除了可以保持自 ...
- JavaScript权威指南 - 数组
JavaScript数组是一种特殊类型的对象. JavaScript数组元素可以为任意类型,最大容纳232-1个元素. JavaScript数组是动态的,有新元素添加时,自动更新length属性. J ...
- 《Ansible权威指南》笔记(3)——Ad-Hoc命令集,常用模块
五.Ad-Hoc命令集1.Ad-Hoc命令集通过/usr/bin/ansible命令实现:ansible <host-pattern> [options] -v,--verbose ...
- 《Ansible权威指南》笔记(1)——安装,ssh密钥登陆,命令
2016-12-23 读这本<Ansible权威指南>学习ansible,根据本书内容和网上的各种文档,以及经过自己测试,写出以下笔记.另,这本书内容很好,但印刷错误比较多,作者说第二版会 ...
- 读《Android编程权威指南》
因为去年双十二购买了一折的<Android 编程权威指南(第一版)>,在第二版出来后图灵社区给我推送了第二版的优惠码,激动之余就立马下单购买电子书,不得不说Big Nerd Ranch G ...
- maven权威指南学习笔记(五)—— POM
1. 简介 Archetype插件通过 pom.xml 文件创建了一个项目.这就是项目对象模型 (POM),一个项目的声明性描述. 当Maven运行一个目标的时候,每个目标都会访问定 义在项目POM里 ...
- maven权威指南学习笔记(一)——简介
maven是什么?有什么用? Maven是一个项目管理工具,它包含了 一个项目对象模型 (Project Object Model), 一组标准集合, 一个项目生命周期(Pro ...
- 《javascript权威指南》读书笔记——第二篇
<javascript权威指南>读书笔记——第二篇 金刚 javascript js javascript权威指南 今天是今年的196天,分享今天的读书笔记. 第2章 词法结构 2.1 字 ...
- 《javascript权威指南》读书笔记——第一篇
<javascript权威指南>读书笔记——第一篇 金刚 javascript js javascript权威指南 由于最近想系统学习下javascript,所以开始在kindle上看这本 ...
随机推荐
- Python的平凡之路(9)
一.Paramiko模块练习 1. Paramiko模块介绍 Paramiko是用python语言写的一个模块,遵循SSH2协议,支持以加密和认证的方式,进行远程服务器的连接 2 .SSHclie ...
- jQuery固定浮动侧边栏(jQuery fixed Sidebar)
这个功能现在应用的非常普遍,如果页面比较高,当滚动条拖到页面的下面的时候,侧边栏会出现一个固定跟随浏览器的DIV框,现思路是这样的:首先获取需要跟随的DIV距离页面顶部的距离,然后判断,当浏览器滚动的 ...
- OpenResty 安装及使用(第一篇安装)
OpenResty搭建 1.openResty介绍 OpenResty (也称为 ngx_openresty)是一个全功能的 Web 应用服务器.它打包了标准的 Nginx 核心,很多的常用的第三方模 ...
- MySQL 数据库实现远程连接
1,刚开始我使用的是Navicat for MySQL工具连接远程的mysql的数据库. 报错了.报错信息是 Error 1130: Host '192.168.1.80' is not allowe ...
- ios之AFN上传下载详细步骤(2)
五.AFN .GET\POST > GET请求 // 1.获得请求管理者 AFHTTPRequestOperationManager *mgr = [AFHTTPRequestOperation ...
- html table动态合并单元格 js方法
<script> $(document).ready(function(){ function mc(tableId, startRow, endRow, col) { var tb = ...
- iTunesConnect进行App转移
最近有客户提出需求,要把发布的OEM应用转移到自己的账户下,查询未果,在网站上搜索,死活找不到对应的选项,这两天看之前提交的版本已经审核通过了,发现很容易的就找到了转移版本的地方. 仔细思量,应该是之 ...
- vim备忘
复制指定行 5,20co$(5到20行复制到最后一行之后) 指令模式下,c的使用方式与d相同,但删除后会进入INSERT模式 删除以某一符号开头或结尾的行 :%g/^\s/d(删除以空格开头的行) : ...
- 《统计推断(Statistical Inference)》读书笔记——第4章 统计分布族
数据分析工作中最常和多维随机变量打交道,第四章介绍了多维随机变量的基本知识,其中核心概念是条件分布和条件概率.条件分布和条件概率可以抽象出条件期望的概念,在随机分析的研究中,理解随机积分和鞅理论和关键 ...
- spring技术核心概念纪要
一.背景 springframework 从最初的2.5版本发展至今,期间已经发生了非常多的修正及优化.许多新特性及模块的出现,使得整个框架体系显得越趋庞大,同时也带来了学习及理解上的困难. 本文阐述 ...