万本电子书0元读

万本电子书0元读

顶部广告

图灵经典计算机基础系列(套装全4册)电子书

日文版重印41次! “计算机组成原理”图解趣味版 蹲马桶就能看懂的编程基础知识 本书适合 1. 菜鸟程序员入门进阶 2. 中级程序员查漏补缺 3. 高手程序员向家人(女友、老妈等)普及计算机知识 如何向小学生讲解CPU和二进制? 如何向中学生讲解内存和磁盘? 如何向女高中生讲解操作系统的原理? 如何向老奶奶说明显示器和电视的不同? 如果你完全没有思路,就应该读一读这本书。 以图配文,深入讲解编程基础知识 语言通俗,即使是文科生也能看得懂 特设“如果是你,你会怎么做?”专栏,生动有趣

售       价:¥

180人正在读 | 0人评论 6.2

作       者:[日]矢泽久雄 著,[日]户根勤 著,平泽章 著

出  版  社:人民邮电出版社有限公司

出版时间:2021-05-01

字       数:57.3万

所属分类: 科技 > 计算机/网络 > 程序设计

温馨提示:数字商品不支持退换货,不提供源文件,不支持导出打印

为你推荐

  • 读书简介
  • 目录
  • 累计评论(0条)
  • 读书简介
  • 目录
  • 累计评论(0条)
《程序是怎样跑起来的》一书从计算机的内部结构开始讲起,以图配文的形式详细讲解了二进制、内存、数据压缩、源文件和可执行文件、操作系统和应用程序的关系、汇编语言、硬件控制方法等内容,目的是让读者了解从用户双击程序图标到程序开始运行之间到底发生了什么。同时专设了“如果是你,你会怎样介绍?”专栏,以小学生、老奶奶为对象讲解程序的运行原理,颇为有趣。本书图文并茂,通俗易懂,非常适合计算机爱好者及相关从业人员阅读。 《计算机是怎样跑起来的》倡导在计算机迅速发展、技术不断革新的今 天,回归到计算机的基础知识上。通过探究计算机的本质,提升工程师对计算机的兴趣,在面对复杂的**新技术时,能够迅速掌握其要点并灵活运用。 《计算机是怎样跑起来的》以图配文,以计算机的三大原则为开端、相继介绍了计算机的结构、手工汇编、程序流程、算法、数据结构、面向对象编程、数据库、TCP/IP 网络、数据加密、XML、计算机系统开发以及SE 的相关知识。本书适合计算机爱好者和相关从业人员阅读。 《计算机是怎样跑起来的》图文并茂,通俗易懂,非常适合计算机爱好者和相关从业人员阅读。 《网络是怎样连接的》以探索之旅的形式,从在浏览器中输入网址开始,一路追踪了到显示出网页的内容为止的整个过程,以图配文,讲解了网络的全貌,并重点介绍了实际的网络设备和软件是如何工作的。目的是帮助读者理解网络的本质意义,理解实际的设备和软件,进而熟练运用网络技术。同时,专设了“网络术语其实很简单”专栏,以对话的形式介绍了一些网络术语的词源,颇为生动有趣。 本书以图配文的形式,直观易懂地详细介绍了面向对象的全貌及其中包含的各项技术,包括面向对象编程、框架、设计模式、UML、建模、面向对象设计和敏捷开发等。对于各项技术是如何使用的(How),书中只进行小限度的说明,而重点介绍这些技术究竟是什么样的(What)以及为什么需要这些技术(Why)。另外,书中设有“编程往事”专栏,介绍了作者年轻时的一些经历;还设有“对象的另一面”专栏,以与正文不同的视角讲解面向对象这一概念普及的背景和原因,通俗有趣。
目录展开

总目录

计算机是怎样跑起来的

版权声明

前言

本书将要讲解的主要关键词

本书的结构

第 1 章 计算机的三大原则

1.1 计算机的三个根本性基础

1.2 输入、运算、输出是硬件的基础

1.3 软件是指令和数据的集合

1.4 对计算机来说什么都是数字

1.5 只要理解了三大原则,即使遇到难懂的最新技术,也能轻松应对

