深入浅出:一张图带你理解网络世界的全貌

一张图带你理解从输入网址到网页显示的全过程,深入浅出地讲解网络世界运行原理。

原文标题:?每个程序员都想搞懂的事情,这本书用几张图就全讲明白了!

原文作者:图灵编辑部

冷月清谈:

你是否好奇过从输入网址到网页显示,网络中到底发生了什么?这本书以一种通俗易懂的方式,带你探索网络世界的奥秘。

作者将复杂的网络交互过程简化为浏览器和服务器之间的对话,并用“包裹”的概念解释了数据在网络中的传输机制。每个数据包都像一封信件,带有目的地信息,通过交换机和路由器这些“邮局”的接力,最终到达目的地。

这本书的结构也经过精心设计,包含热身问答、探索之旅看点、正文、小测验和专栏等部分,循序渐进地引导读者理解网络的运作方式。其中,专栏“网络术语其实很简单”以对话的形式解释了一些常见的网络术语,帮助读者更好地理解其本质含义。

本书不仅适合初学者入门,也适合有一定网络基础的读者查漏补缺,甚至可以作为向家人普及计算机知识的工具。

怜星夜思:

1、书中提到的数据包在传输过程中,如果遇到网络拥堵或者线路故障,是如何处理的呢?
2、除了书中提到的浏览器和Web服务器,还有哪些常见的网络应用程序?它们是如何与网络交互的?
3、书中用“邮局”来比喻交换机和路由器,这个比喻很形象。那么,现实中的“邮局”是如何处理信件和包裹的呢?它们的工作流程和网络中的数据包传输有什么相似之处?

原文内容

作为一名程序员
你是否曾经好奇过,从在浏览器中输入网址到网页显示出来内容,网络中究竟发生了哪些过程?
你是否渴望了解网络设备和软件是如何在网络中协同工作的?
或许你已经掌握了一些零散的网络知识,但希望将其整合成一个完整的知识体系?
你是否想要在工作和生活中更有效地运用网络技术?
当然!我知道你们的答案,也知道你们在无数本图书中徘徊之后想要这样一本书——
👉👉👉一本深入浅出、可以带你领略网络世界全貌的书:

这本书的作者卢根勤是一位深谙读者需求和技术痛点的研发人员,看看他写书的方式和为大家制作的探索网络全貌之旅路线图就知道了。

让我们先来看一下浏览器访问 Web 服务器并显示网页这一过程的全貌。这一过程包含了浏览器和 Web 服务器之间的一系列交互。
(1) 浏览器:“请给我 ××× 网页的数据。”
(2) Web 服务器:“好的,这就是你要的数据。”
在这一系列交互完成后,浏览器就会将从 Web 服务器接收到的数据显示在屏幕上。
要实现这种交互,我们需要一个能够在浏览器和 Web 服务器之间传递请求和响应的机制,一个无论遇到任何情况都能够将请求和响应准确无误地发送给对方的机制。由于请求和响应都是由 0 和 1 组成的数字信息,所以可以说,我们需要的是一种能够将数字信息搬运到指定目的地的机制。
这种机制是由操作系统中的网络控制软件,以及交换机、路由器等设备分工合作来实现的,它的基本思路是将数字信息分割成一个一个的小块,然后装入一些被称为“包”(移动数据流量)的容器中来运送。
大家可以这样理解:包相当于信件或者包裹,而交换机和路由器则相当于邮局或快递公司的分拣处理区。包的头部存有目的地等控制信息,通过许多交换机和路由器的接力,就可以根据控制信息对这些包进行分拣,然后将它们一步一步地搬运到目的地。无论是家庭和公司里的局域网,还是外面的互联网,它们只是在规模上有所不同,基本的机制都是相同的。
前面介绍的这个负责搬运数字信息的机制,再加上浏览器和 Web 服务器这些网络应用程序,这两部分就组成了网络。也就是说,这两部分组合起来,就是网络的全貌。
不仅如此,作者还在各章的结构上花了很大功夫,大大提升了整本书的趣味性。各章的内容分为热身问答、探索之旅的看点、正文、小测验几个部分,还有若干个专栏。
热身问答
在各章的开头有一些简单的热身题,都是判断对错的题目,大家一定要试试看。
探索之旅的看点

探索之旅的看点总结了正文将要介绍的主题,可以以此来了解该章的梗概。

正文

