我想了解更多有关 Linux 的信息这一定是我最持久的情感之一。
但我经常发现,当我打开历史书时,我学到了最多的东西,或者也许只是对我所学到的东西感到最满意。
/etc
其中隐藏着什么/dev
我不知道的事情?嗯,文件。一切都是文件。
但是什么把这些文件放在那里呢?
历史把它们放在了原处,历史也决定了它们的书写方式,yadda yadda yadda。
根据man hosts
Historical Notes
RFC 952 gave the original format for the host table, though it has since changed.
Before the advent of DNS, the host table was the only way of resolving hostnames on the fledgling Internet. Indeed, this file could
be created from the official host data base maintained at the Network Information Control Center (NIC), though local changes were
often required to bring it up to date regarding unofficial aliases and/or unknown hosts. The NIC no longer maintains the hosts.txt
files, though looking around at the time of writing (circa 2000), there are historical hosts.txt files on the WWW. I just found
three, from 92, 94, and 95.
伟大的。所以这给了我一些可以咀嚼的东西。我想知道 Linux 是如何工作的,特别是我想知道为什么 Linux 网络看起来是这样的,所以我就去阅读 RFC 952。
但是,哦,等等...这是真的很短。并且有数百个 RFC 文档。唔...
在尝试解决这些问题之前,我必须知道,全部征求意见 (RFC) 文件的内容直接影响 Unix 和 Linux 的设计吗?我应该尝试了解所有这些,还是只了解其中的一部分?
答案1
不,他们没有。有些甚至没有申请到 Unix。当 Unix 还处于起步阶段时,已有数十种操作系统,而在其发布后又出现了数十种操作系统。其中许多都在阿帕网上,而且许多他们成功登陆互联网。一些 RFC 描述了全局事物,例如书写 IPv6 地址的正确方法(RFC 4291),MD5应该如何实现(RFC 1321),或者为什么不欣赏飞过头顶的猪(RFC 1925)。其他则更多特定于操作系统,例如 Windows Kerberos 密码更改协议(RFC 3244)。
你现在看到的很多都是经验决策之后变得标准化。
如果您想了解 Unix 网络,最好的选择可能是一本有关 Unix 的书。如果您想了解为什么事情就是这样,阅读早期 Unices 的源代码是一个有趣的练习。但这并不容易。 :)
答案2
如果你想回顾最近类 Unix 系统的历史,你最好阅读4.4 BSD操作系统的设计与实现。它很旧,但 UNIX 概念也很旧。网络特别被设计为 4.3 BSD 操作系统的一部分,这当然在书中进行了深入讨论。 GNU/Linux系统随后诞生,遵循这个模型,但从头开始重写。编写的网络代码后来出现在许多其他操作系统中。
至于标准,一切都必须定义才能实现互操作性。因此,在这方面,所有 RFC 都可能影响 Unix 网络的设计等等。有些 RFC 从未实现,人们可以自由地实现他们想要的 RFC 并将实现它们的程序提供给所有人。
基本上,POSIX 在涉及 UNIX 系统时规定了很多,您可能想检查一下...我认为这才是您真正需要的,因为它针对 UNIX 系统并指定了一些要求。请记住,GNU/Linux 系统并不总是遵循 POSIX,因为它可能被认为是陈旧和生锈的,一些替代和非标准的方式已经出现。这对于开发可移植程序/系统的开发人员来说是个问题。
答案3
RFC 可能不是阅读如何理解 Unix(或任何与此相关的操作系统)工作原理的最佳材料。
RFC 记录了做事的标准方法,使得不同的系统可以互操作并且世界上有一定的理智。
Unix 或 Linux 实现所述 RFC 的方式并不总是相同的。
从 RFC 中,您将学到很多有关标准和协议的知识,但不一定会学到很多有关操作系统特定实现的知识。
答案4
当我最初开始学习计算时,RFC 也是我的接触点之一。我的理论是,如果我能够理解底层网络规则(TCP、DNS、HTTP 等),那么我就能更好地准备在出现问题时修复问题。或者至少能够查明他们出错的原因。
RFC 是程序员在编写网络堆栈(等)时遵循的规则手册,以至于由于拼写错误而引入了错误(我认为 SMTP 已经有很长一段时间了)
就我个人而言,它为我理解构建在其之上的东西奠定了良好的基础。理解底层规则手册可以让理解问题(有时)变得更加容易。
尽管这确实意味着当我遇到问题时,我经常会深入研究wireshark和RFC,而其他人则在查看日志。
它可能不会专门教你有关 Unix 或任何其他操作系统的知识,但至少了解构建互联网/网络的核心 RFC 肯定会给你一箱其他人不会拥有的知识。