1.6 为了贴近人类,计算机在不断地进化

1.7 稍微预习一下第 2 章

第 2 章 试着制造一台计算机吧

2.1 制作微型计算机所必需的元件

2.2 电路图的读法

2.3 连接电源、数据和地址总线

2.4 连接 I/O

2.5 连接时钟信号

2.6 连接用于区分读写对象是内存还是 I/O 的引脚

2.7 连接剩余的控制引脚

2.8 连接外部设备,通过 DMA 输入程序

2.9 连接用于输入输出的外部设备

2.10 输入测试程序并进行调试

第 3 章 体验一次手工汇编

3.1 从程序员的角度看硬件

3.2 机器语言和汇编语言

3.3 Z80 CPU 的寄存器结构

3.4 追踪程序的运行过程

3.5 尝试手工汇编

3.6 尝试估算程序的执行时间

第 4 章 程序像河水一样流动着

4.1 程序的流程分为三种

4.2 用流程图表示程序的流程

4.3 表示循环程序块的“帽子”和“短裤”

4.4 结构化程序设计

4.5 画流程图来思考算法

4.6 特殊的程序流程——中断处理

4.7 特殊的程序流程——事件驱动

COLUMN 来自企业培训现场

电阻颜色代码的谐音助记口诀

第 5 章 与算法成为好朋友的七个要点

5.1 算法是程序设计的“熟语”

5.2 要点 1:算法中解决问题的步骤是明确且有限的

5.3 要点 2:计算机不靠直觉而是机械地解决问题

5.4 要点 3:了解并应用典型算法

5.5 要点 4:利用计算机的处理速度

5.6 要点 5:使用编程技巧提升程序执行速度

5.7 要点 6:找出数字间的规律

5.8 要点 7:先在纸上考虑算法

第 6 章 与数据结构成为好朋友的七个要点

6.1 要点 1:了解内存和变量的关系

6.2 要点 2:了解作为数据结构基础的数组

6.3 要点 3:了解数组的应用——作为典型算法的数据结构

6.4 要点 4:了解并掌握典型数据结构的类型和概念

6.5 要点 5:了解栈和队列的实现方法

6.6 要点 6:了解结构体的组成

6.7 要点 7:了解链表和二叉树的实现方法

第 7 章 成为会使用面向对象编程的程序员吧

7.1 面向对象编程

7.2 对 OOP 的多种理解方法

7.3 观点 1:面向对象编程通过把组件拼装到一起构建程序

7.4 观点 2:面向对象编程能够提升程序的开发效率和可维护性

7.5 观点 3:面向对象编程是适用于大型程序的开发方法

7.6 观点 4:面向对象编程就是在为现实世界建模

7.7 观点 5:面向对象编程可以借助 UML 设计程序

7.8 观点 6:面向对象编程通过在对象间传递消息驱动程序

7.9 观点 7:在面向对象编程中使用继承、封装和多态

7.10 类和对象的区别

7.11 类有三种使用方法

7.12 在 Java 和 .NET 中有关 OOP 的知识不能少

第 8 章 一用就会的数据库

8.1 数据库是数据的基地

8.2 数据文件、DBMS 和数据库应用程序

8.3 设计数据库

8.4 通过拆表和整理数据实现规范化

8.5 用主键和外键在表间建立关系

8.6 索引能够提升数据的检索速度

8.7 设计用户界面

8.8 向 DBMS 发送 CRUD 操作的 SQL 语句

8.9 使用数据对象向 DBMS 发送 SQL 语句

8.10 事务控制也可以交给 DBMS 处理

COLUMN 来自企业培训现场

培训新人编程时推荐使用什么编程语言?

第 9 章 通过七个简单的实验理解 TCP/IP 网络

9.1 实验环境

9.2 实验 1:查看网卡的 MAC 地址

9.3 实验 2:查看计算机的 IP 地址

9.4 实验 3:了解 DHCP 服务器的作用

9.5 实验 4:路由器是数据传输过程中的指路人

9.6 实验 5:查看路由器的路由过程

9.7 实验 6:DNS 服务器可以把主机名解析成 IP 地址