熟悉了看点之后就该正式出发了。在这一部分,我们将邀请经验丰富的导游来进行讲解,相信即便是不具备任何网络知识的读者也能够想象出现实中网络的样子。请大家静下心来,慢慢欣赏。

小测验

这是一些和正文内容相关的测试题,大家可以用这些题目来确认自己的理解程度。答案位于下一页中的专栏的最后。

专栏“网络术语其实很简单”

在专栏中,探索队长和探索队员会以对话的形式介绍一些网络术语的词源。这些术语大家平时可能感觉很难,但通过了解它们的词源,就能够理解其本质含义。读完这部分会让你觉得这些术语变得亲切了。

书中涉及的关键词,基本都是网络学习中会遇到的实用知识点。不管是工作中想查缺补漏,还是学习中想准备考试或者是没有计算机基础,想了解计算机的运行。相信这些实用的内容都可以帮助你更好地将知识点串联起来!

因为内容好、实用性强,很多读者对这本书爱不释手。豆瓣评分高达 9.1,1.3 万人标记想读,实际销量已经突破 12 万册,好评如潮:

另外《Wireshark网络分析就这么简单》的作者林沛满老师还给这本书作序推荐,他是这样评价这本书的:

本书环环相扣,如流水般自然,结构上完全顺应了人类的思维习惯。

“从浏览器输入网址开始,引入了 HTTP 消息;由于消息要交给服务器,所以用 DNS来解析其域名;消息到达服务器之前需要传输,就要懂得 TCP 和路由交换……环环相扣,如流水般自然,结构上完全顺应了人类的思维习惯。这不正是我想象中一本网络科普书该有的样子吗?”

读懂了这本书,你就理解了网络世界的全貌。

“跟很多日本作者一样,作者户根勤的表达风格也是细致周全,所以不用担心阅读压力。毫不夸张地说,读懂了这本书,你就理解了网络世界的全貌。这一点对初学者尤为重要,因为想要在学习中触类旁通,前提就是知识面到位。”

“对于引进型书籍,读者们最担忧的其实还是翻译质量,我也曾经因为拒绝翻译腔而只读原版。不过花卷的语言能力一向让人放心。花卷的技术功底对我来说也是个谜,我看过他关于操作系统的书,和他探讨过不同类型的 VPN 如何架设,有一天我 Google 搜索固态硬盘的工作原理,搜到的一篇科普文章竟然也是他写的。也就是如此深不可测的译者,才能驾驭覆盖面这么广的书吧。”

“假如想学得再深一点,我建议自己多做一些实验(其实对于任何技术书都一样)。比如书中第 176 页讲到的地址转换,我们完全可以在家里配置一下试试。在配置的过程中,你很可能会遇到问题并解决它,这样就能理解得更深入了。”
大模型时代,计算机通识教育越来越重要,不管是你是菜鸟入门进阶,还是中级程序员查漏补缺,亦或是高手程序员向家人普及计算机知识,这本书都是你的最佳选择!
作为被大家熟知的计算机通识系列经典图书,“怎样”系列除了这本广受好评外,还有另外六本,从基础知识到深层运用,“怎样”系列通过最简单的话和图示拆解难以理解的计算机专业知识,大模型时代每个人都需要了解一点计算机通识知识,那就用这套书来给自己充电吧。
👇大模型时代通识教育必备

《程序是怎样跑起来的(第3版)》

矢泽久雄 | 著,周自恒 | 译

原版重印 50 次,畅销经典,本书从计算机的内部结构开始讲起,以图配文的形式详细讲解了二进制、内存、数据压缩、源文件和可执行文件、操作系统和应用程序的关系、汇编语言、硬件控制方法等内容。


《计算机是怎样跑起来的(第2版)》
矢泽久雄 | 著,胡屹 | 译

“计算机组成原理”图解趣味版,本书以图配文,以计算机的三大原则为开端、相继介绍了计算机的结构、手工汇编、程序流程、算法、数据结构、面向对象编程、数据库、TCP/IP 网络、数据加密、XML、计算机系统开发以及 SE 的相关知识。第 2 版的部分程序改用 Python 来呈现,数据库改用 MySQL,并对加密部分做了升级。


《网络是怎样连接的》

户根勤 | 著,周自恒 | 译

蹲马桶就能看懂的网络基础知识,本书以探索之旅的形式,从在浏览器中输入网址开始,一路追踪了到显示出网页的内容为止的整个过程,以图配文,讲解了网络的全貌,并重点介绍了实际的网络设备和软件是如何工作的。

《面向对象是怎样工作的(第3版)》

