具体描述
本书以探索之旅的形式,从在浏览器中输入网址开始,一路追踪了到显示出网页内容为止的整个过程,以图配文,讲解了网络的全貌,并重点介绍了实际的网络设备和软件是如何工作的。目的是帮助读者理解网络的本质意义,理解实际的设备和软件,进而熟练运用网络技术。同时,专设了“网络术语其实很简单”专栏,以对话的形式介绍了一些网络术语的词源,颇为生动有趣。
本书图文并茂,通俗易懂,非常适合计算机、网络爱好者及相关从业人员阅读。
作者简介
作者简介:
户根勤
早先从事软件开发,后进入网络行业。曾供职于日本网络设备厂商(外资企业)和国内网络集成商,从事产品开发和技术咨询等工作。在工作之余还进行演讲、写作等活动。1998年离开公司,开始以演讲、写作以及运营论坛为主业。
译者简介:
周自恒
资深技术图书译者、全栈程序员、自然科学爱好者。初中时曾获得信息学奥赛天津赛区一等奖,曾任某管理咨询公司战略技术总监。译有《图解CIO工作指南(第4版)》《大数据的冲击》《代码的未来》《30天自制操作系统》《图解密码技术》《家用游戏机简史》《有趣的二进制》等。
目录信息
——探索浏览器内部
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
· · · · · · (收起)
读后感
浏览器生成请求消息 区分HTTP/FTP...协议 生成HTTP请求消息 请求行 请求头 请求体 向DNS查询IP地址 域名层级结构 迭代查询 vs 递归查询 使用UDP 委托协议栈发送消息 传输层 创建套接字 分配内存空间 获得描述符 建立连接 TCP报文 三次握手 收发数据 数据分组 ACK机制 滑动窗口 ...
很久很久以前,我就见过那道经典面试题:从在浏览器地址栏输入 url 到页面渲染完成,发生了什么? 我那时候刚刚入行前端没多久,计算机和网络的基础可以说一点也没有,一本《计算机网络:自顶向下方法》读了不到四分之一吧,还是囫囵吞枣,大半都看不懂,比如关于套接字是什么...
计算机网络不是一个很好懂的技术,以前上计网课的时候也一知半解的,总觉得教材的思路不是那么顺,这本书展开的角度更容易让外行的读者接受。从熟知的浏览器生成请求开始,沿着信息传播的顺序展开每一个环节的介绍与科普,逻辑十分清晰,语言也浅显易懂,非常适合没有相关基础...
用户评价
这本书的封面设计简洁却充满想象力,深邃的蓝色背景上勾勒出交错纵横的线条,仿佛一张巨大的蜘蛛网,又像是宇宙星辰的轨迹。光线从中心向外辐射,隐约可见其中穿梭的节点和数据流。光是看到这个封面,就足以勾起我内心深处对“网络”这个概念的好奇心。我常常在日常生活中接触到互联网,无论是浏览网页、社交媒体,还是在线购物、观看视频,这一切都如同魔法般方便快捷。然而,我从未真正深入地思考过,这背后究竟是怎样的机制在运作?这些看不见摸不着的数据流是如何跨越千山万水,最终呈现在我面前的?它不仅仅是一个工具,更像是一个庞大而复杂的生态系统。我渴望了解这个生态系统的每一个组成部分,它们是如何协同工作,又是如何保证信息能够准确无误地传递。我想知道,当我在键盘上敲击下几个字符时,究竟发生了多少我无法想象的物理和逻辑过程。这本书的题目直接点出了我的困惑,并且用一个如此具象化的比喻——“连接”——来概括这个抽象的概念,这让我感觉它可能是一本能够解开我心中谜团的钥匙。
我一直相信,每一个伟大的技术成就,都离不开其背后精巧的结构和严密的逻辑。《网络是怎样连接的》这个书名,恰好满足了我对这种“精巧”和“严密”的探求欲。我们所处的时代,网络已经成为了一种基础设施,它无处不在,无所不能,但其连接的本质,却常常被我们忽略。我非常好奇,当信息在网络中流动时,它究竟是如何被识别、被路由、被传输的?IP地址、端口号、MAC地址,这些看似专业晦涩的名词,它们在整个连接过程中扮演着怎样的角色?我期望这本书能够以一种系统性的方式,将这些零散的知识点串联起来,帮助我理解网络连接的完整图景,从物理层面的线缆和设备,到逻辑层面的协议和路由,它们是如何协同工作,共同构建起我们今天所依赖的全球网络。这不仅仅是知识的获取,更是一种对人类智慧和工程能力的致敬。
我对学习任何能够解释“看不见的”世界是如何运作的书籍都抱有浓厚的兴趣。网络,在我看来,就是这样一个典型的“看不见的”世界。我们每天都在沉浸其中,享受它的便利,感受它的力量,但它的内部结构、运作机制,却很少有人能够清晰地描绘出来。《网络是怎样连接的》这个书名,以一种朴实却极具吸引力的方式,承诺将揭示这个庞大系统的运作奥秘。我迫切地想要知道,当我的指令发出后,它究竟是如何穿越物理世界的限制,到达遥远的数据中心?在这个过程中,有哪些看不见的“管道”和“桥梁”在发挥作用?数据又是如何被打包、传输、再还原的?我希望这本书能够像一扇窗户,让我能够窥探到网络背后的运行逻辑,理解那些组成它的基础协议和技术,从而不再仅仅是被动地使用网络,而是能够对其有一个更深刻、更全面的理解,甚至能够从中获得一些启发。
作为一名对信息传播过程有着天然好奇心的人,我对《网络是怎样连接的》这个书名产生的兴趣,几乎是瞬间就被点燃了。我们所处的时代,信息爆炸是一个普遍的现象,而网络正是承载和传播这些信息的最主要载体。但这种传播究竟是如何实现的?我常常在思考,当我发送一条信息,或者请求访问一个网页时,我的设备是如何找到目标服务器的?在这中间,是否有一套精密的“地址系统”在运作?而数据本身,又是以何种形式存在的,又是如何被分割、传输和重组的?我希望这本书能够深入浅出地解释这些问题,用生动的语言和可能的图示,为我勾勒出网络连接的完整图景。我期待它能帮助我理解,从物理层面的电缆和路由器,到逻辑层面的协议和端口,这些看似独立的元素是如何有机地结合在一起,最终构成一个稳定、高效、可靠的网络。这不仅仅是对技术的好奇,更是对人类智慧如何解决复杂通信难题的赞叹和学习。
在接触各种技术书籍时,我总会被那些能够深入浅出地解释复杂概念的作品所吸引。《网络是怎样连接的》这个书名,正是以一种非常直观和易于理解的方式,点出了我内心深处对网络连接机制的探究欲望。我们每天都在使用互联网,但很少有人能真正理解,当我们发送一个请求时,它究竟经历了怎样的过程才到达目的地?又是什么样的“规则”和“协议”确保了数据的准确传输?我想知道,那些构成网络的物理基础设施,例如光纤、交换机、路由器,它们各自承担着怎样的功能?而数据在网络中的“旅行”,又是以何种形式进行的?这本书,似乎就是为了回答这些关键问题而存在的,它 promises to unveil the magic behind the seamless connectivity we often take for granted, and I am eager to embark on this journey of understanding.
我一直认为,理解一个事物最重要的方式,就是去了解它的“连接性”——它是如何与其他事物发生关联,又是如何形成一个整体的。《网络是怎样连接的》这个书名,正是以一种非常直接的方式,触及了我内心深处对这种“连接”的探索欲。我们每天都在享受网络带来的便利,但我们是否真正理解过,这种便利背后那庞大而复杂的连接体系?我想知道,当我在手机上点击一个应用,或者在电脑上输入一个网址时,我的设备究竟是如何与全球范围内的无数服务器建立起联系的?这其中涉及到的物理介质有哪些?数据是如何在这些介质中传递的?又是什么样的规则,保证了信息能够准确无误地到达目的地,而不是迷失在茫茫的信息海洋中?这本书,似乎就是为解答这些疑问而生,我期待它能够带领我穿越表面的用户界面,去理解那构成现代世界骨架的、由无数条无形之线编织而成的网络。
我的职业虽然与技术直接相关,但更多的是偏向应用层面,对于底层的网络连接原理,我一直存在着一种“知其然,不知其所以然”的困惑。《网络是怎样连接的》这个书名,如同一个精准的定位,直击了我长期以来想要深入了解的领域。我常常在工作中遇到各种网络相关的技术问题,但很多时候,只是依照既有的解决方案来处理,却很少能真正从根本上理解问题的根源。我想知道,那些在数据传输过程中起着关键作用的协议,例如TCP/IP,它们到底是如何协同工作的?IP地址的分配和路由是如何实现的?DNS解析又扮演着怎样的角色?我希望这本书能够为我提供一个系统性的框架,帮助我建立起对网络连接的全面认知,不仅仅停留在操作层面,更能理解其背后的架构和设计理念。这对于我提升专业技能,解决更深层次的问题,以及更准确地把握未来技术发展方向,都将是极其宝贵的。
我是一名对科技发展充满好奇的学习者,而网络,无疑是当代科技最耀眼的成就之一。我们每天的生活都离不开它的支撑,从即时通讯到远程协作,从学习教育到娱乐放松,网络已经成为现代社会运转的基石。然而,我常常感到自己只是一个站在网络大海的岸边,看着潮起潮落的普通人,却从未真正潜入深海,去探索它那广阔而神秘的内部世界。《网络是怎样连接的》这个书名,就像一声召唤,直击我内心深处想要探究事物本质的冲动。我迫切地想知道,是什么样的技术力量,才能构建起这样一个跨越国界、连接全球的巨大网络?它背后的物理基础设施是怎样的?那些看不见的信号是如何在空气中传播,又如何在海底电缆中穿梭?更重要的是,是什么样的逻辑和规则,在指挥这些海量的数据流有序地流动,避免发生混乱和拥堵?我希望这本书能够像一位经验丰富的向导,带领我一一揭开这些谜团,让我从一个“网络使用者”转变为一个“网络理解者”,能够更清晰地认识到我们所处的这个数字时代,以及它背后所蕴含的深刻技术原理。
我一直对那些能够将复杂概念化繁为简、将抽象事物具象化的作品情有独钟。我们生活在一个高度信息化的时代,网络几乎渗透到我们生活的每一个角落,但我们对它的了解却常常停留在表面的用户体验上。就像一个只知道如何操作手机屏幕的人,却对手机内部芯片的运作原理一无所知。这本书的名字《网络是怎样连接的》,正是精准地触及了我的这种渴望。它似乎预示着,它将带领我深入到网络世界的“幕后”,揭示那些隐藏在光鲜界面之下的精密运作。我期待它能用一种深入浅出、引人入胜的方式,解释那些听起来很专业,但实际上与我们每个人都息息相关的技术原理。我想要了解,当一个数据包从我的电脑出发,经过无数的路由器、交换机,最终到达另一台远方的服务器时,它经历了怎样的旅程?是什么样的“规则”和“协议”保证了它的方向和完整性?我希望这本书能够解答我的这些疑问,让我不再仅仅是一个被动的网络使用者,而是能够对这个我们每天都在依赖的系统有更深刻、更全面的认知,甚至能够从中窥见技术发展的脉络和未来趋势。
我对那些能够帮助我更深入地理解我们所处世界的书籍,总是报以极大的热情。网络,毫无疑问是塑造当今世界最关键的因素之一,但我们对它的了解,往往停留在“使用”层面,而对其“连接”的本质却知之甚少。《网络是怎样连接的》这个书名,直接击中了我的好奇心,它承诺将揭示这个无形之网的奥秘。我渴望了解,当我在电脑上键入一个网址时,我的请求是如何穿越层层网络,找到目标服务器的?这其中是否有一个精密的“寻址”和“导航”系统?数据又是如何被打包、传输、再准确无误地送到我面前的?我期待这本书能够以一种引人入胜的方式,解释那些支撑起整个网络连接的技术原理,从物理介质到通信协议,让我能够更清晰地认识到,这个庞大而复杂的系统是如何运作的,以及它是如何改变我们的生活和世界的。
很不错的科普书,没有太复杂的描述,把一个http请求的整个过程,涉及的网络整个过程描述清晰。不过有些地方写的略微有点繁琐。
大年初五,一个下雪的晚上读完本书。书里内容足够丰富,不敢造次。内心想的都是一个少年的计算机骨骼正在生长。
很不错的科普书,没有太复杂的描述,把一个http请求的整个过程,涉及的网络整个过程描述清晰。不过有些地方写的略微有点繁琐。
对一个小白来说,还是理解起来还是挺费劲的
常见的计算机网络教材都太抽象了,这本非常好,仔仔细细的讲述了网络连接的细节。如果你看计算机网络看的云里雾里的,可以看看这本,挺好的。