9.8 实验 7:查看 IP 地址和 MAC 地址的对应关系

9.9 TCP 的作用及 TCP/IP 网络的层级模型

第 10 章 试着加密数据吧

10.1 先来明确一下什么是加密

10.2 错开字符编码的加密方式

10.3 密钥越长,解密越困难

10.4 适用于互联网的公开密钥加密技术

10.5 数字签名可以证明数据的发送者是谁

第 11 章 XML 究竟是什么

11.1 XML 是标记语言

11.2 XML 是可扩展的语言

11.3 XML 是元语言

11.4 XML 可以为信息赋予意义

11.5 XML 是通用的数据交换格式

11.6 可以为 XML 标签设定命名空间

11.7 可以严格地定义 XML 的文档结构

11.8 用于解析 XML 的组件

11.9 XML 可用于各种各样的领域

第 12 章 SE 负责监管计算机系统 的构建

12.1 SE 是自始至终参与系统开发过程的工程师

12.2 SE 未必担任过程序员

12.3 系统开发过程的规范

12.4 各个阶段的工作内容及文档

12.5 所谓设计,就是拆解

12.6 面向对象法简化了系统维护工作

12.7 技术能力和沟通能力

12.8 IT 不等于引进计算机

12.9 计算机系统的成功与失败

12.10 大幅提升设备利用率的多机备份

结束语

谢辞

看完了

面向对象是怎样工作的(第2版)

版权声明

推荐序

前言

本书的结构

导引(第 1、2、7 章)

编程技术(第 3~6 章)

应用技术(第 8~11 章)

目标(第 12 章)

特别讲解(第 13 章)

面向对象是怎样工作的——本书中涉及的主要关键词

各章的结构

第 1 章 面向对象:让软件开发变轻松的技术

1.1 面向对象是软件开发的综合技术

1.2 以对象为中心编写软件的开发方法

1.3 从编程语言演化为综合技术

1.4 在混乱的状态下去理解,就会觉得很难

1.5 混乱之一:术语洪流

1.6 混乱之二:比喻滥用

1.7 混乱之三:“一切都是对象”综合征

1.8 三种混乱增大了理解的难度

1.9 因为不理解,所以才感觉神秘

1.10 消除这三种混乱,就能看到面向对象的真面目

1.11 本书的构成

第 2 章 似是而非:面向对象与现实世界

2.1 如果只理解概念,就容易混乱

2.2 对照现实世界介绍面向对象

2.3 类指类型,实例指具体的物

2.4 多态让消息的发送方法通用

2.5 继承对共同点和不同点进行系统的分类和整理

2.6 面向对象和现实世界是似是而非的

2.7 现实世界的人和物不是由类创建的

2.8 现实世界的人和物并不只是根据消息来行动

2.9 明确定义为编程结构

2.10 软件并不会直接表示现实世界

2.11 与现实世界的相似扩大了可能性

专栏 对象的另一面

成为潮词的面向对象

第 3 章 理解 OOP:编程语言的历史

3.1 OOP 的出现具有必然性

3.2 最初使用机器语言编写程序

3.3 编程语言的第一步是汇编语言

3.4 高级语言的发明使程序更加接近人类

3.5 重视易懂性的结构化编程

3.6 提高子程序的独立性,强化可维护性

3.7 实现无 GOTO 编程的结构化语言

3.8 进化方向演变为重视可维护性和可重用性

3.9 没有解决全局变量问题和可重用性差的问题

深入学习的参考书籍

专栏 编程往事

COBOL 编译器的鸡和蛋的问题

第 4 章 面向对象编程技术:去除冗余、进行整理

4.1 OOP 具有结构化语言所没有的三种结构

4.2 OOP 的结构会根据编程语言的不同而略有差异

4.3 三大要素之一:类具有的三种功能

4.4 类的功能之一:汇总

4.5 类的功能之二:隐藏

4.6 类的功能之三:创建很多个

4.7 实例变量是限定访问范围的全局变量

4.8 三大要素之二:实现调用端公用化的多态

4.9 三大要素之三:去除类的重复定义的继承

4.10 对三大要素的总结

