读书笔记 - 世界是数字的

2013-05-17 15:22

开篇

2个故事,突尼斯和埃及的革命,twitter,google;作者,买电视 电话,相片,音乐,电子邮件,facebook,youtube,twitter,语音处理,购物,地图 组织方式: 硬件,软件,通信 1. 信息的通用数字表示 2. 通用数字处理器,计算机,手机 3. 通用数字网络,互联网 4. 海量的数字化数据 隐私问题

第1部分 硬件

计算设备的历史

巨石阵,安提基瑟拉机器,算盘,计算尺,雅卡尔织布机,查尔斯巴贝奇提出的计算设备 拜伦的女儿,ada,统计人口数据的机器,IBM ENIAC,EDSAC 电子管,晶体管,集成电路

第1章 计算机里有什么

计算机,pc,mac,手机,平板基本上没有什么区别,用了汽车作类比,更小,更便宜,更快,更可靠,pc和mac的比例,如何选择

1,1 逻辑构造

处理器,内存,硬盘,总线,键盘,鼠标,显示器,其他设备

  1. cpu cpu使用一个跟心跳或者钟表滴答类似的内部时钟来控制基本操作的节拍,度量cpu速度的指标之一就是看这个内部时钟每秒振动多少次。 每秒钟心跳一次或者滴答一次就是1赫兹,记为1Hz,人类的心跳大约就是1赫兹

1,10的0次方 1000,10的3次方,是1k 100万,10的6次方,是1M 10亿,10的9次方,是1G 1万亿,10的12次方,是1T

1毫米,10的-3次方,千分之一 1微米,10的-6次方,百万分之一 1纳米,10的-9次方,十亿分之一

  1. RAM 内存里不仅保存了cpu正在处理的数据,还保存了让cpu如何处理数据所需运行的指令,通过把不同的指令加载到内存,就可以让计算机做不同的计算。 内存之所以被称为‘随机访问’,是因为cpu能以同样的速度快速访问其中任何地方的信息。以任何顺序随机访问不同位置时,速度不会收到任何影响。

  2. 硬盘和大容量存储器 逻辑结构和物理实现

  3. 其他设备 输入输出设备

1.2 物理构造

电子元件,电子管,晶体管,集成电路(integrated circuits)

1.3 摩尔定律

32纳米,32米的10亿分之一,纳表示10亿分之一,或者10的-9次方 一张纸后者一根头发的粗细是100微米,即十分一毫米,微是百万分之一,或者是10的-6次方,毫是千分之一,或者是10的-3次方

第2章 比特,字节与信息表示

计算机是数字处理器,存储和处理离散的信息,模拟信息是连续的,平滑变化的值 计算机用比特表示信息,二进制 较大的信息以比特组表示,数值,字母,单词,姓名,声音,用比特组来表示

2.1 模拟与数字

模拟(analog)与类似的(analogous)词根相同,表达的意思是,值随着其他因素变化而平滑变化。比如水龙头和汽车方向盘。(连续的) 数字系统处理的是离散的值,可能的取值是有限的。 例子: 机械手表和电子手表 汽车的模拟速度表和gps的电子时速 温度计和电子公告牌上的温度提示

现实生活是模拟的,而计算机处理的数据都是数字的。输入时转化为数字,输出时转换为模拟。 使用数字的优点:1 容易处理,无论来源是什么,都可以使用数字来存储,传输和处理,模拟数据则不行,而且还可以压缩,加密等。2 更容易扩展 使用模拟的有点:泥板,石雕,羊皮纸等经历了时间的考验。

2.2 模数转换

胶卷相机的原理 数码相机的原理

声音如何由模拟转化为数字 密纹唱片(long-playing record) LP 音频光盘(compact disc)CD

图片压缩 JPEG(Joint Photographic Expert Group) 电影 MPEG(Moving Picture Experts Group) 电视 模拟信号 -> 数字信号

ASCII(American Standard Code for Information Interchange)美国信息交换标准编码 A-Z 65-90 z-z 97-122 0-9 48-57

数字表示法可以表示上述所有信息,以及任何可以转换为数字的信息。

2.3 比特、字节与二进制

逢二进一而不是逢十进一

