《网络是怎样连接的》书评

网络是怎样连接的

这书目前只看了一半,已经迫不及待在豆瓣上打了五星。

问题意识

由在浏览器中一次请求响应的过程在计算机内部是如何处理的这个问题出发,从HTTP层的请求响应协议到Socket的创建、连接、收发数据再到传输层、网络层、数据链路层的逐步添加各层协议的包头,到物理层将数据在局域网上传输,又是如何将0101的数字信号转换成实际物理层面的电光信号,经过集线器、交换机、路由器之间的传递到达最终目的地。讲的内容实际和大学里的《计算机网络》课程点几乎一样,但全书翻译的还是挺流畅简洁准确的,可以看出作者对于这个问题思考过程中层层递进环环相扣的追问与回答,亦足见译者的文笔和专业技术功底。

“问题意识”这个概念我大概是看秦晖先生的文章里提到的,学术界比较重视这个东西,大概意思是【问一个问题,不会是凭空想象出来的,一定是在某个特别情境产生的疑问,比如面对一个特殊时空下的历史事件,或是和某个理论对话,试图回应它能回答或不能回答的问题。而回答为什么要问这个问题的解释,就构成了发问的问题意识】。简单讲问题就是一个很简单的疑问,而问题意识涉及你在什么情境下产生这个疑问。所以问题是问题意识的结果,问题意识是形成问题的过程。

前几天一个在小米工作的朋友在讨论组里问我java里的socket通信在计算机上到底是如何工作的,这个问题认真解释起来涉及计算机网络上数据在七层协议之间流转过程和Java程序如何调用操作系统层面的socket库,还是挺费口水的。我好奇的是为什么会产生这个问题,原来他最近在做rpc调用的东西,java层面的api琢磨久了难免想再进一步,深挖更底层的东西,了解被api封装的严严实实的java本地调用背后的运行机制,程序员能思考到这个程度显然技术上又将精进不少。私以为这种才是求学问道的正途,我好像很久没有这种不断思考追问的状态了。

上面不厌其烦的解释“问题意识”这个概念就是想说知识问答已经非常活跃的当下,问题已经不再重要,绝大多数都能找到答案(程序员社区三大利器Google GitHub Stackoverflow),再不济去百度知道知乎啥的问问也会有收获。反而是产生问题的过程更重要,因为这表明提问者经历了哪些思考,思考的广度和深度。

那些年困惑过的计算机术语

前几天阮一峰老师一条讲socket的微博引起了一堆人的共鸣,当年学计算机时就被很多术语的中文翻译弄得一头雾水,比如套接字(socket)、句柄(handle)、正则表达式(regular)、宏(Macro)等等,反正看起来别扭极了,导致很多时候涉及这些术语文章看起来总觉得不自然,有滞涩感。

书中第2章最后恰好解释了socket这个词,原来是取自灯泡插座的的意思,就是那种老式的螺丝灯泡里凹进去的可以往里插东西的圆孔。


socket

凡是能插东西的孔都可以叫socket,灯泡插到socket里灯就亮了,同理程序插到套接字里就可以开始通信了。套接字背后就是传输数据的通道,这个通道和通信对象相连接,就像流过电线的电流一样,数据就在这个通道中流动,所以插进去一个程序,就可以和对方通信了。

解了一个千古之谜。。。

本质复杂性

记得刚学计算机语言的时候就记得一句话【面向对象的三大特性:封装、继承、多态】,程序语言考试包括刚毕业那两年的各公司笔试必出这道题。曾经对这个结论有点儿游离,到了这几年反而体会越来越深,很多东西都是这样,死记硬背多年,突然某个瞬间被一个缠绕许久的问题勾出来,原来是这么回事,前人的总结真是到位。

拿封装的思想来说,得益于各种形式上接近于算术语言和自然语言,概念上接近于通常使用的概念的高级程序语言的发展,一个命令可以代替几条、几十条甚至几百条直接操作计算机硬件的汇编语言的指令。这就是一种封装,目的当然是为了解放和发展生产力,而Java这种面向对象的语言更将操作系统底层的本地调用(native)给封装起来,只能通过JNI接口调用其他语言来实现对底层的访问。所以就算再精通Java语言,离理解计算机背后的原理还差很远。反而越深入越发现一切都是操作系统底层万变不离其宗的运行机制被上层不同程序语言以自己的语法包装起来而已,比如java里IO操作有bio、nio、aio,搞这么复杂是操作系统的同步、异步和阻塞、非阻塞模型在作怪,底层有这么多类型,上层必然也有相对应的机制,这就是逃不掉的本质复杂性。

Java的网络编程看似只有Socket、ServerSocket那几个类,新建、监听、accept、输入输出流、关闭这几步行礼如仪,了解了更底层的机制和原理才体会出为何Java的API会设计成这样。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,179评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,229评论 2 380
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,032评论 0 336
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,533评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,531评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,539评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,916评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,574评论 0 256
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,813评论 1 296
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,568评论 2 320
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,654评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,354评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,937评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,918评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,152评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,852评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,378评论 2 342

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 171,386评论 25 707
  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,560评论 18 399
  • 生活中幽默不断。上周朋友聚会,大家互报年龄,两位男士都比我老公年长,但都比他显年轻。我忙解释:他只是长得有点着急。...
    惠茹姐姐阅读 436评论 0 2
  • 一、读祈祷文、读规画、了凡能量诵、经文 二、行动 1.聆听:和孩子谈作业的问题,立现不耐烦;跑步回来问跑了几圈,回...
    阳光中的晨薇阅读 212评论 0 0
  • 简单来说云计算中Iaas就是将廉价的机器通过阵列链接起来,从而形成拥有超大的计算能力,和存储能力,向外出租计算能力...
    不吃辣条阅读 329评论 0 1