4.11 通过嵌入类型使程序员的工作变轻松

4.12 将类作为类型使用

4.13 编程语言“退化”了吗

4.14 更先进的 OOP 结构

4.15 进化的 OOP 结构之一:包

4.16 进化的 OOP 结构之二:异常

4.17 进化的 OOP 结构之三:垃圾回收

4.18 对 OOP 进化的总结

4.19 决心决定 OOP 的生死

第 5 章 理解内存结构:程序员的基本素养

5.1 理解 OOP 程序的运行机制

5.2 两种运行方式:编译器与解释器

5.3 解释、运行中间代码的虚拟机

5.4 CPU 同时运行多个线程

5.5 使用静态区、堆区和栈区进行管理

5.6 OOP 的特征在于内存的用法

5.7 每个类只加载一个类信息

5.8 每次创建实例都会使用堆区

5.9 在变量中存储实例的指针

5.10 复制存储实例的变量时要多加注意

5.11 多态让不同的类看起来一样

5.12 根据继承的信息类型的不同,内存配置也不同

5.13 孤立的实例由垃圾回收处理

< 热身问答 >

< 问题的答案和讲解 >

深入学习的参考书籍

专栏 编程往事

OOP 中 dump 看起来很费劲?

第 6 章 类库、框架、组件、设计模式

6.1 OOP 的优秀结构能够促进重用

6.2 类库是 OOP 的软件构件群

6.3 标准类库是语言规范的一部分

6.4 将 Object 类作为祖先类的继承结构

6.5 框架存在各种含义

6.6 框架是应用程序的半成品

6.7 世界上可重用的软件构件群

6.8 独立性较高的构件:组件

6.9 设计模式是优秀的设计思想集

6.10 设计模式是类库探险的路标

6.11 扩展到各个领域的思想的重用

6.12 通过类库和模式发现的重用的好处

深入学习的参考书籍

第 7 章 化为通用的归纳整理法的面向对象

7.1 软件不会直接表示现实世界

7.2 应用于集合论和职责分配

7.3 在上流工程中化为通用的归纳整理法

7.4 两种含义引起混乱

7.5 分为 OOP 的扩展和归纳整理法进行思考

7.6 为何化为了通用的归纳整理法

专栏 对象的另一面

语言在先,还是概念在先

第 8 章 UML:查看无形软件的工具

8.1 UML 是表示软件功能和结构的图形的绘制方法

8.2 UML 有 13 种图形

8.3 UML 的使用方法大致分为三种

8.4 UML 的使用方法之一:表示程序结构和动作

8.5 类图表示 OOP 程序的结构

8.6 使用时序图和通信图表示动作

8.7 UML 的使用方法之二:表示归纳整理法的成果

8.8 使用类图表示根据集合论进行整理的结果

8.9 表示职责分配的时序图和通信图

8.10 UML 的使用方法之三:表示非面向对象

8.11 使用用例图表示交给计算机的工作

8.12 使用活动图表示工作流程

8.13 使用状态机图表示状态的变化

8.14 弥补自然语言和计算机语言缺点的“语言”

深入学习的参考书籍

第 9 章 建模:填补现实世界和软件之间的沟壑

9.1 现实世界和软件之间存在沟壑

9.2 计算机擅长固定工作和记忆工作

9.3 通过业务分析、需求定义和设计来填补沟壑

9.4 建模是顺利推进这 3 个阶段的工作的技术

9.5 应用程序不同,建模的内容也不一样

9.6 业务应用程序记录现实中的事情

9.7 对图书馆的借阅业务进行建模

9.8 使用用例图来表示图书馆业务

9.9 用概念模型表示图书馆系统的信息

9.10 业务应用程序中只有数据是无缝的

9.11 嵌入式软件替换现实世界的工作

9.12 嵌入式软件中设备的研究开发很重要

9.13 使用状态机图来表示全自动工作的情形

9.14 嵌入式软件一直执行单调的工作

9.15 建模蕴含着软件开发的乐趣

深入学习的参考书籍

第 10 章 面向对象设计:拟人化和职责分配

10.1 设计的目标范围很广

10.2 相比运行效率,现在更重视可维护性和可重用性