2.3.1 比特 表示数字信息的基本单位是比特(bit)(binary digit),创造者 约翰图基,1940年中期,(他还在1958年发明了software这个词) binary是指只有2个值的东西(bi的意思就是2个),一个比特要么是0要么是1

只用1个比特,就可以表示任何二选一的事物 N个比特可以表示2的N次方种组合

2.3.2 2的幂和10的幂

2的10次方 = 1 024 10的3次方 = 1 000 (千, kilo, K) 2的20次方 = 1 048 576 10的6次方 = 1 000 000 (兆, mega, M) 2的30次方 = 1 073 741 824 10的9次方 = 1 000 000 000 (吉, giga, G) 2的40次方 = 1 099 511 627 776 10的12次方 = 1 000 000 000 000 (太, tera, T) 2的50次方 = 1 125 899 906 842 624 10的15次方 = 1 000 000 000 000 000 (拍, peta, P)

2.3.3 二进制数值

十进制转二进制 二进制转十进制

二进制的加法表和乘法表简单,容易用计算机电路实现

2.3.4 字节

一个字节是8位,就是8个比特,字节(byte)这个词有IBM激素那几设计师维尔纳 巴克霍尔兹在1956年发明 一个字节可以编码256个不同的值(2的8次方),可以是0到255之间的整数,或者是ASCII字符集中的一个字符或其他什么

16进制的基数是16,有16个数字,

A -> (1010) (10) B -> (1011) (11) C -> (1100) (12) D -> (1101) (13) E -> (1110) (14) F -> (1111) (15)

RGB编码分别用3个字节来表示红绿蓝,每个分量都有255种取值,共255255255 -> 2的24次方 2的4次方X2的20次方 大约1600万种颜色

ipv4 4个字节,32位,来表示ip地址,共43亿左右 ipv6 16个字节,128位,2的128次方个地址

64位的系统

一个程序的指令就是另一个程序的数据

2.4 小结

制造有2种状态的设备比制造有10种状态的设备更容易 14世纪英国的酒器单位就是13个二进制量级

第3章 深入了解CPU

中央处理器,有一个小型的指令系统,做算术题,从RAM中取出要操作的数据,处理后再把数据保存到RAM,还要控制鼠标等外围设备 指令系统并不复杂,但是cpu每秒可以处理数十亿次运算,所以可以完成极为复杂的处理

3.1 玩具计算机

一个小型的计算机,可以存储指令和数据,使用一块存储区成为累加器,来保存一个数值,还有一个指令表 goto指令 ifzero指令 测试

3.2 真正的cpu

cpu反复执行简单的循环,从存储器取得指令,对指令译码(为执行指令做好准备),执行指令,保存结果,然后从头开始。 计算机体系结构 指令集,复杂指令集和精简指令集 cpu执行一条指令只需要零点几纳秒,(1纳秒 = 十亿分之一秒,10的-9次方秒) ram取数据或指令则为25-50纳秒

使用缓存,来加快处理速度 修改cpu设计,增加流水线,或者同时运行多个cpu

制造cpu,取舍,arm

3.3 缓存

缓存在计算机领域是个广泛使用的思想,在cpu中,缓存是容量小但是速度快的存储器,用来保存最近使用的信息,以避免再次访问ram cpu一般有3个缓存,成为一级缓存,二级缓存和三级缓存 浏览器也会使用缓存 google的搜索结果也会缓存

3.4 其他计算机

手机,平板电脑,嵌入式设备,相机,gps导航,家电等

超级计算机,多个cpu共享内存,计算机集群 分布式计算,独立的计算机,不共享内存,搜索引擎,社交网络等

它们都使用通用处理器,通过编程完成无穷无尽的任务,具有相同的逻辑功能,可以完成一模一样的计算。 图灵机 通用图灵机(创建一种图灵机,模拟其他图灵机) 图灵测试 CAPTCHA (Completely Automated Public Turing Test to tell Computer and Humans Apart) 反向图灵测试 图灵奖

硬件部分小结

数字计算机包含处理器和存储器,处理器执行简单的指令,速度非常快,存储器包含数据和处理数据的指令 计算机的逻辑结构自冯诺依曼以后并没有太大改变,但是物理结构发生了巨大的变化,摩尔定律 数字计算机使用bit,用数字存储信息 计算机越来越强大,但是还有很多计算机无法处理,比如艺术,创造力,真理,爱,美等

