网络是如何连接的

2018-01-20 YongHao Hu 更多博文 » 博客 » GitHub »

DNS

原文链接 http://yonghaowu.github.io/2018/01/20/HowNetworkConnects/
注:以下为加速网络访问所做的原文缓存,经过重新格式化,可能存在格式方面的问题,或偶有遗漏信息,请以原文为准。


记得大学里有计算机网络这门课程,我找过著名的两本的国外教材,分别从自底向上,由上到下两个角度来诠释网络是如何连接的。冗长的介绍接线器,光缆,吓得我粗略的一略而过,结果自然是『万花丛中过,片叶不沾身』。

而后,我的编程生涯里,似乎也没有被网络所困扰。不懂得各种原理,似乎用框架,查查 stackoverflow,Google 挖个遍,也可以 6666. 不做底层的咸鱼,怎么会需要原理呢,我学的什么编译链接,session,segment,,内存管理也不过是镜中花,水里月。

而现在, 我几乎每天被 mentor 拍着桌子,以办公室半斤 10 米都能听到的声量训斥着『作为系统程序员,你怎么可以不懂 HTTP 原理 / TCP 原理』,『你看看是不是 iptables 封了 UDP 包,导致 dns 解析不了。算了,你也看不懂』,『你知道 NAT 会踢掉不活跃链接吧』,『你看 HTTP 协议,请求就是文本,什么时候规定参数不能重复了。那些用 map 来存参数的框架,都是做不对的垃圾』,『ping 发的是 icmp 包,服务器网络有没有问题跟这个有卵关系』——就算愚笨如我,也总能理解到原理的东西有多有用吧。

自然,我立马买上了 《图解 TCP》,《网络是如何连接的》,《计算机网络》,好好研习一番。

当他看到我在看《图解 TCP 时》,查着 stackoverflow 时,他语重心长的说『计算机网络原理是要背的,不要看那些二手知识,都是垃圾。你们现在刚毕业,就要好好把这些知识背好。我大学的时候看的是《计算机网络》,那样的书才详细』。

我无言以对,他说的很有道理。但那只适用于他这种,几年前写的代码还能回忆起来,指着说大概在哪里哪里,各种原理了如指掌,还能反过来教导 SA 怎么做以及写代码啪啪啪不用边写边测的人。我此等渣渣,上周写的代码,让我说这个行为是怎么样的还要返回去看。更别说,原理看完是理解,过后就啥也不知道。

要是我们去看《计算机网络》,我很怀疑,看完后,全都忘得一干二净。

《网络是如何连接》这种逻辑性的讲解各层是如何配合,以最小必要知识为主的书,才是渣渣的必备良品。这本书,除了本身讲解质量够硬,译者也不容小觑,他的译注如端口也可通过 DNS 查询,访问 ip 地址不一定适用于开了虚拟 vhost 的服务器,完善了这本书力所未岱的地方——若是他来写书的话,恐怕也没问题。

看完后的诸君,还不赶紧去买一本,然后打赏我去再买一本电子版的?