10.3 设计目标之一:去除重复

10.4 设计目标之二:提高构件的独立性

10.5 提高构件独立性的诀窍

10.6 设计目标之三:避免依赖关系发生循环

10.7 面向对象设计的“感觉”是拟人化和职责分配

10.8 进行了职责分配的软件创建的奇妙世界

深入学习的参考书籍

第 11 章 衍生:敏捷开发和 TDD

11.1 仅靠技术和技术窍门,软件开发并不会成功

11.2 系统地汇总了作业步骤和成果的开发流程

11.3 限制修改的瀑布式开发流程

11.4 瀑布式开发流程的极限

11.5 灵活响应变化的迭代式开发流程

11.6 RUP 按时间分解和管理开发

11.7 打破诸多限制的 XP

11.8 快速编写优秀软件的敏捷宣言

11.9 支持敏捷开发的实践

11.10 先编写测试代码,一边运行一边开发的测试驱动开发

11.11 在程序完成后改善运行代码的重构

11.12 经常进行系统整合的持续集成

11.13 敏捷开发和 TDD 源于面向对象

11.14 不存在最好的开发流程

深入学习的参考书籍

专栏 编程往事

过去不被允许的 XP

第 12 章 熟练掌握面向对象

12.1 面向对象这一强大概念是原动力

12.2 时代追上了面向对象

12.3 面向对象的热潮不会结束

12.4 将面向对象作为工具熟练掌握

12.5 享受需要动脑的软件开发

深入学习的参考书籍

第 13 章 函数式语言是怎样工作的

13.1 面向对象的“下一代”开发技术

13.2 函数式语言的 7 个特征

13.3 特征 1:使用函数编写程序

13.4 特征 2:所有表达式都返回值

13.5 特征 3:将函数作为值进行处理

13.6 特征 4:可以灵活组合函数和参数

13.7 特征 5:没有副作用

13.8 特征 6:使用分类和递归来编写循环处理

13.9 特征 7:编译器自动进行类型推断

13.10 对 7 个特征的总结

13.11 函数式语言的分类

13.12 函数式语言的优势

13.13 函数式语言的课题

13.14 函数式语言和面向对象的关系

13.15 函数式语言会普及吗

深入学习的参考书籍

后记

致谢

作者简介

看完了

程序是怎样跑起来的

版权声明

前言

程序是怎样跑起来的——本书中涉及的主要关键词

本书的结构

第 1 章 对程序员来说 CPU 是什么

1.1 CPU 的内部结构解析

1.2 CPU 是寄存器的集合体

1.3 决定程序流程的程序计数器

1.4 条件分支和循环机制

1.5 函数的调用机制

1.6 通过地址和索引实现数组

1.7 CPU 的处理其实很简单

第 2 章 数据是用二进制数表示的

2.1 用二进制数表示计算机信息的原因

2.2 什么是二进制数

2.3 移位运算和乘除运算的关系

2.4 便于计算机处理的“补数”

2.5 逻辑右移和算术右移的区别

2.6 掌握逻辑运算的窍门

COLUMN 如果是你,你会怎样介绍?

向小学生讲解 CPU 和二进制

第 3 章 计算机进行小数运算时出错的原因

3.1 将 0.1 累加 100 次也得不到 10

3.2 用二进制数表示小数

3.3 计算机运算出错的原因

3.4 什么是浮点数

3.5 正则表达式和 EXCESS 系统

3.6 在实际的程序中进行确认

3.7 如何避免计算机计算出错

3.8 二进制数和十六进制数

第 4 章 熟练使用有棱有角的内存

4.1 内存的物理机制很简单

4.2 内存的逻辑模型是楼房

4.3 简单的指针

4.4 数组是高效使用内存的基础

4.5 栈、队列以及环形缓冲区

4.6 链表使元素的追加和删除更容易

4.7 二叉查找树使数据搜索更有效

第 5 章 内存和磁盘的亲密关系

5.1 不读入内存就无法运行

5.2 磁盘缓存加快了磁盘访问速度

5.3 虚拟内存把磁盘作为部分内存来使用