第2部分 软件

软件和硬件相对 现代系统采用通用硬件,同时靠软件来实现特定的行为 人们越来越依赖软件,任何错误或疏忽,都会导致程序出现问题

第4章 算法

算法是保证特定计算过程正确执行的一些列步骤,它的每一步都表达为一种基本操作,其含义都是完全确定的 算法最终必须停止

4.1 线性算法

计算时间与数据量成正比或者线性比例,那该算法就叫做线性时间算法或线性算法 比如找到最高的人,得到平均身高等

4.2 二分搜索

每次比较可以过滤掉一半,10次比较就可以从1024个元素中找到其中的1个 2的10次方 = 1024 1024以2为底的对数 = 10

10的6次方 = 1 000 000,约等于2的20次方,20次测试即可找到 100万 1M 10的9次方 = 1 000 000 000,约等于2的30次方,30次测试即可 10亿 1G 1B

2的14次方 = 16384 2的15次方 = 32768

4.3 排序

选择排序 NN 快速排序 Nlog N 英国计算机科学家托尼霍尔 1962年

4.4 难题与复杂性

算法的复杂性,运行效率 log N 二分查找 N * N 选择排序 NNN 三次方 2的N次方 指数级别

P类问题 (Polynomial 多项式)可在多项式时间内解决 NP问题 (nondeterministic polynomial)非确定行多项式 大概是说(这些问题可以用一个算法在多项式时间内靠猜测解决,而且该算法必须每次都能猜中)

图形推销员问题 1970年,斯蒂芬库克证明了一个数学结论,说所有的NP问题都是等价的,只要找到一个多项式时间算法,那就能找到其他问题的多项式时间算法

4.5 小结

问题的复杂性 复杂的算法,压缩算法,错误检测和校正算法, 密码学 搜索引擎

第5章 编程与编程语言

算法是忽略具体实例而对过程进行的一种抽象或理想化的描述,通过一组确定的基本操作来表达,这些操作的含义是完全已知且明确的 算法描写了应用这些基本操作的一系列步骤,涵盖所有可能的情况,而且能够保证最终能够停止

而程序不是抽象的,它描述了一台真正的计算机要完成某个任务所必须执行的具体步骤 程序也要考虑实际的问题,比如内存不足,处理器速度不够快,无效或恶意的输入等

操作系统

5.1 汇编语言

1949年,EDSAC,可编程的电子计算机 汇编器(assembler) 组装(assemble) 汇编语言,汇编语言编程 和cpu指令对应,移植到其他cpu很不方便

5.2 高级语言

20世纪50年代末到60年代初,独立与cpu体系结构的高级编程语言问世了 高级语言 -> 编译器 -> 汇编指令 -> 二进制程序

编译器一般包含前端和后端,前端负责把高级语言转换为中间形式,而后端则负责把中间形式转换为不同体系结构的汇编指令

高级语言的优点: 简化编程 提前发现错误

FORTRAN (Formula Translation) 公式转换 约翰巴库斯在IBM开发 科学计算和工程计算

COBOL (Common Business Oriented Language) 面向商业的通用语言 格蕾丝霍普,霍华德艾肯 商业数据处理