[日]平泽章 | 著,侯振龙 | 译

本书以图配文,语言通俗,即使是文科生也能看得懂。直观易懂地介绍了面向对象的全貌及其包含的各项技术,包括面向对象编程、框架、设计模式、UML、建模、面向对象设计和敏捷开发方法等。特设“编程往事”“对象的另一面”专栏,生动有趣,新增“当今的 OOP”专栏,介绍 Java、Python 等当今流行的编程语言的新动向。

《Linux是怎样工作的》

武内觉 | 著,曹栩 | 译

198 张图解+大量实验程序,直击 Linux 核心工作原理。原富士通一线 Linux 内核开发工程师基于十余年经验执笔,专业实用。聚焦 Linux 核心功能,简明易懂地介绍了 Linux 操作系统的运行原理和硬件的基础知识。


《TCP是怎样工作的》

安永辽真 | 著,尹修远 | 译

“TCP 技术入门”通俗图解版,通俗易懂地讲解了长期不会过时的 TCP 技术,直击 TCP 技术核心算法。146 张示意图帮助理解,详略得当,为读懂大部头开路。深入 TCP 核心技术,重点讲解拥塞控制算法(CUBIC、BBR等)。使用 Wireshark 和 ns-3 等搭建模拟环境,切实体验算法流程。

《机器人是怎样工作的》

濑户文美 | 著,许永伟 | 译

智能机器人是如何思考的,如何感知周围环境,又是如何运动的?本书旨在引导读者了解机器人的概貌,对机器人行动的基本原理建立起整体印象,因此在讲解时并未使用深奥的术语和复杂的数学公式,即使小朋友也能看懂。

怎样全套:


如果只是简单的拥堵,路由器会根据路由表选择一条相对畅通的路径,就像我们开车遇到堵车会绕路一样。但如果是线路故障导致数据包无法到达目的地,发送方会收到一个错误消息,然后可能会尝试重新发送数据包,或者干脆放弃。

这个问题可以从不同的层次来看。在网络层,路由器会根据网络状况动态地选择最佳路径,尽可能绕开拥堵或故障的线路。在传输层,TCP协议会通过重传机制来保证数据包的可靠传输。如果一个数据包丢失了,发送方会在一段时间后重新发送。当然,如果线路故障严重,数据包可能一直无法到达,最终连接就会中断。

说到网络拥堵,这就不得不提TCP的拥塞控制机制了,慢启动、拥塞避免、快速重传和快速恢复算法这些都是经典的解决方法,这些算法会根据网络情况动态调整数据包的发送速率,避免网络崩溃。当然,如果线路彻底断了,那数据包就只能丢失了,这时候就需要上层应用重新发送请求了。

我觉得可以这样理解:信件上的邮编就像IP地址,邮局根据邮编进行分拣,就像路由器根据IP地址进行转发。当然,实际情况比这复杂得多,邮局还要处理各种各样的邮件类型,比如平信、挂号信、快递等等,而网络中也有各种各样的协议和数据类型。

太多了!电子邮件客户端、即时通讯软件、视频会议软件、在线游戏等等,都是常见的网络应用程序。它们都依赖于各种网络协议,例如电子邮件使用SMTP、POP3或IMAP,即时通讯和视频会议可能用的是WebRTC或私有协议,在线游戏则五花八门,TCP、UDP都有可能用到。总之,它们都需要通过网络发送和接收数据。

其实,我们平时用的很多软件都属于网络应用程序。比如,下载文件时会用到FTP客户端,远程登录服务器时会用到SSH客户端,还有各种各样的P2P软件等等。它们都遵循特定的网络协议,通过网络与服务器或其他客户端进行通信。

各种各样的APP,手游,还有各种物联网设备,现在都联网了,它们都会通过不同的协议与服务器进行交互,比如MQTT协议就经常用于物联网设备通信。

邮局先收集信件,然后进行分拣,根据目的地将信件分到不同的邮袋,再装车运送到下一个邮局,如此重复直到到达目的地邮局,最后投递到收件人手中。网络数据包的传输也类似,每个路由器就像一个邮局,负责将数据包转发到下一个路由器,直到到达目的地。

现实中的邮局会根据信件或包裹上的地址信息进行分拣,然后将它们放到对应的邮袋或货车中,运送到下一个邮局或最终目的地。这跟网络中数据包的传输过程很相似,数据包的头部也包含了类似地址的信息,路由器根据这些信息决定将数据包转发到哪里。