5.4 节约内存的编程方法

5.5 磁盘的物理结构

第 6 章 亲自尝试压缩数据

6.1 文件以字节为单位保存

6.2 RLE 算法的机制

6.3 RLE 算法的缺点

6.4 通过莫尔斯编码来看哈夫曼算法的基础

6.5 用二叉树实现哈夫曼编码

6.6 哈夫曼算法能够大幅提升压缩比率

6.7 可逆压缩和非可逆压缩

COLUMN 如果是你,你会怎样介绍?

向沉迷游戏的中学生讲解内存和磁盘

第 7 章 程序是在何种环境中运行的

7.1 运行环境 = 操作系统 + 硬件

7.2 Windows 克服了 CPU 以外的硬件差异

7.3 不同操作系统的 API 不同

7.4 FreeBSD Port 帮你轻松使用源代码

7.5 利用虚拟机获得其他操作系统环境

7.6 提供相同运行环境的 Java 虚拟机

7.7 BIOS 和引导

第 8 章 从源文件到可执行文件

8.1 计算机只能运行本地代码

8.2 本地代码的内容

8.3 编译器负责转换源代码

8.4 仅靠编译是无法得到可执行文件的

8.5 启动及库文件

8.6 DLL 文件及导入库

8.7 可执行文件运行时的必要条件

8.8 程序加载时会生成栈和堆

8.9 有点难度的 Q&A

第 9 章 操作系统和应用的关系

9.1 操作系统功能的历史

9.2 要意识到操作系统的存在

9.3 系统调用和高级编程语言的移植性

9.4 操作系统和高级编程语言使硬件抽象化

9.5 Windows 操作系统的特征

COLUMN 如果是你,你会怎样介绍?

向超喜欢手机的女高中生讲解操作系统的作用

第 10 章 通过汇编语言了解 程序的实际构成

10.1 汇编语言和本地代码是一一对应的

10.2 通过编译器输出汇编语言的源代码

10.3 不会转换成本地代码的伪指令

10.4 汇编语言的语法是“操作码 + 操作数”

10.5 最常用的 mov 指令

10.6 对栈进行 push 和 pop

10.7 函数调用机制

10.8 函数内部的处理

10.9 始终确保全局变量用的内存空间

10.10 临时确保局部变量用的内存空间

10.11 循环处理的实现方法

10.12 条件分支的实现方法

10.13 了解程序运行方式的必要性

第 11 章 硬件控制方法

11.1 应用和硬件无关?

11.2 支撑硬件输入输出的 IN 指令和 OUT 指令

11.3 编写测试用的输入输出程序

11.4 外围设备的中断请求

11.5 用中断来实现实时处理

11.6 DMA 可以实现短时间内传送大量数据

11.7 文字及图片的显示机制

COLUMN 如果是你,你会怎样介绍?

向邻居老奶奶说明显示器和电视机的不同

第 12 章 让计算机“思考”

12.1 作为“工具”的程序和为了“思考”的程序

12.2 用程序来表示人类的思考方式

12.3 用程序来表示人类的思考习惯

12.4 程序生成随机数的方法

12.5 活用记忆功能以达到更接近人类的判断

12.6 用程序来表示人类的思考方式

COLUMN 如果是你,你会怎样介绍?

向常光临的酒馆老板讲解计算机的思考机制

附录 让我们开始 C 语言之旅

C 语言的特点

变量和函数

数据类型

标准函数库

函数调用

局部变量和全局变量

数组和循环

其他语法结构

结语

致谢

看完了

网络是怎样连接的

推荐序

译者序

前言

本书的结构

探索之旅指南

网络的全貌

第 1 章 Web浏览器

第 2 章 协议栈、网卡

第 3 章 集线器、交换机、路由器

第 4 章 接入网、网络运营商

第 5 章 防火墙、缓存服务器

第 6 章 Web服务器

各章的结构

第 1 章 浏览器生成消息——探索浏览器内部

1.1 生成 HTTP 请求消息

1.1.1 探索之旅从输入网址开始

1.1.2 浏览器先要解析 URL

1.1.3 省略文件名的情况

1.1.4 HTTP 的基本思路