BASIC(Beginner's All-purpose Symbolic Instruction Code) 初学者通用符号指令代码 约翰凯梅尼,汤姆库尔茨 1964年 学习编程的入门语言

C 丹尼斯里奇在贝尔实验室 1973年 系统编程,编写汇编器,编译器,操作系统等

C++ 比雅尼 斯特劳斯特鲁普 20世纪80年代 解决大型程序开发过程中的复杂性

Java 詹姆斯高斯林 20世纪90年代 刚开始定位是小型嵌入式系统,后来网页中,再后来web服务器中

JavaScript 布兰登艾奇 1995年 在浏览器中实现动态效果

5.3 软件开发

大规模软件开发,分拆为小任务 大型系统抱恨上千万行代码,而且非常复杂

5.3.1 库,接口和开发工具包

采用现成的工具 把一组相关的函数集合起来,就叫做库 API(Application Programming Interface) 应用程序编程接口 SDK(Software Development Kit) 软件开发工具包

5.3.2 bug

程序中的错误或缺陷 格蕾丝霍普,1947年哈佛的Mark II 机械计算机,发现了一个死了的蛾子,称之为debug,目前在华盛顿的史密森尼美国历史博物馆里 http://www.ituring.com.cn/download/01RP6KdUP4ZC 用bug代指错误并不是霍普的发明, 1989年牛津英语词典第2版中,爱迪生

5.4 软件资产

软件所有权的法律问题

5.4.1 知识产权

知识产权是指由个人经过发明或创造等创造性劳动得到的各种无形资产

商业秘密 版权保护创造性的表达 专利

许可是批准使用某种产品的法律协议,EULA(End User License Agreement)最终用户许可协议

5.4.2 标准

标准是对某种产品如何制造或者应该具有什么用途的准确,详细的说明。 软件标准的例子设计编程语言,数据格式,算法处理等等 事实标准,指没有正式的名义,但每个人都在用

计算机领域的标准,ASCII,Unicode,C,C++,加密算法,压缩算法,信息交换协议

5.4.3 开放源代码

编译源代码得到的适合某种处理器执行的编码,成为目标码

理查德斯托曼 1983年 GUN项目自由软件基金会 FSF Free Software Foundation GPL (GNU General Public License) GNU通用公共许可

第6章 软件系统

系统软件和应用软件

6.1 操作系统

1961年 MIT开发了CTSS(Compatible Time-Sharing System 兼容分时系统) 1965年 肯汤普森和丹尼斯里奇 在贝尔实验室开发了Unix

Window,Unix,Linux

操作系统控制和分配系统资源,负责管理CPU,调度和协调当前运行的程序;管理RAM;管理存储在磁盘上的信息;管理和协调外接设备的活动

虚拟操作系统和虚拟机

6.2 操作系统怎么工作

启动(booting),源自拉着靴带(bootstrap)给自己穿上靴子的典故 自检,加载驱动 后台任务,处理事件循环

6.2.1 系统调用

操作系统提供了硬件和其他软件之间的接口

6.2.2 设备驱动程序

设备驱动程序是沟通操作系统与特定硬件设备的程序 操作系统通过驱动程序的接口以统一的方式访问相应设备,从而方便在设备之间切换

6.3 其他操作系统

相机等 改造linux

6.4 文件系统

计算机有逻辑组织和物理实现2大概念 文件系统能够在各种不同设备上组织和存储信息,但操作系统为这些设备都提供相同的接口 文件系统通过系统调用来提供

6.4.1 磁盘文件系统

磁盘被分成同样大小的块,文件存放在很多块中,不一定连续 文件夹也是文件,只不过文件夹中保存的是文件夹和文件的位置信息

6.4.2 删除文件

回收站,垃圾桶 都是特殊的文件夹 删除的文件只是标记为删除,可以被覆盖,是可以找回来的 安全删除,擦除数据

6.4.3 其他文件系统

USB(Universal Serial Bus) 通用串行总线 SD (Secure Digital) 安全数字式 FAT (File Allocation Table) 文件分配表 RAID(Redundant Array Of Independent Disk) 独立磁盘冗余阵列

6.5 应用程序

小型的,大型的 word,浏览器 异步

6.6 软件分层

硬件,总线 操作系统,内核 函数库,操作系统服务

第7章 学习编程

JavaScript的简单介绍

7.1 编程语言的基本概念

编程语言的某些基本概念是相通的 语法,一系列规则 语义,语言中所有元素的含义

JavaScript包含3个方面,语言本身,js代码库,浏览器接口

7.2 第1个js程序

alert('xxx')

7.3 第2个js程序

alert('hello ' + prompt('name?'))

7.4 循环

while语句

7.5 条件

if else 语句

7.6 库和接口

第三方应用可能会提供库和API

7.7 JavaScript怎么工作

浏览器遇到script标签时,会把内容交给js编译器或解释器去执行

小结

算法 算法就是一系列精确,无歧义的步骤,可以执行某种任务,然后停止,算法描述了不依赖任何实现的计算过程 这些步骤由明确定义的基本操作或原始操作构成

复杂性 算法的复杂性是对算法要执行的工作量的抽象描述,度量的依据是基本操作,儿表述的是计算次数与数据项数的关系 算法的复杂性分为好几个层次,对数级算法,线性算法,指数级算法,

编程 算法是抽象的,而程序是具体的 程序是让计算机完成一个任务的所有步骤的具体描述,必须考虑内存和时间的限制,数值的大小和精度等

编程语言 编程语言是表达所有计算步骤的记号库,人们使用编程语言写出代码,而代码可以被翻译成计算机最终可以执行的二进制形式,翻译方式有很多种,一般是编译器,汇编器,解释器,虚拟机等

库 编写程序会牵扯到很多细节,设计很多常见操作,库以及类似的机制可以提供预制的组件,供程序员在编程时使用

接口 接口或者API是提供服务的软件和使用该服务的软件之间的一种约定

抽象和虚拟化 使用软件可以隐藏实现的细节或者把实现伪装成其他东西,比如虚拟内存,虚拟机和解释器

Bug 计算机不懂宽容,程序都会有bug

第3部分 通信

通信让计算机和计算机之间可以通话 因特网,万维网

通信的历史,马拉松,驿马,视觉发报系统,电报,电话,传真,调制调解器,VoIP(Voice over IP) 基于模拟电话网络利用音频来传输数字化的信息

网络中立

第8章 网络

通信基本都是把信息转化为物理形式,以便通过某种媒介传输,在目的地,再把这些物理形式转换回人们能够理解的形式 带宽,描述的是系统传输数据的速度 等待或延迟,指的是信息块通过系统需要的时间 抖动,指的是延迟的可变性,对语音通信等通信系统很重要 信程指的是某种技术能够在多大地理范围内实现联网

8.1 电话与调制调解器

电话传输模拟的声音信号,将数字化信息转化为声音信号的叫做调制,反之叫做调解,就是调制调解器(modem) 速度很慢

8.2 有线和DSL

使用有线电视电缆来传输数据,有线调制调解器 广播,隐私,单向传输

DSL(Digital Substriber Loop) 数字用户环路 ADSL(Asymmetric Digital Substriber Loop) 非对称数字用户环路

8.3 局域网和以太网

1960年代末至1970年代初,施乐公司的帕洛阿尔托研究中心(PARC, Palo Alto Research Center) 开发了台个人计算机,取名阿尔托 为了在阿尔托之间共享资源, 1970年代早期由鲍勃梅特卡夫(Bob Metcalfe)和大卫博格斯(David Boggs)发明了联网技术,以太网(Ethernet) 以太网使用同轴电缆在计算机之间传送信号

以太网地址,MAC地址,48位的数字标识符,共2的48次方(2.8 X 10的14次方)个设备 使用十六进制表示,2个数字表示一个字节,共12为十六进制数字

隐私和资源争用

以太网中的信息以包的形式传输,以太网的传输距离是有限制的,通过硬件连接不同的网段并转发数据包,可以扩大传输范围

8.4 无线网络

无线网络使用电磁波传送信号,电磁波是特定频率的电波,其振动频率以Hz来衡量,在发送信号之前,首先要通过调制把数据信号附加到载波上,比如调幅(AM)就是通过改变载波的振幅或强度来传达信息,儿调频(FM)则是围绕一个中心值来改变载波的频率。

接收器接受到信号的强度与发射器的功率成正比,与到发射器距离的平方成反比

频段 计算机网络的无线标准 IEEE 802.11 b/g/n,WIFI IEEE (Institute of Electrical and Electronics Engineers) 电气与电子工程师协会

电波干扰

蓝牙(名字源于丹麦国王 Harald Bluetooth 公元935-985年) RFID(radio-frequency identification 无线射频识别) 电子门禁,商品电子标签,自动收费系统,宠物植入芯片等 GPS(Global Positioning System) 全球定位系统

8.5 手机

蜂窝电话或移动电话,手机,不仅涉及硬件,软件,通信,还关乎社交,经济,政治,甚至法律

何谓蜂窝? 因为频段和无线电的覆盖范围是有限的,所以需要把整个地区划分为蜂窝状的多个小区,每个小区中央有个基站,相邻的小区之间通过基站相连。

频段,信道,信号发射塔 手机识别码,SIM卡

GSM(Global System for Mobile Communications) 全球移动通信系统 CDMA(Code Division Multiple Access) 码分多址

8.6 小结

频段是无线联网系统的关键资源 无线网络是广播网络,任何人都可以监听 (WEP Wired Equivalent Privacy) 有线等效保密,存在缺陷 (Wi-Fi Protected Access) 受保护的Wi-Fi接入安全许多

第9章 互联网

互联网不是一个巨型网络,更不是一台巨型计算机,它由定义了网络和其中的计算机相互通信规则的标准连接在一起,是一个松散,非结构化,混乱,自组织的网络集合

协议

互联网的所有接入方都要达成同样的协议和标准,如信息按什么格式组织,在计算机之间怎样交换,如何识别计算机身份并授权,以及错误发生了该如何处理

9.1 互联网概述

互联网初创于1960年代,其初衷在于建造一个网络来连接分散在不同地理位置的计算机 由美国国防部高级研究计划署(Advanced Research Project Agency ARPA)赞助,称为ARPANET 1969年10月29日,ARPANET上的第1条消息从加州大学洛杉矶分校发出,到达550公里外的斯坦福大学,这一天可以看成互联网的诞生日

网络连接用的设备称为网关或路由器,用来把组成信息的数据包从一个网络发送到另一个网络 ISP (Internet Service Provider) 互联网服务提供商 互联网上,输送数据的包叫做IP(Internet Potocol)包,在具体的物理网络上,IP包通过一个或多个物理包来传输 最大的以太网包是1500个字节,最大IP包是65000字节,一个IP包会被切分成多个较小的以太网包进行传输

IP地址,32位,4个字节(IPv4)或128位,16个字节(IPv6),用户标示身份 域名,域名系统(Domain Name System DNS),用户将名字转换为地址 路由,提供为每个包查找从源地址到目标地址的路径的机制 协议,规则和步骤,描述上述机制如何协作 TCP(Transmission Control Protocol),该协议利用IP协议来提供可靠的传输机制,以便能从源地址向目标地址发送任意长度的字节序列 TCP协议之上有应用层协议,如网页浏览,电子邮件等

其他协议 DHCP (Dynamic Host Configuration Protocol 动态主机配置协议)

9.2 域名和地址

互联网由一小群技术专家以松散合作的方式来管理,互联网的大部分核心技术是由 互联网工程任务组(Internet Engineering Task Force IETF)开发的,他们定期召开会议,频繁发布出版物的方式打造互联网的技术规范,出版物称为(Request for Comments RFC),是互联网的事实规范 互联网名称与数字地址分配机构(Internet Corporation for Assigned Names and Numbers ICANN)的非盈利组织,负责互联网的技术协调,包括分配域名,IP地址,给域名注册商授权等

9.2.1 域名系统

DNS 国家代码和机构代码,顶级域 域名只表示逻辑结构,不受地理位置限制

9.2.2 IP地址

IP地址按照地址块的方式划分,没有数值或地理上的关系 IP地址大约有43亿个,已经分完了 家用无线路由器提供网络地址转换功能(Network Address Translation NAT),急用单个外部IP地址为多个内部IP地址提供联网服务 IPv6有2的128次方个地址,约为10的38次方个

9.2.3 跟服务器

DNS的关键功能是把名字转换为IP地址,顶级域的转换工作是由根域名服务器负责 域名服务器会缓存名字和地址 可以使用nslookup工具来查询DNS 根域名服务器共13台,a-m

9.2.4 注册自己的域名

域名的限制,最多30个字符,只能包含数字,字母和连字符 主机 域名服务器

9.3 路由

路由解决从源地址到目标地址的路径寻找问题 静态路由表 traceroute

9.4 协议

互联网协议(IP协议) 传输控制协议(TCP协议) 用户数据报协议(UDP协议)(User Datagram Protocal)

9.4.1 IP协议

互联网协议(IP协议)提供的包传递服务是不可靠,无连接的 IP包最大约65KB TTL(Time To live 生存时间) 单字节字段,由包的发送方设置,每经过一跳网关减1,减到0的时候就丢弃 TTL不能消除环路,但是能防止个别包在环路中转圈

9.4.2 传输控制协议(TCP)

在互联网协议簇中,高层协议基于IP层的不可靠服务合成可靠的服务,其中最重要的协议就是传输控制协议TCP,TCP为用户提供可靠的双向数据流 在TCP中,字节流切分为片段,放到TCP包(报文段)里,TCP报文段不仅包含实际数据,还有控制信息构成的头部,顺序号等 接收方会给每个报文段返回确认应答或否认应答,错误校验机制 端口,2个字节(16位)的二进制表示,共65536个端口 标准服务,80端口提供给web服务器,25端口发送邮件,110或143端口接收邮件 TCP和IP最初由文特瑟夫和鲍勃卡恩与1973年设计,因此获得2004年图灵奖

9.5 高层协议

互联网服务和应用程序使用TCP作为传输机制,但是完成具体任务时还是要使用自己的协议 HTTP(HyperText Transfer Protocol) 超文本传输协议 telent www.google.com 80 GET / HTTP/1.0 ...

9.5.1 文件传输协议(FTP)

FTP(File Transfer Protocol) 文件传输协议

9.5.2 远程登录(Telnet)

用来操作远程机器,使用明文密码,不安全,建议使用SSH(Secure Shell)

9.5.3 简单邮件传输协议(SMTP)

SMTP (Simple Mail Transfer Protocol) 简单邮件传输协议 SMTP要求邮件消息是ASCII文本,如果需要把其他类型的数据转化为文本,需要按照MIME标准来 MIME(Multipurpose Internet Mail Extensions) 多用途互联网邮件扩展 POP(Post Office Protocol) 邮局协议,收信协议 IMAP(Internet Mail Access Protocol) 互联网邮件访问协议

9.5.4 文件共享和点对点协议

P2P(Peer to Peer) 点对点 BitTorrent ed2k网络

文件共享 硬件方面设计声音及网络连接 使用数字来表示模拟信息 软件则包含应用程序和操作系统 点对点模型或客户机-服务器 目录和本地或远程的文件,用户界面,搜索,排序,压缩算法 通信部分使用互联网和浏览器,带宽,压缩,错误检测 安全和隐私等

9.5.5 关于版权的题外话

DCMA(Digital Millennium Copyright Act) 数字千年版权法案 避风港条款

9.5.6 高层协议总结

高层协议规定的是如何在计算机程序之间搬运信息而不去解释或处理数据

9.6 带宽

数据在网络中流动的速度受限于最慢的链路,网络中的很多地方都会减慢流量,链路本身和数据传输路径上计算机对数据的处理过程都是常见的瓶颈 IP协议本身并不能保障带宽 缓存,DNS缓存,浏览器缓存等

9.7 压缩

数据压缩是有效利用现有内存和带宽的好方法 压缩的基本思想是避免存储或传输冗余信息 无损压缩和有损压缩,JPEG,MPEG,MP3

9.8 错误检测和校正

错误检测和校正是加入精心控制的冗余信息以便检测错误甚至修正错误的过程 信用卡卡号,校验和算法

从最后一位开始向左,把每个数字交替乘1或2,结果大于9就减去9,把所有数字相加,结果可以被10整除

二进制的奇偶校验码 使改组二进制位中值为1的位有偶数个,

9.9 小结

互联网是基于数据包的网络,信息被封装在标准格式的包中发出,这种网络模型和电话网络不同,后者每次通话都会建立一条专用网络

第10章 万维网

万维网和互联网并不相同,万维网连接着提供信息和请求信息的计算机,它通过互联网建立连接和传送信息,并为互联网支持的其他服务提供人机界面

URL(Uniform Resource Locator) 统一资源定位符 HTTP(HyperText Transfer Protocol) 超文本传输协议 HTML(HyperText Markup Language) 超文本标记语言 浏览器 浏览器通过URL和HTTP向服务器发送请求,然后读取并显示服务器返回的HTML

1989年,在日内瓦附近的欧洲核子研究中心(CERN)工作的英国物理学家蒂姆伯纳斯李设计了这一套系统,包括URL,HTTP和HTML,还有一个只能通过文本模式查看可用资源的客户端

1993年2月,图形界面的浏览器 Mosaic 网景 Netscape Navigator IE Internet Explorer

W3C (World Wide Web Consortium)

10.1 万维网如何工作

超文本 点击链接,浏览器会打开一个到w3.org域的80端口的TCP/IP连接,然后发送HTTP请求,然后服务器服务器根据请求头和路径返回相应的内容 URL编码 顶级域名

10.2 HTML

HTML标签

10.3 表单

表单 CGI (Common Gateway Interface)

10.4 cookie

HTTP协议是无状态的 1994年Netscape公司发明了名为cookie的解决方案

10.5 动态网页

Java JavaScript 1995年 NetScape公司发明 浏览器插件 Flash,QuickTime ActiveX

10.6 网页之外的动态内容

动态内容也可能出现在其他地方,比如邮件

10.7 病毒和蠕虫

病毒和蠕虫,指在系统间传播的、通常是恶意的代码 VB程序 软盘,USB闪存

10.8 万维网安全

10.8.1 对客户端的攻击

垃圾邮件,跟踪,泄露信用卡和银行账号,花你的钱 恶意软件,网络钓鱼 鱼叉式网络钓鱼,社会工程学 间谍软件 僵尸程序 按键记录器

10.8.2 对服务器的攻击

SQL注入 Dos(Denial of Service) 拒绝服务攻击 DDos(Distributed Denial of Service) 分布式拒绝服务攻击

10.8.3 对传输中信息的攻击

中间人攻击 HTTPS VPN(Virtual Private Network) 虚拟专用网

10.8.4 自我防御

安全的口令 不要在无关重要的网站和重要的网站使用同一口令 不要使用开放的无线网络作重要的事 收到来历不明的邮件不要打开附件 使用windows要安装防病毒软件并保持更新

关闭浏览器弹窗和第三方cookie 用垃圾邮件过滤器过滤垃圾邮件 关闭Adobe Reader的JavaScript 关掉不需要的服务 打开防火墙程序

禁用邮件读取HTML和JavaScript 使用NoScript限制JavaScript 关掉所有cookie 使用Linux或Mac而不是windows 保护手机

10.9 密码学

凯撒大帝的rot13,频率分析法

10.9.1 密钥加密

蛮力攻击(brute force attack) 字典攻击(dictionary attack)

DES(Data Encryption Standard) 数据加密标准,56位密钥 AES(Advantage Encryption Standard) 高级加密标准

比利时密码学家 琼德门和文森特赖伊曼发明的Rjingdael算法被选为AES标准加密算法

缺点:密钥分发

10.9.2 公钥加密

怀特菲尔德·迪菲(Whitfield Diffie)和马丁·赫尔曼(Martin Hellman)在1970年代发明 差不多同时,英国一所情报机构的密码学家詹姆斯·埃利斯(James Ellis)和克利福德·柯克斯(Clifford Cocks)也独立发现了同样的方法

密钥对,公钥和私钥,有关联的整数,用其中一个密钥加密过的消息只能用另一个密钥解密,反之亦然

缺点:速度慢

数字签名 RSA算法 信息摘要或密码学散列 MD5 SHA-1 SHA-2 SHA-3 人的作用

10.10 小结

机遇,利益,风险,司法,各种问题

第11章 数据,信息和隐私

11.1搜索

上网搜索的历史可以追溯到1994年前后 google

搜索引擎如何工作 广告投放

11.2 跟踪

地理位置信息 cookie HTTP请求头 小图片 doubleclick 深度包检测

11.3 数据库,信息与聚合

公共档案 数据匿名化非常困难 再识别 匿名处理数据和混淆保证安全

11.4 隐私失控

社交网站的隐私问题 位置隐私

11.5 云计算

云计算 Google Docs 隐私,数据问题

11.6 小结

举手之劳,无不可及 美好的背后,还是要小心谨慎

第12章

通用的数字信息表示 通用的数字处理器 通用的数字网络 通用的数字系统无处不在

个人隐私 监控技术 安全 版权 专利 资源分配 司法管辖权 DRM (Digital Rights Management) 数字版权管理 监管

终于看完了。。。 2013.05.24 15:25