【日本】图解服务器端网络架构 [日]宫田宽士 人民邮电出版社 曾薇薇.pdf
内容简介 · · · · · ·
本书以图配文,详细说明了服务器端网络架构的基础技术和设计要点。基础设计是服务器端网络架构最重要的一个阶段。本书就立足于基础设计的设计细分项目,详细介绍各细分项目的相关技术和设计要点。全书共分为5章,分别讲述进行物理设计、逻辑设计、安全设计和负载均衡设计、高可用性设计以及管理设计时所必需的技术和设计要点。
作者简介 · · · · · ·
作者简介:
宫田宽士
大学和研究生在读期间专攻地球环境科学。毕业后就职于某公司基础架构系统工程师部门,初来乍到即参与了一个思科设备的项目,由此决定向网络工程师的方向发展。在该项目中掌握了路由选择和交换技术,之后又通过大量的其他项目积累了丰富的经验,涉及领域包括金融、制造等多种行业,通过这些项目对网络技术有了全面的了解,包括数据安全和服务器负载均衡技术等,对网络技术的兴趣也愈发浓厚。能独立执行从设计到架构和测试的一系列网络架构业务,多年来日复一日,勤奋钻研至今。拥有CCIE和FF5CE认证。
译者简介:
曾薇薇
IBM管理顾问,从事SAP咨询实施和项目管理工作,有基础架构项目经验。海归,日语高级口译翻译,上海科技翻译学会会员。
目录 · · · · · ·
第0章 本书的用法 1
0.1 网络架构的流程 2
0.1.1 网络架构分为六个阶段 2
0.1.1.1 需求定义 2
0.1.1.2 基础设计 2
0.1.1.3 详细设计 2
0.1.1.4 架构 3
0.1.1.5 测试 3
0.1.1.6 运行 3
0.1.2 网络架构的重点是基础设计 4
0.1.2.1 物理设计 5
0.1.2.2 逻辑设计 6
0.1.2.3 安全设计与负载均衡设计 7
0.1.2.4 高可用性设计 8
0.1.2.5 管理设计 9
第1章 物理设计 11
1.1 物理层的技术 12
1.1.1 物理层里有多种规格 12
1.1.1.1 规格整理好后物理层就会水落石出 13
1.1.1.2 双绞线电缆有两大要素——类和传输距离 15
1.1.1.3 光纤光缆是用玻璃制成的 25
1.2 物理设计 31
1.2.1 服务器端有两种结构类型 31
1.2.1.1 采用串联式结构管理起来更方便 32
1.2.1.2 采用单路并联式结构更容易扩展 33
1.2.2 选用设备时应参考考查项的最大值 36
1.2.2.1 应用程序不同吞吐率也就不同 37
1.2.2.2 新增连接数和并发连接数都要考虑 38
1.2.3 选择稳定可靠的 OS版本 39
不懂就问是捷径 39
1.2.4 根据实际配置和使用目的选择线缆 40
1.2.4.1 远距离传输选择光纤光缆 40
1.2.4.2 追求宽频带和高可靠性时选择光纤 41
1.2.4.3 通过大小分类决定使用哪种双绞线电缆 42
1.2.4.4 预先决定好使用线缆的颜色 43
1.2.5 端口的物理设计出乎意料地重要 44
1.2.5.1 必须统一规划连接到哪里 44
1.2.5.2 速率和双工、Auto MDI/MDI-X 的设置也要统一规划 44
1.2.6 巧妙地配置设备 45
1.2.6.1 将核心交换机和汇聚交换机置于中央部位 45
1.2.6.2 要考虑设备中空气吸入和排出的方向 48
1.2.6.3 从两套系统获取电源 49
1.2.6.4 切莫超过最大承重 51
第2章 逻辑设计 53
2.1 数据链路层的技术 54
2.1.1 数据链路层是物理层的帮手 54
用以太网标准进行成帧处理 55
2.1.2 数据链路层的关键在于 L2交换机的运作 61
2.1.2.1 交换 MAC地址 62
2.1.2.2 通过 VLAN将广播域分隔开 67
2.1.3 ARP 将逻辑和物理关联到一起 74
2.1.3.1 ARP 通过IP地址查询MAC地址 75
2.1.3.2 抓取 ARP包,观察它的写法 81
2.1.3.3 有几个特殊的 ARP 82
2.2 网络层的技术 85
2.2.1 网络是由网络层拼接起来的 85
2.2.1.1 添加 IP报头,进行分组化处理 86
2.2.1.2 IP 地址由32位构成 91
2.2.2 将网段连接起来 99
2.2.2.1 利用 IP地址进行路由选择 100
2.2.2.2 建立路由表 104
2.2.2.3 整理路由表 114
2.2.3 转换 IP地址 118
2.2.3.1 转换 IP地址 118
2.2.3.2 私网 IP地址 122
2.2.4 自动设置 IP地址的DHCP 123
2.2.4.1 DHCP 的消息部分中包含着诸多的信息 123
2.2.4.2 DHCP 的原理非常简单 125
2.2.4.3 对 DHCP报文作中继处理 126
2.2.5 用于故障排除的 ICMP 127
2.2.5.1 ICMP 的关键在于类型和代码 127
2.2.5.2 常见的类型和代码有四种组合 128
2.2.5.3 出现问题时先尝试用 ping去排除故障 130
2.3 逻辑设计 132
2.3.1 整理出所需的 VLAN 132
2.3.1.1 实际所需的 VLAN会因为诸多因素而变化 132
2.3.1.2 规定 VLAN的ID 138
2.3.2 在考虑数量增减的基础上分配 IP地址 140
2.3.2.1 IP 地址的估算数量应高于当前所需数量 140
2.3.2.2 按顺序排列网段,使之更容易汇总 142
2.3.2.3 必须统一规定从何处开始分配 IP地址 145
2.3.3 路由选择以简为上 145
2.3.3.1 考虑在路由选择中使用哪些协议 145
2.3.3.2 考虑采用哪种路由选择方法 146
2.3.3.3 将路径汇总以减少路径数量 150
2.3.4 NAT 要按入站和出站分别考虑 152
2.3.4.1 NAT 是在系统边界进行的 152
2.3.4.2 通过入站通信转换地址 152
2.3.4.3 通过出站通信转换地址 153
第3章 数据安全设计和负载均衡设计 155
3.1.1 通过端口号划分服务器进程 156
3.1.1.1 传输层使用 TCP和UDP两种协议 157
3.1.1.2 TCP 的工作原理比较复杂 164
3.1.1.3 MTU 和MSS的差异在于对象层不同 170
3.1.2 用防火墙守卫系统 173
3.1.2.1 基于连接进行控制 174
3.1.2.2 状态检测和包过滤之间的区别 177
3.1.2.3 防火墙在不断进步 179
3.1.3 通过负载均衡器分散服务器的负荷 184
3.1.3.1 目的 NAT是服务器负载均衡技术的基础 185
3.1.3.2 通过健康检查监控服务器的状态 189
3.1.3.3 熟练掌握可选功能 200
3.2 从会话层到应用层的技术 204
3.2.1 HTTP 支撑着互联网 204
3.2.1.1 HTTP/1.0 和HTTP/1.1的TCP连接用法大相径庭 204
3.2.1.2 HTTP 因请求和响应而得以成立 206
3.2.2 用 SSL保护数据 211
3.2.2.1 防止窃听、篡改和冒充 212
3.2.2.2 通过 SSL可以给各种各样的应用程序协议加密 215
3.2.2.3 SSL 使用混合加密方式进行加密 216
3.2.2.4 消息摘要是消息的概要 219
3.2.2.5 SSL 中执行着大量的处理 222
3.2.2.6 用客户端证书对客户端进行认证 230
3.2.3 用 FTP传输文件 233
3.2.3.1 主动模式使用特定的端口 234
3.2.3.2 被动模式改变使用的端口 236
3.2.3.3 FTP 就应该当作FTP去处理 239
3.2.4 用 DNS解析名称 240
3.2.4.1 用 UDP进行名称解析 241
3.2.4.2 用 TCP进行区域传输 242
3.3 数据安全设计与负载均衡设计 246
3.3.1 数据安全设计 246
3.3.1.1 整理出真正需要的通信 246
3.3.1.2 通过多级防御提高安全系数 250
3.3.1.3 默认启动的服务应控制在最小范围内 251
3.3.2 负载均衡设计 251
3.3.2.1 要高效地均衡负载 252
3.3.2.2 启用哪些可选功能 255
第4章 高可用性设计 257
4.1 冗余技术 258
4.1.1 物理层的冗余技术 258
4.1.1.1 将多条物理链路集结成一条逻辑链路 258
4.1.1.2 将多个物理网卡集结成一个逻辑网卡 263
4.1.1.3 将多台物理设备集结成一台逻辑设备 269
4.1.1.4 当上行链路中断时,让下行链路也随之中断 278
4.1.2 数据链路层的冗余技术 279
4.1.2.1 STP 的关键在于根网桥和阻塞端口 279
4.1.2.2 STP 有三种 286
4.1.2.3 同时启用多项可选功能 289
4.1.2.4 利用 BPDU切断桥接环路 290
4.1.3 网络层的冗余技术 292
4.1.3.1 FHRP 292
4.1.3.2 利用路由协议确保通往上层设备的路径 302
4.1.4 从传输层到应用层的冗余技术 304
4.1.4.1 防火墙的冗余技术 304
4.1.4.2 负载均衡器的冗余技术 310
4.2 高可用性设计 312
4.2.1 高可用性设计 312
4.2.1.1 串联式结构 312
4.2.1.2 单路并联式结构 316
4.2.2 理清通信流 320
4.2.2.1 串联式结构 320
4.2.2.2 单路并联式结构 332
第5章 管理设计 339
5.1 管理技术 340
5.1.1 用 NTP同步时间 340
NTP 的工作原理非常简单 340
5.1.2 用 SNMP检测故障 346
5.1.2.1 通过 SNMP管理器和SNMP代理交换信息 346
5.1.2.2 熟练掌握三种运作模式 347
5.1.2.3 限制源 IP地址 351
5.1.3 用 Syslog检测故障 352
Syslog 的工作原理非常简单 352
5.1.4 传递设备信息 355
5.1.4.1 CDP 355
5.1.4.2 LLDP 356
5.1.4.3 注意 CDP和LLDP的数据安全问题 357
5.2 管理设计 358
5.2.1 确定主机名 358
5.2.2 通过标签管理连接 358
5.2.2.1 线缆标签 358
5.2.2.2 本体标签 359
5.2.3 设计密码 359
5.2.4 管理设置信息 360
5.2.4.1 在备份设计中应定义时机、方式和保存地点 360
5.2.4.2 发生故障时执行恢复处理 361
【日本】图解CIO工作指南(第4版)[日] 野村综合研究所系统咨询事业本部人民邮电出版社 周自恒 无广告版.pdf
内容简介 · · · · · ·
《图解CIO工作指南(第4版)》是一本实务手册,系统介绍了企业运用IT手段提高竞争力所必需的管理方法和实践经验,主要面向CEO或CIO等企业管理人士。
《图解CIO工作指南(第4版)》分为三个部分。第1部分的主题为IT管理,着重阐述运用IT技术提高企业竞争力所必需的所有管理业务,具体包括制定作为企业方针的IT战略,以及统筹执行该战略时与IT相关的人力、物力、财力、风险等要素在内的一系列管理业务。本书介绍了很多实例以及在实务中的注意要点,旨在填补方法论与实践之间的空白。
第2部分的主题为IT架构,介绍了IT架构的思路、设计及管理的方法论。第3部分是第1、2部分的实践篇,针对全球化、 强化竞争力和业务创新三个经营课题,在前两部分的基础上,配合具体案例,解说如何运用IT解决这些课题。
作者简介 · · · · · ·
作者简介:
野村综合研究所 Nomura Research Institute, Ltd.
日本最大的智囊机构,由日本第一家民间智库野村综合研究所和在系统集成领域享有盛誉的野村计算机系统公司合并成立。1993年开始在中国开展业务,2002年先后在上海和北京设立独资子公司,为在中国开展业务的跨国公司以及中国的本土企业提供战略咨询、业务咨询、业务实施支援服务,以及IT系统咨询和系统集成服务。系统咨询事业本部拥有多名经验丰富的咨询顾问,基于NRI集团多年来的实践经验,为顾客提供涵盖整个IT经营管理领域的服务。E-mail: ciohandbook-c@nri.co.jp。
译者简介:
周自恒
IT、编程爱好者,初中时曾在NOI(国家信息学奥赛)天津赛区获一等奖,现就职于某管理咨询公司,任咨询顾问兼战略技术总监。译著有《大数据的冲击》、《代码的未来》、《30天自制操作系统》等。
李智慧
国际经济学硕士。现任职于野村综合研究所,是企业拓展海外业务、系统化构思和计划、IT采购、PMO、全球资源组合战略等领域的专家,具有国际项目管理专家(PMP)资质。
目录 · · · · · ·
序章 1
CIO应统管的7大领域 2
CIO的定位与辅佐体制 4
对CIO的期待:创造新价值 6
第1部分 IT管理 9
第1章 IT战略 治理
1.1 IT战略的定位 10
1.2 IT战略的概要 12
1.3 IT战略的制定流程 14
1.4 IT战略制定与信息运用能力的强化 16
1.5 确立IT治理 18
1.6 确立IT治理所需的工作 20
1.7 IT治理的推进体制 22
1.8 IT战略与IT部门的评估 24
第2章 IT投资·成本管理
2.1 IT投资的特征与分类 26
2.2 IT投资相关职责与责任的明确化 28
2.3 通过IT 投资创造价值的过程 30
2.4 关于IT 投资评估 32
2.5 IT 投资组合计划的评估方法 34
2.6 个别IT 投资计划的评估方法 36
2.7 个别IT 投资成果的评估方法 38
2.8 IT 投资组合成果的评估方法 40
2.9 IT 成本的管理方法 42
2.10 IT 成本的分析方法 44
2.11 IT 成本的标杆分析 46
2.12 IT 成本合理化措施 48
2.13 对用户部门收费 50
2.14 IT 资产组合 52
专栏 CIO 到底是何方神圣? 54
专栏 什么才是正常的IT 支出? 55
第3章 IT 组织 人才
3.1 探讨有关运营IT 的组织和人才的课题 56
3.2 与IT 运营相关的内部协作体制 58
3.3 与IT 运营相关的IT 部门内部的职责划分 60
3.4 不同类型的IT 组织形态 62
3.5 作为“业务伙伴”的IT 部门 64
3.6 IT 部门的功能强化与组织、人才 66
3.7 企业所需要的IT 人才标准 68
3.8 IT 人才的获得、培养 70
3.9 IT 人才培养的“五大壁垒” 72
第4章 资源组织战略
4.1 资源组织战略的探讨步骤 74
4.2 外包商利用模式的探讨 76
4.3 外包中应注意的风险 78
4.4 外包开始前的准备流程 80
4.5 与外包商进行合同谈判时的注意点 82
4.6 服务水平管理的实践 84
4.7 外包服务期满后的应对措施 86
4.8 未来的外包商利用模式 88
专栏 IT 投资能够带来业绩增长吗? 90
专栏 IT 行业=3K ? 91
第5章 IT 服务管理
5.1 以业务部门的角度定义IT 服务 92
5.2 SLA、OLA 的制定与持续监控 94
5.3 容量与可用性的监控 96
5.4 供应商管理 98
5.5 提高系统改造的效率 100
5.6 系统故障应对 102
5.7 查明系统故障的原因并制定对策 104
5.8 IT 服务的组成信息的统一管理 106
5.9 利用云计算等外部服务时的服务运营 108
5.10 IT 服务的评估、改善和中止 110
第6章 IT 风险管理
6.1 IT 风险的分类 112
6.2 信息安全风险的应对机制 114
6.3 信息安全对策的种类 116
6.4 推进信息安全对策的基本思路 118
6.5 对集团子公司信息安全对策的支援 120
6.6 信息安全对策的趋势 122
6.7 IT 部门在制定业务连续性计划中的职责 124
6.8 业务恢复中系统层面的应对措施 126
6.9 东日本大地震所揭示的与业务连续性相关课题 128
专栏 在系统改善中运用群众智慧 130
专栏 如何有效利用智能手机和平板电脑 131
第2部分 IT 架构 133
第1章 IT 架构模型
1.1 何为IT 架构模型 134
1.2 IT 架构的决定方法 136
1.3 经营课题与IT 架构模型的对应关系 138
1.4 能够有效削减成本的IT 架构 140
1.5 支持全球化的IT 架构 142
1.6 提高竞争力的IT 架构 144
1.7 何为能够长期运用的IT 架构 146
第2章 IT 架构标准
2.1 IT 架构标准的必要性 148
2.2 通过EA 实现整体优化 150
2.3 业务架构(BA)的组成与管理 152
2.4 数据架构(DA)的标准化 154
2.5 应用架构(AA)的标准化 156
2.6 技术架构(TA)的标准化 158
2.7 实现整体优化的方法 160
2.8 整体优化的IT 工作实践 162
2.9 IT 架构师的培养 164
专栏 如何避免在IT 上失败 166
专栏 难以两全的品质和速度 167
第3章 “超上游工程”的推进方法
3.1 超上游工程与IT 架构设计 168
3.2 现状、课题分析及其手法 170
3.3 系统化构思的工作内容及注意事项 172
3.4 系统化计划的工作内容及注意事项 174
3.5 需求定义的工作内容及注意事项 176
3.6 IT 架构的设计流程 178
3.7 引入软件包产品时的注意事项 180
第4章 构成IT 架构的技术要素
4.1 主要的应用程序技术 182
4.2 商用软件包 184
4.3 数据仓库与商业智能 186
4.4 主数据管理 188
4.5 系统基础架构的技术趋势 190
4.6 支持云计算的系统基础架构技术 192
4.7 实现高速处理的系统基础架构技术 194
4.8 支持业务变化的系统开发技术 196
专栏 不要被流行词汇所迷惑! 198
专栏 云计算运用中的陷阱 199
第3部分 运用IT 带动企业成长 201
第1章 运用IT 支持企业全球化
1.1 CIO 应关注的全球化业务中的两大动向 202
1.2 适应市场和据点成长阶段的IT 管理 204
1.3 把握新兴国家市场的成长速度 206
1.4 开拓新兴国家时所应采用的IT 架构 208
1.5 实现全球协同效应的IT 蓝图 210
1.6 实现全球协同效应的IT 架构 212
1.7 实现全球协同效应的IT 管理 214
1.8 实现地域内有效的IT 管理 216
1.9 由地域统管组织提供IT 共享服务 218
1.10 IT 共享服务的实现步骤 220
1.11 IT 部门运营体制的全球化 222
1.12 全球化IT 人才的获得 224
第2章 运用IT 提高企业竞争力
2.1 运用IT 提高企业竞争力的关键点 226
2.2 强化客户接触点的IT 架构 228
2.3 多渠道联动中的注意事项 230
2.4 前台强化型架构的应用案例 232
2.5 明确能为企业带来竞争力的核心功能 234
2.6 嵌合型IT 架构的实现 236
2.7 水平划分型架构的应用案例 238
2.8 垂直划分型架构的应用案例 240
专栏 提高对“移动”和“社交”的敏感度 242
专栏 为什么信息共享难以推广 243
第3章 运用IT 实现企业创新
3.1 IT 创新的类型 244
3.2 IT 创新的实践案例 246
3.3 通过“设计思考”实现IT 创新 248
3.4 “设计思考”的应用案例 250
3.5 催生IT 创新的实验室 252
3.6 讨论实验室和实践实验室的建立 254
3.7 化身为创新型组织 256
专栏 向发祥于欧洲的“未来中心”学习 258
后记 260
译后记 262
执笔者一览 264
参考文献 268
索引 270
gradle-4.3.1-all.zip
包括:
1.gradle-4.3.1-all.zip
2.gradle-4.3.1-all.zip.sha256
最新版 官方下载
SHA256:c5b67330a8a211539d713852c56a6a80fdea365d8902df92d1759d913d18fa2d
【日本】图解性能优化 小田圭二 榑松谷仁 平山毅 冈田宪昌 苏祎 2017-1 P312彩色完整版.pdf
内容简介 · · · · · ·
本书由有着丰富的系统开发和运维经验的Oracle高级顾问执笔,详细解说了系统性能的相关知识。从性能的概念讲起,由浅入深,全面介绍了性能分析的基础知识、实际系统的性能分析、性能调优、性能测试、虚拟化环境下的性能分析、云计算环境下的性能分析等内容。书中列举了丰富的实例,并结合直观的插图,向读者传授了有用的实战技巧。另外,因为系统性能和系统架构密切相关,所以读者在学习系统性能的过程中还能有效地学到系统架构的相关知识。
作者简介 · · · · · ·
小田圭二
日本Oracle株式会社咨询部门经理。在解决性能问题方面有着丰富的经验,著有《图解OS、存储、网络:DB的内部机制》(絵で見てわかるOS/ストレージ/ネットワーク~データベースはこう使っている)、《图解Oracle的机制》(絵で見てわかるOracleの仕組み)等多部著作。
榑松谷仁
日本Oracle株式会社高级首席顾问。曾在Emprix公司(美国本部)就职,为SIer和一般企业提供压力测试、性能管理等方面的咨询服务。之后就职于日本Oracle株式会社,还负责为使用Java、WebLogic、Exalogic等中间件产品的客户提供咨询服务。
平山毅
在东京理科大学理工学部上学期间成为Sun Site用户,专业是计算机科学和统计学。曾在日本某大型互联网公司就职,目前在世界上最大的云计算供应商做架构师和咨询顾问,负责了多个大规模的国际性案件。喜欢的技术是Oracle、VCE、AWS。
冈田宪昌
曾在某IT公司做基础设施的设计、搭建和运维工作,后就职于日本Oracle株式会社,负责Oracle产品的设计和PM支持、DBA支持等。目前在某大型虚拟化软件供应商做咨询顾问和研发技术经理,负责为虚拟化基础设施和云计算的设计、运维等提供咨询服务。
目录 · · · · · ·
第1章 性能的基础知识 1
1.1 学习性能所必需的知识 2
1.2 算法的优缺点与学习方法 4
1.2.1 什么是算法 4
1.2.2 算法的基础 5
1.2.3 学习算法的窍门 7
1.3 算法的应用实例及性能的差异 8
1.3.1 日常生活中算法的例子 8
1.3.2 对性能的影响程度 9
1.3.3 评价算法的指标 11
学习信息科学的重要性 13
1.4 响应与吞吐的区别 14
系统工程师学习编程的重要性 16
1.5 算法的具体例子 16
1.5.1 数组与循环处理 16
1.5.2 链表与循环处理 19
1.5.3 树与查找 21
1.5.4 散列算法 25
1.5.5 队列 28
1.5.6 栈 32
1.5.7 排序(快速排序) 34
1.5.8 缓存①(回写) 36
1.5.9 缓存②(直写) 38
DMBS是数据结构与算法的宝库 38
1.5.10 锁与性能 40
【高级篇】锁的机制是如何实现的 42
【高级篇】性能优劣不能只看正常情况 44
第2章 性能分析的基础 45
2.1 性能分析从测量开始 46
2.2 什么是必要的性能信息 46
2.2.1 “分段查找”原则 46
2.2.2 性能信息的3种类型 48
2.2.3 系统的模型与性能故障时的运作情况 50
2.2.4 数据的种类及分析的窍门 53
2.3 性能分析中的重要理论 54
2.3.1 等待队列理论的术语 55
2.3.2 计算等待队列的平均等待时间 56
2.3.3 使用率和等待队列的例子 57
2.3.4 实际上可以获取哪些信息 59
需要定期确认性能吗? 61
2.4 OS的命令 61
2.4.1 sar 62
2.4.2 vmstat 64
时间同步非常重要 66
2.4.3 ps 66
2.4.4 netstat 68
2.4.5 iostat 70
2.4.6 top 73
2.4.7 数据包转储(wireshark、tcpdump等) 74
2.4.8 pstack 76
2.4.9 系统调用(strace等) 78
2.4.10 Profiler 80
2.4.11 Windows环境 81
第3章 实际系统的性能分析 85
3.1 Web/AP服务器与Java/C应用程序 86
3.1.1 Web服务器的访问日志 86
3.1.2 应用程序、AP服务器的日志 87
3.2 DB服务器的性能测量 90
3.2.1 DBMS的性能测量的原理 90
3.2.2 性能分析告一段落 92
批处理的性能测量 93
3.3 存储性能分析的思路 94
3.3.1 存储的相关术语 94
3.3.2 存储性能分析的思路:重视IOPS 96
3.4 网络性能分析的思路 100
性能故障数据应该保存多久? 102
3.5 调查原因 102
3.5.1 初学者容易掉入的陷阱 103
3.5.2 应有的态度 106
获取各种性能信息的时间要吻合吗? 108
3.5.3 实际的调查流程 108
性能分析的理想工具 111
第4章 性能调优 113
4.1 性能与调优 114
4.1.1 现实中的性能 114
4.1.2 在现场要保持“大局观” 117
4.2 性能调优的准则 118
4.2.1 设定既不能太粗也不能太细,要刚刚好 119
4.2.2 调优要循序渐进 120
4.2.3 通过重复使用来提速 121
4.2.4 汇总处理(集中、Piggyback) 121
4.2.5 提高速度与实现并行 123
4.2.6 纵向扩展与横向扩展 124
4.2.7 局部性 124
编译器会与RDBMS走上同一条道路吗? 125
4.3 现场可以使用的技巧 126
4.3.1 省略循环,减少投接球 126
4.3.2 访问频率高的数据存放入键值存储或散列表中 127
4.3.3 访问频率高的数据放在使用位置附近 127
4.3.4 把同步变成异步 128
4.3.5 带宽控制 130
4.3.6 LRU算法 131
4.3.7 分割处理或者细化锁的粒度 131
4.3.8 使用不丢失的回写缓存 132
4.3.9 使用多层缓存 132
4.3.10 使用巨帧和高速网络 132
4.3.11 负载均衡、轮询 133
4.3.12 关联性、绑定、粘滞会话 134
4.3.13 写时复制 135
4.3.14 日志 136
4.3.15 压缩 137
4.3.16 乐观锁 137
4.3.17 列式数据库 138
4.3.18 服务器的性能设置中,初始值=最大值? 139
4.4 实际业务中碰到的性能问题 139
4.4.1 性能比较的参考数据 139
4.4.2 缓存命中率并不一定要高 140
4.4.3 存储的调优方针 141
4.4.4 虽然容量足够,但还是添加磁盘 141
4.4.5 从性能角度看文件分割 142
4.4.6 90百分位 143
4.4.7 读取与写入的比例 143
4.5 调优的例子 144
4.5.1 例1:2层循环中select语句的执行 144
4.5.2 例2:偶尔出现性能下降 147
等待队列的前面发生了什么? 149
第5章 性能测试 151
5.1 性能测试的概要 152
5.1.1 项目工程中的性能测试 152
5.1.2 不同职责的性能测试相关人员 153
5.2 常见的失败情况:9种反面模式 156
5.2.1 不能在期限内完成 156
5.2.2 性能很差!解决不了性能问题 157
5.2.3 由于没有考虑到环境差异而导致发生问题 158
5.2.4 压力场景设计不完备导致发生问题 159
5.2.5 没有考虑到缓冲、缓存的使用而导致发生问题 159
5.2.6 没有考虑到思考时间而导致发生问题 160
5.2.7 报告内容难以理解导致客户不能认同 162
5.2.8 客户因为存在不信任感而不能认同 163
5.2.9 测试很花时间 164
5.3 性能测试的种类 167
5.3.1 实施的周期 168
5.3.2 狭义的性能测试 169
5.3.3 临界测试(临界性能、回退性能、故障测试) 169
5.3.4 基础设施性能测试 174
5.3.5 应用程序单元性能测试 178
5.3.6 耐久测试 179
5.3.7 关联领域 180
5.4 项目工程中考虑的性能测试 181
5.4.1 需求定义 181
5.4.2 项目规划 186
5.4.3 【基本设计】选择系统 187
5.4.4 【基本设计】性能测试环境 188
5.4.5 【基本设计】其他与性能设计相关的事项 191
5.4.6 【性能测试设计】测试计划的细节 192
5.4.7 【性能测试设计】人员配备与联络体制 194
5.4.8 【基础设施集成测试】基础设施性能测试 195
5.4.9 【集成测试】多并发运行测试 197
5.4.10 【系统测试】压力测试、临界测试、耐久测试 197
5.4.11 【运维测试】性能监控测试、故障测试 198
5.4.12 【交付】性能测试结果的验收报告 198
5.4.13 【运维】初期运行确认 199
5.5 性能测试的课题与必要的技巧 200
5.5.1 性能预估能力 200
5.5.2 高效的反复实施能力 202
5.5.3 Oracle Application Testing Suite的使用效果 203
第6章 虚拟化环境下的性能 209
6.1 虚拟化与性能 210
6.2 虚拟化的概要 211
6.2.1 什么是服务器虚拟化 211
6.2.2 虚拟化的种类 212
硬件辅助虚拟化 214
6.3 服务器虚拟化的主要技术(过载使用) 215
6.3.1 CPU的虚拟化技术 215
6.3.2 内存的虚拟化技术 218
6.4 虚拟化环境下性能的相关知识与分析方法 225
6.4.1 性能分析的工具 225
6.4.2 CPU的性能管理 226
6.4.3 内存的性能管理 231
6.4.4 存储的性能管理 234
还没使用DRS吗? 237
6.4.5 网络的性能管理 240
延迟灵敏度功能 243
第7章 云计算环境下的性能 245
7.1 云计算环境下性能的相关知识 246
7.1.1 云计算环境下性能会变差吗 246
7.2 云计算与本地部署的差异 247
7.2.1 云计算的定义 248
7.2.2 从云计算的特点来看与本地部署环境的不同 248
云计算实现的终极全球化 251
7.2.3 云计算的实现形态 251
混合结构的成本管理就是使用实物期权实现的投资组合管理 252
7.2.4 从云计算的服务模式来看其与本地部署的差别 253
云计算环境中可以把盈亏平衡点图形化(独自SaaS提供的最优费用模型) 254
7.2.5 把握资源的变动因素与固定因素 254
7.3 云计算环境的内部结构与最佳应用程序架构 262
7.3.1 集中式?分布式? 262
7.3.2 紧耦合?松耦合? 264
7.3.3 SOAP?REST? 265
能够把握抽象化的云计算环境的美国人——图与想象的重要性 268
7.3.4 前端的分布式处理:网络的访问方法 269
7.3.5 后端的分布式处理:数据存储的知识(从ACID到BASE) 271
7.3.6 提高TCP通信的速度 272
7.3.7 提高对象存储的速度 272
7.3.8 C语言?Java语言?还是脚本语言? 273
7.3.9 云计算环境下高性能服务的架构 274
7.3.10 开放迁移与云计算迁移 277
7.3.11 推测云计算的内部结构 278
7.4 云计算环境下性能分析的方法 278
7.4.1 获得云计算环境的基准数据的价值与不断进化的性能值 278
性能领域是理科工程师的特权? 280
7.4.2 Web系统的基本分析方法 281
7.4.3 批处理系统的基本分析方法 282
7.4.4 云计算的自动扩展功能 283
7.4.5 解析云计算环境中的复杂信息的统计方法 284
7.5 云计算环境中开发阶段的思维方式 285
7.5.1 估算(基本设计) 286
7.5.2 性能测试(系统测试) 287
7.5.3 项目管理 287
云计算环境下,经营者也需要关注详细的性能数据吗? 288
7.6 云计算环境中运维阶段的思维方式 289
7.6.1 容量管理 289
阈值设置与系统安全系数、标准化的价值 290
7.6.2 故障发生时的降规模容量运维 292
7.6.3 生命周期与更新 293
云计算实现的DevOps中性能调优的高效化 294
参考文献 296
作者简介 297
【日本】图解网络硬件 [日] 三轮贤一 人民邮电出版社 译者 盛荣 出版年 2014-7 页数 376 完整版.pdf
内容简介 · · · · · ·
本书详细介绍了计算机网络硬件的相关知识,在对硬件设备、相关技术及规范进行详尽考据和整理的同时,侧重工程实践,重点讲述了在实际网络建设工程中真实使用的网络硬件设备及其相关背景知识,能够帮助读者深入理解计算机网络在工程实践中某些容易混淆的概念,如L3交换机和路由器等。
本书在讲解的同时,还辅以丰富的图例,使计算机网络设备的真实情况一目了然,同时深入浅出地介绍了原本复杂抽象的计算机网络术语,因此对于学习了计算机网络,想了解计算机网络设备真实情况的读者来说是不可或缺的参考资料,也可作为大学课程《计算机网络》的扩展读物。另外,本书介绍了大量非思科设备和数据通信领域的相关知识,因此对于学习CCNA、CCIE等的读者和从事相关工作的工程技术人员而言,也非常具有参考价值。
作者简介 · · · · · ·
作者简介:
三轮贤一
硅谷网络设备公司日本分部资深系统工程师,主要向运营商、企业等机构提供网络硬件设备的咨询、组网架构、运营支持。著有《简单的计算机网络入门》《深入学习TCP/IP网络》等。
译者简介:
盛荣
曾就职于阿尔卡特朗讯、爱立信等公司,多年从事网络设备相关软件的开发与测试,热爱脚本语言与自动化测试。
目录 · · · · · ·
第1章 网络硬件通用基础知识 1
01.01 网络的构成要素 2
01.01.01 网络有哪些构成要素 2
01.01.02 OSI参考模型复习 4
01.02 LAN和以太网 7
01.02.01 LAN的标准 7
01.02.02 以太网 10
01.03 以太网标准的数据处理 15
01.03.01 以太网上的数据 15
01.03.02 10BASE-T 16
01.03.03 100BASE-TX 17
01.03.04 1000BASE-T/1000BASE-TX 19
01.03.05 1000BASE-SX/LX 21
01.04 网络设备的构成要素 22
01.04.01 通用服务器与专用设备 22
01.04.02 分门别类的网络设备 23
01.04.03 CPU 24
01.04.04 存储设备 24
01.04.05 存储器 25
01.04.06 HDD/SSD 26
01.04.07 硬件芯片 28
01.04.08 接口 30
01.04.09 信号转换器 36
01.04.10 LED指示灯 38
01.04.11 操作系统(内核) 39
01.04.12 电源 40
01.04.13 PSE(电气用品安全法) 46
01.04.14 UPS 47
01.04.15 风扇 47
01.05 线缆与周边设备 50
01.05.01 双绞线缆 50
01.05.02 STP与UTP 50
01.05.03 光纤 51
01.05.04 机架 56
第2章 彻底理解L2交换机 61
02.01 中继器和网桥的不同点 62
02.01.01 什么是中继器 62
02.01.02 什么是网桥 62
02.01.03 共享式集线器 64
02.01.04 交换式集线器 65
02.01.05 学习MAC地址 66
02.01.06 使用交换机的优点 67
02.02 交换机是如何诞生的 68
02.02.01 以太网的历史 68
02.02.02 世界上最早的交换机 69
02.03 交换机中使用的数据帧及其传输方式 71
02.03.01 以太网数据帧的种类 71
02.03.02 交换机数据帧的传输方式 71
02.03.03 自适应交换 73
02.04 全双工和半双工 74
02.05 如何描述交换机的处理能力 76
02.06 交换机如何分类 77
02.06.01 按照交换机的功能分类 77
02.06.02 按照设备外形分类 78
02.06.03 根据用途分类 82
02.07 成为交换机性能指标的端口种类与数量 83
02.07.01 快速以太网(10/100)端口 84
02.07.02 千兆以太网端口(10/100/1000)端口 84
02.07.03 光纤专用端口(SFP/SFP+) 84
02.07.04 PoE端口 84
02.07.05 上行链路端口数 86
02.07.06 下行链路端口数 86
02.07.07 交换机堆叠 87
02.08 交换机搭载的其他功能 88
02.08.01 MAC地址数 88
02.08.02 巨型帧 88
02.08.03 生成树功能 89
02.08.04 链路聚合 96
02.08.05 VLAN 97
02.08.06 端口镜像 97
02.08.07 QoS优先级队列 98
02.08.08 MAC地址过滤 99
02.08.09 基于端口的认证 100
02.08.10 网络管理 102
02.09 交换机架构 112
02.09.01 网络控制器(LAN控制器) 113
02.09.02 PHY模块 113
02.09.03 MAC模块 115
02.09.04 AUI与MII 116
第3章 路由器和它庞大的功能 119
03.01 何为路由器 120
03.01.01 路由器的必要性 120
03.01.02 什么是路由选择 120
03.01.03 转发 121
03.01.04 路由器的功能 122
03.02 路由器是如何诞生的 123
03.02.01 世界上最早的商用路由器 124
03.02.02 路由器性能的进化 127
03.03 路由器的分类 128
03.03.01 路由器设备 128
03.03.02 根据性能分类 129
03.03.03 面向电信运营商的路由器产品分类 132
03.03.04 面向企业的路由器产品分类 133
03.04 路由器产品目录说明 137
03.05 IP路由选择的基础知识 139
03.05.01 IP地址管理 139
03.05.02 IP路由选择 144
03.05.03 路由表 145
03.05.04 最长匹配与默认网关 145
03.05.05 静态路由选择 147
03.05.06 动态路由选择 147
03.05.07 IP隧道与VPN 154
03.05.08 IP多播 158
03.06 了解路由器搭载的各种附加功能 161
03.06.01 路由器功能的分类 161
03.06.02 支持TCP/IP以外的协议簇 161
03.06.03 LAN交换 162
03.06.04 支持LAN以外的物理层和数据链路层协议 163
03.06.05 拨号接入 168
03.06.06 冗余 169
03.06.07 认证 174
03.06.08 QoS 175
03.06.09 虚拟路由器 180
03.07 用于管理路由器的各种功能 181
03.07.01 用户界面 181
03.07.02 日志 182
03.07.03 确认CPU使用率 183
03.07.04 告警 183
03.07.05 设置时间 184
03.07.06 故障排查 184
03.07.07 文件传输控制 185
03.07.08 其他工具包 185
03.08 路由器的架构 186
03.08.01 路由器的构成要素 186
03.08.02 启动路由器的流程 191
03.08.03 路由器的一般架构 192
03.08.04 路由器的内部冗余 198
03.09 设置操作系统时使用的命令和模式 201
03.09.01 初始化 201
03.09.02 通过CLI设置 202
03.09.03 保存设置的方法 204
03.09.04 恢复出厂设置的重置方法 204
第4章 理解L3交换机的性能与功能 207
04.01 何为L3交换机 208
04.01.01 L3交换机与路由器的不同 209
04.01.02 多层交换 213
04.02 L3交换机是如何诞生的 217
04.03 L3交换机的分类 219
04.03.01 根据形状和用途分类 219
04.03.02 根据性能分类 219
04.04 L3交换机搭载的特殊功能 221
04.04.01 L3交换机功能的分类 221
04.04.02 VLAN 222
04.04.03 VLAN环境中的数据流向 230
04.04.04 VLAN之间的路由选择 231
第5章 防火墙功能与防范威胁的对策 233
05.01 防火墙是怎样的网络硬件 234
05.02 防火墙是如何诞生的 235
05.03 防火墙如何分类 238
05.03.01 软件型防火墙 238
05.03.02 硬件型防火墙 241
05.04 防火墙技术类型 242
05.05 什么是防火墙的网络接口模式 244
05.06 防火墙能够预防的威胁 245
05.07 防火墙中搭载的各种功能 247
05.07.01 会话管理 247
05.07.02 分组结构解析 254
05.07.03 安全区域 256
05.07.04 安全策略 258
05.07.05 NAT 262
05.07.06 VPN 266
05.07.07 DoS防御 278
05.07.08 防范基于分组的攻击 281
05.07.09 基于内容的扫描 282
05.07.10 监视、报告功能 289
05.07.11 分组捕获 290
05.07.12 虚拟路由器 290
05.07.13 虚拟防火墙 291
05.08 决定防火墙性能的要素 291
05.08.01 同时在线会话数 291
05.08.02 NAT表数目 291
05.08.03 每秒新建的会话数目 292
05.09 同信息安全范畴相关的标准 292
05.09.01 ISCA 292
05.09.02 FIPS 293
05.09.03 ISO/IEC 15408(公共标准) 293
第6章 高速普及的无线LAN及其基础知识 295
06.01 无线LAN是如何诞生的? 296
06.02 理解无线LAN所需的基础知识 298
06.02.01 CSMA/CA 298
06.02.02 无线LAN的架构 298
06.02.03 无线LAN的拓扑结构 299
06.03 各种各样的无线LAN标准 301
06.03.01 IEEE 802.11 303
06.03.02 IEEE 802.11a 303
06.03.03 IEEE 802.11b 304
06.03.04 IEEE 802.11g 304
06.03.05 IEEE 802.11n 304
06.03.06 IEEE 802.11ac 305
06.03.07 IEEE 802.11ad 305
06.03.08 Wi-Fi 305
06.04 无线LAN搭载的各种功能 306
06.04.01 关联 306
06.04.02 接入点的接入控制 307
06.04.03 接入点的认证 309
06.04.04 无线LAN通信的加密 310
06.04.05 自治型接入点 313
06.04.06 集中管理型接入点 313
06.04.07 无线LAN的桥接 314
06.04.08 中继器连接 314
06.05 无线LAN通信速率与覆盖范围的要点 315
06.05.01 无线LAN的最大通信速率 315
06.05.02 覆盖范围 315
06.05.03 干涉 320
06.05.04 无线LAN信道 321
06.05.05 接入点的最大通信范围 324
06.06 无线LAN的接入点产品 326
06.06.01 产品规格书的阅读方法 326
06.06.02 无线LAN硬件的制造厂商 327
第7章 网络硬件设备的选购要点 329
07.01 选择产品的类别 330
07.02 基于功能需求汇总备选设备型号 331
07.03 网络硬件的采购流程 332
07.03.01 RFI与RFP 332
07.03.02 RFQ 334
07.04 根据性能选择产品的型号 335
07.04.01 收集同网络延迟相关的信息 335
07.04.02 网络设备产品性能的测量方法 338
07.04.03 交换机性能的考量方法 341
07.04.04 路由器性能的考量方法 344
07.04.05 防火墙性能的考量方法 344
07.04.06 无线LAN性能的考量方法 347
07.05 根据物理需求选择产品 349
07.05.01 交换机的选择 349
07.05.02 路由器的选择 352
07.05.03 防火墙产品的选择 353
07.06 确认网络设备的互操作性 353
07.07 高可用性的考量方法 354
07.08 价格相关的考量方法 355
07.08.01 端口单价 355
07.08.02 比特单价 356
07.08.03 学习成本 356
07.08.04 支持的费用 358
07.09 达到采购条件 359
07.09.01 绿色采购 359
07.09.02 符合RoHS要求 359
07.09.03 加密出口管理相关 360
07.10 售后支持相关的基础知识 360
07.10.01 网络硬件的维护 360
07.10.02 厂商保修 361
插图 参考/引用文献 363
照片出处和提供方 364
【日本】图解设计模式 ,结城浩著;杨文轩译 ,P368 ,2017.01.pdf
内容简介 · · · · · ·
原版连续畅销12年、重印25次!
194张图表 + Java示例代码 = 轻松理解GoF的23种设计模式
《程序员的数学》《数学女孩》作者结城浩又一力作
◆图文并茂
194张图表(包括57张UML类图)穿插文中,帮助理解各设计模式
◆通俗易懂
用浅显的语言逐一讲解23种设计模式,读完此书会发现GoF书不再晦涩难懂
◆专业实用
编写了Java程序代码来实现设计模式,每章附带练习题和答案,用以熟练掌握设计 模式
◆拓展进阶
必要时对Java语言的功能进行了补充说明,可加深对Java的理解。此外,如果了解C++语言,同样可以轻松理解本书内容
本书适合以下读者阅读
•对面向对象开发感兴趣的人
•对设计模式感兴趣的人(特别是阅读了GoF书但是觉得难以理解的人)
•所有Java程序员(特别是对抽象类和接口的理解不充分的人)
本书以浅显易懂的语言逐一说明了GoF的23种设计模式。在讲解过程中,不仅搭配了丰富的图片,而且理论结合实例,用Java语言编写代码实现了设计模式的程序,让程序真正地运行起来,并提供了运用模式解决具体问题的练习题和答案。除此以外,本书在必要时还对Java语言的功能进行补充说明,以加深读者对Java的理解。
作者简介 · · · · · ·
结城浩
生于1963年,日本资深技术作家和程序员。在编程语言、设计模式、数学、加密技术等领域,编写了很多深受欢迎的入门书。代表作有《数学女孩》系列、《程序员的数学》、《图解密码技术》等。
目录 · · · · · ·
第1部分 适应设计模式 1
第1章 Iterator模式——一个一个遍历 1
1.1 Iterator模式 2
1.2 示例程序 2
Aggregate接口 3
Iterator接口 5
Book类 5
BookShelf类 5
BookShelfIteraotr类 6
Main类 7
1.3 Iterator模式中的登场角色 8
1.4 拓展思路的要点 9
不管实现如何变化,都可以使用Iterator 9
难以理解抽象类和接口 9
Aggregate和Iterator的对应 9
容易弄错“下一个” 10
还容易弄错“最后一个” 10
多个Iterator 10
迭代器的种类多种多样 10
不需要deleteIterator 10
1.5 相关的设计模式 11
1.6 本章所学知识 11
1.7 练习题 11
第2章 Adapter模式——加个“适配器”以便于复用 13
2.1 Adapter模式 14
2.2 示例程序(1)(使用继承的适配器) 14
Banner类 15
Print接口 16
PrintBanner类 16
Main类 16
2.3 示例程序(2)(使用委托的示例程序) 17
Print类 18
PrintBanner类 18
2.4 Adapter模式中的登场角色 18
2.5 拓展思路的要点 19
什么时候使用Adapter模式 19
如果没有现成的代码 20
版本升级与兼容性 20
功能完全不同的类 20
2.6 相关的设计模式 20
2.7 本章所学知识 21
2.8 练习题 21
第2部分 交给子类 23
第3章 Template Method模式——将具体处理交给子类 23
3.1 Template Method模式 24
什么是模板 24
什么是Template Method模式 24
3.2 示例程序 24
AbstractDisplay类 25
CharDisplay类 26
StringDisplay类 27
Main类 28
3.3 Template Method模式中的登场角色 28
3.4 拓展思路的要点 29
可以使逻辑处理通用化 29
父类与子类之间的协作 29
父类与子类的一致性 29
3.5 相关的设计模式 30
3.6 延伸阅读:类的层次与抽象类 30
父类对子类的要求 30
抽象类的意义 30
父类与子类之间的协作 31
3.7 本章所学知识 31
3.8 练习题 31
第4章 Factory Method模式——将实例的生成交给子类 33
4.1 Factory Method模式 34
4.2 示例程序 34
Product类 35
Factory类 35
IDCard类 36
IDCardFactory类 36
Main类 37
4.3 Factory Method模式中的登场角色 37
4.4 拓展思路的要点 39
框架与具体加工 39
生成实例——方法的三种实现方式 39
使用模式与开发人员之间的沟通 40
4.5 相关的设计模式 40
4.6 本章所学知识 41
4.7 练习题 41
第3部分 生成实例 43
第5章 Singleton模式——只有一个实例 43
5.1 Singleton模式 44
5.2 示例程序 44
Singleton类 44
Main类 45
5.3 Singleton模式中的登场角色 46
5.4 拓展思路的要点 46
为什么必须设置限制 46
何时生成这个唯一的实例 46
5.5 相关的设计模式 47
5.6 本章所学知识 47
5.7 练习题 47
第6章 Prototype模式——通过复制生成实例 49
6.1 Prototype模式 50
6.2 示例程序 50
Product接口 51
Manager类 52
MessageBox类 52
UnderlinePen类 53
Main类 54
6.3 Prototype模式中的登场角色 55
6.4 拓展思路的要点 56
不能根据类来生成实例吗 56
类名是束缚吗 56
6.5 相关的设计模式 57
6.6 延伸阅读:clone方法和java.lang.Clonable接口 57
Java语言的clone 57
clone方法是在哪里定义的 58
需要实现Cloneable的哪些方法 58
clone方法进行的是浅复制 58
6.7 本章所学知识 58
6.8 练习题 59
第7章 Builder模式——组装复杂的实例 61
7.1 Builder模式 62
7.2 示例程序 62
Builder类 63
Director类 63
TextBuilder类 64
HTMLBuilder类 65
Main类 65
7.3 Builder模式中的登场角色 67
7.4 相关的设计模式 69
7.5 拓展思路的要点 69
谁知道什么 69
设计时能够决定的事情和不能决定的事情 70
代码的阅读方法和修改方法 70
7.6 本章所学知识 70
7.7 练习题 70
第8章 Abstract Factory模式——将关联零件组装成产品 73
8.1 Abstract Factory模式 74
8.2 示例程序 74
抽象的零件:Item类 77
抽象的零件:Link类 78
抽象的零件:Tray类 78
抽象的产品:Page类 79
抽象的工厂:Factory类 79
使用工厂将零件组装称为产品:Main类 80
具体的工厂:ListFactory类 81
具体的零件:ListLink类 82
具体的零件:ListTray类 82
具体的产品:ListPage类 83
8.3 为示例程序增加其他工厂 84
具体的工厂:TableFactory类 85
具体的零件:TableLink类 86
具体的零件:TableTray类 86
具体的产品:TablePage类 87
8.4 Abstract Factory模式中的登场角色 87
8.5 拓展思路的要点 89
易于增加具体的工厂 89
难以增加新的零件 89
8.6 相关的设计模式 89
8.7 延伸阅读:各种生成实例的方法的介绍 90
8.8 本章所学知识 91
8.9 练习题 91
第4部分 分开考虑 93
第9章 Bridge模式——将类的功能层次结构与实现层次结构分离 93
9.1 Bridge模式 94
9.2 示例程序 95
类的功能层次结构:Display类 96
类的功能层次结构:CountDisplay类 97
类的实现层次结构:DisplayImpl类 97
类的实现层次结构:StringDisplayImpl类 98
Main类 98
9.3 Bridge模式中的登场角色 99
9.4 拓展思路的要点 100
分开后更容易扩展 100
继承是强关联,委托是弱关联 100
9.5 相关的设计模式 101
9.6 本章所学知识 101
9.7 练习题 102
第10章 Strategy模式——整体地替换算法 103
10.1 Strategy模式 104
10.2 示例程序 104
Hand类 105
Strategy接口 106
WinningStrategy类 106
ProbStrategy类 107
Player类 109
Main类 109
10.3 Strategy模式中的登场角色 111
10.4 拓展思路的要点 112
为什么需要特意编写Strategy角色 112
程序运行中也可以切换策略 112
10.5 相关的设计模式 113
10.6 本章所学知识 113
10.7 练习题 113
第5部分 一致性 117
第11章 Composite模式——容器与内容的一致性 117
11.1 Composite模式 118
11.2 示例程序 118
Entry类 119
File类 120
Directory类 121
FileTreatMentException类 122
Main类 122
11.3 Composite模式中的登场角色 124
11.4 拓展思路的要点 125
多个和单个的一致性 125
Add方法应该放在哪里 126
到处都存在递归结构 126
11.5 相关的设计模式 126
11.6 本章所学知识 127
11.7 练习题 127
第12章 Decorator模式——装饰边框与被装饰物的一致性 129
12.1 Decorator模式 130
12.2 示例程序 130
Display类 131
StringDisplay类 132
Border类 132
SideBorder类 133
FullBorder类 134
Main类 135
12.3 Decorator模式中的登场角色 136
12.4 拓展思路的要点 137
接口(API)的透明性 137
在不改变被装饰物的前提下增加功能 138
可以动态地增加功能 138
只需要一些装饰物即可添加许多功能 138
java.io包与Decorator模式 138
导致增加许多很小的类 139
12.5 相关的设计模式 139
12.6 延伸阅读:继承和委托中的一致性 140
继承——父类和子类的一致性 140
委托——自己和被委托对象的一致性 140
12.7 本章所学知识 142
12.8 练习题 142
第6部分 访问数据结构 145
第13章 Visitor模式——访问数据结构并处理数据 145
13.1 Visitor模式 146
13.2 示例程序 146
Visitor类 147
Element接口 148
Entry类 148
File类 148
Directory类 149
ListVisitor类 150
FileTreatmentException类 151
Main类 151
Visitor与Element之间的相互调用 152
13.3 Visitor模式中的登场角色 154
13.4 拓展思路的要点 155
双重分发 155
为什么要弄得这么复杂 155
开闭原则——对扩展开放,对修改关闭 155
易于增加ConcreteVisitor角色 156
难以增加ConcreteElement角色 156
Visitor工作所需的条件 156
13.5 相关的设计模式 157
13.6 本章所学知识 157
13.7 练习题 157
第14章 Chain of Responsibility模式——推卸责任 161
14.1 Chain of Responsibility模式 162
14.2 示例程序 162
Trouble类 163
Support类 163
NoSupport类 164
LimitSupport类 164
OddSupport类 165
SpecialSupport类 165
Main类 166
14.3 Chain of Responsibility模式中的登场角色 167
14.4 拓展思路的要点 168
弱化了发出请求的人和处理请求的人之间的关系 168
可以动态地改变职责链 168
专注于自己的工作 169
推卸请求会导致处理延迟吗 169
14.5 相关的设计模式 169
14.6 本章所学知识 169
14.7 练习题 169
第7部分 简单化 171
第15章 Facade模式——简单窗口 171
15.1 Facade模式 172
15.2 示例程序 172
Database类 173
HtmlWriter类 174
PageMaker类 175
Main类 176
15.3 Facade模式中的登场角色 176
15.4 拓展思路的要点 177
Facade角色到底做什么工作 177
递归地使用Facade模式 178
开发人员不愿意创建Facade角色的原因——心理原因 178
15.5 相关的设计模式 178
15.6 本章所学知识 178
15.7 练习题 179
第16章 Mediator模式——只有一个仲裁者 181
16.1 Mediator模式 182
16.2 示例程序 182
Mediator接口 185
Colleague接口 186
ColleagueButton类 186
ColleagueTextField类 187
ColleagueCheckbox类 188
LoginFrame类 188
Main类 191
16.3 Mediator模式中的登场角色 191
16.4 拓展思路的要点 192
当发生分散灾难时 192
通信线路的增加 193
哪些角色可以复用 193
16.5 相关的设计模式 193
16.6 本章所学知识 193
16.7 练习题 194
第8部分 管理状态 195
第17章 Observer模式——发送状态变化通知 195
17.1 Observer模式 196
17.2 示例程序 196
Observer接口 196
NumberGenerator类 197
RandomNumberGenerator类 198
DigitObserver类 198
GraphObserver类 199
Main类 199
17.3 Observer模式中的登场角色 200
17.4 拓展思路的要点 201
这里也出现了可替换性 201
Observer的顺序 202
当Observer的行为会对Subject产生影响时 202
传递更新信息的方式 202
从“观察”变为“通知” 203
Model/View/Controller(MVC) 203
17.5 延伸阅读:java.util.Observer接口 203
17.6 相关的设计模式 204
17.7 本章所学知识 204
17.8 练习题 204
第18章 Memento模式——保存对象状态 207
18.1 Memento模式 208
18.2 示例程序 208
Memento类 209
Gamer类 210
Main类 211
18.3 Memento模式中的登场角色 215
18.4 拓展思路的要点 216
两种接口(API)和可见性 216
需要多少个Memento 217
Memento的有效期限是多久 217
划分Caretaker角色和Originator角色的意义 217
18.5 相关的设计模式 218
18.6 本章所学知识 218
18.7 练习题 218
第19章 State模式——用类表示状态 221
19.1 State模式 222
19.2 示例程序 222
金库警报系统 222
不使用State模式的伪代码 223
使用了State模式的伪代码 224
State接口 226
DayState类 226
NightState类 227
Context接口 228
SafeFrame类 228
Main类 231
19.3 State模式中的登场角色 232
19.4 拓展思路的要点 233
分而治之 233
依赖于状态的处理 233
应当是谁来管理状态迁移 233
不会自相矛盾 234
易于增加新的状态 234
实例的多面性 235
19.5 相关的设计模式 235
19.6 本章所学知识 235
19.7 练习题 236
第9部分 避免浪费 237
第20章 Flyweight模式——共享对象,避免浪费 237
20.1 Flyweight模式 238
20.2 示例程序 238
BigChar类 240
BigCharFactory类 241
BigString类 242
Main类 244
20.3 Flyweight模式中的登场角色 244
20.4 拓展思路的要点 245
对多个地方产生影响 245
Intrinsic与Extrinsic 246
不要让被共享的实例被垃圾回收器回收了 246
内存之外的其他资源 247
20.5 相关的设计模式 247
20.6 本章所学知识 247
20.7 练习题 247
第21章 Proxy模式——只在必要时生成实例 249
21.1 Proxy模式 250
21.2 示例程序 250
Printer类 251
Printable接口 252
PrinterProxy类 253
Main类 254
21.3 Proxy模式中的登场角色 254
21.4 拓展思路的要点 255
使用代理人来提升处理速度 255
有必要划分代理人和本人吗 256
代理与委托 256
透明性 256
HTTP代理 256
各种Proxy模式 257
21.5 相关的设计模式 257
21.6 本章所学知识 257
21.7 练习题 257
第10部分 用类来表现 259
第22章 Command模式——命令也是类 259
22.1 Command模式 260
22.2 示例程序 260
Command接口 261
MacroCommand类 262
DrawCommand类 263
Drawable接口 263
DrawCanvas类 264
Main类 265
22.3 Command模式中的登场角色 268
22.4 拓展思路的要点 269
命令中应该包含哪些信息 269
保存历史记录 269
适配器 269
22.5 相关的设计模式 271
22.6 本章所学知识 272
22.7 练习题 272
第23章 Interpreter模式——语法规则也是类 273
23.1 Interpreter模式 274
23.2 迷你语言 274
迷你语言的命令 274
迷你语言程序示例 275
迷你语言的语法 278
终结符表达式与非终结符表达式 279
23.3 示例程序 279
Node类 281
ProgramNode类 281
CommandListNode类 282
CommandNode类 283
RepeatCommandNode类 284
PrimitiveCommandNode类 285
Context类 285
ParseException类 286
Main类 287
23.4 Interpreter模式中的登场角色 288
23.5 拓展思路的要点 289
还有其他哪些迷你语言 289
跳过标记还是读取标记 290
23.6 相关的设计模式 290
23.7 本章所学知识以及本书的结束语 290
23.8 练习题 290
附录 293
附录A 习题解答 294
附录B 示例程序的运行步骤 359
附录C GoF对设计模式的分类 361
附录D 设计模式Q&A 362
附录E 参考书籍 365
【日本】图解密码技术(日)结城浩(著) 人民邮电出版社 2014-12-01 PDF电子书带详细书签目录 完整版.pdf
内容简介 · · · · · ·
本书以图配文的形式,详细讲解了6种最重要的密码技术:对称密码、公钥密码、单向散列函数、消息认证码、数字签名和伪随机数生成器。
第一部分讲述了密码技术的历史沿革、对称密码、分组密码模式(包括ECB、CBC、CFB、OFB、CTR)、公钥、混合密码系统。第二部分重点介绍了认证方面的内容,涉及单向散列函数、消息认证码、数字签名、证书等。第三部分讲述了密钥、随机数、PGP、SSL/TLS 以及密码技术在现实生活中的应用。
作者简介 · · · · · ·
结城浩(Hiroshi Yuki)
生于1963年,日本资深技术作家和程序员。在编程语言、设计模式、数学、加密技术等领域,编写了很多深受欢迎的入门书。代表作有《数学女孩》系列、《程序员的数学》等。
作者网站:http://www.hyuki.com/
目录 · · · · · ·
第1部分 密码 1
第1章 环游密码世界 3
1.1 本章学习的内容 4
1.2 密码 4
1.2.1 Alice与Bob 4
1.2.2 发送者、接收者和窃听者 4
1.2.3 加密与解密 6
1.2.4 密码保证了消息的机密性 7
1.2.5 破译 7
1.3 对称密码与公钥密码 8
1.3.1 密码算法 8
1.3.2 密钥 8
1.3.3 对称密码与公钥密码 9
1.3.4 混合密码系统 10
1.4 其他密码技术 10
1.4.1 单向散列函数 10
1.4.2 消息认证码 10
1.4.3 数字签名 11
1.4.4 伪随机数生成器 11
1.5 密码学家的工具箱 12
1.6 隐写术与数字水印 13
1.7 密码与信息安全常识 14
1.7.1 不要使用保密的密码算法 14
1.7.2 使用低强度的密码比不进行任何加密更危险 15
1.7.3 任何密码总有一天都会被破解 15
1.7.4 密码只是信息安全的一部分 16
1.8 本章小结 16
1.9 小测验的答案 17
第2章 历史上的密码——写一篇别人看不懂的文章 19
2.1 本章学习的内容 20
2.2 恺撒密码 20
2.2.1 什么是恺撒密码 21
2.2.2 恺撒密码的加密 21
2.2.3 恺撒密码的解密 22
2.2.4 用暴力破解来破译密码 23
2.3 简单替换密码 24
2.3.1 什么是简单替换密码 24
2.3.2 简单替换密码的加密 25
2.3.3 简单替换密码的解密 26
2.3.4 简单替换密码的密钥空间 26
2.3.5 用频率分析来破译密码 26
2.4 Enigma 31
2.4.1 什么是Enigma 31
2.4.2 用Enigma进行加密通信 31
2.4.3 Enigma的构造 32
2.4.4 Enigma的加密 34
2.4.5 每日密码与通信密码 36
2.4.6 避免通信错误 36
2.4.7 Enigma的解密 36
2.4.8 Enigma的弱点 38
2.4.9 Enigma的破译 38
2.5 思考 40
2.5.1 为什么要将密码算法和密钥分开呢 40
2.6 本章小结 41
2.7 小测验的答案 42
第3章 对称密码(共享密钥密码)——用相同的密钥进行加密和解密 45
3.1 炒鸡蛋与对称密码 46
3.2 本章学习的内容 46
3.3 从文字密码到比特序列密码 46
3.3.1 编码 46
3.3.2 XOR 47
3.4 一次性密码本——绝对不会被破译的密码 50
3.4.1 什么是一次性密码本 50
3.4.2 一次性密码本的加密 50
3.4.3 一次性密码本的解密 51
3.4.4 一次性密码本是无法破译的 51
3.4.5 一次性密码本为什么没有被使用 52
3.5 DES 53
3.5.1 什么是DES 53
3.5.2 加密和解密 54
3.5.3 DES的结构(Feistel网络) 54
3.6 三重DES 60
3.6.1 什么是三重DES 60
3.6.2 三重DES的加密 60
3.6.3 三重DES的解密 63
3.6.4 三重DES的现状 64
3.7 AES的选定过程 64
3.7.1 什么是AES 65
3.7.2 AES的选定过程 65
3.7.3 AES最终候选算法的确定与AES的最终确定 65
3.8 Rijndael 66
3.8.1 什么是Rijndael 66
3.8.2 Rijndael的加密和解密 66
3.8.3 Rijndael的破译 68
3.8.4 应该使用哪种对称密码呢 68
3.9 本章小结 70
3.10 小测验的答案 71
第4章 分组密码的模式——分组密码是如何迭代的 73
4.1 本章学习的内容 74
4.2 分组密码的模式 75
4.2.1 分组密码与流密码 75
4.2.2 什么是模式 75
4.2.3 明文分组与密文分组 76
4.2.4 主动攻击者Mallory 76
4.3 ECB模式 77
4.3.1 什么是ECB模式 77
4.3.2 ECB模式的特点 78
4.3.3 对ECB模式的攻击 78
4.4 CBC模式 80
4.4.1 什么是CBC模式 80
4.4.2 初始化向量 81
4.4.3 CBC模式的特点 82
4.4.4 对CBC模式的攻击 82
4.4.5 CBC的应用实例 84
4.5 CFB模式 85
4.5.1 什么是CFB模式 85
4.5.2 初始化向量 86
4.5.3 CFB模式与流密码 86
4.5.4 CFB模式的解密 87
4.5.5 对CFB模式的攻击 87
4.6 OFB模式 88
4.6.1 什么是OFB模式 88
4.6.2 初始化向量 89
4.6.3 CFB模式与OFB模式的对比 89
4.7 CTR模式 90
4.7.1 计数器的生成方法 92
4.7.2 OFB模式与CTR模式的对比 92
4.7.3 CTR模式的特点 92
4.7.4 错误与机密性 93
4.8 应该使用哪种模式呢 93
4.9 本章小结 94
4.10 小测验的答案 95
第5章 公钥密码——用公钥加密,用私钥解密 97
5.1 投币寄物柜的使用方法 98
5.2 本章学习的内容 98
5.3 密钥配送问题 98
5.3.1 什么是密钥配送问题 98
5.3.2 通过事先共享密钥来解决 100
5.3.3 通过密钥分配中心来解决 101
5.3.4 通过Diffie-Hellman密钥交换来解决密钥配送问题 102
5.3.5 通过公钥密码来解决密钥配送问题 102
5.4 公钥密码 103
5.4.1 什么是公钥密码 103
5.4.2 公钥密码的历史 104
5.4.3 公钥通信的流程 104
5.4.4 各种术语 106
5.4.5 公钥密码无法解决的问题 106
5.5 时钟运算 106
5.5.1 加法 107
5.5.2 减法 109
5.5.3 乘法 110
5.5.4 除法 110
5.5.5 乘方 114
5.5.6 对数 114
5.5.7 从时钟指针到RSA 115
5.6 RSA 116
5.6.1 什么是RSA 116
5.6.2 RSA加密 116
5.6.3 RSA解密 117
5.6.4 生成密钥对 118
5.6.5 具体实践一下吧 121
5.7 对RSA的攻击 124
5.7.1 通过密文来求得明文 124
5.7.2 通过暴力破解来找出D 124
5.7.3 通过E和N求出D 125
5.7.4 中间人攻击 126
5.8 其他公钥密码 128
5.8.1 ElGamal方式 128
5.8.2 Rabin方式 128
5.8.3 椭圆曲线密码 128
5.9 关于公钥密码的问答 128
5.9.1 公钥密码的机密性 129
5.9.2 公钥密码与对称密码的密钥长度 129
5.9.3 对称密码的未来 129
5.9.4 RSA与质数 130
5.9.5 RSA与质因数分解 130
5.9.6 RSA的长度 131
5.10 本章小结 132
5.11 小测验的答案 133
第6章 混合密码系统——用对称密码提高速度,用公钥密码保护会话密钥 135
6.1 混合动力汽车 136
6.2 本章学习的内容 136
6.3 混合密码系统 136
6.3.1 对称密码与公钥密码 136
6.3.2 混合密码系统 137
6.3.3 加密 138
6.3.4 解密 140
6.3.5 混合密码系统的具体例子 141
6.4 怎样才是高强度的混合密码系统 141
6.4.1 伪随机数生成器 141
6.4.2 对称密码 142
6.4.3 公钥密码 142
6.4.4 密钥长度的平衡 142
6.5 密码技术的组合 142
6.6 本章小结 143
6.7 小测验的答案 144
第2部分 认证 145
第7章 单向散列函数——获取消息的“指纹” 147
7.1 本章学习的内容 148
7.2 什么是单向散列函数 148
7.2.1 这个文件是不是真的呢 148
7.2.2 什么是单向散列函数 151
7.2.3 单向散列函数的性质 153
7.2.4 关于术语 156
7.3 单向散列函数的实际应用 157
7.3.1 检测软件是否被篡改 157
7.3.2 基于口令的加密 159
7.3.3 消息认证码 159
7.3.4 数字签名 159
7.3.5 伪随机数生成器 159
7.3.6 一次性口令 159
7.4 单向散列函数的具体例子 160
7.4.1 MD4、MD5 160
7.4.2 SHA-1、SHA-256、SHA-384、SHA-512 160
7.4.3 RIPEMD-160 160
7.4.4 AHS(Advanced Hash Standard)与SHA-3 161
7.5 单向散列函数SHA-1 161
7.5.1 整体流程 161
7.5.2 (1) SHA-1:填充 162
7.5.3 (2) SHA-1:计算W0~W79 164
7.5.4 (3) SHA-1:分组处理 165
7.5.5 (4) SHA-1:单步处理 167
7.6 对单向散列函数的攻击 168
7.6.1 暴力破解(攻击故事1) 168
7.6.2 生日攻击(攻击故事2) 170
7.7 单向散列函数无法解决的问题 172
7.8 本章小结 173
7.9 小测验的答案 173
第8章 消息认证码——消息被正确传送了吗 177
8.1 本章学习的内容 178
8.2 消息认证码 178
8.2.1 汇款请求是正确的吗 178
8.2.2 什么是消息认证码 179
8.2.3 消息认证码的使用步骤 180
8.2.4 消息认证码的密钥配送问题 180
8.3 消息认证码的应用实例 181
8.3.1 SWIFT 181
8.3.2 IPsec 181
8.3.3 SSL/TLS 182
8.4 消息认证码的实现方法 182
8.4.1 使用单向散列函数实现 182
8.4.2 使用分组密码实现 182
8.4.3 其他实现方法 182
8.5 HMAC的详细介绍 182
8.5.1 什么是HMAC 182
8.5.2 HMAC的步骤 183
8.6 对消息认证码的攻击 185
8.6.1 重放攻击 185
8.6.2 密钥推测攻击 187
8.7 消息认证码无法解决的问题 188
8.7.1 对第三方证明 188
8.7.2 防止否认 188
8.8 本章小结 189
8.9 小测验的答案 189
第9章 数字签名——消息到底是谁写的 191
9.1 羊妈妈的认证 192
9.2 本章学习的内容 192
9.3 数字签名 192
9.3.1 Alice的借条 192
9.3.2 从消息认证码到数字签名 193
9.3.3 签名的生成和验证 194
9.3.4 公钥密码与数字签名 195
9.4 数字签名的方法 197
9.4.1 直接对消息签名的方法 197
9.4.2 对消息的散列值签名的方法 199
9.5 对数字签名的疑问 202
9.5.1 密文为什么能作为签名使用 202
9.5.2 数字签名不能保证机密性吗 202
9.5.3 这种签名可以随意复制吗 203
9.5.4 消息内容会不会被任意修改 203
9.5.5 签名会不会被重复使用 204
9.5.6 删除签名也无法“作废合同”吗 204
9.5.7 如何防止否认 205
9.5.8 数字签名真的能够代替签名吗 205
9.6 数字签名的应用实例 206
9.6.1 安全信息公告 206
9.6.2 软件下载 207
9.6.3 公钥证书 208
9.6.4 SSL/TLS 208
9.7 通过RSA实现数字签名 208
9.7.1 用RSA生成签名 208
9.7.2 用RSA验证签名 209
9.7.3 具体实践一下吧 209
9.8 其他的数字签名 210
9.8.1 ElGamal方式 210
9.8.2 DSA 210
9.8.3 Rabin方式 211
9.9 对数字签名的攻击 211
9.9.1 中间人攻击 211
9.9.2 对单向散列函数的攻击 212
9.9.3 利用数字签名攻击公钥密码 212
9.9.4 其他攻击 213
9.10 各种密码技术的对比 213
9.10.1 消息认证码与数字签名 213
9.10.2 混合密码系统与对散列值签名 214
9.11 数字签名无法解决的问题 214
9.12 本章小结 215
9.13 小测验的答案 216
第10章 证书——为公钥加上数字签名 217
10.1 本章学习的内容 218
10.2 证书 218
10.2.1 什么是证书 218
10.2.2 证书的应用场景 218
10.3 实际生成一张证书 221
10.3.1 VeriSign的免费试用服务 221
10.3.2 生成证书 221
10.3.3 将证书从Web浏览器中导出 224
10.3.4 证书的内容 224
10.3.5 证书标准规范X.509 224
10.4 公钥基础设施(PKI) 228
10.4.1 什么是公钥基础设施 228
10.4.2 PKI的组成要素 228
10.4.3 认证机构的工作 230
10.4.4 证书的层级结构 231
10.4.5 各种各样的PKI 233
10.5 对证书的攻击 234
10.5.1 在公钥注册之前进行攻击 234
10.5.2 注册相似人名进行攻击 234
10.5.3 窃取认证机构的私钥进行攻击 235
10.5.4 攻击者伪装成认证机构进行攻击 235
10.5.5 钻CRL的空子进行攻击(1) 236
10.5.6 钻CRL的空子进行攻击(2) 237
10.6 关于证书的Q&A 238
10.6.1 为什么需要证书 238
10.6.2 通过自己的方法进行认证是不是更安全 239
10.6.3 为什么要相信认证机构 240
10.7 本章小结 241
10.8 小测验的答案 242
第3部分 密钥、随机数与应用技术 243
第11章 密钥——秘密的精华 245
11.1 本章学习的内容 246
11.2 什么是密钥 246
11.2.1 密钥就是一个巨大的数字 246
11.2.2 密钥与明文是等价的 248
11.2.3 密码算法与密钥 248
11.3 各种不同的密钥 248
11.3.1 对称密码的密钥与公钥密码的密钥 248
11.3.2 消息认证码的密钥与数字签名的密钥 249
11.3.3 用于确保机密性的密钥与用于认证的密钥 250
11.3.4 会话密钥与主密钥 251
11.3.5 用于加密内容的密钥与用于加密密钥的密钥 252
11.4 密钥的管理 252
11.4.1 生成密钥 252
11.4.2 配送密钥 253
11.4.3 更新密钥 253
11.4.4 保存密钥 254
11.4.5 作废密钥 256
11.5 Diffie-Hellman密钥交换 256
11.5.1 什么是Diffie-Hellman密钥交换 256
11.5.2 Diffie-Hellman密钥交换的步骤 257
11.5.3 Eve能计算出密钥吗 259
11.5.4 生成元的意义 259
11.5.5 具体实践一下 260
11.6 基于口令的密码(PBE) 262
11.6.1 什么是基于口令的密码 262
11.6.2 PBE加密 263
11.6.3 PBE解密 264
11.6.4 盐的作用 266
11.6.5 口令的作用 266
11.6.6 PBE的改良 267
11.7 如何生成安全的口令 268
11.7.1 使用只有自己才能知道的信息 268
11.7.2 将多个不同的口令分开使用 269
11.7.3 有效利用笔记 269
11.7.4 理解口令的局限性 269
11.8 本章小结 270
11.9 小测验的答案 271
第12章 随机数——不可预测性的源泉 273
12.1 骡子的锁匠铺 274
12.2 本章学习的内容 274
12.3 使用随机数的密码技术 274
12.3.1 随机数是干什么用的 274
12.4 随机数的性质 275
12.4.1 对随机数的性质进行分类 275
12.4.2 随机性 276
12.4.3 不可预测性 277
12.4.4 不可重现性 277
12.5 伪随机数生成器 278
12.5.1 伪随机数生成器的结构 278
12.6 具体的伪随机数生成器 280
12.6.1 杂乱的方法 280
12.6.2 线性同余法 280
12.6.3 单向散列函数法 283
12.6.4 密码法 286
12.6.5 ANSI X9.17 287
12.7 对伪随机数生成器的攻击 290
12.7.1 对种子进行攻击 290
12.7.2 对随机数池进行攻击 290
12.8 本章小结 290
12.9 小测验的答案 291
第13章 PGP ——密码技术的完美组合 293
13.1 本章学习的内容 294
13.2 PGP简介 294
13.2.1 什么是PGP 294
13.2.2 PGP的功能 295
13.3 生成密钥对 297
13.4 加密与解密 299
13.4.1 加密 299
13.4.2 解密 301
13.5 生成和验证数字签名 304
13.5.1 生成数字签名 304
13.5.2 验证数字签名 306
13.6 生成数字签名并加密以及解密并验证数字签名 309
13.6.1 生成数字签名并加密 309
13.6.2 解密并验证数字签名 309
13.7 信任网 313
13.7.1 公钥合法性 313
13.7.2 场景1:通过自己的数字签名进行确认 313
13.7.3 场景2:通过自己完全信任的人的数字签名进行确认 314
13.7.4 场景3:通过自己有限信任的多个人的数字签名进行确认 315
13.7.5 公钥合法性与所有者信任是不同的 316
13.7.6 所有者信任级别是因人而异的 316
13.8 本章小结 318
13.9 小测验的答案 318
第14章 SSL/TLS ——为了更安全的通信 321
14.1 本章学习的内容 322
14.2 什么是SSL/TLS 322
14.2.1 Alice在Bob书店买书 322
14.2.2 客户端与服务器 323
14.2.3 用SSL/TLS承载HTTP 324
14.2.4 SSL/TLS的工作 325
14.2.5 SSL/TLS也可以保护其他的协议 326
14.2.6 密码套件 326
14.2.7 SSL与TLS的区别 327
14.3 使用SSL/TLS进行通信 327
14.3.1 层次化的协议 327
14.3.2 1 TLS记录协议 329
14.3.3 2-1 握手协议 330
14.3.4 2-2 密码规格变更协议 336
14.3.5 2-3 警告协议 337
14.3.6 2-4 应用数据协议 337
14.3.7 主密码 337
14.3.8 TLS中使用的密码技术小结 338
14.4 对SSL/TLS的攻击 339
14.4.1 对各个密码技术的攻击 339
14.4.2 对伪随机数生成器的攻击 339
14.4.3 利用证书的时间差进行攻击 340
14.5 SSL/TLS用户的注意事项 340
14.5.1 不要误解证书的含义 340
14.5.2 密码通信之前的数据是不受保护的 340
14.5.3 密码通信之后的数据是不受保护的 340
14.6 本章小结 341
14.7 小测验的答案 342
第15章 密码技术与现实社会——我们生活在不完美的安全中 .343
15.1 本章学习的内容 344
15.2 密码技术小结 344
15.2.1 密码学家的工具箱 344
15.2.2 密码与认证 346
15.2.3 密码技术的框架化 346
15.2.4 密码技术与压缩技术 346
15.3 追寻完美的密码技术 348
15.3.1 量子密码 349
15.3.2 量子计算机 350
15.3.3 哪一种技术会率先进入实用领域 350
15.4 只有完美的密码,没有完美的人 350
15.4.1 理论是完美的,现实是残酷的 351
15.4.2 防御必须天衣无缝,攻击只需突破一点 351
15.4.3 攻击实例1:经过PGP加密的电子邮件 352
15.4.4 攻击实例2:用SSL/TLS加密的信用卡号 353
15.5 本章小结 354
附录 密码技术综合测验 355
参考文献 365
【日本】图解TCPIP(第5版).[日] 竹下隆史,[日] 村山公保,[日] 荒井透,[日] 苅田幸雄 著;乌尼日其其格 译.扫描版.pdf
【日本】图解TCPIP(第5版).[日] 竹下隆史,[日] 村山公保,[日] 荒井透,[日] 苅田幸雄 著;乌尼日其其格 译.扫描版.pdf
编辑推荐
原版畅销36万册!
TCP/IP圣经级教材
268张图解轻松入门
这是一本图文并茂的网络管理技术书籍,旨在让广大读者理解TCP/IP的基本知识、掌握TCP/IP的基本技能。
《图解TCP/IP》中讲解了网络基础知识、TCP/IP基础知识、数据链路、IP协议、IP协议相关技术、TCP与UDP、路由协议、应用协议、网络安全等内容,引导读者了解和掌握TCP/IP,营造一个安全的、使用放心的网络环境。
《图解TCP/IP》适合计算机网络的开发、管理人员阅读,也可作为大专院校相关专业的教学参考书。
内容简介
《图灵程序设计丛书:图解TCP/IP(第5版)》是一本图文并茂的网络管理技术书籍,旨在让广大读者理解TCP/IP的基本知识、掌握TCP/IP的基本技能。
书中讲解了网络基础知识、TCP/IP基础知识、数据链路、IP协议、IP协议相关技术、TCP与UDP、路由协议、应用协议、网络安全等内容,引导读者了解和掌握TCP/IP,营造一个安全的、使用放心的网络环境。
《图灵程序设计丛书:图解TCP/IP(第5版)》适合计算机网络的开发、管理人员阅读,也可作为大专院校相关专业的教学参考书。
作者简介
竹下隆史,Net One Systems公司网络工程师。
村山公保,仓敷艺术科学大学产业科学技术学院信息学系教授。
荒井透,1958年生人。 Net One Systems公司网络工程师。
苅田幸雄,高能加速器研究所、计算科学中心研究员。
译者简介:
乌尼日其其格,Oracle中间件技术专家、技术顾问。精于问题诊断处理、擅长解决大型核心系统的性能故障,并拥有多项Oracle官方认证资质。
HTTP权威指南扫描版带书签.pdf
内容简介 · · · · · ·
超文本转移协议(Hypertext Transfer Protocol,HTTP)是在万维网上进行通信时所使用的协议方案。HTTP有很多应用,但最著名的是用于web浏览器和web服务器之间的双工通信。
HTTP起初是一个简单的协议,因此你可能会认为关于这个协议没有太多好 说的。但现在,你手上拿着的是却一本两磅重 的书。如果你对我们怎么会写出一本650页 的关于HTTP的书感到奇怪的话,可以去看一下目录。本书不仅仅是一本HTTP首部的参考手册;它是一本名副其实的web结构圣经。
本书中,我们尝试着将HTTP中一些互相关联且常被误解的规则梳理清楚,并编写了一系列基于各种主题的章节,对HTTP各方面的特性进行了介绍。纵观全书,我们对HTTP“为什么”这样做进行了详细的解释,而不仅仅停留在它是“怎么做”的。而且,为了节省大家寻找参考文献的时间,我们还对很多HTTP应用程序正常工作所必须的、重要的非HTTP技术进行了介绍。在组织得便于使用的附录中,可以找到按照字母排序的首部参考(这些首部构成了最常见的HTTP文本的基础)。我们希望这种概念性的设计有助于读者对HTTP的使用。
本书是为所有希望理解HTTP以及Web底层结构的人编写的。软硬件工程师也可以将本书作为HTTP及相关web技术的条理清楚的参考书使用。系统架构师和网络管理员可以通过本书更好地了解如何设计、实现并管理复杂的网络架构。性能工程师和分析人员可以从高速缓存和性能优化的相关章节中获益。市场营销和咨询专家可以通过概念的介绍更好地理解web技术的前景。
本书对一些常见的误解进行了说明,推荐了“各种使用诀窍”,提供了便捷的参考资料,并且对枯燥且令人费解的标准规范进行了可读性很强的介绍。在这本书里,我们对Web正常工作所必须且互相关联的技术进行了详细的介绍。
本书是很多对因特网技术充满热情的人经过大量工作写成的。希望对你有所帮助。
作者简介 · · · · · ·
David Gourley是Endeca的首席技术官(Chief Technology Officer),负责Endeca产品的研究及开发。Endeca开发的因特网及内部网络信息访问解决方案为企业级数据的导航及研究提供了一些新的方式。在到Endeca工作之前,David是Inktomi基础工程组的一员,他在那儿帮助开发了Inktomi的因特网搜索数据库,是Inktomi的Web缓存产品的主要开发者。
David在加州大学伯克利分校获得了计算机科学的学士学位,还拥有Web技术方面的几项专利。
Brian Totty最近出任了Inktomi公司(这是1996年他参与建立的一家公司)研发部副总裁,在公司中他负责Web缓存、流媒体及因特网搜索技术的研发工作。他曾是Silicon Graphics公司的一名科学家,他在那儿为高性能网络和超级计算机系统设计软件并对其进行优化。在那之前,他是苹果计算机公司高级技术组的一名工程师。
Brian在伊利诺伊大学Urbana-Champaign分校获得了计算机科学的博士学位,在MIT获得了计算机科学及电子工程的学士学位,在那里他获得了计算机系统研究的Organick奖。他还为加州大学扩展系统开发并讲授了一些屡获殊荣的因特网技术方面的课程。
Marjorie Sayer在Inktomi公司负责编写Web缓存方面的软件。在加州大学伯克利分校获得了数学硕士和博士学位之后,一直致力于数学课程的改革。从1990年开始致力于能量资源管理、并行系统软件、电话和网络方面的写作。
Sailu Reddy目前在Inktomi公司负责嵌入式的性能增强型HTTP 代理的开发。Sailu从事复杂软件系统的开发已经有12年了,从1995年开始深入Web架构的研发工作。他是Netscape第一台Web服务器、Web 代理产品,以及后面几代产品的核心工程师。他具备HTTP应用程序、数据压缩技术、数据库引擎以及合作管理等方面的技术经验。Sailu在亚里桑那大学获得了信息系统的硕士学位并握有Web技术方面的多项专利。
Anshu Aggarwal是Inktomi公司的工程总监。他领导着Inktomi公司Web缓存产品的协议处理工程组,从1997年就开始参与Inktomi的Web技术设计工作。Anshu在科罗拉多大学Boulder分校获得了计算机科学的硕士和博士学位,从事分布式多处理器的内存一致性技术研究。他还拥有电子工程的硕士和学士学位。Anshu撰写了多篇技术论文,还拥有两项专利。
目录 · · · · · ·
目录
第一部分 HTTP:Web 的基础
第1章 HTTP 概述 3
1.1 HTTP——因特网的多媒体信使 4
1.2 Web 客户端和服务器 4
1.3 资源 5
1.3.1 媒体类型 6
1.3.2 URI 7
1.3.3 URL 7
1.3.4 URN 8
1.4 事务 9
1.4.1 方法 9
1.4.2 状态码 10
1.4.3 Web 页面中可以包含多个对象 10
1.5 报文 11
1.6 连接 13
1.6.1 TCP/IP 13
1.6.2 连接、IP 地址及端口号 14
1.6.3 使用Telnet 实例 16
1.7 协议版本 18
1.8 Web 的结构组件 19
1.8.1 代理 19
1.8.2 缓存 20
1.8.3 网关 20
1.8.4 隧道 21
1.8.5 Agent 代理 21
1.9 起始部分的结束语 22
1.10 更多信息 22
1.10.1 HTTP 协议信息 22
1.10.2 历史透视 23
1.10.3 其他万维网信息 23
第2章 URL 与资源 25
2.1 浏览因特网资源 26
2.2 URL 的语法 28
2.2.1 方案——使用什么协议 29
2.2.2 主机与端口 30
2.2.3 用户名和密码 30
2.2.4 路径 31
2.2.5 参数 31
2.2.6 查询字符串 32
2.2.7 片段 33
2.3 URL 快捷方式 34
2.3.1 相对URL 34
2.3.2 自动扩展URL 37
2.4 各种令人头疼的字符 38
2.4.1 URL 字符集 38
2.4.2 编码机制 38
2.4.3 字符限制 39
2.4.4 另外一点说明 40
2.5 方案的世界 40
2.6 未来展望 42
2.7 更多信息 44
第3章 HTTP 报文 45
3.1 报文流 46
3.1.1 报文流入源端服务器 46
3.1.2 报文向下游流动 47
3.2 报文的组成部分 47
3.2.1 报文的语法 48
3.2.2 起始行 50
3.2.3 首部 53
3.2.4 实体的主体部分 55
3.2.5 版本0.9 的报文 55
3.3 方法 56
3.3.1 安全方法 56
3.3.2 GET 56
3.3.3 HEAD 57
3.3.4 PUT 57
3.3.5 POST 58
3.3.6 TRACE 58
3.3.7 OPTIONS 60
3.3.8 DELETE 60
3.3.9 扩展方法 61
3.4 状态码 62
3.4.1 100 ~ 199——信息性状态码 62
3.4.2 200 ~ 299——成功状态码 63
3.4.3 300 ~ 399——重定向状态码 64
3.4.4 400 ~ 499——客户端错误状态码 68
3.4.5 500 ~ 599——服务器错误状态码 69
3.5 首部 70
3.5.1 通用首部 71
3.5.2 请求首部 72
3.5.3 响应首部 74
3.5.4 实体首部 75
3.6 更多信息 77
第4章 连接管理 79
4.1 TCP 连接 80
4.1.1 TCP 的可靠数据管道 80
4.1.2 TCP 流是分段的、由IP 分组传送 81
4.1.3 保持TCP 连接的正确运行 82
4.1.4 用TCP 套接字编程 84
4.2 对TCP 性能的考虑 85
4.2.1 HTTP 事务的时延 86
4.2.2 性能聚焦区域 87
4.2.3 TCP 连接的握手时延 87
4.2.4 延迟确认 88
4.2.5 TCP 慢启动 89
4.2.6 Nagle 算法与TCP_NODELAY 89
4.2.7 TIME_WAIT 累积与端口耗尽 90
4.3 HTTP 连接的处理 91
4.3.1 常被误解的Connection 首部 91
4.3.2 串行事务处理时延 92
4.4 并行连接 94
4.4.1 并行连接可能会提高页面的加载速度 94
4.4.2 并行连接不一定更快 95
4.4.3 并行连接可能让人“感觉”更快一些 95
4.5 持久连接 96
4.5.1 持久以及并行连接 96
4.5.2 HTTP/1.0+ keep-alive 连接 97
4.5.3 Keep-Alive 操作 98
4.5.4 Keep-Alive 选项 98
4.5.5 Keep-Alive 连接的限制和规则 99
4.5.6 Keep-Alive 和哑代理 100
4.5.7 插入Proxy-Connection 102
4.5.8 HTTP/1.1 持久连接 104
4.5.9 持久连接的限制和规则 104
4.6 管道化连接 105
4.7 关闭连接的奥秘 106
4.7.1 “ 任意”解除连接 106
4.7.2 Content-Length 及截尾操作 107
4.7.3 连接关闭容限、重试以及幂等性 107
4.7.4 正常关闭连接 108
4.8 更多信息 110
4.8.1 HTTP 连接 110
4.8.2 HTTP 性能问题 110
4.8.3 TCP/IP 111
第二部分 HTTP 结构
第5章 Web 服务器 115
5.1 各种形状和尺寸的Web 服务器 116
5.1.1 Web 服务器的实现 116
5.1.2 通用软件Web 服务器 117
5.1.3 Web 服务器设备 117
5.1.4 嵌入式Web 服务器 118
5.2 最小的Perl Web 服务器 118
5.3 实际的Web 服务器会做些什么 120
5.4 第一步——接受客户端连接 121
5.4.1 处理新连接 121
5.4.2 客户端主机名识别 122
5.4.3 通过ident 确定客户端用户 122
5.5 第二步——接收请求报文 123
5.5.1 报文的内部表示法 124
5.5.2 连接的输入/ 输出处理结构 125
5.6 第三步——处理请求 126
5.7 第四步——对资源的映射及访问 126
5.7.1 docroot 127
5.7.2 目录列表 129
5.7.3 动态内容资源的映射 130
5.7.4 服务器端包含项 131
5.7.5 访问控制 131
5.8 第五步——构建响应 131
5.8.1 响应实体 131
5.8.2 MIME 类型 132
5.8.3 重定向 133
5.9 第六步——发送响应 134
5.10 第七步——记录日志 134
5.11 更多信息 134
第6章 代理 135
6.1 Web 的中间实体 136
6.1.1 私有和共享代理 136
6.1.2 代理与网关的对比 137
6.2 为什么使用代理 138
6.3 代理会去往何处 143
6.3.1 代理服务器的部署 144
6.3.2 代理的层次结构 144
6.3.3 代理是如何获取流量的 147
6.4 客户端的代理设置 148
6.4.1 客户端的代理配置:手工配置 149
6.4.2 客户端代理配置:PAC 文件 149
6.4.3 客户端代理配置:WPAD 150
6.5 与代理请求有关的一些棘手问题 151
6.5.1 代理URI 与服务器URI 的不同 151
6.5.2 与虚拟主机一样的问题 152
6.5.3 拦截代理会收到部分URI 153
6.5.4 代理既可以处理代理请求,也可以处理服务器请求 154
6.5.5 转发过程中对URI 的修改 154
6.5.6 URI 的客户端自动扩展和主机名解析 155
6.5.7 没有代理时URI 的解析 155
6.5.8 有显式代理时URI 的解析 156
6.5.9 有拦截代理时URI 的解析 157
6.6 追踪报文 158
6.6.1 Via 首部 158
6.6.2 TRACE 方法 162
6.7 代理认证 164
6 | 目录
6.8 代理的互操作性 165
6.8.1 处理代理不支持的首部和方法 166
6.8.2 OPTIONS:发现对可选特性的支持 166
6.8.3 Allow 首部 167
6.9 更多信息 167
第7章 缓存 169
7.1 冗余的数据传输 170
7.2 带宽瓶颈 170
7.3 瞬间拥塞 171
7.4 距离时延 172
7.5 命中和未命中的 173
7.5.1 再验证 173
7.5.2 命中率 175
7.5.3 字节命中率 176
7.5.4 区分命中和未命中的情况 176
7.6 缓存的拓扑结构 177
7.6.1 私有缓存 177
7.6.2 公有代理缓存 177
7.6.3 代理缓存的层次结构 179
7.6.4 网状缓存、内容路由以及对等缓存 180
7.7 缓存的处理步骤 181
7.7.1 第一步——接收 181
7.7.2 第二步——解析 182
7.7.3 第三步——查找 182
7.7.4 第四步——新鲜度检测 182
7.7.5 第五步——创建响应 182
7.7.6 第六步——发送 183
7.7.7 第七步——日志 183
7.7.8 缓存处理流程图 183
7.8 保持副本的新鲜 183
7.8.1 文档过期 184
7.8.2 过期日期和使用期 185
7.8.3 服务器再验证 185
7.8.4 用条件方法进行再验证 186
7.8.5 If-Modified-Since:Date 再验证 187
7.8.6 If-None-Match:实体标签再验证 189
7.8.7 强弱验证器 190
7.8.8 什么时候应该使用实体标签和最近修改日期 190
7.9 控制缓存的能力 191
7.9.1 no-Store 与no-Cache 响应首部 191
7.9.2 max-age 响应首部 192
7.9.3 Expires 响应首部 192
7.9.4 must-revalidate 响应首部 192
7.9.5 试探性过期 193
7.9.6 客户端的新鲜度限制 194
7.9.7 注意事项 194
7.10 设置缓存控制 195
7.10.1 控制Apache 的HTTP 首部 195
7.10.2 通过HTTP-EQUIV 控制HTML 缓存 196
7.11 详细算法 197
7.11.1 使用期和新鲜生存期 198
7.11.2 使用期的计算 198
7.11.3 完整的使用期计算算法 201
7.11.4 新鲜生存期计算 202
7.11.5 完整的服务器——新鲜度算法 202
7.12 缓存和广告 204
7.12.1 发布广告者的两难处境 204
7.12.2 发布者的响应 204
7.12.3 日志迁移 205
7.12.4 命中计数和使用限制 205
7.13 更多信息 205
第8章 集成点:网关、隧道及中继 207
8.1 网关 208
8.2 协议网关 210
8.2.1 HTTP/*:服务器端Web 网关 211
8.2.2 HTTP/HTTPS:服务器端安全网关 212
8.2.3 HTTPS/HTTP 客户端安全加速器网关 212
8.3 资源网关 213
8.3.1 CGI 215
8.3.2 服务器扩展API 215
8.4 应用程序接口和Web 服务 216
8.5 隧道 217
8.5.1 用CONNECT 建立HTTP 隧道 217
8.5.2 数据隧道、定时及连接管理 219
8.5.3 SSL 隧道 219
8.5.4 SSL 隧道与HTTP/HTTPS 网关的对比 220
8.5.5 隧道认证 221
8.5.6 隧道的安全性考虑 221
8.6 中继 222
8.7 更多信息 224
第9章 Web 机器人 225
9.1 爬虫及爬行方式 226
9.1.1 从哪儿开始:根集 226
9.1.2 链接的提取以及相对链接的标准化 227
9.1.3 避免环路的出现 228
9.1.4 循环与复制 228
9.1.5 面包屑留下的痕迹 229
9.1.6 别名与机器人环路 230
9.1.7 规范化URL 230
9.1.8 文件系统连接环路 231
9.1.9 动态虚拟Web 空间 232
9.1.10 避免循环和重复 233
9.2 机器人的HTTP 236
9.2.1 识别请求首部 236
9.2.2 虚拟主机 236
9.2.3 条件请求 237
9.2.4 对响应的处理 238
9.2.5 User-Agent 导向 239
9.3 行为不当的机器人 239
9.4 拒绝机器人访问 240
9.4.1 拒绝机器人访问标准 241
9.4.2 Web 站点和robots.txt 文件 242
9.4.3 robots.txt 文件的格式 243
9.4.4 其他有关robots.txt 的知识 246
9.4.5 缓存和robots.txt 的过期 246
9.4.6 拒绝机器人访问的Perl 代码 246
9.4.7 HTML 的robot-control 元标签 249
9.5 机器人的规范 251
9.6 搜索引擎 254
9.6.1 大格局 255
9.6.2 现代搜索引擎结构 255
9.6.3 全文索引 255
9.6.4 发布查询请求 257
9.6.5 对结果进行排序,并提供查询结果 258
9.6.6 欺诈 258
9.7 更多信息 258
第10章 HTTP-NG 261
10.1 HTTP 发展中存在的问题 262
10.2 HTTP-NG 的活动 263
10.3 模块化及功能增强 263
10.4 分布式对象 264
10.5 第一层——报文传输 264
10.6 第二层——远程调用 265
10.7 第三层——Web 应用 265
10.8 WebMUX 265
10.9 二进制连接协议 266
10.10 当前的状态 267
10.11 更多信息 267
第三部分 识别、认证与安全
第11章 客户端识别与cookie 机制 271
11.1 个性化接触 272
11.2 HTTP 首部 273
11.3 客户端IP 地址 274
11.4 用户登录 275
11.5 胖URL 277
11.6 cookie 278
11.6.1 cookie 的类型 278
11.6.2 cookie 是如何工作的 279
11.6.3 cookie 罐:客户端的状态 280
11.6.4 不同站点使用不同的cookie 282
11.6.5 cookie 成分 283
11.6.6 cookies 版本0(Netscape) 284
11.6.7 cookies 版本1(RFC 2965) 285
11.6.8 cookie 与会话跟踪 288
11.6.9 cookie 与缓存 290
11.6.10 cookie、安全性和隐私 291
11.7 更多信息 292
第12章 基本认证机制 293
12.1 认证 294
12.1.1 HTTP 的质询/ 响应认证框架 294
12.1.2 认证协议与首部 295
12.1.3 安全域 296
12.2 基本认证 297
12.2.1 基本认证实例 298
12.2.2 Base-64 用户名/ 密码编码 298
12.2.3 代理认证 299
12.3 基本认证的安全缺陷 300
12.4 更多信息 301
第13章 摘要认证 303
13.1 摘要认证的改进 304
13.1.1 用摘要保护密码 304
13.1.2 单向摘要 306
13.1.3 用随机数防止重放攻击 307
13.1.4 摘要认证的握手机制 307
13.2 摘要的计算 308
13.2.1 摘要算法的输入数据 308
13.2.2 算法H(d) 和KD(s,d) 310
13.2.3 与安全性相关的数据(A1) 310
13.2.4 与报文有关的数据(A2) 310
13.2.5 摘要算法总述 311
13.2.6 摘要认证会话 312
13.2.7 预授权 312
13.2.8 随机数的选择 315
13.2.9 对称认证 315
13.3 增强保护质量 316
13.3.1 报文完整性保护 316
13.3.2 摘要认证首部 317
13.4 应该考虑的实际问题 317
13.4.1 多重质询 318
13.4.2 差错处理 318
13.4.3 保护空间 318
13.4.4 重写URI 319
13.4.5 缓存 319
13.5 安全性考虑 320
13.5.1 首部篡改 320
13.5.2 重放攻击 320
13.5.3 多重认证机制 320
13.5.4 词典攻击 321
13.5.5 恶意代理攻击和中间人攻击 321
13.5.6 选择明文攻击 321
13.5.7 存储密码 322
13.6 更多信息 322
第14章 安全HTTP 323
14.1 保护HTTP 的安全 324
14.2 数字加密 326
14.2.1 密码编制的机制与技巧 326
14.2.2 密码 327
14.2.3 密码机 328
14.2.4 使用了密钥的密码 328
14.2.5 数字密码 328
14.3 对称密钥加密技术 330
14.3.1 密钥长度与枚举攻击 330
14.3.2 建立共享密钥 332
14.4 公开密钥加密技术 332
14.4.1 RSA 333
14.4.2 混合加密系统和会话密钥 334
14.5 数字签名 334
14.6 数字证书 336
14.6.1 证书的主要内容 336
14.6.2 X.509 v3 证书 337
14.6.3 用证书对服务器进行认证 338
14.7 HTTPS——细节介绍 339
14.7.1 HTTPS 概述 339
14.7.2 HTTPS 方案 340
14.7.3 建立安全传输 341
14.7.4 SSL 握手 341
14.7.5 服务器证书 343
14.7.6 站点证书的有效性 344
14.7.7 虚拟主机与证书 345
14.8 HTTPS 客户端实例 345
14.8.1 OpenSSL 346
14.8.2 简单的HTTPS 客户端 347
14.8.3 执行OpenSSL 客户端 350
14.9 通过代理以隧道形式传输安全流量 351
14.10 更多信息 353
14.10.1 HTTP 安全性 353
14.10.2 SSL 与TLS 353
14.10.3 公开密钥基础设施 354
14.10.4 数字密码 354
第四部分 实体、编码和国际化
第15章 实体和编码 357
15.1 报文是箱子,实体是货物 359
15.2 Content-Length: 实体的大小 361
15.2.1 检测截尾 361
15.2.2 错误的Content-Length 362
15.2.3 Content-Length 与持久连接 362
15.2.4 内容编码 362
15.2.5 确定实体主体长度的规则 362
15.3 实体摘要 364
15.4 媒体类型和字符集 364
15.4.1 文本的字符编码 365
15.4.2 多部分媒体类型 365
15.4.3 多部分表格提交 366
15.4.4 多部分范围响应 367
15.5 内容编码 368
15.5.1 内容编码过程 368
15.5.2 内容编码类型 369
15.5.3 Accept-Encoding 首部 369
15.6 传输编码和分块编码 371
15.6.1 可靠传输 371
15.6.2 Transfer-Encoding 首部 372
15.6.3 分块编码 373
15.6.4 内容编码与传输编码的结合 375
15.6.5 传输编码的规则 375
15.7 随时间变化的实例 375
15.8 验证码和新鲜度 376
15.8.1 新鲜度 377
15.8.2 有条件的请求与验证码 378
15.9 范围请求 380
15.10 差异编码 382
15.11 更多信息 385
第16章 国际化 387
16.1 HTTP 对国际性内容的支持 388
16.2 字符集与HTTP 389
16.2.1 字符集是把字符转换为二进制码的编码 389
16.2.2 字符集和编码如何工作 390
16.2.3 字符集不对,字符就不对 391
16.2.4 标准化的MIME charset 值 391
16.2.5 Content-Type 首部和Charset 首部以及META 标志 393
16.2.6 Accept-Charset 首部 393
16.3 多语言字符编码入门 394
16.3.1 字符集术语 394
16.3.2 字符集的命名很糟糕 395
16.3.3 字符 396
16.3.4 字形、连笔以及表示形式 396
16.3.5 编码后的字符集 397
16.3.6 字符编码方案 399
16.4 语言标记与HTTP 402
16.4.1 Content-Language 首部 402
16.4.2 Accept-Language 首部 403
16.4.3 语言标记的类型 404
16.4.4 子标记 404
16.4.5 大小写 405
16.4.6 IANA 语言标记注册 405
16.4.7 第一个子标记——名字空间 405
16.4.8 第二个子标记——名字空间 406
16.4.9 其余子标记——名字空间 407
16.4.10 配置和语言有关的首选项 407
16.4.11 语言标记参考表 407
16.5 国际化的URI 408
16.5.1 全球性的可转抄能力与有意义的字符的较量 408
16.5.2 URI 字符集合 408
16.5.3 转义和反转义 409
16.5.4 转义国际化字符 409
16.5.5 URI 中的模态切换 410
16.6 其他需要考虑的地方 410
16.6.1 首部和不合规范的数据 410
16.6.2 日期 411
16.6.3 域名 411
16.7 更多信息 411
16.7.1 附录 411
16.7.2 互联网的国际化 411
16.7.3 国际标准 412
第17章 内容协商与转码 413
17.1 内容协商技术 414
17.2 客户端驱动的协商 415
17.3 服务器驱动的协商 415
17.3.1 内容协商首部集 416
17.3.2 内容协商首部中的质量值 417
17.3.3 随其他首部集而变化 417
17.3.4 Apache 中的内容协商 417
17.3.5 服务器端扩展 418
17.4 透明协商 419
17.4.1 进行缓存与备用候选 419
17.4.2 Vary 首部 420
17.5 转码 422
17.5.1 格式转换 422
17.5.2 信息综合 423
17.5.3 内容注入 423
17.5.4 转码与静态预生成的对比 423
17.6 下一步计划 424
17.7 更多信息 424
第五部分 内容发布与分发
第18章 Web 主机托管 429
18.1 主机托管服务 430
18.2 虚拟主机托管 431
18.2.1 虚拟服务器请求缺乏主机信息 432
18.2.2 设法让虚拟主机托管正常工作 433
18.2.3 HTTP/1.1 的Host 首部 437
18.3 使网站更可靠 438
18.3.1 镜像的服务器集群 438
18.3.2 内容分发网络 440
18.3.3 CDN 中的反向代理缓存 440
18.3.4 CDN 中的代理缓存 440
18.4 让网站更快 441
18.5 更多信息 441
第19章 发布系统 443
19.1 FrontPage 为支持发布而做的服务器扩展 444
19.1.1 FrontPage 服务器扩展 444
19.1.2 FrontPage 术语表 445
19.1.3 FrontPage 的RPC 协议 445
19.1.4 FrontPage 的安全模型 448
19.2 WebDAV 与协作写作 449
19.2.1 WebDAV 的方法 449
19.2.2 WebDAV 与XML 450
19.2.3 WebDAV 首部集 451
19.2.4 WebDAV 的锁定与防止覆写 452
19.2.5 LOCK 方法 453
19.2.6 UNLOCK 方法 456
19.2.7 属性和元数据 456
19.2.8 PROPFIND 方法 457
19.2.9 PROPPATCH 方法 459
19.2.10 集合与名字空间管理 460
19.2.11 MKCOL 方法 460
19.2.12 DELETE 方法 461
19.2.13 COPY 与MOVE 方法 462
19.2.14 增强的HTTP/1.1 方法 465
19.2.15 WebDAV 中的版本管理 466
19.2.16 WebDAV 的未来发展 466
19.3 更多信息 467
第20章 重定向与负载均衡 469
20.1 为什么要重定向 470
20.2 重定向到何地 471
20.3 重定向协议概览 471
20.4 通用的重定向方法 474
20.4.1 HTTP 重定向 474
20.4.2 DNS 重定向 475
20.4.3 任播寻址 480
20.4.4 IP MAC 转发 481
20.4.5 IP 地址转发 482
20.4.6 网元控制协议 484
20.5 代理的重定向方法 485
20.5.1 显式浏览器配置 485
20.5.2 代理自动配置 485
20.5.3 Web 代理自动发现协议 487
20.6 缓存重定向方法 492
20.7 因特网缓存协议 496
20.8 缓存阵列路由协议 497
20.9 超文本缓存协议 500
20.9.1 HTCP 认证 502
20.9.2 设置缓存策略 503
20.10 更多信息 504
第21章 日志记录与使用情况跟踪 505
21.1 记录内容 506
21.2 日志格式 507
21.2.1 常见日志格式 507
21.2.2 组合日志格式 508
21.2.3 网景扩展日志格式 509
21.2.4 网景扩展2 日志格式 510
21.2.5 Squid 代理日志格式 512
21.3 命中率测量 515
21.3.1 概述 515
21.3.2 Meter 首部 516
21.4 关于隐私的考虑 517
21.5 更多信息 518
第六部分 附 录
附录A URI 方案 521
附录B HTTP 状态码 529
附录C HTTP 首部参考 533
附录D MIME 类型 557
附录E Base-64 编码 603
附录F 摘要认证 607
附录G 语言标记 615
附录H MIME 字符集注册表 641
索引 661
图解HTTP 黑白印刷 [(日)上野宣著][人民邮电出版社][2014.05][250页]扫描版带书签.pdf
172张图解轻松入门;
从基础知识到全新动向,一本书掌握HTTP协议;
Web前端开发者必备,从基础知识到全新动向一网打尽。
《图灵程序设计丛书:图解HTTP》对互联网基盘——HTTP协议进行了全面系统的介绍。作者由HTTP协议的发展历史娓娓道来,严谨细致地剖析了HTTP协议的结构,列举诸多常见通信场景及实战案例,最后延伸到Web安全、全新技术动向等方面。《图解HTTP》的特色为在讲解的同时,辅以大量生动形象的通信图例,更好地帮助读者深刻理解HTTP通信过程中客户端与服务器之间的交互情况。读者可通过《图灵程序设计丛书:图解HTTP》快速了解并掌握HTTP协议的基础,前端工程师分析抓包数据,后端工程师实现REST API、实现自己的HTTP服务器等过程中所需的HTTP相关知识点本书均有介绍。
《图灵程序设计丛书:图解HTTP》适合Web开发工程师,以及对HTTP协议感兴趣的各层次读者。
上野·宣 ,OWASP 日本分会会长,TRICORDER株式会社董事长。
主要从事安全咨询、风险评估、信息安全教育等工作。著有《今晚我们一起学习邮件协议》(今夜わかるメールプロトコル)、《今晚我们一起学习TCP/IP》(今夜わかるTCP/IP)、《今晚我们一起学习HTTP》(今夜わかるHTTP)。担任The Tangled Web:A Guide to Securing Modern Web Application日文版的审校工作。
于均良(译者),上海交通大学硕士,高级软件工程师,马拉松跑者,四点网创始人。
目录
第1章 了解Web及网络基础
1.1 使用HTTP协议访问Web
1.2 HTTP的诞生
1.2.1 为知识共享而规划Web
1.2.2 Web成长时代
1.2.3 驻足不前的HTTP
1.3 网络基础TCP/IP
1.3.1 TCP/IP协议族
1.3.2 TCP/IP的分层管理
1.3.3 TCP/IP通信传输流
1.4 与HTTP关系密切的协议:IP、TCP和DNS
1.4.1 负责传输的IP协议
1.4.2 确保可靠性的TCP协议
1.5 负责域名解析的DNS服务
1.6 各种协议与HTTP协议的关系
1.7 URI和URL
1.7.1 统一资源标识符
1.7.2 URI格式
第2章 简单的HTTP协议
2.1 HTTP协议用于客户端和服务器端之间的通信
2.2 通过请求和响应的交换达成通信
2.3 HTTP是不保存状态的协议
2.4 请求URI定位资源
2.5 告知服务器意图的HTTP方法
2.6 使用方法下达命令
2.7 持久连接节省通信量
2.7.1 持久连接
2.7.2 管线化
2.8 使用Cookie的状态管理
第3章 HTTP报文内的HTTP信息
3.1 HTTP报文
3.2 请求报文及响应报文的结构
3.3 编码提升传输速率
3.3.1 报文主体和实体主体的差异
3.3.2 压缩传输的内容编码
3.3.3 分割发送的分块传输编码
3.4 发送多种数据的多部分对象集合
3.5 获取部分内容的范围请求
3.6 内容协商返回最合适的内容
第4章 返回结果的HTTP状态码
4.1 状态码告知从服务器端返回的请求结果
4.2 2XX成功
4.2.1 200 OK
4.2.2 204 No Content
4.2.3 206 Partial Content
4.3 3XX重定向
4.3.1 301 Moved Permanently
4.3.2 302 Found
4.3.3 303 See Other
4.3.4 304 Not Modified
4.3.5 307 Temporary Redirect
4.4 4XX客户端错误
4.4.1 400 Bad Request
4.4.2 401 Unauthorized
4.4.3 403 Forbidden
4.4.4 404 Not Found
4.5 5XX服务器错误
4.5.1 500 Internal Server Error
4.5.2 503 Service Unavailable
第5章 与HTTP协作的Web服务器
5.1 用单台虚拟主机实现多个域名
5.2 通信数据转发程序:代理、网关、隧道
5.2.1 代理
5.2.2 网关
5.2.3 隧道
5.3 保存资源的缓存
5.3.1 缓存的有效期限
5.3.2 客户端的缓存
第6章 HTTP首部
6.1 HTTP报文首部
6.2 HTTP首部字段
6.2.1 HTTP首部字段传递重要信息
6.2.2 HTTP首部字段结构
6.2.3 4种HTTP首部字段类型
6.2.4 HTTP/1.1首部字段一览
6.2.5 非HTTP/1.1首部字段
6.2.6 End-to-end首部和Hop-by-hop首部
6.3 HTTP/1.1通用首部字段
6.3.1 Cache-Control
6.3.2 Connection
6.3.3 Date
6.3.4 Pragma
6.3.5 Trailer
6.3.6 Transfer-Encoding
6.3.7 Upgrade
6.3.8 Via
6.3.9 Warning
6.4 请求首部字段
6.4.1 Accept
6.4.2 Accept-Charset
6.4.3 Accept-Encoding
6.4.4 Accept-Language
6.4.5 Authorization
6.4.6 Expect
6.4.7 From
6.4.8 Host
6.4.9 If-Match
6.4.10 If-Modified-Since
6.4.11 If-None-Match
6.4.12 If-Range
6.4.13 If-Unmodified-Since
6.4.14 Max-Forwards
6.4.15 Proxy-Authorization
6.4.16 Range
6.4.17 Referer
6.4.18 TE
6.4.19 User-Agent
6.5 响应首部字段
6.5.1 Accept-Ranges
6.5.2 Age
6.5.3 ETag
6.5.4 Location
6.5.5 Proxy-Authenticate
6.5.6 Retry-After
6.5.7 Server
6.5.8 Vary
6.5.9 WWW-Authenticate
6.6 实体首部字段
6.6.1 Allow
6.6.2 Content-Encoding
6.6.3 Content-Language
6.6.4 Content-Length
6.6.5 Content-Location
6.6.6 Content-MD
6.6.7 Content-Range
6.6.8 Content-Type
6.6.9 Expires
6.6.10 Last-Modified
6.7 为Cookie服务的首部字段
6.7.1 Set-Cookie
6.7.2 Cookie
6.8 其他首部字段
6.8.1 X-Frame-Options
6.8.2 X-XSS-Protection
6.8.3 DNT
6.8.4 P3P
第7章 确保Web安全的HTTPS
7.1 HTTP的缺点
7.1.1 通信使用明文可能会被窃听
7.1.2 不验证通信方的身份就可能遭遇伪装
7.1.3 无法证明报文完整性,可能已遭篡改
7.2 HTTP+加密+认证+完整性保护=HTTPS
7.2.1 HTTP加上加密处理和认证以及完整性保护后即是HTTPS
7.2.2 HTTPS是身披SSL外壳的HTTP
7.2.3 相互交换密钥的公开密钥加密技术
7.2.4 证明公开密钥正确性的证书
7.2.5 HTTPS的安全通信机制
第8章 确认访问用户身份的认证
8.1 何为认证
8.2 BASIC认证
8.3 DIGEST认证
8.4 SSL客户端认证
8.4.1 SSL客户端认证的认证步骤
8.4.2 SSL客户端认证采用双因素认证
8.4.3 SSL客户端认证必要的费用
8.5 基于表单认证
8.5.1 认证多半为基于表单认证
8.5.2 Session管理及Cookie应用
第9章 基于HTTP的功能追加协议
9.1 基于HTTP的协议
9.2 消除HTTP瓶颈的SPDY
9.2.1 HTTP的瓶颈
9.2.2 SPDY的设计与功能
9.2.3 SPDY消除Web瓶颈了吗
9.3 使用浏览器进行全双工通信的WebSocket
9.3.1 WebSocket的设计与功能
9.3.2 WebSocket协议
9.4 期盼已久的HTTP/2.
9.5 Web服务器管理文件的WebDAV
9.5.1 扩展HTTP/1.1的WebDAV
9.5.2 WebDAV内新增的方法及状态码
第10章 构建Web内容的技术
10.1 HTML
10.1.1 Web页面几乎全由HTML构建
10.1.2 HTML的版本
10.1.3 设计应用CSS
10.2 动态HTML
10.2.1 让Web页面动起来的动态HTML
10.2.2 更易控制HTML的DOM
10.3 Web应用
10.3.1 通过Web提供功能的Web应用
10.3.2 与Web服务器及程序协作的CGI
10.3.3 因Java而普及的Servlet
10.4 数据发布的格式及语言
10.4.1 可扩展标记语言
10.4.2 发布更新信息的RSS/Atom
10.4.3 JavaScript衍生的轻量级易用JSON
第11章 Web的攻击技术
11.1 针对Web的攻击技术
11.1.1 HTTP不具备必要的安全功能
11.1.2 在客户端即可篡改请求
11.1.3 针对Web应用的攻击模式
11.2 因输出值转义不完全引发的安全漏洞
11.2.1 跨站脚本攻击
11.2.2 SQL注入攻击
11.2.3 OS命令注入攻击
11.2.4 HTTP首部注入攻击
11.2.5 邮件首部注入攻击
11.2.6 目录遍历攻击
11.2.7 远程文件包含漏洞
11.3 因设置或设计上的缺陷引发的安全漏洞
11.3.1 强制浏览
11.3.2 不正确的错误消息处理
11.3.3 开放重定向
11.4 因会话管理疏忽引发的安全漏洞
11.4.1 会话劫持
11.4.2 会话固定攻击
11.4.3 跨站点请求伪造
11.5 其他安全漏洞
11.5.1 密码破解
11.5.2 点击劫持
11.5.3 DoS攻击
11.5.4 后门程序
《图解HTTP》完整彩色(文字编排版本)超清晰带书签版 .pdf
编辑推荐
172张图解轻松入门;
从基础知识到全新动向,一本书掌握HTTP协议;
Web前端开发者必备,从基础知识到全新动向一网打尽。
内容简介
《图灵程序设计丛书:图解HTTP》对互联网基盘——HTTP协议进行了全面系统的介绍。作者由HTTP协议的发展历史娓娓道来,严谨细致地剖析了HTTP协议的结构,列举诸多常见通信场景及实战案例,最后延伸到Web安全、全新技术动向等方面。《图解HTTP》的特色为在讲解的同时,辅以大量生动形象的通信图例,更好地帮助读者深刻理解HTTP通信过程中客户端与服务器之间的交互情况。读者可通过《图灵程序设计丛书:图解HTTP》快速了解并掌握HTTP协议的基础,前端工程师分析抓包数据,后端工程师实现REST API、实现自己的HTTP服务器等过程中所需的HTTP相关知识点本书均有介绍。
《图灵程序设计丛书:图解HTTP》适合Web开发工程师,以及对HTTP协议感兴趣的各层次读者。
作者简介
上野·宣 ,OWASP 日本分会会长,TRICORDER株式会社董事长。
主要从事安全咨询、风险评估、信息安全教育等工作。著有《今晚我们一起学习邮件协议》(今夜わかるメールプロトコル)、《今晚我们一起学习TCP/IP》(今夜わかるTCP/IP)、《今晚我们一起学习HTTP》(今夜わかるHTTP)。担任The Tangled Web:A Guide to Securing Modern Web Application日文版的审校工作。
于均良(译者),上海交通大学硕士,高级软件工程师,马拉松跑者,四点网创始人。
目录
第1章 了解Web及网络基础
1.1 使用HTTP协议访问Web
1.2 HTTP的诞生
1.2.1 为知识共享而规划Web
1.2.2 Web成长时代
1.2.3 驻足不前的HTTP
1.3 网络基础TCP/IP
1.3.1 TCP/IP协议族
1.3.2 TCP/IP的分层管理
1.3.3 TCP/IP通信传输流
1.4 与HTTP关系密切的协议:IP、TCP和DNS
1.4.1 负责传输的IP协议
1.4.2 确保可靠性的TCP协议
1.5 负责域名解析的DNS服务
1.6 各种协议与HTTP协议的关系
1.7 URI和URL
1.7.1 统一资源标识符
1.7.2 URI格式
第2章 简单的HTTP协议
2.1 HTTP协议用于客户端和服务器端之间的通信
2.2 通过请求和响应的交换达成通信
2.3 HTTP是不保存状态的协议
2.4 请求URI定位资源
2.5 告知服务器意图的HTTP方法
2.6 使用方法下达命令
2.7 持久连接节省通信量
2.7.1 持久连接
2.7.2 管线化
2.8 使用Cookie的状态管理
第3章 HTTP报文内的HTTP信息
3.1 HTTP报文
3.2 请求报文及响应报文的结构
3.3 编码提升传输速率
3.3.1 报文主体和实体主体的差异
3.3.2 压缩传输的内容编码
3.3.3 分割发送的分块传输编码
3.4 发送多种数据的多部分对象集合
3.5 获取部分内容的范围请求
3.6 内容协商返回最合适的内容
第4章 返回结果的HTTP状态码
4.1 状态码告知从服务器端返回的请求结果
4.2 2XX成功
4.2.1 200 OK
4.2.2 204 No Content
4.2.3 206 Partial Content
4.3 3XX重定向
4.3.1 301 Moved Permanently
4.3.2 302 Found
4.3.3 303 See Other
4.3.4 304 Not Modified
4.3.5 307 Temporary Redirect
4.4 4XX客户端错误
4.4.1 400 Bad Request
4.4.2 401 Unauthorized
4.4.3 403 Forbidden
4.4.4 404 Not Found
4.5 5XX服务器错误
4.5.1 500 Internal Server Error
4.5.2 503 Service Unavailable
第5章 与HTTP协作的Web服务器
5.1 用单台虚拟主机实现多个域名
5.2 通信数据转发程序:代理、网关、隧道
5.2.1 代理
5.2.2 网关
5.2.3 隧道
5.3 保存资源的缓存
5.3.1 缓存的有效期限
5.3.2 客户端的缓存
第6章 HTTP首部
6.1 HTTP报文首部
6.2 HTTP首部字段
6.2.1 HTTP首部字段传递重要信息
6.2.2 HTTP首部字段结构
6.2.3 4种HTTP首部字段类型
6.2.4 HTTP/1.1首部字段一览
6.2.5 非HTTP/1.1首部字段
6.2.6 End-to-end首部和Hop-by-hop首部
6.3 HTTP/1.1通用首部字段
6.3.1 Cache-Control
6.3.2 Connection
6.3.3 Date
6.3.4 Pragma
6.3.5 Trailer
6.3.6 Transfer-Encoding
6.3.7 Upgrade
6.3.8 Via
6.3.9 Warning
6.4 请求首部字段
6.4.1 Accept
6.4.2 Accept-Charset
6.4.3 Accept-Encoding
6.4.4 Accept-Language
6.4.5 Authorization
6.4.6 Expect
6.4.7 From
6.4.8 Host
6.4.9 If-Match
6.4.10 If-Modified-Since
6.4.11 If-None-Match
6.4.12 If-Range
6.4.13 If-Unmodified-Since
6.4.14 Max-Forwards
6.4.15 Proxy-Authorization
6.4.16 Range
6.4.17 Referer
6.4.18 TE
6.4.19 User-Agent
6.5 响应首部字段
6.5.1 Accept-Ranges
6.5.2 Age
6.5.3 ETag
6.5.4 Location
6.5.5 Proxy-Authenticate
6.5.6 Retry-After
6.5.7 Server
6.5.8 Vary
6.5.9 WWW-Authenticate
6.6 实体首部字段
6.6.1 Allow
6.6.2 Content-Encoding
6.6.3 Content-Language
6.6.4 Content-Length
6.6.5 Content-Location
6.6.6 Content-MD
6.6.7 Content-Range
6.6.8 Content-Type
6.6.9 Expires
6.6.10 Last-Modified
6.7 为Cookie服务的首部字段
6.7.1 Set-Cookie
6.7.2 Cookie
6.8 其他首部字段
6.8.1 X-Frame-Options
6.8.2 X-XSS-Protection
6.8.3 DNT
6.8.4 P3P
第7章 确保Web安全的HTTPS
7.1 HTTP的缺点
7.1.1 通信使用明文可能会被窃听
7.1.2 不验证通信方的身份就可能遭遇伪装
7.1.3 无法证明报文完整性,可能已遭篡改
7.2 HTTP+加密+认证+完整性保护=HTTPS
7.2.1 HTTP加上加密处理和认证以及完整性保护后即是HTTPS
7.2.2 HTTPS是身披SSL外壳的HTTP
7.2.3 相互交换密钥的公开密钥加密技术
7.2.4 证明公开密钥正确性的证书
7.2.5 HTTPS的安全通信机制
第8章 确认访问用户身份的认证
8.1 何为认证
8.2 BASIC认证
8.3 DIGEST认证
8.4 SSL客户端认证
8.4.1 SSL客户端认证的认证步骤
8.4.2 SSL客户端认证采用双因素认证
8.4.3 SSL客户端认证必要的费用
8.5 基于表单认证
8.5.1 认证多半为基于表单认证
8.5.2 Session管理及Cookie应用
第9章 基于HTTP的功能追加协议
9.1 基于HTTP的协议
9.2 消除HTTP瓶颈的SPDY
9.2.1 HTTP的瓶颈
9.2.2 SPDY的设计与功能
9.2.3 SPDY消除Web瓶颈了吗
9.3 使用浏览器进行全双工通信的WebSocket
9.3.1 WebSocket的设计与功能
9.3.2 WebSocket协议
9.4 期盼已久的HTTP/2.
9.5 Web服务器管理文件的WebDAV
9.5.1 扩展HTTP/1.1的WebDAV
9.5.2 WebDAV内新增的方法及状态码
第10章 构建Web内容的技术
10.1 HTML
10.1.1 Web页面几乎全由HTML构建
10.1.2 HTML的版本
10.1.3 设计应用CSS
10.2 动态HTML
10.2.1 让Web页面动起来的动态HTML
10.2.2 更易控制HTML的DOM
10.3 Web应用
10.3.1 通过Web提供功能的Web应用
10.3.2 与Web服务器及程序协作的CGI
10.3.3 因Java而普及的Servlet
10.4 数据发布的格式及语言
10.4.1 可扩展标记语言
10.4.2 发布更新信息的RSS/Atom
10.4.3 JavaScript衍生的轻量级易用JSON
第11章 Web的攻击技术
11.1 针对Web的攻击技术
11.1.1 HTTP不具备必要的安全功能
11.1.2 在客户端即可篡改请求
11.1.3 针对Web应用的攻击模式
11.2 因输出值转义不完全引发的安全漏洞
11.2.1 跨站脚本攻击
11.2.2 SQL注入攻击
11.2.3 OS命令注入攻击
11.2.4 HTTP首部注入攻击
11.2.5 邮件首部注入攻击
11.2.6 目录遍历攻击
11.2.7 远程文件包含漏洞
11.3 因设置或设计上的缺陷引发的安全漏洞
11.3.1 强制浏览
11.3.2 不正确的错误消息处理
11.3.3 开放重定向
11.4 因会话管理疏忽引发的安全漏洞
11.4.1 会话劫持
11.4.2 会话固定攻击
11.4.3 跨站点请求伪造
11.5 其他安全漏洞
11.5.1 密码破解
11.5.2 点击劫持
11.5.3 DoS攻击
11.5.4 后门程序
SoapUI-5.3.0.dmg
SoapUI-5.3.0.dmg
SoapUI-5.3.0.dmg
SoapUI-5.3.0.dmg
SoapUI-x32-5.3.0.sh Linux 32位
SoapUI-x32-5.3.0.sh
SoapUI-x32-5.3.0.sh
SoapUI-x32-5.3.0.sh
SoapUI-x64-5.3.0.sh Linux 64位
SoapUI-x64-5.3.0.sh Linux 64位
SoapUI-x64-5.3.0.sh Linux 64位
SoapUI-x64-5.3.0.sh Linux 64位
SoapUI-x32-5.3.0.exe
SoapUI-x32-5.3.0.exe
SoapUI-x32-5.3.0.exe
SoapUI-x32-5.3.0.exe
Python开发实战 BePROUD股份有限公司 人民邮电出版社.pdf
计算机书籍
《python开发实战》来自真正的开发现场,是beproud 公司众多极客在真实项目中的经验总结。
作者从python 的环境搭建讲起,介绍了web 应用开发方法、任务管理,以及评审、测试及高效部署、服务器调试等内容,尽可能网罗了python 开发流程中所涉及的方方面面。在这里,python 仅仅是一个载体,很多知识点在非python 下也适用,这也是本书最大的特色所在。
《python开发实战》适合有一定基础的python 开发者,以及使用php 或ruby 进行网页开发的读者阅读。
目录
《python开发实战》
第一部分 使用python开发
01 开始使用python 2
01.01 python环境搭建 2
01.01.01 安装apt软件包 2
01.01.02 easy_install 与pip 3
01.01.03 安装virtualenv 4
01.01.04 使用不同版本的python 9
01.02 mercurial环境搭建 12
01.02.01 mercurial的简介 12
01.02.02 mercurial的安装 12
01.02.03 代码库的建立 13
01.02.04 文件的操作 14
01.03 编辑器与方便的开发工具 17
01.03.01 编辑器 17
01.03.02 python开发小贴士 19
01.04 本章小结 22
02 开发web应用程序 23
02.01 了解web应用程序 23
02.01.01 什么是web应用程序 23
02.01.02 web应用程序与桌面应用程序的不同 24
02.01.03 web应用程序的机制 24
02.02 web应用程序开发的事前准备 27
02.02.01 关于flask 27
02.02.02 flask的安装 27
02.03 web应用程序的开发流程 28
02.04 明确需要开发的目标系统 28
02.04.01 留言簿应用程序的需求 28
02.04.02 明确必要的功能 29
02.04.03 明确页面的表现形式 29
02.05 页面设计 29
02.05.01 页面设计草图 30
02.05.02 设计html和css 30
02.06 后台功能的开发 35
02.06.01 保存评论数据 35
02.06.02 取出保存过的评论数据 36
02.06.03 使用模板引擎显示页面 37
02.06.04 准备评论的目标url地址 39
02.06.05 调整模板输出 40
02.07 功能验证 41
02.08 本章小结 42
第二部分 团队开发的周期和流程
03 准备团队开发环境 46
03.01 在公共服务器上建立用户、设置权限 46
03.01.01 用户与用户组的建立 46
03.01.02 sudoers 46
03.01.03 virtualenv 47
03.02 问题跟踪系统 47
03.02.01 trac 48
03.02.02 安装trac 48
03.03 版本控制系统 51
03.04 有利于团队开发的工具 52
03.04.01 skype 52
03.04.02 dropbox 53
03.04.03 google docs 54
03.05 本章小结 54
04 编写开发文档的准备 55
04.01 编写项目开发文档 55
04.01.01 在写文档时,我们不想做什么工作 55
04.01.02 愿意在什么样的条件下编写文档 57
04.02 sphinx的基础与安装 58
04.02.01 sphinx的安装 58
04.02.02 restructuredtext入门 60
04.02.03 使用sphinx编写结构化文档的流程 61
04.02.04 sphinx的扩展 66
04.03 引入sphinx后解决的问题与新的问题 67
04.03.01 采用纯文本,可使用一般的编辑器来写文档 67
04.03.02 内容与形式分离,不关注文档形式而专注于内容的编写 68
04.03.03 不仅仅是pdf,通过一个源可以输出多种格式 71
04.03.04 将文档分割成多个文件编辑,进行结构化处理 72
04.03.05 通过mercurial进行简单的版本控制 73
04.03.06 将api参考手册和对应程序协同管理 73
04.03.07 一般文档可通过web浏览器共享 76
04.03.08 sphinx引入后仍需探讨的问题 76
04.04 文档集合的创建与利用 77
04.04.01 什么是文档集合 78
04.04.02 项目中必不可少的文档列表 78
04.04.03 面向团队领导、经理 79
04.04.04 面向设计人员 80
04.04.05 面向开发人员 80
04.04.06 面向用户 81
04.05 本章小结 81
05 问题跟踪与评审 82
05.01 任务管理与ticket驱动开发 82
05.01.01 开始写代码……在这之前还是先创建一个ticket 82
05.01.02 创建和ticket编号一致的分支 83
05.01.03 让版本发布与分支对应 84
05.01.04 分支的合并 84
05.01.05 整理ticket信息 86
05.01.06 ticket 的分割 86
05.02 评审 87
05.02.01 为什么需要评审 87
05.02.02 作为被评审人:代码评审篇 87
05.02.03 作为被评审人:工作评审篇 88
05.02.04 作为评审人:代码评审篇 89
05.02.05 作为评审人:工作评审篇 92
05.03 本章小结 92
06 模块的分割设计与单元测试 93
06.01 模块分割设计方法 93
06.01.01 功能设计 93
06.01.02 web应用程序的构成组件 94
06.01.03 组件设计 96
06.01.04 模块与包 97
06.02 测试 99
06.02.01 测试的种类 99
06.02.02 编写单元测试 101
06.02.03 从单元测试中去除环境依赖 109
06.02.04 使用webtest进行功能测试 114
06.03 从测试来改善设计 118
06.04 迈向测试执行的自动化 120
06.04.01 测试环境的自动生成 120
06.04.02 可以反复执行的测试环境 121
06.05 本章小结 121
07 打包与自动建立环境 122
07.01 源代码打包与发布自动化 123
07.01.01 打包 123
07.01.02 程序包的自动化发布 127
07.01.03 向pypi注册程序包 128
07.01.04 向pypi上传程序包 128
07.01.05 书写程序包的使用说明 129
07.02 安装与环境关联库的介绍 131
07.02.01 distribute 132
07.02.02 pip 133
07.02.03 virtualenv 134
07.03 应用环境自动构建所必备的功能与工具 135
07.03.01 准备独立的python环境 135
07.03.02 python库的程序包化以及标准安装 136
07.03.03 锁定应用环境的程序包版本 136
07.03.04 整个环境可以离线安装 136
07.03.05 重建环境时可以复用缓存 137
07.03.06 使用编译好的二进制模块 138
07.03.07 当pypi宕机或高峰时,有备用服务器 138
07.04 自动应用环境构建 140
07.04.01 开始 140
07.04.02 构建初始环境 140
07.04.03 包含源代码的应用环境 141
07.04.04 在部署环境中的离线安装 143
07.04.05 安装部署需要二进制编译的程序包 144
07.05 公司内部共享专用库 144
07.05.01 在多个项目间共享代码的方法 145
07.05.02 自动建立非公开程序包的应用环境 149
07.06 本章小结 152
08 使用mercurial管理源代码 153
08.01 mercurial的代码库管理与配置 153
08.01.01 在服务器上设置unix用户与用户组 153
08.01.02 设置umask值 154
08.01.03 创建代码库 154
08.01.04 配置hgrc 155
08.01.05 使用配置后的代码库 155
08.01.06 使用hgweb作为简易的中央代码库 155
08.02 灵活使用钩子功能 156
08.02.01 钩子功能的设置方法 157
08.02.02 使用钩子脚本 157
08.02.03 钩子事件 157
08.02.04 钩子执行的时机 159
08.02.05 编写钩子脚本 161
08.03 分支操作 164
08.04 分支间的合并 165
08.04.01 没有冲突的合并 165
08.04.02 用文本编辑器消除合并冲突 167
08.04.03 合并的模式与冲突的种类 169
08.04.04 使用图形界面合并的方法 170
08.05 gui客户端 173
08.05.01 gui客户端的介绍 173
08.05.02 gui客户端的优点 176
08.05.03 gui客户端的缺点 179
08.05.04 hgwebcommit 180
08.06 考虑实际运用而产生的bp mercurial w/f 182
08.06.01 概要 182
08.06.02 背景 183
08.06.03 代码库的构成 183
08.06.04 源代码提交 184
08.06.05 设计师的提交操作 186
08.06.06 分支的合并 187
08.06.07 集成分支 188
08.07 本章小结 189
09 使用jenkins持续集成 192
09.01 什么是持续集成 192
09.01.01 关于持续集成 192
09.01.02 关于jenkins 194
09.02 jenkins的安装 194
09.02.01 安装java 194
09.02.02 安装jenkins主体程序 194
09.02.03 本章用到的jenkins插件 195
09.03 执行测试代码 195
09.03.01 简单测试代码的示例 195
09.03.02 注册作业 196
09.03.03 作业执行成功与失败 198
09.04 测试结果通过报表输出 199
09.04.01 安装nose 199
09.04.02 调用nosetests命令 199
09.04.03 为使用nose修改jenkins配置 200
09.05 展示代码覆盖率报告 201
09.05.01 coverage的安装 201
09.05.02 coverage命令的概述:分为“统计”和“输出”两步 201
09.05.03 通过nose执行coverage 201
09.05.04 读取代码覆盖率的报告 202
09.06 执行django测试 204
09.06.01 django模块的安装 204
09.06.02 django的安装 204
09.06.03 样本代码 205
09.06.04 jenkins的创建 208
09.06.05 “构建后处理”部分的配置 210
09.07 通过jenkins构建文档 212
09.07.01 sphinx的安装 212
09.07.02 配置jenkins作业的注册信息 212
09.07.03 sphinx的构建在出现告警时作业失败 213
09.07.04 查阅编译成果 214
09.07.05 使用task scanner plugin管理todo信息 215
09.07.06 task scanner plugin的配置示例 216
09.08 进一步灵活使用jenkins 216
09.08.01 便捷的功能 216
09.08.02 进一步的改善 218
09.09 本章小结 219
第三部分 服务的公开
10 自动构建和部署环境 222
10.01 安装与配置具有依赖关系的程序包 222
10.01.01 创建操作用户 223
10.01.02 列举必要的程序包 224
10.01.03 封闭环境的安装 226
10.01.04 应用程序的配置 228
10.01.05 环境验证 231
10.02 整理部署的操作步骤 231
10.02.01 赋予代码库访问权限 232
10.02.02 克隆源代码库 232
10.02.03 部署方法总结 232
10.03 使用fabric将操作步骤自动化 233
10.03.01 什么是fabric 233
10.03.02 安装与环境配置 233
10.03.03 编写简单的脚本 234
10.03.04 参考步骤说明书进行自动化 234
10.03.05 验证执行行为 238
10.03.06 添加注释 238
10.04 本章小结 239
11 改善应用程序的性能 240
11.01 web应用程序的性能 240
11.01.01 web应用遭遇大量请求时会如何 240
11.01.02 高负载时的对策 241
11.02 留言簿应用程序的性能测试 242
11.02.01 什么是应用程序的性能 242
11.02.02 apachebench的安装 242
11.02.03 使用apachebench检测性能 242
11.03 关于gunicorn 245
11.03.01 gunicorn的安装 245
11.03.02 使用gunicorn运行应用程序 245
11.04 关于nginx 247
11.04.01 nginx的安装 248
11.04.02 nginx的性能测试 248
11.05 使用nginx和gunicorn共同承载应用程序 250
11.05.01 gunicorn的配置 250
11.05.02 nginx的配置 251
11.05.03 测定nginx+gunicorn组合的性能 251
11.05.04 性能的比较 252
11.06 本章小结 253
12 google app engine 254
12.01 关于app engine 254
12.01.01 什么是app engine 254
12.01.02 app engine的优点 255
12.01.03 app engine平台的局限性 255
12.01.04 使用案例 256
12.02 app engine的主要功能 256
12.02.01 数据存储 256
12.02.02 自动扩展与负载分散 257
12.02.03 在app engine中的python运行环境 259
12.03 app engine的开发准备工作与步骤确认 260
12.03.01 获取账号并开发程序 260
12.03.02 创建sdk 263
12.03.03 开发简单的应用程序 264
12.03.04 部署 266
12.04 在app engine中开发flask的应用程序 267
12.04.01 使已有的应用程序运行 267
12.04.02 部署并运行 271
12.04.03 管理终端 272
12.05 调整:改善应用程序性能 274
12.05.01 根据appstats进行性能测试 274
12.05.02 使用多线程来处理 276
12.06 性能调优:减少计费额 277
12.06.01 与计费有关的配置 277
12.06.02 计费表 277
12.06.03 节约实例的数量 279
12.06.04 减少数据存储的操作 280
12.07 测试 282
12.07.01 在测试代码内使用api 282
12.07.02 测试的执行 284
12.07.03 在真实服务器上测试 285
12.08 本章小结 285
第四部分 加速开发的技术
13 测试是不可分割的一部分 288
13.01 认清测试现状 288
13.02 在开发的各个阶段引入测试工作 289
13.02.01 文档的测试(文档评审) 289
13.02.02 编写测试的方法(输入与输出) 292
13.02.03 测试的执行与测试阶段的轮换(把什么工作做到什么程度) 295
13.03 本章小结:对测试不要抱有恐惧 298
14 便捷地使用django 300
14.01 什么是django 300
14.01.01 django的安装 300
14.01.02 django的架构 300
14.01.03 django的文档 304
14.02 让数据库的集成更加方便 304
14.02.01 什么是数据库的集成 304
14.02.02 默认情况下django能做什么 304
14.02.03 对,就是它,使用south就能够做到 305
14.03 使用fixture replacement使测试更加方便 312
14.03.01 什么是测试配置器(fixture) 312
14.03.02 默认测试配置器的不便之处 314
14.03.03 使用factory_boy 315
14.04 使调试更加方便 318
14.05 本章小结 324
15 使用方便的python模块 325
15.01 简化日期计算的模块 325
15.01.01 日期计算的复杂之处 325
15.01.02 引入dateutil 327
15.02 简化模型映射的模块 329
15.02.01 必须进行模型映射的理由 329
15.02.02 映射规则的构造与复用 330
15.02.03 导入bpmappers模块 333
15.02.04 与django的联动 335
15.02.05 编写json api 336
15.03 判断字符的编码 337
15.04 rss阅读订阅的解析模块 339
15.04.01 导入feedparser模块 339
15.04.02 使用feedparser解析rss阅读订阅信息 339
15.05 图像处理模块 340
15.05.01 安装pil模块 340
15.05.02 转换图像格式 341
15.05.03 调整图像的尺寸 342
15.05.04 截取图像的某个部分 344
15.05.05 图像的过滤处理 345
15.06 数据的加密处理模块 346
15.06.01 pycrypto的安装 346
15.06.02 共同密钥的加密与解密 347
15.06.03 公开密钥方式的加密与解密 347
15.07 调用twitter的api模块 351
15.07.01 导入tweepy模块 351
15.07.02 应用程序的登录域和consumer key的获取 351
15.07.03 获得access token 354
15.07.04 调用twitterapi 354
15.07.05 开发使用twitter认证的应用程序 356
15.08 本章小结 361
附录a 建立virtualbox环境 362
附录b 建立操作系统环境 366
spring-boot-reference 2.0 官方文档(英文)
包含:
1.spring-boot-reference.pdf
2.spring-boot-reference.epub
3.Spring Boot Reference Guide.html
官网下载:Windows-KB841290-x86-ENU.zip
Windows-KB841290-x86-ENU.exe
MD5值:58dc4df814685a165f58037499c89e76
---------------------------------------------------------
Version: 1.0
File Name: Windows-KB841290-x86-ENU.exe
Date Published: 8/22/2012
File Size: 117 KB
----------------------------------------------------------
Microsoft (R) File Checksum Integrity Verifier V2.05 README file
================================================================
1.What is File Checksum Integrity Verifier (FCIV)?
2.Features.
3.Syntax.
4.Database storage format.
5.Verification.
6.History.
1.What is fciv?
---------------
Fciv is a command line utility that computes and verifies hashes of files.
It computes a MD5 or SHA1 cryptographic hash of the content of the file.
If the file is modified, the hash is different.
With fciv, you can compute hashes of all your sensitive files.
When you suspect that your system has been compromised, you can run a verification to determine which files have been modified.
You can also schedule verifications regularily.
2.Features:
-----------
- Hash algorithm: MD5 , SHA1 or both ( default MD5).
- Display to screen or store hash and filename in a xml file.
- Can recursively browse a directory ( ex fciv.exe c:\ -r ).
- Exception list to specify files or directories that should not be computed.
- Database listing.
- hashes and signature verifications.
- store filename with or without full path.
3.Syntax:
---------
Usage: fciv.exe [Commands]
Commands: ( Default -add )
-add : Compute hash and send to output (default screen).
dir options:
-r : recursive.
-type : ex: -type *.exe.
-exc file: list of directories that should not be computed.
-wp : Without full path name. ( Default store full path)
-bp : base path. The base path is removed from the path name of each entry
-list : List entries in the database.
-v : Verify hashes.
: Option: -bp basepath.
-? -h -help : Extended Help.
Options:
-md5 | -sha1 | -both : Specify hashtype, default md5.
-xml db : Specify database format and name.
To display the MD5 hash of a file, type fciv.exe filename
Compute hashes:
fciv.exe c:\mydir\myfile.dll
fciv.exe c:\ -r -exc exceptions.txt -sha1 -xml dbsha.xml
fciv.exe c:\mydir -type *.exe
fciv.exe c:\mydir -wp -both -xml db.xml
List hashes stored in database:
fciv.exe -list -sha1 -xml db.xml
Verifications:
fciv.exe -v -sha1 -xml db.xml
fciv.exe -v -bp c:\mydir -sha1 -xml db.xml
4.Database storage format:
--------------------------
xml file.
The hash is stored in base 64.
<?xml version="1.0" encoding="utf-8"?>
5.Verification:
---------------
You can build a hash database of your sensitive files and verify them regularily or when you suspect that your system
has been compromised.
It checks each entry stored in the db and verify that the checksum was not modified.
6. History:
-----------
Fciv 1.2 : Added event log.
Fciv 1.21: Fixed bad keyset error on some computers.
Fciv 1.22: Added -type option. Support up to 10 masks. *.exe *.dll ...
Fciv 2.0: xml as unique storage. Added -both option.
Fciv 2.01: Exit with error code to allow detections of problem in a script.
Fciv 2.02: Improved perfs. When both alg are specified, it's now done in one pass.
Fciv 2.03: Added -wp and -bp options. Fciv now stores full path or relatives paths.
Fciv 2.04: Removed several options to simplify it.
Fciv 2.05: Added success message if the verification did not detect any errors.
springsource-tool-suite-3.9.1.RELEASE-e4.7.1a-updatesite.zip
springsource tool suite-3.9.1.RELEASE e4.7.1a
针对eclipse:e4.7.1a版本
springsource-tool-suite-3.9.1.RELEASE-e4.7.1a-updatesite.zip
springsource-tool-suite-3.9.1.RELEASE-e4.7.1a-updatesite.zip
官网下载 springsource-tool-suite-3.9.1.RELEASE-e4.6.3-updatesite.zip
springsource-tool-suite-3.9.1.RELEASE-e4.6.3-updatesite.zip
官方下载:针对eclipse4.6.3
Building-Applications-with-Spring-5-and-Vue-js-2-master.rar
Building-Applications-with-Spring-5-and-Vue_js-2-master.rar
作者: James J. Ye
出版社: Packt Publishing
副标题: Build a modern, full-stack web application using Spring Boot and Vuex
内容简介
Become efficient in both frontend and backend web development with Spring and Vue
Key Features
Connect application’s frontend and backend with Vue, Vuex, and Spring Boot
Leverage the latest web standards to enhance code performance, readability, and cross-compatibility
The Java Language Specification, Java SE 12 Edition.rar
The Java Language Specification, Java SE 12 Edition.rar
java 12 规范
The Java Language Specification, Java SE 11 Edition.rar
The Java Language Specification, Java SE 11 Edition.rar
java 11 规范
The Java Language Specification, Java SE 10 Edition.rar
The Java Language Specification, Java SE 10 Edition.rar
java 10 规范
The Java Language Specification, Java SE 9 Edition.rar
The Java Language Specification, Java SE 9 Edition.rar
java9规范
The Java Language Specification, Java SE 8 Edition.rar
The Java Language Specification, Java SE 8 Edition.rar
java8 规范
The Java Language Specification, Java SE 7 Edition.rar
The Java Language Specification, Java SE 7 Edition.rar
java 7 规范
The Java Language Specification, Java SE 6 Edition.rar
The Java Language Specification, Java SE 6 Edition.rar
java 6 规范
The Java® Virtual Machine Specification Java SE 12 Edition.rar
The Java® Virtual Machine Specification Java SE 12 Edition.rar JVM 12 规范
The Java® Virtual Machine Specification Java SE 11 Edition.rar
The Java® Virtual Machine Specification Java SE 11 Edition.rar JVM11规范
The Java® Virtual Machine Specification Java SE 10 Edition.rar
The Java® Virtual Machine Specification Java SE 10 Edition.rar JVM10规范
The Java® Virtual Machine Specification Java SE 9 Edition.rar
The Java® Virtual Machine Specification Java SE 9 Edition.rar
The Java® Virtual Machine Specification Java SE 8 Edition.rar
The Java® Virtual Machine Specification Java SE 8 Edition.pdf
JVM8
JVM 8 规范
The Java® Virtual Machine Specification Java SE 7 Edition.rar
The Java® Virtual Machine Specification Java SE 7 Edition.pdf
JVM 规范
版本7
HibernateValidatorJSR303的参考实现使用指南.pdf
HibernateValidatorJSR303的参考实现使用指南.pdf
JSR 303 的参考实现
使用指南
由 Hardy Ferentschik和Gunnar Morling
and thanks to Shaozhuang Liu
4.3.1.Final
版权 © 2009 - 2011 Red Hat, Inc. & Gunnar Morling
June 20, 2011
序言
1. 开始入门
1.1. 第一个Maven项目
1.2. 添加约束
1.3. 校验约束
1.4. 更进一步
2. Validation step by step
2.1. 定义约束
2.1.1. 字段级(field level) 约束
2.1.2. 属性级别约束
2.1.3. 类级别约束
2.1.4. 约束继承
2.1.5. 对象图
2.2. 校验约束
2.2.1. 获取一个Validator的实例
2.2.2. Validator中的方法
2.2.3. ConstraintViolation 中的方法
2.2.4. 验证失败提示信息解析
2.3. 校验组
2.3.1. 校验组序列
2.3.2. 对一个类重定义其默认校验组
2.4. 内置的约束条件
2.4.1. Bean Validation constraints
2.4.2. Additional constraints
3. 创建自己的约束规则
3.1. 创建一个简单的约束条件
3.1.1. 约束标注
3.1.2. 约束校验器
3.1.3. 校验错误信息
3.1.4. 应用约束条件
3.2. 约束条件组合
4. XML configuration
4.1. validation.xml
4.2. 映射约束
5. Bootstrapping
5.1. Configuration 和 ValidatorFactory
5.2. ValidationProviderResolver
5.3. MessageInterpolator
5.3.1. ResourceBundleLocator
5.4. TraversableResolver
5.5. ConstraintValidatorFactory
6. Metadata API
6.1. BeanDescriptor
6.2. PropertyDescriptor
6.3. ElementDescriptor
6.4. ConstraintDescriptor
7. 与其他框架集成
7.1. OSGi
7.2. 与数据库集成校验
7.3. ORM集成
7.3.1. 基于Hibernate事件模型的校验
7.3.2. JPA
7.4. 展示层校验
8. Hibernate Validator Specifics
8.1. Public API
8.2. Fail fast mode
8.3. Method validation
8.3.1. Defining method-level constraints
8.3.2. Evaluating method-level constraints
8.3.3. Retrieving method-level constraint meta data
8.4. Programmatic constraint definition
8.5. Boolean composition for constraint composition
9. Annotation Processor
9.1. 前提条件
9.2. 特性
9.3. 配置项
9.4. 使用标注处理器
9.4.1. 命令行编译
9.4.2. IDE集成
9.5. 已知问题
10. 进一步阅读
【美】Hadoop应用架构 [美] 马克·格洛沃 泰德·马拉斯卡乔纳森·西德曼著郭文超 译.pdf
内容简介
本书就使用Apache Hadoop端到端数据管理方案提供专业架构指导。其他书籍大多针对Hadoop生态系统中的软件,讲解较为单一的使用方法,而本书偏重实践,在架构的高度详细阐释诸多工具如何相互配合,搭建出打磨之后的完整应用。书中提供了诸多案例,易于理解,配有详细的代码解析,知识点一目了然。
为加强训练,本书后半部分提供了详细的案例,涵盖常见的Hadoop应用架构。无论是设计Hadoop应用,还是将Hadoop同现有数据基础架构集成,本书都可以提供详实的参考。
作者简介
Mark Grover,Apache Sentry项目管理委员会成员,《Hive编程指南》作者之一,曾参与Apache Hadoop、Apache Hive、Apache Sqoop以及Apache Flume等项目,并为Apache Bigtop项目和Apache Sentry(项目孵化中)项目贡献代码。
Ted Malaska,Cloudera公司的解决方案架构师,致力于帮助客户更好地掌握Hadoop及其生态系统。曾任美国金融业监管局(FINRA,Financial Industry Regulatory Authority)首席架构师,指导建设了包括网络应用、服务型架构以及大数据应用在内的大量解决方案。曾为Apache Flume、Apache Avro、YARN以及Apache Pig等项目贡献代码。
Jonathan Seidman,Cloudera公司的解决方案架构师,协助合作伙伴将的解决方案集成到Cloudera的软件栈中。芝加哥Hadoop用户组(Chicago Hadoop User Group)及芝加哥大数据(Chicago Big Data)的联合创始人、《Hadoop实战》技术编辑。曾任Orbiz Worldwide公司大数据团队技术主管,为繁忙的站点管理了承载海量数据的Hadoop集群。也曾多次在Hadoop及大数据专业会议上发言。
Gwen Shapira,Cloudera公司的解决方案架构师,知名博主,拥有15年从业经验,协助客户设计高扩展性的数据架构。曾任Pythian高级顾问、Oracle ACE主管以及NoCOUG董事会成员,活跃于诸多业内会议。
目录
Hadoop应用架构(郭文超)
进入审阅模式
序
前言
第一部分 考虑Hadoop应用的架构设计
第一章 Hadoop数据建模
第二章 Hadoop数据移动
第三章 Hadoop数据处理
第四章 常见Hadoop处理范式
第五章 Hadoop图处理
第六章 协调调度
第七章 Hadoop近实时处理
第二部分 案例研究
第八章 点击流分析
第九章 欺诈检测
第十章 数据仓库
附录 A Impala中的关联
索引
作者简介
【美】系统架构-复杂系统的产品设计与开发 爱德华·克劳利 爱飞翔 2016-12-1 P469.pdf
内容简介 · · · · · ·
本书由系统架构领域3位领军人物亲笔撰写,该领域资深专家Norman R. Augustine作序推荐,Amazon全五星评价。
全书共分四部分。
第一部分(第1~3章)的重点是引出系统架构。第1章通过一些范例来展示架构理念,指出良好的架构,并给出本书的概要;第2章列出进行系统分析必备的思路;第3章给出分析系统架构所用的思维模式。
第二部分(第4~8章)着重对架构进行分析。第4章讨论系统的形式;第5章讨论系统的功能;第6章讲解形式与功能之间的映射,并以此给出系统架构的定义;第7章研究如何从独立于解决方案的功能陈述中衍生出系统;第8章演示怎样把这些概念汇聚成一套架构。
第三部分(第9~13章)讲解如何为复杂的系统定义架构。第9章从任务和可交付成果这两方面来概述架构师的职责;第10章探讨如何把组织机构方面的接口当成在架构中减少歧义的契机;第11章讲述如何用系统化的方式来捕获利益相关者的需求,并把它们转换成系统目标;第12章提出一些能够帮助架构师更有创意地构思并选择概念的手段;第13章讲述在开发系统时管理复杂度的一些办法。
第四部分(第14~16章)探寻帮助架构师做决策的各种计算方法及工具所具备的潜力。第14章把系统架构的过程当成一种决策制定的过程来进行讲解;第15章讲解如何对架构权衡空间中的信息进行综合;第16章演示怎样把架构决策编码成一套模型,使计算机可以根据该模型自动生成权衡空间并对其进行探索。
作者简介 · · · · · ·
Edward Crawley是俄罗斯莫斯科斯科尔科沃科学与技术学院的校长,也是麻省理工学院航空航天学及工程系统学教授。他从麻省理工学院获得航空与航天专业的学士学位及硕士学位,并获得航空航天结构专业的博士学位。Crawley教授是美国航天航空学会及英国皇家航空学会的会员,也是瑞典皇家工程科学院、英国皇家工程学院、中国工程院及美国国家工程院的成员。
Bruce Cameron是咨询公司Technology Strategy Partners的创始人,也是MIT System Architecture Lab的董事。Cameron博士从多伦多大学获得学士学位,从麻省理工学院获得硕士学位。Cameron博士在麻省理工学院的斯隆管理学院及工程学院讲授系统架构与技术策略课程,是多伦多大学董事会的前成员。
Daniel Selva是康奈尔大学机械与航天工程系的副教授。他从加泰罗尼亚大学、法国国立高等航空航天学院及麻省理工学院获得电气工程与航空工程学位。Selva教授的研究重点是在设计活动的初期运用系统架构、知识工程与机器学习工具。他的研究成果运用于NASA的地球科学十年调查、Iridium GeoScan Program及NASA的跟踪与数据中继卫星系统等项目。在这些项目中,他利用架构分析技术来为系统架构师和管理者提供支持。
目录 · · · · · ·
目录
系统架构原则
译者序
推荐序
前言
致谢
作者介绍
第一部分系统思维
第1章 系统架构简介……2
1.1 复杂系统的架构……2
1.2 良好架构的优势……2
1.3 学习目标……5
1.4 本书结构……6
1.5 参考资料……7
第2章 系统思维……8
2.1 简介……8
2.2 系统与涌现……8
2.2.1 系统……8
2.2.2 涌现……10
2.3 任务一:确定系统及其形式与功能……13
2.3.1 形式与功能……13
2.3.2 工具-过程-操作数:这是人类的标准思维模式吗……16
2.4 任务二:确定系统中的实体及其形式与功能……16
2.4.1 具备形式与功能的实体……17
2.4.2 确定如何将系统初步分解为恰当的实体……18
2.4.3 用整体思维找出系统中的潜在实体……19
2.4.4 集中注意力,找出系统中的重要实体……21
2.4.5 为实体创建抽象或从实体中发现抽象……22
2.4.6 定义系统的边界,并将其与外围环境隔开……24
2.5 任务三:确定实体之间的关系……25
2.5.1 关系的形式与功能……25
2.5.2 外部接口……28
2.6 任务四:涌现……28
2.6.1 涌现的重要性……28
2.6.2 系统故障……29
2.6.3 预测涌现物……30
2.6.4 涌现物依赖于实体及其关系……31
2.7 小结……32
2.8 参考资料……33
第3章 思考复杂的系统……34
3.1 简介……34
3.2 系统中的复杂度……34
3.2.1 复杂度……34
3.2.2 引入TeamXT这一范例系统……35
3.3 系统的分解……38
3.3.1 分解……38
3.3.2 体系……39
3.3.3 层级分解……39
3.3.4 简单的系统、复杂度适中的系统以及复杂的系统……41
3.3.5 原子部件……42
3.4 特殊的逻辑关系……43
3.4.1 类/实例关系……43
3.4.2 特化关系……43
3.4.3 递归……44
3.5 对复杂系统进行思索……44
3.5.1 自顶向下及自底向上式的思考……44
3.5.2 交替思考……45
3.6 架构展示工具:SysML与OPM……45
3.6.1 视图与投射……45
3.6.2 SysML……46
3.6.3 OPM……46
3.7 小结……49
3.8 参考资料……50
第二部分 系统架构的分析
第4章 形式……53
4.1 简介……53
4.2 架构中的形式……53
4.2.1 形式……53
4.2.2 用解析表示法来表现形式:对象……56
4.2.3 形式的分解……57
4.3 对架构中的形式进行分析……58
4.3.1 定义系统……58
4.3.2 确定形式实体……59
4.3.3 把泵作为复杂度适中的系统来分析……61
4.4 对架构中的形式关系进行分析……63
4.4.1 形式关系……63
4.4.2 空间/拓扑形式关系……65
4.4.3 用图和图表来展现形式关系:OPM……67
4.4.4 用表格及类似矩阵的视图来展现形式关系:DSM……70
4.4.5 连接性的形式关系……71
4.4.6 其他的形式关系……74
4.5 形式环境……75
4.5.1 伴生系统、整个产品系统及系统边界……75
4.5.2 使用情境……77
4.6 软件系统中的形式……77
4.6.1 软件系统:信息形式及其二元性……77
4.6.2 软件中的形式实体与形式关系……79
4.6.3 软件系统所在的整个产品系统、软件系统的边界及使用情境……81
4.7 小结……82
4.8 参考资料……82
第5章 功能……83
5.1 简介……83
5.2 架构中的功能……84
5.2.1 功能……84
5.2.2 把功能视为过程加操作数……84
5.2.3 用解析表示法来展现功能……85
5.3 分析对外展现的功能和价值……89
5.3.1 对外界展现的主要功能……89
5.3.2 与价值有关的操作数……90
5.4 对内部功能进行分析……93
5.4.1 内部功能……93
5.4.2 确定内部功能……94
5.5 分析功能交互及功能架构……97
5.5.1 功能交互与功能架构……97
5.5.2 确定功能交互……98
5.5.3 价值通路……100
5.5.4 涌现与细分……101
5.5.5 软件系统中的功能架构……102
5.6 与价值相关的次要外部功能及内部功能……105
5.7 小结……106
5.8 参考资料……107
第6章 系统架构……108
6.1 简介……108
6.2 系统架构:形式与功能……109
6.2.1 形式与功能之间的映射……109
6.2.2 确定形式与过程之间的映射……114
6.2.3 形式结构承载并展现功能交互……116
6.2.4 确定形式结构是如何承载功能和性能的……118
6.3 系统架构中的非理想因素、支持层及接口……119
6.3.1 系统架构中的非理想因素……119
6.3.2 系统架构中的支持功能及支持层……120
6.3.3 形式与功能中的系统接口……121
6.4 操作行为……123
6.4.1 操作者……124
6.4.2 行为……124
6.4.3 操作成本……126
6.5 用各种表示法来推究系统架构……127
6.5.1 能够对系统架构进行简化的几种方式……127
6.5.2 用投射法来表示系统的架构……128
6.5.3 把过程投射到对象……129
6.5.4 把过程和操作数投射到形式……130
6.6 小结……133
6.7 参考资料……134
第7章 与特定解决方案无关的功能和概念……135
7.1 简介……135
7.1.1 正向工程与更加复杂的系统……135
7.1.2 对与特定解决方案无关的功能和概念所做的介绍……136
7.2 确定与特定解决方案无关的功能……138
7.3 概念……140
7.3.1 作为一种观念的概念……140
7.3.2 对概念构想有所帮助的框架……142
7.3.3 构想概念时所应依循的步骤……144
7.3.4 为概念命名……145
7.3.5 对候选的概念进行整理……146
7.3.6 由更为广阔的概念所形成的体系……150
7.4 整体概念……152
7.5 操作概念与服务概念……156
7.6 小结……158
7.7 参考资料……159
第8章 从概念到架构……160
8.1 简介……160
8.2 研发系统之下第1级的架构……161
8.2.1 把概念扩展为功能架构……161
8.2.2 定义形式……162
8.2.3 把功能映射为形式……164
8.3 研发系统之下第2级的架构……166
8.3.1 第2级的功能意图以及对第2级所做的递归思考……166
8.3.2 研发第2级中的架构……166
8.4 家庭数据网络系统的第2级架构……170
8.5 为系统之下的第1级架构做模块化处理……173
8.6 小结……176
8.7 参考资料……177
第三部分 创建系统架构
第9章 架构师的角色……180
9.1 简介……180
9.2 歧义与架构师的角色……180
9.2.1 架构师的角色……180
9.2.2 减少歧义……182
9.2.3 架构师可以交付的成果……185
9.3 产品开发过程……186
9.3.1 各企业所使用的PDP之间的异同……187
9.3.2 通用的产品开发过程……191
9.4 小结……195
9.5 参考资料……199
第10章 上游和下游对系统架构的影响……200
10.1 简介……200
10.2 上游的影响因素:公司策略……201
10.3 上游的影响因素:营销……204
10.3.1 内向营销……205
10.4 上游的影响因素:法规及类似法规的因素……207
10.4.1 法规的来源……208
10.4.2 与法规类似的因素:可能出台的法规、标准和法律责任……209
10.5 上游的影响因素:技术融合……210
10.6 下游的影响因素:实现—编码、制造及供应链管理……212
10.7 下游的影响因素:操作……214
10.7.1 系统的登场与退场……215
10.7.2 偶发操作、应急操作与独立操作……216
10.8 下游的影响因素:DesignforX……216
10.9 下游的影响因素:产品与系统的演化、产品系列……218
10.9.1 复用与遗留元素……219
10.9.2 产品系列……220
10.9.3 平台与架构……221
10.10 产品论证:架构商业论证决策框架(ABCD)……224
10.11 小结……226
10.12 参考资料……229
第11章 将需求转换为目标……231
11.1 简介……231
11.2 确定受益者和利益相关者……232
11.2.1 受益者和利益相关者……232
11.2.2 确定受益者和利益相关者的需求……235
11.2.3 从交换中确定利益相关者及其需求……238
11.2.4 对利益相关者进行分组……240
11.3 描述需求的特征……242
11.3.1 从各种维度来描述利益相关者的需求……242
11.3.2 将利益相关者作为系统:间接的价值交付及利益相关者关系图……244
11.3.3 在各个利益相关者的需求之间排定优先次序……247
11.3.4 对排列各需求的优先次序所做的小结……251
11.4 把需求转换为目标……252
11.4.1 设定目标时所依据的标准……253
11.4.2 人类可以解决的目标:系统问题陈述……255
11.5 排列目标之间的优先次序……259
11.5.1 具备一致性与可达成性的目标……262
11.6 小结……263
11.7 参考资料……270
附:对利益相关者提出的系统需求所进行的特征分析……271
第12章 用创造力生成概念……272
12.1 简介……272
12.2 对概念进行创新……273
12.2.1 创新……273
12.2.2 无结构的创新……274
12.2.3 结构化的创新……274
12.2.4 确定概念……277
12.3 提出概念……278
12.4 扩充概念并提出概念片段……279
12.4.1 对推进功能进行扩充……279
12.4.2 混合动力车的另外7个内部功能所对应的概念片段……282
12.5 演化并完善整体概念……285
12.6 选出几个整体概念,做进一步的发展……288
12.7 小结……291
12.8 参考资料……295
第13章 把分解作为复杂度管理工具来使用……296
13.1 简介……296
13.2 理解复杂度……296
13.2.1 复杂度……296
13.2.2 复杂与难懂……299
13.2.3 必要的复杂度……301
13.3 管理复杂度……305
13.3.1 选定分解方式……305
13.3.2 模块化程度与分解……308
13.4 小结……312
13.5 参考资料……317
第四部分 作为决策的架构
第14章 作为决策制定过程的系统架构……321
14.1 简介……321
14.2 对阿波罗计划的架构决策问题进行公式化处理……322
14.2.1 做决策时可以考虑的经验法则……322
14.2.2 阿波罗计划的决策……323
14.2.3 约束及衡量指标……325
14.2.4 计算各种阿波罗架构的得分……327
14.3 决策与决策支持……328
14.4 决策支持系统的四项主要任务……330
14.5 基本的决策支持工具……331
14.5.1 形态矩阵……332
14.5.2 设计结构矩阵……332
14.5.3 决策树……334
14.6 为系统架构提供决策支持……338
14.7 小结……339
14.8 参考资料……340
第15章 探求架构的权衡空间……343
15.1 简介……343
15.2 权衡空间的基本知识……344
15.3 帕累托前沿……347
15.3.1 帕累托前沿与占优……347
15.3.2 GNC范例系统的帕累托前沿……348
15.3.3 模糊的帕累托前沿及其好处……351
15.3.4 在模糊的帕累托前沿上挖掘数据……352
15.3.5 帕累托前沿的运用机理……354
15.4 权衡空间的结构……355
15.5 敏感度分析……359
15.6 整理架构决策……364
15.6.1 对其他决策的影响……364
15.6.2 对衡量指标的影响……366
15.6.3 决策空间视图……367
15.6.4 对决策进行排序……368
15.6.5 对决策及其顺序的总结……370
15.7 小结……371
15.8 参考资料……372
第16章 系统架构优化问题的表述与求解……374
16.1 简介……374
16.2 对系统架构优化问题进行表述……375
16.3 NEOSS范例:NASA的地球观测卫星系统……379
16.4 系统架构决策中的模式……381
16.4.1 从程序化的决策到模式……382
16.4.2 DECISION-OPTION模式……383
16.4.3 DOWN-SELECTING模式……386
16.4.4 ASSIGNING模式……389
16.4.5 PARTITIONING模式……395
16.4.6 PERMUTING模式……399
16.4.7 CONNECTING模式……402
16.5 对大规模的系统架构问题进行表述……406
16.5.1 模式之间的重合……407
16.5.2 把问题分解为子问题……409
16.6 解决系统架构优化问题……410
16.6.1 介绍……410
16.6.2 全因子排列……411
16.6.3 启发式的架构优化算法……412
16.6.4 基于种群的通用启发式优化……413
16.6.5 生成初始种群……414
16.6.6 把某些固定的架构包含在初始种群中……415
16.6.7 通用的启发式和元启发式高效搜索……416
16.6.8 遗传算法中的启发式策略……416
16.6.9 用更多的启发式技术来强化遗传算法……418
16.7 小结……419
16.8 参考资料……420
附录A根据所选的架构集来计算衡量指标对决策的敏感度……423
附录B聚类算法及其在系统架构中的运用……425
附录C基于规则的系统及其在系统架构中的应用……430
附录D经典的组合优化问题……436
各章问题……441
【日本】网络是怎样连接的 彩色版 [日]户根勤 ネットワークはなぜつながるのか 第2版 周自恒 2017-1-1 P336.pdf
内容简介 · · · · · ·
本书以探索之旅的形式,从在浏览器中输入网址开始,一路追踪了到显示出网页内容为止的整个过程,以图配文,讲解了网络的全貌,并重点介绍了实际的网络设备和软件是如何工作的。目的是帮助读者理解网络的本质意义,理解实际的设备和软件,进而熟练运用网络技术。同时,专设了“网络术语其实很简单”专栏,以对话的形式介绍了一些网络术语的词源,颇为生动有趣。
本书图文并茂,通俗易懂,非常适合计算机、网络爱好者及相关从业人员阅读。
作者简介 · · · · · ·
作者简介:
户根勤
早先从事软件开发,后进入网络行业。曾供职于日本网络设备厂商(外资企业)和国内网络集成商,从事产品开发和技术咨询等工作。在工作之余还进行演讲、写作等活动。1998年离开公司,开始以演讲、写作以及运营论坛为主业。
译者简介:
周自恒
资深技术图书译者、全栈程序员、自然科学爱好者。初中时曾获得信息学奥赛天津赛区一等奖,曾任某管理咨询公司战略技术总监。译有《图解CIO工作指南(第4版)》《大数据的冲击》《代码的未来》《30天自制操作系统》《图解密码技术》《家用游戏机简史》《有趣的二进制》等。
目录 · · · · · ·
第1章 浏览器生成消息 1
——探索浏览器内部
1.1 生成HTTP请求消息 5
1.1.1 探索之旅从输入网址开始 5
1.1.2 浏览器先要解析URL 7
1.1.3 省略文件名的情况 9
1.1.4 HTTP的基本思路 10
1.1.5 生成HTTP请求消息 14
1.1.6 发送请求后会收到响应 20
1.2 向DNS服务器查询Web服务器的IP地址 24
1.2.1 IP地址的基本知识 24
1.2.2 域名和IP地址并用的理由 28
1.2.3 Socket库提供查询IP地址的功能 30
1.2.4 通过解析器向DNS服务器发出查询 31
1.2.5 解析器的内部原理 32
1.3 全世界DNS服务器的大接力 35
1.3.1 DNS服务器的基本工作 35
1.3.2 域名的层次结构 38
1.3.3 寻找相应的DNS服务器并获取IP地址 40
1.3.4 通过缓存加快DNS服务器的响应 44
1.4 委托协议栈发送消息 45
1.4.1 数据收发操作概览 45
1.4.2 创建套接字阶段 48
1.4.3 连接阶段:把管道接上去 50
1.4.4 通信阶段:传递消息 52
1.4.5 断开阶段:收发数据结束 53
怪杰Resolver 55
第2章 用电信号传输TCP/IP数据 57
——探索协议栈和网卡
2.1 创建套接字 61
2.1.1 协议栈的内部结构 61
2.1.2 套接字的实体就是通信控制信息 63
2.1.3 调用socket时的操作 66
2.2 连接服务器 68
2.2.1 连接是什么意思 68
2.2.2 负责保存控制信息的头部 70
2.2.3 连接操作的实际过程 73
2.3 收发数据 75
2.3.1 将HTTP请求消息交给协议栈 75
2.3.2 对较大的数据进行拆分 78
2.3.3 使用ACK号确认网络包已收到 79
2.3.4 根据网络包平均往返时间调整ACK号等待时间 83
2.3.5 使用窗口有效管理ACK号 84
2.3.6 ACK与窗口的合并 87
2.3.7 接收HTTP响应消息 89
2.4 从服务器断开并删除套接字 90
2.4.1 数据发送完毕后断开连接 90
2.4.2 删除套接字 92
2.4.3 数据收发操作小结 93
2.5 IP与以太网的包收发操作 95
2.5.1 包的基本知识 95
2.5.2 包收发操作概览 99
2.5.3 生成包含接收方IP地址的IP头部 102
2.5.4 生成以太网用的MAC头部 106
2.5.5 通过ARP查询目标路由器的MAC地址 108
2.5.6 以太网的基本知识 111
2.5.7 将IP包转换成电或光信号发送出去 114
2.5.8 给网络包再加3个控制数据 116
2.5.9 向集线器发送网络包 120
2.5.10 接收返回包 123
2.5.11 将服务器的响应包从IP传递给TCP 125
2.6 UDP协议的收发操作 128
2.6.1 不需要重发的数据用UDP发送更高效 128
2.6.2 控制用的短数据 129
2.6.3 音频和视频数据 130
插进Socket里的是灯泡还是程序 132
第3章 从网线到网络设备 135
——探索集线器、交换机和路由器
3.1 信号在网线和集线器中传输 139
3.1.1 每个包都是独立传输的 139
3.1.2 防止网线中的信号衰减很重要 140
3.1.3 “双绞”是为了抑制噪声 141
3.1.4 集线器将信号发往所有线路 146
3.2 交换机的包转发操作 149
3.2.1 交换机根据地址表进行转发 149
3.2.2 MAC地址表的维护 153
3.2.3 特殊操作 154
3.2.4 全双工模式可以同时进行发送和接收 155
3.2.5 自动协商:确定最优的传输速率 156
3.2.6 交换机可同时执行多个转发操作 159
3.3 路由器的包转发操作 159
3.3.1 路由器的基本知识 159
3.3.2 路由表中的信息 162
3.3.3 路由器的包接收操作 166
3.3.4 查询路由表确定输出端口 166
3.3.5 找不到匹配路由时选择默认路由 168
3.3.6 包的有效期 169
3.3.7 通过分片功能拆分大网络包 170
3.3.8 路由器的发送操作和计算机相同 172
3.3.9 路由器与交换机的关系 173
3.4 路由器的附加功能 176
3.4.1 通过地址转换有效利用IP地址 176
3.4.2 地址转换的基本原理 178
3.4.3 改写端口号的原因 180
3.4.4 从互联网访问公司内网 181
3.4.5 路由器的包过滤功能 182
集线器和路由器,换个名字身价翻倍? 184
第4章 通过接入网进入互联网内部 187
——探索接入网和网络运营商
4.1 ADSL接入网的结构和工作方式 191
4.1.1 互联网的基本结构和家庭、公司网络是相同的 191
4.1.2 连接用户与互联网的接入网 192
4.1.3 ADSL Modem将包拆分成信元 193
4.1.4 ADSL将信元“调制”成信号 197
4.1.5 ADSL通过使用多个波来提高速率 200
4.1.6 分离器的作用 201
4.1.7 从用户到电话局 203
4.1.8 噪声的干扰 204
4.1.9 通过DSLAM到达BAS 205
4.2 光纤接入网(FTTH) 206
4.2.1 光纤的基本知识 206
4.2.2 单模与多模 208
4.2.3 通过光纤分路来降低成本 213
4.3 接入网中使用的PPP和隧道 217
4.3.1 用户认证和配置下发 217
4.3.2 在以太网上传输PPP消息 219
4.3.3 通过隧道将网络包发送给运营商 223
4.3.4 接入网的整体工作过程 225
4.3.5 不分配IP地址的无编号端口 228
4.3.6 互联网接入路由器将私有地址转换成公有地址 228
4.3.7 除PPPoE之外的其他方式 230
4.4 网络运营商的内部 233
4.4.1 POP和NOC 233
4.4.2 室外通信线路的连接 236
4.5 跨越运营商的网络包 238
4.5.1 运营商之间的连接 238
4.5.2 运营商之间的路由信息交换 239
4.5.3 与公司网络中自动更新路由表机制的区别 241
4.5.4 IX的必要性 242
4.5.5 运营商如何通过IX互相连接 243
名字叫服务器,其实是路由器 246
第5章 服务器端的局域网中有什么玄机 249
5.1 Web服务器的部署地点 253
5.1.1 在公司里部署Web服务器 253
5.1.2 将Web服务器部署在数据中心 255
5.2 防火墙的结构和原理 256
5.2.1 主流的包过滤方式 256
5.2.2 如何设置包过滤的规则 256
5.2.3 通过端口号限定应用程序 260
5.2.4 通过控制位判断连接方向 260
5.2.5 从公司内网访问公开区域的规则 262
5.2.6 从外部无法访问公司内网 262
5.2.7 通过防火墙 263
5.2.8 防火墙无法抵御的攻击 264
5.3 通过将请求平均分配给多台服务器来平衡负载 265
5.3.1 性能不足时需要负载均衡 265
5.3.2 使用负载均衡器分配访问 266
5.4 使用缓存服务器分担负载 270
5.4.1 如何使用缓存服务器 270
5.4.2 缓存服务器通过更新时间管理内容 271
5.4.3 最原始的代理——正向代理 276
5.4.4 正向代理的改良版——反向代理 278
5.4.5 透明代理 279
5.5 内容分发服务 280
5.5.1 利用内容分发服务分担负载 280
5.5.2 如何找到最近的缓存服务器 282
5.5.3 通过重定向服务器分配访问目标 285
5.5.4 缓存的更新方法会影响性能 287
当通信线路变成局域网 291
第6章 请求到达Web服务器,响应返回浏览器 293
——短短几秒的“漫长旅程”迎来终点
6.1 服务器概览 297
6.1.1 客户端与服务器的区别 297
6.1.2 服务器程序的结构 297
6.1.3 服务器端的套接字和端口号 299
6.2 服务器的接收操作 305
6.2.1 网卡将接收到的信号转换成数字信息 305
6.2.2 IP模块的接收操作 308
6.2.3 TCP模块如何处理连接包 309
6.2.4 TCP模块如何处理数据包 311
6.2.5 TCP模块的断开操作 312
6.3 Web服务器程序解释请求消息并作出响应 313
6.3.1 将请求的URI转换为实际的文件名 313
6.3.2 运行CGI程序 316
6.3.3 Web服务器的访问控制 319
6.3.4 返回响应消息 323
6.4 浏览器接收响应消息并显示内容 323
6.4.1 通过响应的数据类型判断其中的内容 323
6.4.2 浏览器显示网页内容!访问完成! 326
Gateway是通往异世界的入口 328
附录 330
后记 334
致谢 334
作者简介 335
【日本】图解基础设施设计模式 [日]NTT DATA集团 人民邮电出版社 杨文轩 2015-5 P217.pdf
内容简介 · · · · · ·
基础设施设计模式是指将基础设施技术者们创造出的设计方式概念化、抽象化,同时给其命名(模式名),总结其特点与注意事项而形成的集合体。目的是防止在基础设施开发中发生问题,提高基础设施的开发效率以及培养基础设施开发人才。
《图解基础设施设计模式》以基础设施构建中的需求定义阶段为基础,介绍了127个不依赖于任何特定产品,与非功能性需求实现策略、基础设施构成要素相关的常用设计模式(119个模式+8种类型)。在讲解时,还配以设计方式的示意图以及各个模式的对比,使人既能轻松理解设计方式的构造与特点,还能理解各模式之间的不同,最终作出最佳选择。
《图解基础设施设计模式》适合对基础设施缺乏经验的技术者(也包括应用程序开发者)、负责系统构建的项目经理、在企业的信息系统部门中对系统规划与引进具有决策权的人,以及负责评估和比较供应商提案和设计的人阅读。
作者简介 · · · · · ·
杉原健郎(作者)
1998年入职NTT DATA集团。负责过多个大型核心业务IT系统的基础设施开发,深感横向推广基础设施开发技能的重要性。拥有PMP认证资格(2004~)。
吉田一幸(作者)
2008年入职NTT DATA集团。负责设计和构建面向金融和通信业务的大型IT系统的基础设施。2012年起开始整理基础设施设计模式,负责整理和研发基础设施设计方法论和基于设计模式的设计步骤。
岩崎贤治(作者)
2010年入职NTT DATA集团。入职后参与了安全系统的构建和运维,积累了丰富的经验,在ITIL和信息安全管理领域有独到的见解。2012年后负责确立和整理使用基础设施设计模式进行开发的设计步骤。
三浦广志(作者)
1995年入职NTT DATA集团。除了参与编写Web Site Expert #31(技术评论社)外,还译有《详解Linux内核 第1版》(O'Reilly日本)一书,为Linux内核等开源软件(OSS)开发做出了贡献。于2013年加入OpenStack。
吉田佐智男(作者)
1987年入职NTT DATA集团。早期参与了使用开放系统构建主干系统的项目。具有多个项目的成功经验与解决问题的经验,为了推广这些经验与积累的技巧,成为最早参与基础设施设计模式开发的人员。现在在NTT DATA基盘系统事业本部负责推进先进技术调查、技术战略决策。
杨文轩(译者)
华中科技大学硕士。2007年入职方正国际软件。先后参与过京瓷MFP、丸善MBIS系统开发,并且主导过讲谈社拼版系统、讲谈社广告系统的开发。擅长Web 2.0开发,有丰富的对日开发经验。
目录 · · · · · ·
第1章 什么是基础设施设计模式
1.1 什么是基础设施
1.2 基础设施故障引发的后果
1.3 基础设施构建中哪个阶段最重要
1.4 需求定义的重要性与难点
1.5 非功能性需求等级 克服非功能性需求定义困难 的工具
1.6 基础设施设计模式 研究能够满足需求的设计方式的工具
1.7 本书的内容安排
第2章 可用性需求的实现策略 防止 系统宕机
2.1 可用性策略的基础
2.2 Web/AP服务器的高可用性设计方式
2.3 DB服务器的可用性设计方式
2.4 虚拟服务器冗余的设计方式
2.5 LAN的可用性设计方式
2.6 WAN的可用性设计方式
2.7 互联网连接的设计方式
2.8 数据备份的可用性设计方式
2.9 灾害应对策略的设计方式
2.10 总结
第3章 安全性需求的实现策略 保护系统不受威胁
3.1 安全性策略的基础
3.2 非法访问应对策略的设计方式
3.3 身份认证的设计方式
3.4 ID管理和维护的设计方式
3.5 信息泄露应对策略的设计方式
3.6 总结
第4章 性能与可扩展性需求的实现策略 防止 系统性能下降
4.1 性能与可扩展性策略的基础
4.2 可扩展性策略的设计方式
4.3 超负荷应对策略的设计方式
4.4 总结
第5章 运用与维护性需求的实现策略不放过系统故障
5.1 运用与维护性策略的基础
5.2 运用与维护体制的设计方式
5.3 构成管理的设计方式
5.4 系统监控的设计方式
5.5 任务管理的设计方式
5.6 时钟同步、杀毒软件更新的设计方式
5.7 总结
第6章 基础设施构成的设计方式
6.1 Web系统的网络构成的设计方式
6.2 存储设备构成的设计方式
6.3 报表生成的设计方式
6.4 报表输出的设计方式
6.5 报表基础设施配置的设计方式
6.6 数据使用和信息分析的设计方式
6.7 基础设施交互结构的设计方式
6.8 总结
第7章 使用云计算服务的实现策略
7.1 云服务中性能与可扩展性的设计方式
7.2 云服务中备份的可用性设计方式
7.3 云服务中虚拟服务器的可用性设计方式
7.4 总结
第8 章 基于模式的设计实践
8.1 基础设施构成的讨论步骤
8.2 地理信息系统
8.3 综合 DB系统
8.4 总结
【日本】图解机器学习 杉山将 许永伟.pdf
内容简介 · · · · · ·
本书用丰富的图示,从最小二乘法出发,对基于最小二乘法实现的各种机器学习算法进行了详细的介绍。第Ⅰ部分介绍了机器学习领域的概况;第Ⅱ部分和第Ⅲ部分分别介绍了各种有监督的回归算法和分类算法;第Ⅳ部分介绍了各种无监督学习算法;第Ⅴ部分介绍了机器学习领域中的新兴算法。书中大部分算法都有相应的MATLAB程序源代码,可以用来进行简单的测试。
本书适合所有对机器学习有兴趣的初学者阅读。
187张图解轻松入门
提供可执行的Matlab程序代码
覆盖机器学习中最经典、用途最广的算法
专业实用
东京大学教授、机器学习权威专家执笔,浓缩机器学习的关键知识点
图文并茂
187张图示帮助理解,详略得当,为读懂大部头开路。
角度新颖
基于最小二乘法讲解各种有监督学习的回归和分类算法,以及无监督学习算法。
实战导向
配有可执行的MATLAB程序代码,边学习边实践。
作者简介 · · · · · ·
杉山将
1974年生于大阪。东京工业大学计算机工程学博士毕业,现为东京大学教授、日本国立信息学研究所客座教授。主要从事机器学习的理论研究和算法开发,以及在信号和图像处理等方面的应用。2011年获日本信息处理学会长尾真纪念特别奖。著有《统计机器学习》、Density Ratio Estimation in Machine Learning等。同时也是Pattern Recognition and Machine Learning日文版的译者之一。
许永伟
2009年赴东京大学攻读博士学位,现于东京大学空间信息科学研究所从事博士后研究(特任研究员)。主要研究方向为模式识别与机器学习、图像处理与计算机视觉,对数据挖掘、大数据和信息架构有浓厚兴趣。
目录 · · · · · ·
第I部分 绪 论
第1章 什么是机器学习 2
1.1 学习的种类 2
1.2 机器学习任务的例子 4
1.3 机器学习的方法 8
第2章 学习模型 12
2.1 线性模型 12
2.2 核模型 15
2.3 层级模型 17
第II部分 有监督回归
第3章 最小二乘学习法 22
3.1 最小二乘学习法 22
3.2 最小二乘解的性质 25
3.3 大规模数据的学习算法 27
第4章带有约束条件的最小二乘法 31
4.1 部分空间约束的最小二乘学习法 31
4.2 l2 约束的最小二乘学习法 33
4.3 模型选择 37
第5章 稀疏学习 43
5.1 l1 约束的最小二乘学习法 43
5.2 l1 约束的最小二乘学习的求解方法 45
5.3 通过稀疏学习进行特征选择 50
5.4 lp约束的最小二乘学习法 51
5.5 l1+l2 约束的最小二乘学习法 52
第6章 鲁棒学习 55
6.1 l1 损失最小化学习 56
6.2 Huber损失最小化学习 58
6.3 图基损失最小化学习 63
6.4 l1 约束的Huber损失最小化学习 65
第III部分 有监督分类
第7章 基于最小二乘法的分类 70
7.1 最小二乘分类 70
7.2 0/1 损失和间隔 73
7.3 多类别的情形 76
第8章 支持向量机分类 80
8.1 间隔最大化分类 80
8.2 支持向量机分类器的求解方法 83
8.3 稀疏性 86
8.4 使用核映射的非线性模型 88
8.5 使用Hinge损失最小化学习来解释 90
8.6 使用Ramp损失的鲁棒学习 93
第9章 集成分类 98
9.1 剪枝分类 98
9.2 Bagging学习法 101
9.3 Boosting 学习法 105
第10章 概率分类法 112
10.1 Logistic回归 112
10.2 最小二乘概率分类 116
第11 章序列数据的分类 121
11.1 序列数据的模型化 122
11.2 条件随机场模型的学习 125
11.3 利用条件随机场模型对标签序列进行预测 128
第IV部分 无监督学习
第12章 异常检测 132
12.1 局部异常因子 132
12.2 支持向量机异常检测 135
12.3 基于密度比的异常检测 137
第13章 无监督降维 143
13.1 线性降维的原理 144
13.2 主成分分析 146
13.3 局部保持投影 148
13.4 核函数主成分分析 152
13.5 拉普拉斯特征映射 155
第14章 聚类 158
14.1 K均值聚类 158
14.2 核K均值聚类 160
14.3 谱聚类 161
14.4 调整参数的自动选取 163
第V部分 新兴机器学习算法
第15章 在线学习 170
15.1 被动攻击学习 170
15.2 适应正则化学习 176
第16章 半监督学习 181
16.1 灵活应用输入数据的流形构造 182
16.2 拉普拉斯正则化最小二乘学习的求解方法 183
16.3 拉普拉斯正则化的解释 186
第17章 监督降维 188
17.1 与分类问题相对应的判别分析 188
17.2 充分降维 195
第18章 迁移学习 197
18.1 协变量移位下的迁移学习 197
18.2 类别平衡变化下的迁移学习 204
第19章 多任务学习 212
19.1 使用最小二乘回归的多任务学习 212
19.2 使用最小二乘概率分类器的多任务学习 215
19.3 多次维输出函数的学习 216
第VI部分 结 语
第20章 总结与展望 222
参考文献 225