1.1.5 生成 HTTP 请求消息

1.1.6 发送请求后会收到响应

1.2 向 DNS 服务器查询 Web 服务器的 IP 地址

1.2.1 IP 地址的基本知识

1.2.2 域名和 IP 地址并用的理由

1.2.3 Socket 库提供查询 IP 地址的功能

1.2.4 通过解析器向 DNS 服务器发出查询

1.2.5 解析器的内部原理

1.3 全世界 DNS 服务器的大接力

1.3.1 DNS 服务器的基本工作

1.3.2 域名的层次结构

1.3.3 寻找相应的 DNS 服务器并获取 IP 地址

1.3.4 通过缓存加快 DNS 服务器的响应

1.4 委托协议栈发送消息

1.4.1 数据收发操作概览

1.4.2 创建套接字阶段

1.4.3 连接阶段:把管道接上去

1.4.4 通信阶段:传递消息

1.4.5 断开阶段:收发数据结束

Column 网络术语其实很简单

第 2 章 用电信号传输 TCP/IP 数据——探索协议栈和网卡

2.1 创建套接字

2.1.1 协议栈的内部结构

2.1.2 套接字的实体就是通信控制信息

2.1.3 调用 socket 时的操作

2.2 连接服务器

2.2.1 连接是什么意思

2.2.2 负责保存控制信息的头部

2.2.3 连接操作的实际过程

2.3 收发数据

2.3.1 将 HTTP 请求消息交给协议栈

2.3.2 对较大的数据进行拆分

2.3.3 使用 ACK 号确认网络包已收到

2.3.4 根据网络包平均往返时间调整 ACK 号等待时间

2.3.5 使用窗口有效管理 ACK 号

2.3.6 ACK 与窗口的合并

2.3.7 接收 HTTP 响应消息

2.4 从服务器断开并删除套接字

2.4.1 数据发送完毕后断开连接

2.4.2 删除套接字

2.4.3 数据收发操作小结

2.5 IP 与以太网的包收发操作

2.5.1 包的基本知识

2.5.2 包收发操作概览

2.5.3 生成包含接收方 IP 地址的 IP 头部

2.5.4 生成以太网用的 MAC 头部

2.5.5 通过 ARP 查询目标路由器的 MAC 地址

2.5.6 以太网的基本知识

2.5.7 将 IP 包转换成电或光信号发送出去

2.5.8 给网络包再加 3 个控制数据

2.5.9 向集线器发送网络包

2.5.10 接收返回包

2.5.11 将服务器的响应包从 IP 传递给 TCP

2.6 UDP 协议的收发操作

2.6.1 不需要重发的数据用 UDP 发送更高效

2.6.2 控制用的短数据

2.6.3 音频和视频数据

Column 网络术语其实很简单

第 3 章 从网线到网络设备——探索集线器、交换机和路由器

3.1 信号在网线和集线器中传输

3.1.1 每个包都是独立传输的

3.1.2 防止网线中的信号衰减很重要

3.1.3 “双绞”是为了抑制噪声

3.1.4 集线器将信号发往所有线路

3.2 交换机的包转发操作

3.2.1 交换机根据地址表进行转发

3.3.2 MAC 地址表的维护

3.2.3 特殊操作

3.2.4 全双工模式可以同时进行发送和接收

3.2.5 自动协商:确定最优的传输速率

3.2.6 交换机可同时执行多个转发操作

3.3 路由器的包转发操作

3.3.1 路由器的基本知识

3.3.2 路由表中的信息

3.3.3 路由器的包接收操作

3.3.4 查询路由表确定输出端口

3.3.5 找不到匹配路由时选择默认路由

3.3.6 包的有效期

3.3.7 通过分片功能拆分大网络包

3.3.8 路由器的发送操作和计算机相同

3.3.9 路由器与交换机的关系

3.4 路由器的附加功能

3.4.1 通过地址转换有效利用 IP 地址

3.4.2 地址转换的基本原理

3.4.3 改写端口号的原因

3.4.4 从互联网访问公司内网

3.4.5 路由器的包过滤功能

Column 网络术语其实很简单

第 4 章 通过接入网进入互联网内部——探索接入网和网络运营商

4.1 ADSL 接入网的结构和工作方式

4.1.1 互联网的基本结构和家庭、公司网络是相同的

4.1.2 连接用户与互联网的接入网

4.1.3 ADSL Modem 将包拆分成信元

4.1.4 ADSL 将信元“调制”成信号

4.1.5 ADSL 通过使用多个波来提高速率

4.1.6 分离器的作用

4.1.7 从用户到电话局

4.1.8 噪声的干扰

4.1.9 通过 DSLAM 到达 BAS

4.2 光纤接入网(FTTH)

4.2.1 光纤的基本知识

4.2.2 单模与多模

4.2.3 通过光纤分路来降低成本

4.3 接入网中使用的 PPP 和隧道

4.3.1 用户认证和配置下发

4.3.2 在以太网上传输 PPP 消息

4.3.3 通过隧道将网络包发送给运营商

4.3.4 接入网的整体工作过程

4.3.5 不分配 IP 地址的无编号端口

4.3.6 互联网接入路由器将私有地址转换成公有地址

4.3.7 除 PPPoE 之外的其他方式

4.4 网络运营商的内部

4.4.1 POP 和 NOC

4.4.2 室外通信线路的连接

4.5 跨越运营商的网络包

4.5.1 运营商之间的连接

4.5.2 运营商之间的路由信息交换

4.5.3 与公司网络中自动更新路由表机制的区别

4.5.4 IX 的必要性

4.5.5 运营商如何通过 IX 互相连接

Column 网络术语其实很简单

第 5 章 服务器端的局域网中有什么玄机

5.1 Web 服务器的部署地点

5.1.1 在公司里部署 Web 服务器

5.1.2 将 Web 服务器部署在数据中心

5.2 防火墙的结构和原理

5.2.1 主流的包过滤方式

5.2.2 如何设置包过滤的规则

5.2.3 通过端口号限定应用程序

5.2.4 通过控制位判断连接方向

5.2.5 从公司内网访问公开区域的规则

5.2.6 从外部无法访问公司内网

5.2.7 通过防火墙

5.2.8 防火墙无法抵御的攻击

5.3 通过将请求平均分配给多台服务器来平衡负载

5.3.1 性能不足时需要负载均衡

5.3.2 使用负载均衡器分配访问

5.4 使用缓存服务器分担负载

5.4.1 如何使用缓存服务器

5.4.2 缓存服务器通过更新时间管理内容

5.4.3 最原始的代理——正向代理

5.4.4 正向代理的改良版——反向代理

5.4.5 透明代理

5.5 内容分发服务

5.5.1 利用内容分发服务分担负载

5.5.2 如何找到最近的缓存服务器

5.5.3 通过重定向服务器分配访问目标

5.5.4 缓存的更新方法会影响性能

Column 网络术语其实很简单

第 6 章 请求到达 Web 服务器,响应返回浏览器——短短几秒的“漫长旅程”迎来终点

6.1 服务器概览

6.1.1 客户端与服务器的区别

6.1.2 服务器程序的结构

6.1.3 服务器端的套接字和端口号

6.2 服务器的接收操作

6.2.1 网卡将接收到的信号转换成数字信息

6.2.2 IP 模块的接收操作

6.2.3 TCP 模块如何处理连接包

6.2.4 TCP 模块如何处理数据包

6.2.5 TCP 模块的断开操作

6.3 Web 服务器程序解释请求消息并作出响应

6.3.1 将请求的 URI 转换为实际的文件名

6.3.2 运行 CGI 程序

6.3.3 Web 服务器的访问控制

6.3.4 返回响应消息

6.4 浏览器接收响应消息并显示内容

6.4.1 通过响应的数据类型判断其中的内容

6.4.2 浏览器显示网页内容!访问完成!

Column 网络术语其实很简单

附录 网络包的旅程

后记

致谢

作者简介

看完了

累计评论(0条) 0个书友正在讨论这本书 发表评论

发表评论

发表评论,分享你的想法吧!

买过这本书的人还买过

读了这本书的人还在读

回顶部