Merge branch 'LCTT:master' into master

This commit is contained in:
Donkey 2022-10-14 18:22:13 +08:00 committed by GitHub
commit c7259b9899
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
6 changed files with 379 additions and 449 deletions

View File

@ -0,0 +1,191 @@
[#]: collector: (lujun9972)
[#]: translator: (aREversez)
[#]: reviewer: (wxy)
[#]: publisher: (wxy)
[#]: url: (https://linux.cn/article-15139-1.html)
[#]: subject: (The Real Novelty of the ARPANET)
[#]: via: (https://twobithistory.org/2021/02/07/arpanet.html)
[#]: author: (Two-Bit History https://twobithistory.org)
ARPANET 的真正创新之处
======
![](https://img.linux.net.cn/data/attachment/album/202210/14/180115j5hae51hv1a1ohp5.jpg)
如果你在搜索引擎中输入“ARPANET”搜索相关图片你会看到许多地图的图片上面是这个上世纪六十年代末七十年代初 [美国政府创建的研究网络][1],该网络不断延伸扩展,横跨了整个美国。我猜很多人第一次了解到 ARPANET 的时候都看过这种地图。
可以说,这些地图很有意思,毕竟我们很难想象过去连接网络的计算机是那么少,就连如此低保真的图片都可以表示出美国全部机器的所在位置(这里的<ruby>低保真<rt>lo-fi</rt></ruby>指的是高射投影仪成像技术,而不是大家熟知的 lo-fi 氛围音乐。不过这些地图是有问题的。地图上用加粗的线条连接着大陆各地强化了人们的一种观念ARPANET 最大的贡献就是首次将横跨美国东西两地的电脑连接了起来。
今天,即便是在病毒肆虐、人们困居家中的情况下,网络也能把我们联系起来,可谓是我们的生命线。所以,如果认为 ARPANET 是最早的互联网那么在那之前世界必然相互隔绝毕竟那时还没有今天的互联网对吧ARPANET 首次通过计算机将人们连接起来,一定是一件惊天动地的大事。
但是,这一观点却与历史事实不符,而且它也没有进一步解释 ARPANET 的重要性。
### 初露锋芒
华盛顿希尔顿酒店坐落于<ruby>国家广场<rt>National Mall</rt></ruby>东北方向约 2.4 千米处的一座小山丘山顶附近。酒店左右两侧白色的现代化立面分别向外延展出半个圆形活像一只飞鸟的双翼。1965 年,酒店竣工之后,《纽约时报》报道称这座建筑物就像“一只栖息在山顶巢穴上的海鸥” [^1]。
不过,这家酒店最有名的特点却深藏在地下。在车道交汇处下方,有着一个巨大的蛋形活动场地,这就是人们熟知的<ruby>国际宴会厅<rt>International Ballroom</rt></ruby>多年来一直是华盛顿特区最大的无柱宴会厅。1967 年大门乐队在此举办了一场音乐会。1968 年,“吉他之神”吉米·亨德里克斯也在此举办了一场音乐会。到了 1972 年,国际宴会厅隐去了以往的喧嚣,举办了首届<ruby>国际计算机通信会议<rt>International Conference on Computing Communication</rt></ruby>ICCC。在这场大会上研究项目 ARPANET 首次公开亮相。
这场会议举办时间为 10 月 24-26 日,与会人数约八百人 [^2]。在这场大会上,计算机网络这一新兴领域的领袖人物齐聚一堂。<ruby>因特网<rt>internet</rt></ruby>的先驱<ruby>鲍勃·卡恩<rt>Bob Kahn</rt></ruby>称,“如果有人在华盛顿希尔顿酒店上方丢了一颗炸弹,那么美国的整个网络研究领域将会毁于一旦” [^3]。
当然,不是所有的与会人员都是计算机科学家。根据当时的宣传广告,这场大会将“以用户为中心”,面向“律师、医务人员、经济学家、政府工作者、工程师以及通信员等从业人员”[^4]。虽然大会的部分议题非常专业,比如《数据网络设计问题(一)》与《数据网络设计问题(二)》,但是正如宣传广告所承诺的,大部分会议的主要关注点还是计算机网络给经济社会带来的潜在影响。其中甚至有一场会议以惊人的先见之明探讨了如何积极利用法律制度“保护计算机数据库中的隐私权益” [^5]。
展示 ARPANET 的目的是作为与会者的一个附带景点。在国际宴会厅或酒店更下一层的其他地方举行的会议间歇,与会者可以自由进入<ruby>乔治敦宴会厅<rt>Georgetown Ballroom</rt></ruby>(在国际宴会厅走廊尽头的一个较小的宴会厅,也可以说是会议室)[^6],那里放置着用以访问 ARPANET 的 40 台由不同制造商生产的终端 [^7]。这些终端属于<ruby>哑终端<rt>dumb terminal</rt></ruby>,也就是说,只能用来输入命令、输出结果,本身无法进行计算。事实上,在 1972 年,所以这些终端可能都是<ruby>硬拷贝终端<rt>hardcopy terminal</rt></ruby>,即<ruby>电传打字机<rt>teletype machine</rt></ruby>。哑终端与一台被称为“<ruby>终端接口信息处理机<rt>Terminal Interface Message Processor</rt></ruby>TIP的计算机相连接后者放置在宴会厅中间的一个高台上。TIP 是早期的一种路由器,哑终端可通过 TIP 连接到 ARPANET。有了终端和 TIPICCC 与会者可以尝试登录和访问组成 ARPANET 的 29 个主机站的计算机 [^8]。
为了展示网络的性能,美国全国各主机站的研究员们通力合作,准备了 19 个简易的“情景”,供用户测试使用。他们还出了 [一份小册子][10],将这些情景收录其中。如果与会人员打算进入这个满是电线与哑终端的房间,就会得到这样一本小册子 [^9]。通过这些情景,研究员不仅要证明网络这项新技术的可行性,还要证明其实用性,因为 ARPANET 那时还只是“一条没有汽车驶过的公路”。此外,来自国防部的投资者们也希望,公开展示 ARPANET 可以进一步激发人们对网络的兴趣 [^10]。
因此,这些情景充分展示了在 ARPANET 网络上可以使用的软件的丰富性有程序语言解释器其中一个用于麻省理工学院MIT的 Lisp 语言,另一个用于加州大学洛杉矶分校的数值计算环境 Speakeasy还有一些游戏包括国际象棋和 <ruby>康威生命游戏<rt>Conway's Game of Life</rt></ruby>;以及几个也许最受与会者欢迎的人工智能聊天程序,包括由 MIT 的计算机科学家<ruby>约瑟夫·魏泽堡<rt>Joseph Weizenbaum</rt></ruby>开发的著名聊天程序<ruby>伊莉莎<rt>ELIZA</rt></ruby>
设置这些情景的研究人员小心翼翼地列出了他们想让用户在终端机上输入的每一条命令。这点很重要,因为用于连接 ARPANET 主机的命令序列可能会因为主机的不同而发生变化。比如,为了能在 MIT 人工智能实验室的 PDP-10 微型电脑上测试人工智能国际象棋程序,与会者需要按照指示输入以下命令:
> 在下方代码块中,`[LF]`、`[SP]` 以及 `[CR]` 分别代表换行、空格以及回车键。我在每行的 `//` 符号后面都解释了当前一行命令的含义,不过当时的小册子本来是没有使用这一符号的。
```
@r [LF] // 重置 TIP
@e [SP] r [LF] // “远程回显”设置, 主机回显字符TIP 不回显
@L [SP] 134 [LF] // 连接 134 号主机
:login [SP] iccXXX [CR] // 登录 MIT 人工智能实验室的系统“XXX”代表用户名首字母缩写
:chess [CR] // 启动国际象棋程序
```
如果与会者输入了上述命令,那么他就可以体验当时最先进的国际象棋程序,其棋盘布局如下:
```
BR BN BB BQ BK BB BN BR
BP BP BP BP ** BP BP BP
-- ** -- ** -- ** -- **
** -- ** -- BP -- ** --
-- ** -- ** WP ** -- **
** -- ** -- ** -- ** --
WP WP WP WP -- WP WP WP
WR WN WB WQ WK WB WN WR
```
与之不同的是,如果要连接加州大学洛杉矶分校的 IBM System/360 机器,运行 Speakeasy 数值计算环境,与会者需要输入以下命令:
```
@r [LF] // 重置 TIP
@t [SP] o [SP] L [LF] // “传递换行”设置
@i [SP] L [LF] // “插入换行”设置,即回车时发送换行符。
@L [SP] 65 [LF] // 连接 65 号主机
tso // 连接 IBM 分时可选软件系统
logon [SP] icX [CR] // 输入用户名进行登录“X”可为任意数字
iccc [CR] // 输入密码(够安全!)
speakez [CR] // 启动 Speakeasy
```
输入上述命令后,与会者可以在终端中对矩阵进行乘法、转置以及其他运算,如下所示:
```
:+! a=m*transpose(m);a [CR]
:+! eigenvals(a) [CR]
```
当时,这场演示给许多人都留下了深刻的印象,但原因并不是我们所想的那样,毕竟我们有的只是后见之明。今天的人们总是记不住,在 1972 年,即便身处两个不同的城市,远程登录使用计算机也已经不是一件新鲜事儿了。在那之前的数十年,电传打字机就已经用于与相隔很远的计算机传递信息了。在 ICCC 第一届大会之前,差不多整整五年前,在西雅图的一所高中,<ruby>比尔·盖茨<rt>Bill Gates</rt></ruby>使用电传打字机,在该市其他地方的<ruby>通用电气<rt>General Electric</rt></ruby>GE计算机上运行了他的第一个 BASIC 程序。在当时,登录远程计算机,运行几行命令或者玩一些文字游戏,只不过是家常便饭。因此,虽说上文提到的软件的确很不错,但是即便没有 ARPANET我刚刚介绍的两个情景勉强也是可以实现的。
当然ARPANET 一定带来了新的东西。参加本次大会的律师、政治家与经济学家可能被国际象棋游戏与聊天机器人所吸引,但是网络专家们可能对另外两个情景更感兴趣,因为它们将 ARPANET 的作用更好地展示了出来。
在其中一个情景下MIT <ruby>非兼容分时系统<rt>Incompatible Timesharing System</rt></ruby>ITS上运行了一个名为 `NETWRK` 的程序。`NETWRK` 命令下有若干个子命令,输入这些子命令就能得到 ARPANET 各方面的运行状态。`SURVEY` 子命令可以列出 ARPANET 上哪些主机正在运行和可用(它们都在一个列表中);`SUMMARY.OF.SURVEY` 子命令汇总了过去 `SURVEY` 子命令过去的运行结果,得出每台主机的“正常运行比率”,以及每台主机响应消息的平均时间。`SUMMARY.OF.SURVEY` 子命令以表格的形式输出结果,如下所示:
```
--HOST-- -#- -%-UP- -RESP-
UCLA-NMC 001 097% 00.80
SRI-ARC 002 068% 01.23
UCSB-75 003 059% 00.63
...
```
可以看到,主机编号的占位不超过三个数字(哈!)。其他 `NETWRK` 子命令能够查看较长时间内查询结果的概要,或者检查单个主机查询结果的日志。
第二个情景用到了斯坦福大学开发的一款软件 —— SRI-ARC 联机系统。这款软件功能齐全,非常优秀。美国发明家<ruby>道格拉斯·恩格尔巴特<rt>Douglas Engelbart</rt></ruby>在 “<ruby>所有演示之母<rt>Mother of All Demos</rt></ruby>” 上演示的正是 SRI-ARC 联机系统。这款软件可以在加州大学圣芭芭拉分校的主机上运行本质上属于文件托管的服务。使用华盛顿希尔顿酒店的终端,用户可以将斯坦福大学主机上创建的文件复制到加州大学圣芭芭拉分校的主机上。操作也很简单,只需执行 `copy` 命令,然后回答计算机的下列问题:
> 在下方的代码块中,`[ESC]`、`[SP]` 与 `[CR]` 分别代表退出、空格与回车键;圆括号中的文字是计算机打印出的提示信息;第三行中的退出键用于自动补全文件名。此处复制的文件是 `<system>sample.txt;1`,其中文件名末尾的数字 1 代表文件的版本号,`<system>` 表示文件路径。这种文件名是 TENEX 操作系统上面的惯用写法。[^11]
```
@copy
(TO/FROM UCSB) to
(FILE) <system>sample [ESC] .TXT;1 [CR]
(CREATE/REPLACE) create
```
这两个情景看起来好像和最初提及的两个情景没有太大区别,但是此二者却意义非凡。因为它们证明了,在 ARPANET 上面,不仅人们可以与计算机进行交流,计算机与计算机也可以 _相互_ 交流。MIT 主机上的 `SURVEY` 命令的结果并非由人类定期登录并检查每台机器的运行状态收集而来,而是由一款能在网络上与其他机器进行交流的软件收集得到的。同样的道理,在斯坦福大学与加州大学圣芭芭拉分校之间传输文件的情景下,也没有人守在两所大学的终端旁边,华盛顿特区的终端用户仅仅使用了一款软件,就能让其他两地的计算机相互对话。更重要的是,这一点无关乎你使用的是宴会厅里的哪一台电脑,因为只要输入同样的命令序列,就能在任意一台电脑上浏览 MIT 的网络监视数据,或者在加州大学圣芭芭拉分校的计算机上储存文件。
这才是 ARPANET 的全新之处。本次国际计算机通信会议演示的不仅仅是人与远程电脑之间的交互,也不仅仅是远程输入输出的操作,更是一个软件与其他软件之间的远程通讯,这一点才是史无前例的。
为什么这一点才是最重要的,而不是地图上画着的那些贯穿整个美国、实际连接起来的电线呢(这些线是租赁的电话线,而且它们以前就在那了!)?要知道,早在 1966 年 ARPANET 项目启动之前美国国防部的高级研究计划署ARPA打造了一间终端室里面有三台终端。三台终端分别连接着位于 MIT、加州大学伯克利分校以及圣塔莫尼卡三地的计算机 [^12]。对于 ARPA 的工作人员来说,即便他们身处华盛顿特区,使用这三台计算机也非常方便。不过,这其中也有不便之处:工作人员必须购买和维护来自三家不同制造商的终端,牢记三种不同的登录步骤,熟悉三种不同的计算环境。虽然这三台终端机可能就放在一起,但是它们只是电线另一端主机系统的延申,而且操作也和那些计算机一样各不相同。所以说,在 ARPANET 项目诞生之前,远程连接计算机进行通讯就已经实现了,但问题是不同的计算系统阻碍了通讯朝着更加先进复杂的方向发展。
### 集合起来,就在此刻
因此我想说的是说法一ARPANET 首次通过计算机将不同地方的人们连接了起来与说法二ARPANET 首次将多个计算机系统彼此连接了起来)之间有着云泥之别。听起来似乎有些吹毛求疵,咬文嚼字,但是相较于说法二,说法一忽略了一些重要的历史发展阶段。
首先,历史学家<ruby>乔伊·利西·兰金<rt>Joy Lisi Rankin</rt></ruby>指出,早在 ARPANET 诞生之前,人们就已经在网络空间中进行交流了。在《<ruby>美国计算机的人民历史<rt>A Peoples History of Computing in the United States</rt></ruby>》一书中,兰金介绍了几个覆盖全美的数字社区,这些社区运行在早于 ARPANET 的<ruby>分时网络<rt>time-sharing network</rt></ruby>上面。从技术层面讲分时网络并不是计算机网络因为它仅仅由一台大型主机构成。这种计算机放置在地下室中为多台哑终端提供计算颇像一只又黑又胖的奇怪生物触手向外伸展着遍及整个美国。不过在分时网络时代被后社交媒体时代称为“网络”的大部分社会行为应有尽有。例如Kiewit 网络是<ruby>达特茅斯分时系统<rt>Dartmouth Time-Sharing System</rt></ruby>的延伸应用,服务于美国东北部的各个大学和高中。在 Kiewit 网络上,高中生们共同维护着一个“<ruby>八卦档案<rt>gossip file</rt></ruby>”,用来记录其他学校发生的趣闻趣事,“在康涅狄格州和缅因州之间建立起了社交联系” [^13]。同时,曼荷莲女子学院的女生通过网络与达特茅斯学院的男生进行交流,或者是安排约会,或者是与男朋友保持联系 [^14]。这些事实都发生在上世纪六十年代。兰金认为,如果忽视了早期的分时网络,我们对美国过去 50 年数字文化发展的认识必然是贫瘠的:我们眼里可能只有所谓的“<ruby>硅谷神话<rt>Silicon Valley mythology</rt></ruby>”,认为计算机领域的所有发展都要归功于少数的几位天才,或者说互联网科技巨头的创始人。
回到 ARPANET如果我们能意识到真正的困难是计算机 _系统_ 的联通,而非机器本身的物理连接,那么在探讨 ARPANET 的创新点时我们就会更加倾向于第二种说法。ARPANET 是有史以来第一个<ruby>分组交换网络<rt>packet-switched network</rt></ruby>涉及到许多重要的技术应用。但是如果仅仅因为这项优势就说它是一项突破我觉得这种说法本身就是错的。ARPANET 旨在促进全美计算机科学家之间的合作目的是要弄明白不同的操作系统、不同语言编写的软件如何配合使用而非如何在麻省和加州之间实现高效的数据传输。因此ARPANET 不仅是第一个分组交换网络,它还是一项非常成功且优秀的标准。在我看来,后者更有意思,毕竟我在博客上曾经写过许多颇有失败的标准:[语义网][17]、[RSS][18] 与 [FOAF][19]。
ARPANET 项目初期没有考虑到网络协议,协议的制定是后来的事情了。因此,这项工作自然落到了主要由研究生组成的组织 —— <ruby>网络工作组<rt>Network Working Group</rt></ruby>NWG身上。该组织的首次会议于 1968 年在加州大学圣芭芭拉分校举办 [^15]。当时只有 12 人参会,大部分都是来自上述四所大学的代表 [^16]。来自加州大学洛杉矶分校的研究生<ruby>史蒂夫·克罗克<rt>Steve Crocker</rt></ruby>参加了这场会议。他告诉我,工作组首次会议的参会者清一色都是年轻人,最年长的可能要数会议主席<ruby>埃尔默·夏皮罗<rt>Elmer Shapiro</rt></ruby>了,他当年 38 岁左右。ARPA 没有派人负责研究计算机连接之后如何进行通信,但是很明显它需要提供一定的协助。随着工作组会议的陆续开展,克罗克一直期望着更有经验与威望的“法定成年人”从东海岸飞过来接手这项工作,但是期望终究还是落空了。在 ARPA 的默许之下,工作组举办了多场会议,其中包括很多长途旅行,差旅费由 ARPA 报销,这些就是它给与工作组的全部协助了 [^17]。
当时,网络工作组面临着巨大的挑战。从没有人有过使用通用方式连接计算机系统的经验,而且这本来就与上世纪六十年代末计算机领域盛行的全部观点相悖:
> 那个时候典型的主机表现得就像是它是全宇宙唯一的计算机。即便是最简短的交流会话,两台主机也无法轻易做到。并不是说机器没办法相互连接,只是连接之后,两台计算机又能做些什么呢?当时,计算机和与其相连的其他设备之间的通讯,就像帝王与群臣之间的对话一般。连接到主机的设备各自执行着自己的任务,每台外围设备都保持着常备不懈的状态,等待着上司的命令。当时的计算机就是严格按照这类互动需求设计出来的;它们向读卡器、终端与磁带机等下属设备发号施令,发起所有会话。但是,如果一台计算机拍了拍另一台计算机的肩膀,说道,“你好,我也是一台计算机”,那么另一台计算机可就傻眼了,什么也回答不上来 [^18]。
于是,工作组的最初进展很缓慢 [^19]。直到 1970 年 6 月,也就是首次会议将近两年之后,工作组才为网络协议选定了一套“正式”规范 [^20]。
不过,到了 1972 年,在国际计算机通信会议上展示 ARPANET 的时候,所有的协议已经准备就绪了。会议期间,这些协议运用到了国际象棋等情景之中。用户运行 `@e r` 命令(`@echo remote` 命令的缩写形式),可以指示 TIP 使用新 TELNET 虚拟终端协议提供的服务,通知远程主机它应该回显用户输入的内容。接着,用户运行 `@L 134` 命令(`@login 134` 命令的缩写形式),让 TIP 在 134 号主机上调用<ruby>初始连接协议<rt>Initial Connection Protocol</rt></ruby>,该协议指示远程主机分配出连接所需的全部必要资源,并将用户带入 TELNET 会话中。上述文件传输的情景也许用到了 <ruby>文件传输协议<rt>File Transfer Protocol</rt></ruby>FTP而该协议恰好是在大会举办前夕才刚刚完成的 [^21]。所有这些协议都是“三层”协议其下的第二层是主机到主机的协议定义了主机之间可以相互发送和接收的信息的基本格式第一层是主机到接口通信处理机IMP的协议定义了主机如何与连接的远程设备进行通信。令人感到不可思议的是这些协议都能正常运行。
在我看来,网络工作组之所以能够在大会举办之前做好万全的准备,顺利且出色地完成任务,在于他们采用了开放且非正式的标准化方法,其中一个典型的例子就是著名的 <ruby>征求意见<rt>Request for Comments</rt></ruby>RFC系列文档。RFC 文档最初通过<ruby>传统信件<rt>snail mail</rt></ruby>在工作组成员之间进行传阅让成员们在没有举办会议的时候也能保持联系同时收集成员反馈汇集各方智慧。RFC 框架是克罗克提出的,他写出了第一篇 RFC 文档,并在早期负责管理 RFC 的邮寄列表。他这样做是为了强调工作组开放协作的活动本质。有了这套框架以及触手可及的文档ARPANET 的协议设计过程成了一个大熔炉每个人都可以贡献出自己的力量步步推进精益求精让最棒的想法脱颖而出而没有人失去面子。总而言之RFC 获得了巨大成功,并且直至今天,长达半个世纪之后,它依旧是网络标准的“说明书”。
因此,说起 ARPANET 的影响力,我认为不得不强调的一点正是工作组留下的这一成果。今天,互联网可以把世界各地的人们连接起来,这也是它最神奇的属性之一。不过如果说这项技术到了上世纪才开始使用,那可就有些滑稽可笑了。要知道,在 ARPANET 出现之前,人们就已经通过电报打破了现实距离的限制。而 ARPANET 打破的应该是各个主机站因使用不同的操作系统、字符编码、程序语言以及组织策略而在逻辑层面产生的差异限制。当然,将第一个分组交换网络投入使用在技术方面绝对是一大壮举,这肯定值得一提,不过,制定统一的标准并用以连接原本无法相互协作的计算机,是建立 ARPANET 网络过程中遇到的这两大难题中更为复杂的一个。而这一难题的解决方案,也成了 ARPANET 整个建立与发展历史中最为神奇的一个章节。
1981 年,高级研究计划署发表了一份“完工报告”,回顾了 ARPANET 项目的第一个十年。在《付出收获了回报的技术方面以及付出未能实现最初设想的技术方面》这一冗长的小标题下,作者们写道:
> 或许,在 ARPANET 的开发过程中,最艰难的一项任务就是,尽管主机制造商各不相同,或者同一制造商下操作系统各不相同,我们仍需在众多的独立主机系统之间实现通讯交流。好在这项任务后来取得了成功 [^22]。
你可以从美国联邦政府获得相关信息。
_如果你喜欢这篇文章欢迎关注推特 [@TwoBitHistory][28],也可通过 [RSS 馈送][29] 订阅获取最新文章。_
[^1]: “Hilton Hotel Opens in Capital Today.” _The New York Times_, 20 March 1965, <https://www.nytimes.com/1965/03/20/archives/hilton-hotel-opens-in-capital-today.html?searchResultPosition=1>. Accessed 7 Feb. 2021.
[^2]: James Pelkey. _Entrepreneurial Capitalism and Innovation: A History of Computer Communications 1968-1988,_ Chapter 4, Section 12, 2007, <http://www.historyofcomputercommunications.info/Book/4/4.12-ICCC%20Demonstration71-72.html>. Accessed 7 Feb. 2021.
[^3]: Katie Hafner and Matthew Lyon. _Where Wizards Stay Up Late: The Origins of the Internet_. New York, Simon &amp; Schuster, 1996, p. 178.
[^4]: “International Conference on Computer Communication.” _Computer_, vol. 5, no. 4, 1972, p. c2, <https://www.computer.org/csdl/magazine/co/1972/04/01641562/13rRUxNmPIA>. Accessed 7 Feb. 2021.
[^5]: “Program for the International Conference on Computer Communication.” _The Papers of Clay T. Whitehead_, Box 42, <https://d3so5znv45ku4h.cloudfront.net/Box+042/013_Speech-International+Conference+on+Computer+Communications,+Washington,+DC,+October+24,+1972.pdf>. Accessed 7 Feb. 2021.
[^6]: 我其实并不清楚 ARPANET 是在哪个房间展示的。很多地方都提到了“宴会厅”,但是华盛顿希尔顿酒店更习惯于叫它“乔治敦”,而不是把它当成一间会议室。因此,或许这场展示是在国际宴会厅举办的。但是 RFC 372 号文件又提到了预定“乔治敦”作为展示场地一事。华盛顿希尔顿酒店的楼层平面图可以点击 [此处][36] 查看。
[^7]: Hafner, p. 179.
[^8]: ibid., p. 178.
[^9]: Bob Metcalfe. “Scenarios for Using the ARPANET.” _Collections-Computer History Museum_, <https://www.computerhistory.org/collections/catalog/102784024>. Accessed 7 Feb. 2021.
[^10]: Hafner, p. 176.
[^11]: Robert H. Thomas. “Planning for ACCAT Remote Site Operations.” BBN Report No. 3677, October 1977, <https://apps.dtic.mil/sti/pdfs/ADA046366.pdf>. Accessed 7 Feb. 2021.
[^12]: Hafner, p. 12.
[^13]: Joy Lisi Rankin. _A Peoples History of Computing in the United States_. Cambridge, MA, Harvard University Press, 2018, p. 84.
[^14]: Rankin, p. 93.
[^15]: Steve Crocker. Personal interview. 17 Dec. 2020.
[^16]: 克罗克将会议记录文件发给了我,文件列出了所有的参会者。
[^17]: Steve Crocker. Personal interview.
[^18]: Hafner, p. 146.
[^19]: “Completion Report / A History of the ARPANET: The First Decade.” BBN Report No. 4799, April 1981, <https://walden-family.com/bbn/arpanet-completion-report.pdf>, p. II-13.
[^20]: 这里我指的是 RFC 54 号文件中的“正式协议”。
[^21]: Hafner, p. 175.
[^22]: “Completion Report / A History of the ARPANET: The First Decade,” p. II-29.
--------------------------------------------------------------------------------
via: https://twobithistory.org/2021/02/07/arpanet.html
作者:[Two-Bit History][a]
选题:[lujun9972][b]
译者:[aREversez](https://github.com/aREversez)
校对:[wxy](https://github.com/wxy)
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
[a]: https://twobithistory.org
[b]: https://github.com/lujun9972
[1]: https://en.wikipedia.org/wiki/ARPANET
[10]: https://archive.computerhistory.org/resources/access/text/2019/07/102784024-05-001-acc.pdf
[17]: https://twobithistory.org/2018/05/27/semantic-web.html
[18]: https://twobithistory.org/2018/12/18/rss.html
[19]: https://twobithistory.org/2020/01/05/foaf.html
[28]: https://twitter.com/TwoBitHistory
[29]: https://twobithistory.org/feed.xml
[30]: https://twitter.com/TwoBitHistory/status/1277259930555363329?ref_src=twsrc%5Etfw
[36]: https://www3.hilton.com/resources/media/hi/DCAWHHH/en_US/pdf/DCAWH.Floorplans.Apr25.pdf

View File

@ -1,192 +0,0 @@
[#]: subject: "Reasons for servers to support IPv6"
[#]: via: "https://jvns.ca/blog/2022/01/29/reasons-for-servers-to-support-ipv6/"
[#]: author: "Julia Evans https://jvns.ca/"
[#]: collector: "lujun9972"
[#]: translator: "chai001125"
[#]: reviewer: " "
[#]: publisher: " "
[#]: url: " "
Reasons for servers to support IPv6
======
Ive been having a hard time understanding IPv6. On one hand, the basics initially seem pretty straightforward (there arent enough IPv4 addresses for all the devices on the internet, so people invented IPv6! There are enough IPv6 addresses for everyone!)
But when I try to actually understand it, I run into a lot of questions. One question is: `twitter.com` does not support IPv6. Presumably it cant be causing them THAT many issues to not support it. So why _do_ websites support IPv6?
I asked people on Twitter [why their servers support IPv6][1] and I got a lot of great answers, which Ill summarize here. These all come with the disclaimer that I have basically 0 experience with IPv6 so I cant evaluate these reasons very well.
First though, I want to explain why its possible for `twitter.com` to not support IPv6 because I didnt understand that initially.
### how can you tell `twitter.com` doesnt support IPv6?
You can tell they dont support IPv6 is because if you look up their AAAA record (which contains their IPv6 address), there isnt one. Some other big sites like `github.com` and `stripe.com` also dont support IPv6.
```
$ dig AAAA twitter.com
(empty response)
$ dig AAAA github.com
(empty response)
$ dig AAAA stripe.com
(empty response)
```
### why does `twitter.com` still work for IPv6 users?
I found this really confusing, because Ive always heard that lots of internet users are forced to use IPv6 because weve run out of IPv4 addresses. But if thats true, how could twitter.com continue to work for those people without IPv6 support? Heres what I learned from the Twitter thread yesterday.
There are two kinds of internet service providers (ISPs):
1. ISPs who own enough IPv4 address for all of their customers
2. ISPs who dont
My ISP is in category 1 my computer gets its own IPv4 address, and actually my ISP doesnt even support IPv6 at all.
But lots of ISPs (especially outside of North America) are in category 2: they dont have enough IPv4 addresses for all their customers. Those ISPs handle the problem by:
* giving all of their customers a unique IPv6 address, so they can access IPv6 sites directly
* making large groups of their customers _share_ IPv4 addresses. This can either be with CGNAT (”[carrier-grade NAT][2]”) or “464XLAT” or maybe something else.
All ISPs need _some_ IPv4 addresses, otherwise it would be impossible for their customers to access IPv4-only sites like twitter.com.
### what are the reasons to support IPv6?
Now weve explained why its possible to _not_ support IPv6. So why support it? There were a lot of reasons.
### reason: CGNAT is a bottleneck
The argument that was most compelling to me was: CGNAT (carrier-grade NAT) is a bottleneck and it causes performance issues, and its going to continue to get worse over time as access to IPv4 addresses becomes more and more restricted.
Someone also mentioned that because CGNAT is a bottleneck, its an attractive DDoS target because you can ruin lots of peoples internet experience just by attacking 1 server.
Servers supporting IPv6 reduces the need for CGNAT (IPv6 users can just connect directly!) which makes the internet work better for everyone.
I thought this argument was interesting because its a “public commons” / community argument its less that supporting IPv6 will make your site specifically work better, and more that if _almost everyone_ supports IPv6 then itll make the experience of the internet better for everyone, especially in countries where people dont have easy access to IPv4 addresses.
I dont actually know how much of an issue this is in practice.
There were lots of more selfish arguments to use IPv6 too though, so lets get into those.
### reason: so IPv6-only servers can access your site
I said before that most IPv6 users still have access to IPv4 though some kind of NAT. But apparently thats not true for everyone some people mentioned that they run some servers which only have IPv6 addresses and which arent behind any kind of NAT. So those servers are actually totally unable to access IPv4-only sites.
I imagine that those servers arent connecting to arbitrary machines that much maybe they only need to connect to a few hosts with IPv6 support.
But it makes sense to me that a machine should be able to access my site even if it doesnt have an IPv4 address.
### reason: better performance
For users who are using both IPv4 and IPv6 (with a dedicated IPv6 address and a shared IPv4 address), apparently IPv6 is often faster because it doesnt need to go through an extra translation layer.
So supporting IPv6 can make the site faster for users sometimes.
In practice clients use an algorithm called “Happy Eyeballs” which tries to figure out whether IPv4 or IPv6 will be faster and then uses whichever seems faster.
Some other performance benefits people mentioned:
* maybe sometimes using IPv6 can get you a SEO boost because of the better performance.
* maybe using IPv6 causes you to go through better (faster) network hardware because its a newer protocol
### reason: resilience against IPv4 internet outages
One person said that theyve run into issues where there was an internet outage that only affected IPv4 traffic, because of accidental BGP poisoining.
So supporting IPv6 means that their site can still stay partially online during those outages.
### reason: to avoid NAT issues with home servers
A few people mentioned that its much easier to use IPv6 with home servers instead of having to do port forwarding through your router, you can just give every server a unique IPv6 address and then access it directly.
Of course, for this to work the client needs to have IPv6 support, but more and more clients these days have IPv6 support too.
### reason: to own your IP addresses
Apparently you can buy IPv6 addresses, use them for the servers on your home network, and then if you change your ISP, continue to use the same IP addresses?
Im still not totally sure how this works (I dont know how you would convince computers on the internet to actually route those IPs to you? I guess you need to run your own AS or something?).
### reason: to learn about IPv6
One person said they work in security and in security its very important to understand how internet protocols work (attackers are using internet protocols!). So running an IPv6 server helps them learn how it works.
### reason: to push IPv6 forward / IPv4 is “legacy”
A couple of people said that they support IPv6 because its the current standard, and so they want to contribute to the success of IPv6 by supporting it.
A lot of people also said that they support IPv6 because they think sites that only support IPv4 are “behind” or “legacy”.
### reason: its easy
I got a bunch of answers along the lines of “its easy, why not”. Obviously adding IPv6 support is not easy in all situations, but a couple of reasons it might be easy in some cases:
* you automatically got an IPv6 address from your hosting company, so all you need to do is add an `AAAA` record pointing to that address
* your site is behind a CDN that supports IPv6, so you dont need to do anything extra
### reason: safer networking experimentation
Because the address space is so big, if you want to try something out you can just grab an IPv6 subnet, try out some things in it, and then literally never use that subnet again.
### reason: to run your own autonomous system (AS)
A few people said they were running their own autonomous system (I talked about what an AS is a bit in this [BGP post][3]). IPv4 addresses are too expensive so they bought IPv6 addresses for their AS instead.
### reason: security by obscurity
If your server _only_ has a public IPv6 address, attackers cant easily find it by scanning the whole internet. The IPv6 address space is too big to scan!
Obviously this shouldnt be your only security measure, but it seems like a nice bonus any time I run an IPv4 public server Im always a tiny bit surprised by how its constantly being scanned for vulnerabilities (like old versions of WordPress, etc).
### very silly reason: you can put easter eggs in your IPv6 address
IPv6 addresses have a lot of extra bits in them that you can do frivolous things with. For example one of Facebooks IPv6 addresses is “2a03:2880:f10e:83:face:b00c:0:25de” (it has `face:b00c` in it).
### there are more reasons than I thought
Thats all Ive learned about the “why support IPv6?” question so far.
I came away from this conversation more motivated to support IPv6 on my (very small) servers than I had been before. But thats because I think supporting IPv6 will require very little effort for me. (right now Im using a CDN that supports IPv6 so it comes basically for free)
I know very little about IPv6 still but my impression is that IPv6 support often isnt zero-effort and actually can be a lot of work. For example, I have no idea how much work it would actually be for Twitter to add IPv6 support on their edge servers.
### some more IPv6 questions
Here are some more IPv6 questions I have that maybe Ill explore later:
* what are the _disadvantages_ to supporting IPv6? what goes wrong?
* what are the incentives for ISPs that own enough IPv4 addresses for their customers to support IPv6? (another way of asking: is it likely that my ISP will move to supporting IPv6 in the next few years? or are they just not incentivized to do it so its unlikely?)
* [digital ocean][4] seems to only support IPv4 floating IPs, not IPv6 floating IPs. Why not? Shouldnt it be _easier_ to give out IPv6 floating IPs since there are more of them?
* when I try to ping an IPv6 address (like example.coms IP `2606:2800:220:1:248:1893:25c8:1946` for example) I get the error `ping: connect: Network is unreachable`. Why? (answer: its because my ISP doesnt support IPv6 so my computer doesnt have a public IPv6 address)
This [IPv4 vs IPv6 article from Tailscale][5] looks interesting and answers some of these questions.
--------------------------------------------------------------------------------
via: https://jvns.ca/blog/2022/01/29/reasons-for-servers-to-support-ipv6/
作者:[Julia Evans][a]
选题:[lujun9972][b]
译者:[译者ID](https://github.com/译者ID)
校对:[校对者ID](https://github.com/校对者ID)
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
[a]: https://jvns.ca/
[b]: https://github.com/lujun9972
[1]: https://twitter.com/b0rk/status/1487156306884636672
[2]: https://en.wikipedia.org/wiki/Carrier-grade_NAT
[3]: https://jvns.ca/blog/2021/10/05/tools-to-look-at-bgp-routes/
[4]: https://docs.digitalocean.com/products/networking/floating-ips/
[5]: https://tailscale.com/kb/1134/ipv6-faq/

View File

@ -2,7 +2,7 @@
[#]: via: "https://www.debugpoint.com/xubuntu-22-10-features/" [#]: via: "https://www.debugpoint.com/xubuntu-22-10-features/"
[#]: author: "Arindam https://www.debugpoint.com/author/admin1/" [#]: author: "Arindam https://www.debugpoint.com/author/admin1/"
[#]: collector: "lkxed" [#]: collector: "lkxed"
[#]: translator: " " [#]: translator: "geekpi"
[#]: reviewer: " " [#]: reviewer: " "
[#]: publisher: " " [#]: publisher: " "
[#]: url: " " [#]: url: " "

View File

@ -2,7 +2,7 @@
[#]: via: "https://itsfoss.com/install-snap-arch-linux/" [#]: via: "https://itsfoss.com/install-snap-arch-linux/"
[#]: author: "Pranav Krishna https://itsfoss.com/author/pranav/" [#]: author: "Pranav Krishna https://itsfoss.com/author/pranav/"
[#]: collector: "lkxed" [#]: collector: "lkxed"
[#]: translator: " " [#]: translator: "geekpi"
[#]: reviewer: " " [#]: reviewer: " "
[#]: publisher: " " [#]: publisher: " "
[#]: url: " " [#]: url: " "

View File

@ -1,255 +0,0 @@
[#]: collector: (lujun9972)
[#]: translator: (aREversez)
[#]: reviewer: ( )
[#]: publisher: ( )
[#]: url: ( )
[#]: subject: (The Real Novelty of the ARPANET)
[#]: via: (https://twobithistory.org/2021/02/07/arpanet.html)
[#]: author: (Two-Bit History https://twobithistory.org)
ARPANET 的真正创新之处
======
如果你在搜索引擎中输入“ARPANET”搜索相关图片你会看到许多地图的图片上面是上世纪六十年代末七十年代初 [美国政府创建的研究网络][1],该网络不断延伸扩展,横跨了整个美国。我猜很多人第一次了解到 ARPANET 的时候都看过这种地图。
可以说,这些地图很有意思,毕竟我们很难想象过去连接网络的计算机是那么少,就连如此低保真的图片都可以表示出美国全部机器的所在位置(这里的低保真指的是高射投影仪成像技术,而不是大家熟知的 lo-fi 氛围音乐。不过这些地图是有问题的。地图上加粗的线条连接着大陆各地强化了人们的一种观念ARPANET 最大的贡献就是首次将横跨美国东西两地的电脑连接了起来。
今天,即便是在病毒肆虐、人们困居家中的情况下,网络也能把我们联系起来,可谓是我们的生命线。所以,如果认为 ARPANET 是最早的互联网那么在那之前世界必然相互隔绝毕竟那时还没有今天的互联网对吧ARPANET 首次通过计算机将人们连接起来,一定是一件惊天动地的大事。
但是,这一观点却与历史事实不符,而且它也没有进一步解释 ARPANET 的重要性。
### 初露锋芒
华盛顿希尔顿酒店坐落于国家广场东北方向约 2.4 千米处的一座小山丘山顶附近。酒店左右两侧白色的现代化立面分别向外延展出半个圆形活像一只飞鸟的双翼。1965 年,酒店竣工之后,纽约时报报道称这座建筑物就像“一只栖息在山顶巢穴上的海鸥”[1][2]。
不过这家酒店最有名的特点却深藏在地下。在车道交汇处下方有着一个巨大的蛋形活动场地这就是人们熟知的国际宴会厅多年来一直是华盛顿特区最大的无柱宴会厅。1967 年大门乐队在此举办了一场音乐会。1968 年,“吉他之神”吉米·亨德里克斯也在此举办了一场音乐会。到了 1972 年,国际宴会厅隐去了以往的喧嚣,举办了首届国际计算机通信会议。在这场大会上,研究项目 ARPANET 首次公开亮相。
1972 年的国际计算机通信会议举办时间为 10 月 24-26 日,与会人数约八百人[2][3]。在这场大会上,计算机网络这一新兴领域的领袖人物齐聚一堂。因特网的先驱鲍勃·卡恩称,“如果有人在华盛顿希尔顿酒店上方丢了一颗炸弹,那么美国的整个网络研究领域将会毁于一旦”[3][4]。
当然,不是所有的与会人员都是计算机科学家。根据当时的宣传广告,这场大会将会聚焦用户,照顾到“律师、医务人员、经济学家、政府工作者、工程师以及通信员等从业人员”[4][5]。虽然大会的部分议题非常专业,比如“数据网络设计问题(一)”与“数据网络设计问题(二)”,但是正如宣传广告所承诺的,大部分会议的主要关注点还是计算机网络给经济社会带来的潜在影响。其中甚至有一场会议以惊人的先见之明探讨了如何积极利用法律制度“保护计算机数据库中的隐私权益”[5][6]。
展示 ARPANET 的目的在于尽可能地吸引与会者的关注。各场会议在国际宴会厅或酒店更下一层的其他地方举行,会议休息期间,与会者可以自由进入乔治敦宴会厅(在国际宴会厅走廊尽头的一个较小的宴会厅,也可以说是会议室)[6][7],那里放置着 40 台由不同制造商生产的终端,用以访问 ARPANET [7][8]。这些终端属于哑终端,也就是说,只能用来输入命令、输出结果,本身无法进行计算。事实上,因为是 1972 年所以这些终端可能都是硬拷贝终端即电传打字机。哑终端与一台被称为“终端接口信息处理机”TIP的计算机相连接后者放置在宴会厅中间的一个高台上。TIP 是早期的一种路由器,哑终端可通过 TIP 连接到 ARPANET。有了终端和 TIPICCC 与会者可以尝试登录和访问组成 ARPANET 的 29 个主机站的计算机 [8][9]。
为了展示网络的性能,美国全国各主机站的研究员们通力合作,准备了 19 个简易的“情景”,供用户测试使用。他们还出了 [一份小册子][10],将这些情景收录其中。如果与会人员打算进入这个满是电线与哑终端的房间,就会得到这样一本小册子 [9][11]。通过这些情景,研究员不仅要证明网络这项新技术的可行性,还要证明其实用性,因为 ARPANET 那时还只是“一条没有汽车驶过的公路”。此外,来自国防部的投资者们也希望,公开展示 ARPANET 可以进一步激发人们对网络的兴趣 [10][12]。
因此,这些情景充分展示了在 ARPANET 网络上可以使用的软件的丰富性有程序语言解释器其中一个是麻省理工学院MIT Lisp 语言的解释器,另一个是加州大学洛杉矶分校的数值计算环境 Speakeasy 项目的解释器;还有一些游戏,包括国际象棋和 <ruby>康威生命游戏<rt>Conway's Game of Life</rt></ruby>;以及最受与会者欢迎的几个人工智能聊天程序,包括由 MIT 的计算机科学家约瑟夫·魏泽堡开发的著名聊天程序伊莉莎。
设置情景的研究人员小心翼翼地列出了他们想让用户在终端机上输入的每一条命令。这点很重要,因为用于连接 ARPANET 主机的命令序列可能会因为主机的不同而发生变化。比如,为了能在 MIT 人工智能实验室的 PDP-10 微型电脑上测试人工智能国际象棋程序,与会者需要按照指示输入以下命令:
在下方代码块中, _`[LF]`、`[SP]` 以及 `[CR]` 分别代表换行、空格以及回车键。我在每行的 `//` 符号后面都解释了当前一行命令的含义,不过当时的小册子本来是没有使用这一符号的。
```
@r [LF] // 重置 TIP
@e [SP] r [LF] // “远程回显”设置, 主机回显字符TIP 不回显
@L [SP] 134 [LF] // 连接 134 号主机
:login [SP] iccXXX [CR] // 登录 MIT 人工智能实验室的系统“XXX”代表用户名首字母缩写
:chess [CR] // 启动国际象棋程序
```
如果与会者输入了上述命令,那么他就可以体验当时最先进的国际象棋程序,其棋盘布局如下:
```
BR BN BB BQ BK BB BN BR
BP BP BP BP ** BP BP BP
-- ** -- ** -- ** -- **
** -- ** -- BP -- ** --
-- ** -- ** WP ** -- **
** -- ** -- ** -- ** --
WP WP WP WP -- WP WP WP
WR WN WB WQ WK WB WN WR
```
与之不同的是,如果要连接加州大学洛杉矶分校的 IBM System/360 机器,运行 Speakeasy 数值计算环境,与会者需要输入以下命令:
```
@r [LF] // 重置 TIP
@t [SP] o [SP] L [LF] // “传递换行”设置
@i [SP] L [LF] // “插入换行”设置,即回车时发送换行符。
@L [SP] 65 [LF] // 连接 65 号主机
tso // 连接 IBM 分时可选软件系统
logon [SP] icX [CR] // 输入用户名进行登录“X”可为任意数字
iccc [CR] // 输入密码(够安全!)
speakez [CR] // 启动 Speakeasy
```
输入上述命令后,与会者可以在终端中对矩阵进行乘法、转置以及其他运算,如下所示:
```
:+! a=m*transpose(m);a [CR]
:+! eigenvals(a) [CR]
```
当时,这场演示给许多人都留下了深刻的印象,但原因并不是我们所想的那样,毕竟我们有的只是后见之明。今天的人们总是记不住,在 1972 年,即便身处两个不同的城市,远程登录使用计算机也已经不是一件新鲜事儿了。在那之前的数十年,电传打字机就已经用于与相隔很远的计算机传递信息了。在 ICCC 第一届大会之前,差不多整整五年,在西雅图的一所高中,比尔·盖茨使用电传打字机,在该市其他地方的通用电气计算机上运行了他的第一个 BASIC 程序。在当时,登录远程计算机,运行几行命令或者玩一些文字游戏,只不过是家常便饭。因此,虽说上文提到的软件的确很不错,但是即便没有 ARPANET我刚刚介绍的两个情景勉强也是可以实现的。
当然ARPANET 一定带来了新的东西。参加本次大会的律师、政治家与经济学家关注更多的可能是国际象棋游戏与聊天机器人,但是网络专家们可能对另外两个情景更感兴趣,因为它们将 ARPANET 的作用更好地展示了出来。
在其中一个情景下MIT <ruby>非兼容分时系统<rt>ITS</rt></ruby> 上运行了一个名为 `NETWRK` 的程序。`NETWRK` 命令下有若干个子命令,输入这些子命令就能得到 ARPANET 各方面的运行状态。`SURVEY` 子命令可以列出 ARPANET 上面运行的主机与空闲的主机,放入一个列表中;`SUMMARY.OF.SURVEY` 子命令对 `SURVEY` 子命令的运行结果进行统计,得出每台主机的“正常运行比率”,以及每台主机响应消息的平均时间。`SUMMARY.OF.SURVEY` 子命令以表格的形式输出结果,如下所示:
```
--HOST-- -#- -%-UP- -RESP-
UCLA-NMC 001 097% 00.80
SRI-ARC 002 068% 01.23
UCSB-75 003 059% 00.63
...
```
可以看到,主机编号的占位不超过三个数字。其他 `NETWRK` 子命令能够查看较长时间内查询结果的概要,或者检查单个主机查询结果的日志。
第二个情景用到了斯坦福大学开发的一款软件——SRI-ARC 联机系统。这款软件功能齐全,非常优秀。美国发明家道格拉斯·恩格尔巴特在 <ruby>所有演示之母<rt>Mother of All Demos</rt></ruby> 上演示的正是 SRI-ARC 联机系统。这款软件可以在加州大学圣芭芭拉分校的主机上运行本质上属于文件托管的服务。使用华盛顿希尔顿酒店的终端,用户就可以将斯坦福大学主机上创建的文件复制到加州大学圣芭芭拉分校的主机上。操作也很简单,只需执行 `copy` 命令,然后回答计算机的下列问题:
_在下方的代码块中`[ESC]`、`[SP]` 与 `[CR]` 分别代表退出、空格与回车键;圆括号中的文字是计算机打印出的提示信息;第三行中的退出键用于自动补全文件名。此处复制的文件是 `<system>sample.txt;1`,其中文件名末尾的数字 1 代表文件的版本号,`<system>` 表示文件路径。这种文件名是 TENEX 操作系统上面的惯用写法。_[11][13]
```
@copy
(TO/FROM UCSB) to
(FILE) <system>sample [ESC] .TXT;1 [CR]
(CREATE/REPLACE) create
```
这两个情景看起来好像和最初提及的两个情景没有太大区别,但是此二者却意义非凡。因为它们证明了,在 ARPANET 上面,不仅人们可以与计算机进行交流,计算机与计算机也可以 _相互_ 交流。保存在 MIT 的 `SURVEY` 命令的结果并非由人类定期登录并检查每台机器的运行状态收集而来,而是由一款能在网络上与其他机器进行交流的软件收集得到的。同样的道理,在斯坦福大学与加州大学圣芭芭拉分校之间传输文件的情景下,也没有人守在两所大学的终端旁边,特区的终端用户仅仅使用了一款软件,就能让其他两地的计算机连接起来。此外,这一点无关乎你使用的是宴会厅里的哪一台电脑,因为只要输入同样的命令序列,就能在任意一台电脑上浏览 MIT 的网络监视数据,或者在加州大学圣芭芭拉分校的计算机上储存文件。
这才是 ARPANET 的全新之处。本次国际计算机通信会议演示的不仅仅是人与远程电脑之间的交互,也不仅仅是远程输入输出的操作,更是一个软件与其他软件之间的远程通讯,这一点才是史无前例的。
为什么这一点才是最重要的,而不是地图上画着的那些贯穿整个美国、实际连接起来的电线呢(这些线是租赁的电话线,而且它们以前就在那了!)?要知道,早在 1966 年 ARPANET 项目启动之前,美国国防部的高级研究计划署打造了一间终端室,里面有三台终端。三台终端分别连接着位于 MIT、加州大学伯克利分校以及圣塔莫尼卡三地的计算机 [12][14]。对于高级研究计划署的工作人员来说,即便他们身处华盛顿特区,使用这三台计算机也非常方便。不过,这其中也有不便之处:工作人员必须购买和维护来自三家不同制造商的终端,牢记三种不同的登录步骤,熟悉三种不同的计算环境。虽然这三台终端机可能就放在一起,但是它们只是电线另一端主机系统的延申,而且操作也和那些计算机一样各不相同。所以说,在 ARPANET 项目诞生之前,远程连接计算机进行通讯就已经实现了,但问题是不同的计算系统阻碍了通讯朝着更加先进复杂的方向发展。
### 此刻,集合起来
因此我想说的是说法一ARPANET 首次通过计算机将不同地方的人们连接了起来与说法二ARPANET 首次将多个计算机系统彼此连接了起来)之间有着云泥之别。听起来似乎有些吹毛求疵,咬文嚼字,但是相较于说法二,说法一忽略了一些重要的历史发展阶段。
首先历史学家乔伊·利西·兰金Joy Lisi Rankin指出早在 ARPANET 诞生之前人们就已经在网络空间中进行交流了。在《美国人民的计算机历史》_A Peoples History of Computing in the United States_一书中兰金介绍了多个覆盖全国的数字社区这些社区运行在早于 ARPANET 的分时网络上面。从技术层面讲分时网络并不属于计算机网络因为它仅仅由一台大型主机构成。这种计算机放置在地下室中为多台哑终端提供计算颇像一只又黑又胖的奇怪生物触手向外伸展着遍及整个美国。不过在分时网络时代被后社交媒体时代称为“网络”的大部分社会行为应有尽有。例如Kiewit 网络是达特茅斯分时系统的延申应用,服务于美国东北部的各个大学和高中。在 Kiewit 网络上,高中生们共同维护着一个“<ruby>八卦文件<rt>gossip file</rt></ruby>”,用来记录其他学校发生的趣闻趣事,“在康涅狄格州和缅因州之间建立起了社交联系” [13][15]。同时,曼荷莲女子学院的女生通过网络与达特茅斯学院的男生进行交流,或者是安排约会,或者是与男朋友保持联系 [14][16]。这些事实都发生在上世纪六十年代。兰金认为,如果忽视了早期的分时网络,我们对美国过去 50 年数字文化发展的认识必然是贫瘠的:我们眼里可能只有所谓的“<ruby>硅谷神话<rt>Silicon Valley mythology</rt></ruby>”,认为计算机领域的所有发展都要归功于少数的几位天才,或者说互联网科技巨头的创始人。
回到 ARPANET如果我们能意识到真正的困难是计算机 _系统_ 的联通,而非机器本身的连接,那么在探讨 ARPANET 的创新点时我们就会更加倾向于第二种说法。ARPANET 是第一个包交换网络涉及到许多重要的技术应用。但是如果仅仅因为这项优势就说它是一项突破我觉得这种说法本身就是错的。ARPANET 旨在促进全美计算机科学家之间的合作目的是要弄明白不同的操作系统与不同语言编写的软件如何配合使用而非如何在麻省和加州之间实现高效的数据传输。因此ARPANET 不仅是第一个包交换网络,它还是一项非常成功且优秀的标准。在我看来,后者更有意思,毕竟我在博客上曾经写过许多颇有瑕疵的标准:[语义网][17]、[RSS][18] 与 [FOAF ][19]。
ARPANET 项目初期没有考虑到网络协议,协议的制定是后来的事情了。因此,这项工作自然落到了主要由研究生组成的组织——<ruby>国际网络工作组<rt>Network Working Group</rt></ruby> 身上。该组织的首次会议于 1968 年在加州大学圣芭芭拉分校举办 [15][20]。当时只有 12 人参会,大部分都是来自上述四所大学的代表 [16][21]。来自加州大学洛杉矶分校的研究生史蒂夫·克罗克Steve Crocker参加了这场会议。他告诉我工作组首次会议的参会者清一色都是年轻人最年长的可能要数会议主席埃尔默·夏皮罗Elmer Shapiro他当年 38 岁左右。高级研究计划署没有安排负责研究计算机连接之后如何进行通信的人员,但是很明显它需要提供一定的协助。随着工作组会议的陆续开展,克罗克一直期望着更有经验与威望的“法定成年人”从东海岸飞过来接手这项工作,但是期望终究还是落空了。在高级研究计划署的默许之下,工作组举办了多场会议,其中包括很多长途旅行,差旅费由计划署报销,这些就是计划署给与工作组的全部协助了 [17][22]。
当时,国际网络工作组面临着巨大的挑战。组内成员都没有使用通用方式连接计算机系统的经验,而且这本来就与上世纪六十年代末计算机领域盛行的全部观点相悖:
> 那个时候的主机就像是全世界唯一的一台计算机。即便是最简短的交流会话,两台主机也无法轻易做到。并不是说机器没办法相互连接,只是连接之后,两台计算机又能做些什么呢?当时,计算机和与其相连的其他设备之间的通讯,就像帝王与群臣之间的对话一般。连接到主机的设备各自执行着自己的任务,每台外围设备都保持着常备不懈的状态,等待着上司的命令。当时的计算机就是严格按照这类交流需求设计出来的;它们向读卡器、终端与磁带机等下属设备发号施令,发起所有会话。但是,如果一台计算机拍了拍另一台计算机的肩膀,说道,“你好,我也是一台计算机”,那么另一台计算机可就傻眼了,什么也回答不上来 [18][23]。
于是,工作组的最初进展比较缓慢 [19][24]。直到 1970 年 6 月,也就是首次会议将近两年之后,工作组才为网络协议选定了一套官方规范 [20][25]。
到了 1972 年,在国际计算机通信会议上展示 ARPANET 的时候,所有的协议已经准备到位了。会议期间,这些协议运用到了国际象棋等情景之中。用户运行 `@e r` 命令(`@echo remote` 命令的缩写形式),可以指示 TIP 使用新远程登录虚拟终端协议提供的服务,通知远程主机回显用户输入的内容。接着,用户运行 `@L 134` 命令(`@login 134` 命令的缩写形式),让 TIP 在 134 号主机上调用<ruby>初始连接协议<rt>Initial Connection Protocol</rt></ruby>,该协议指示远程主机分配出连接所需的全部必要资源,并将用户带入远程登录会话中。上述文件传输的情景也许用到了 <ruby>文件传输协议<rt>File Transfer Protocol</rt></ruby>,而该协议恰好是在大会举办前夕才刚刚完成的 [21][26]。所有这些协议都是“三层”协议,其下的第二层是主机到主机层协议,定义了主机之间可以相互发送和接收的信息的基本格式;第一层是主机到接口通信处理机协议,定义了主机如何与连接的远程设备进行通信。令人感到不可思议的是,这些协议都能正常运行。
在我看来,网络工作组之所以能够在大会举办之前做好万全的准备,顺利且出色地完成任务,在于他们采用了开放且非正式的标准化方法,其中一个典型的例子就是著名的 Request for CommentsRFC系列文档。RFC 文档最初通过传统邮件供工作组成员进行传阅让成员们在没有举办会议的时候也能保持联系同时收集成员反馈汇集各方智慧。RFC 框架是克罗克提出的,他写出了第一篇 RFC 文档,并在早期负责管理 RFC 的邮寄列表。他这样做是为了强调工作组开放协作的活动本质。有了这套框架以及触手可及的文档ARPANET 的协议设计过程成了一个大熔炉每个人都可以贡献出自己的力量步步推进精益求精让最棒的想法脱颖而出使得每一位贡献者都值得尊敬。总而言之RFC 获得了巨大成功,并且直至今天,长达半个世纪之后,它依旧是网络标准的“说明书”。
因此,说起 ARPANET 的影响力,我认为不得不强调的一点正是工作组留下的这一成果。今天,互联网可以把世界各地的人们连接起来,这也是它最神奇的属性之一。不过如果说这项技术到了上世纪才开始使用,那可就有些滑稽可笑了。要知道,在 ARPANET 出现之前,人们就已经通过电报打破了现实距离的限制。而 ARPANET 打破的应该是各个主机站点因使用不同的操作系统、字符编码、程序语言以及组织策略而在逻辑层面产生的差异限制。当然,不得不提的是,将第一个包交换网络投入使用在技术方面绝对是一大壮举。不过,在建立 ARPANET 网络过程中遇到的两大难题中,更为复杂的一项则是制定统一的标准并用以连接原本无法相互协作的计算机。而这一难题的解决方案,也成了 ARPANET 整个建立与发展历史中最为神奇的一个章节。
1981 年,高级研究计划署发表了一份“完工报告”,回顾了 ARPANET 项目的第一个十年。在《付出收获了回报的技术方面以及付出未能实现最初设想的技术方面》这一冗长的小标题下,作者们写道:
> 或许,在 ARPANET 的开发过程中,最艰难的一项任务就是,尽管主机制造商各不相同,或者同一制造商下操作系统各不相同,我们仍需在众多的独立主机系统之间实现通讯交流。好在这项任务后来取得了成功 [22][27]。
你可以从美国联邦政府获得相关信息。
_如果你喜欢这篇文章欢迎关注推特 [@TwoBitHistory][28],也可通过 [RSS feed][29] 订阅获取最新文章。_
1. “Hilton Hotel Opens in Capital Today.” _The New York Times_, 20 March 1965, <https://www.nytimes.com/1965/03/20/archives/hilton-hotel-opens-in-capital-today.html?searchResultPosition=1>. Accessed 7 Feb. 2021. [↩︎][31]
2. James Pelkey. _Entrepreneurial Capitalism and Innovation: A History of Computer Communications 1968-1988,_ Chapter 4, Section 12, 2007, <http://www.historyofcomputercommunications.info/Book/4/4.12-ICCC%20Demonstration71-72.html>. Accessed 7 Feb. 2021. [↩︎][32]
3. Katie Hafner and Matthew Lyon. _Where Wizards Stay Up Late: The Origins of the Internet_. New York, Simon &amp; Schuster, 1996, p. 178. [↩︎][33]
4. “International Conference on Computer Communication.” _Computer_, vol. 5, no. 4, 1972, p. c2, <https://www.computer.org/csdl/magazine/co/1972/04/01641562/13rRUxNmPIA>. Accessed 7 Feb. 2021. [↩︎][34]
5. “Program for the International Conference on Computer Communication.” _The Papers of Clay T. Whitehead_, Box 42, <https://d3so5znv45ku4h.cloudfront.net/Box+042/013_Speech-International+Conference+on+Computer+Communications,+Washington,+DC,+October+24,+1972.pdf>. Accessed 7 Feb. 2021. [↩︎][35]
6. 我其实并不清楚 ARPANET 是在哪个房间展示的。很多地方都提到了“宴会厅”,但是华盛顿希尔顿酒店更习惯于叫它“乔治敦”,而不是把它当成一间会议室。因此,或许这场展示是在国际宴会厅举办的。但是 RFC 372 号文件又提到了预定“乔治敦”作为展示场地一事。华盛顿希尔顿酒店的楼层平面图可以点击 [此处][36] 查看。 [↩︎][37]
7. Hafner, p. 179. [↩︎][38]
8. ibid., p. 178. [↩︎][39]
9. Bob Metcalfe. “Scenarios for Using the ARPANET.” _Collections-Computer History Museum_, <https://www.computerhistory.org/collections/catalog/102784024>. Accessed 7 Feb. 2021. [↩︎][40]
10. Hafner, p. 176. [↩︎][41]
11. Robert H. Thomas. “Planning for ACCAT Remote Site Operations.” BBN Report No. 3677, October 1977, <https://apps.dtic.mil/sti/pdfs/ADA046366.pdf>. Accessed 7 Feb. 2021. [↩︎][42]
12. Hafner, p. 12. [↩︎][43]
13. Joy Lisi Rankin. _A Peoples History of Computing in the United States_. Cambridge, MA, Harvard University Press, 2018, p. 84. [↩︎][44]
14. Rankin, p. 93. [↩︎][45]
15. Steve Crocker. Personal interview. 17 Dec. 2020. [↩︎][46]
16. 克罗克将会议记录文件发给了我,文件列出了所有的参会者。[↩︎][47]
17. Steve Crocker. Personal interview. [↩︎][48]
18. Hafner, p. 146. [↩︎][49]
19. “Completion Report / A History of the ARPANET: The First Decade.” BBN Report No. 4799, April 1981, <https://walden-family.com/bbn/arpanet-completion-report.pdf>, p. II-13. [↩︎][50]
20. 这里我指的是 RFC 54 号文件中的“官方协议”。[↩︎][51]
21. Hafner, p. 175. [↩︎][52]
22. “Completion Report / A History of the ARPANET: The First Decade,” p. II-29. [↩︎][53]
--------------------------------------------------------------------------------
via: https://twobithistory.org/2021/02/07/arpanet.html
作者:[Two-Bit History][a]
选题:[lujun9972][b]
译者:[aREversez](https://github.com/aREversez)
校对:[校对者ID](https://github.com/校对者ID)
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
[a]: https://twobithistory.org
[b]: https://github.com/lujun9972
[1]: https://en.wikipedia.org/wiki/ARPANET
[2]: tmp.pnPpRrCI3S#fn:1
[3]: tmp.pnPpRrCI3S#fn:2
[4]: tmp.pnPpRrCI3S#fn:3
[5]: tmp.pnPpRrCI3S#fn:4
[6]: tmp.pnPpRrCI3S#fn:5
[7]: tmp.pnPpRrCI3S#fn:6
[8]: tmp.pnPpRrCI3S#fn:7
[9]: tmp.pnPpRrCI3S#fn:8
[10]: https://archive.computerhistory.org/resources/access/text/2019/07/102784024-05-001-acc.pdf
[11]: tmp.pnPpRrCI3S#fn:9
[12]: tmp.pnPpRrCI3S#fn:10
[13]: tmp.pnPpRrCI3S#fn:11
[14]: tmp.pnPpRrCI3S#fn:12
[15]: tmp.pnPpRrCI3S#fn:13
[16]: tmp.pnPpRrCI3S#fn:14
[17]: https://twobithistory.org/2018/05/27/semantic-web.html
[18]: https://twobithistory.org/2018/12/18/rss.html
[19]: https://twobithistory.org/2020/01/05/foaf.html
[20]: tmp.pnPpRrCI3S#fn:15
[21]: tmp.pnPpRrCI3S#fn:16
[22]: tmp.pnPpRrCI3S#fn:17
[23]: tmp.pnPpRrCI3S#fn:18
[24]: tmp.pnPpRrCI3S#fn:19
[25]: tmp.pnPpRrCI3S#fn:20
[26]: tmp.pnPpRrCI3S#fn:21
[27]: tmp.pnPpRrCI3S#fn:22
[28]: https://twitter.com/TwoBitHistory
[29]: https://twobithistory.org/feed.xml
[30]: https://twitter.com/TwoBitHistory/status/1277259930555363329?ref_src=twsrc%5Etfw
[31]: tmp.pnPpRrCI3S#fnref:1
[32]: tmp.pnPpRrCI3S#fnref:2
[33]: tmp.pnPpRrCI3S#fnref:3
[34]: tmp.pnPpRrCI3S#fnref:4
[35]: tmp.pnPpRrCI3S#fnref:5
[36]: https://www3.hilton.com/resources/media/hi/DCAWHHH/en_US/pdf/DCAWH.Floorplans.Apr25.pdf
[37]: tmp.pnPpRrCI3S#fnref:6
[38]: tmp.pnPpRrCI3S#fnref:7
[39]: tmp.pnPpRrCI3S#fnref:8
[40]: tmp.pnPpRrCI3S#fnref:9
[41]: tmp.pnPpRrCI3S#fnref:10
[42]: tmp.pnPpRrCI3S#fnref:11
[43]: tmp.pnPpRrCI3S#fnref:12
[44]: tmp.pnPpRrCI3S#fnref:13
[45]: tmp.pnPpRrCI3S#fnref:14
[46]: tmp.pnPpRrCI3S#fnref:15
[47]: tmp.pnPpRrCI3S#fnref:16
[48]: tmp.pnPpRrCI3S#fnref:17
[49]: tmp.pnPpRrCI3S#fnref:18
[50]: tmp.pnPpRrCI3S#fnref:19
[51]: tmp.pnPpRrCI3S#fnref:20
[52]: tmp.pnPpRrCI3S#fnref:21
[53]: tmp.pnPpRrCI3S#fnref:22

View File

@ -0,0 +1,186 @@
[#]: subject: "Reasons for servers to support IPv6"
[#]: via: "https://jvns.ca/blog/2022/01/29/reasons-for-servers-to-support-ipv6/"
[#]: author: "Julia Evans https://jvns.ca/"
[#]: collector: "lujun9972"
[#]: translator: "chai001125"
[#]: reviewer: " "
[#]: publisher: " "
[#]: url: " "
服务器支持 IPv6 的原因
======
我一直在努力学习关于 IPv6 的相关知识。一方面IPv6 的基础概念是很简单的(没有足够的 IPv4 地址可以满足互联网上的所有设备,所以人们发明了 IPv6每个人都能有足够的 IPv6 地址!)
但是当我试图进一步理解它时,我遇到了很多问题。其中一个问题是:为什么 `twitter.com` 不支持 IPv6。假设网站不支持 IPv6 并不会造成很多困难,那么为什么网站需要支持 IPv6 呢?
我在 Twitter 上询问了很多人 [为什么他们的服务器支持 IPv6][1],我得到了很多很好的答案,我将在这里总结一下。事先说明一下,因为我对 IPv6 基本上毫无经验,所以下面所总结的理由中可能会有写得不准确的地方,请大家多多包涵。
首先,我想解释一下为什么 `twitter.com` 可以不支持 IPv6因为这是最先让我困惑的地方。
### 怎么知道 `twitter.com` 不支持 IPv6 呢?
你可以使用 dig 命令以 AAAA 的选项查询某一个域名的 IPv6 地址记录,如果没有记录,则表明该域名不支持 IPv6。除了 `twitter.com`,还有一些大型网站,如 `github.com``stripe.com` 也不支持 IPv6。
```
$ dig AAAA twitter.com
(empty response)
$ dig AAAA github.com
(empty response)
$ dig AAAA stripe.com
(empty response)
```
### 为什么 `twitter.com` 仍然适用于 IPv6 用户?
我发现这真的很令人困惑。我一直听说因为 IPv4 地址已经用完了,从而很多互联网用户被迫要使用 IPv6 地址。但如果这是真的twitter.com 怎么能继续为那些没有 IPv6 支持的人提供服务呢?以下内容是我昨天从 Twitter 线程中学习到的。
互联网服务提供商(ISP)有两种:
1. 能为所有用户拥有足够 IPv4 地址的 ISP
2. 不能为所有用户拥有足够 IPv4 地址的 ISP
我的互联网服务提供商属于第 1 类,因此我的计算机有自己的 IPv4 地址,实际上我的互联网服务提供商甚至根本不支持 IPv6。
但是很多互联网服务提供商(尤其是北美以外的)都属于第 2 类:他们没有足够的 IPv4 地址供所有用户使用。 这些互联网服务提供商通过以下方式处理问题:
* 为所有用户提供唯一的 IPv6 地址,以便他们可以直接访问 IPv6 网站
* 让用户 _共享_ IPv4 地址,这可以使用 CGNAT“[运营商级 NAT(carrier-grade NAT)][2]”或者“464XLAT”或其他方式。
所有互联网服务提供商都需要 _一些_ IPv4 地址,否则他们的用户将无法访问 twitter.com 等只能使用 IPv4 的网站。
### 为什么网站要支持 IPv6
现在,我们已经解释了为什么可以 _不支持_ IPv6。那为什么要支持 IPv6 呢?有下面这些原因。
### 原因一CGNAT 是一个性能瓶颈
对我而言,支持 IPv6 最有说服力的论点是CGNATcarrier-grade NAT是一个瓶颈它会导致性能问题并且随着对 IPv4 地址的访问变得越来越受限,它的性能会变得更糟。
有人也提到:因为 CGNAT 是一个性能瓶颈因此它成为了一个有吸引力的拒绝服务攻击DDoS的目标因为你可以通过攻击一台服务器影响其他用户对该服务器的网站的可用性。
支持 IPv6 的服务器减少了对 CGNAT 的需求IPv6 用户可以直接连接!),这使得互联网对每个人的响应速度都更快了。
我认为这个论点很有趣,因为它需要各方的努力——仅仅你的网站支持 IPv6并不会让你的网站更好地运行而更重要的是如果 _几乎每个网站_ 都支持 IPv6那么它将使每个人的互联网体验更好尤其对于那些无法轻松访问 IPv4 地址的国家/地区。
实际上,我不知道这在实践中会有多大的关系。
不过,使用 IPv6 还有很多更自私的论点,所以让我们继续探讨吧。
### 原因二:只能使用 IPv6 的服务器也能够访问你的网站
我之前说过,大多数 IPv6 用户仍然可以通过 NAT 方式访问 IPv4 的网站。但是有些 IPv6 用户是不能访问 IPv4 网站的,因为他们发现他们运行的服务器只有 IPv6 地址,并且不能使用 NAT。因此这些服务器完全无法访问只能使用 IPv4 的网站。
我想这些服务器并没有连接很多主机,也许它们只需要连接到一些支持 IPv6 的主机。
但对我来说,即使没有 IPv4 地址,一台主机也应该能够访问我的站点。
### 原因三:更好的性能
对于同时使用 IPv4 和 IPv6即具有专用 IPv6 地址和共享 IPv4 地址的用户IPv6 通常更快,因为它不需要经过额外的 NAT 地址转换。
因此,有时支持 IPv6 的网站可以为用户提供更快的响应。
在实际应用中客户端使用一种称为“Happy Eyeballs”的算法该算法能够从 IPv4 和 IPv6 中为用户选择一个最快的链接。
以下是网站支持 IPv6 的一些其他性能优势:
* 使用 IPv6 可以提高搜索引擎优化Search Engine Optimization因为 IPv6 具有更好的性能。
* 使用 IPv6 可能会使你的数据包通过更好(更快)的网络硬件,因为相较于 IPv4IPv6 是一个更新的协议。
### 原因四:能够恢复 IPv4 互联网中断
有人说他碰到过由于意外的 BGP 中毒,而导致仅影响 IPv4 流量的互联网中断问题。
因此,支持 IPv6 的网站意味着在中断期间,网站仍然可以保持部分在线。
### 原因五避免家庭服务器的NAT问题
将 IPv6 与家庭服务器一起使用,会变得简单很多,因为数据包不必通过路由器进行端口转发,因此只需为每台服务器分配一个唯一的 IPv6 地址,然后直接访问服务器的 IPv6 地址即可。
当然,要实现这一点,客户端需要支持 IPv6但如今越来越多的客户端也能支持 IPv6 了。
### 原因六:为了拥有自己的 IP 地址
你也可以自己购买 IPv6 地址,并将它们用于家庭网络的服务器上。如果你更换了互联网服务提供商,可以继续使用相同的 IP 地址。
我不太明白这是如何工作的,是如何让 Internet 上的计算机将这些 IP 地址路由转发给你的我猜测你需要运行自己的自治系统AS或其他东西。
### 原因七:为了学习 IPv6
有人说他们在安全领域中工作,为保证信息安全,了解互联网协议的工作原理非常重要(攻击者正在使用互联网协议进行攻击!)。因此,运行 IPv6 服务器有助于他们了解其工作原理。
### 原因八:为了推进 IPv6
有人说因为 IPv6 是当前的标准,因此他们希望通过支持 IPv6 来为 IPv6 的成功做出贡献。
很多人还说他们的服务器支持 IPv6是因为他们认为只能使用 IPv4 的网站已经太“落后”了。
### 原因九IPv6 很简单
我还得到了一堆“IPv6 很容易,为什么不做呢”的答案。在所有情况下添加 IPv6 支持并不容易,但在某些情况下添加 IPv6 支持会是很容易的,有以下的几个原因:
* 你可以从托管公司自动地获得 IPv6 地址,因此你只需要做的就是添加指向该地址的 `AAAA` 记录
* 你的网站是基于支持 IPv6 的内容分发网络CDN因此你无需做任何额外的事情
### 原因十:为了实施更安全的网络实验
因为 IPv6 的地址空间很大,所以如果你想在网络中尝试某些东西的时候,你可以使用 IPv6 子网进行实验,基本上你之后不会再用到这个子网了。
### 原因十一为了运行自己的自治系统AS
也有人说他们为了运行自己的自治系统(我在这篇 [BGP 帖子][3] 中谈到了什么是 AS因此在服务器中提供 IPv6。IPv4 地址太贵了,所以他们为运行自治系统而购买了 IPv6 地址。
### 原因十二IPv6 更加安全
如果你的服务器 _只_ 有公共的 IPv6 地址,那么攻击者扫描整个网络,也不能轻易地找出你的服务器地址,这是因为 IPv6 地址空间太大了以至于不能扫描出来!
这显然不能是你仅有的安全策略,但是这是安全上的一个大大的福利。每次我运行 IPv4 服务器时,我都会惊讶于 IPv4 地址一直能够被扫描出来的脆弱性,就像是老版本的 WordPress 博客系统那样。
### 一个很傻的理由:你可以在你的 IPv6 地址中放个小彩蛋
IPv6 地址中有很多额外的位你可以用它们做一些不重要的事情。例如Facebook 的 IPv6 地址之一是“2a03:2880:f10e:83:face:b00c:0:25de”其中包含 `face:b00c`)。
### 理由还有很多
这就是到目前为止我所了解的“为什么支持 IPv6”的理由。
在我理解这些原因后,相较于以前,我在我的(非常小的)服务器上支持 IPv6 更有动力了。但那是因为我觉得支持 IPv6对我来说只需要很少的努力。现在我使用的是支持 IPv6 的 CDN所以我基本上不用做什么额外的事情
我仍然对 IPv6 知之甚少,但是在我的印象中,支持 IPv6并不是不需要花费努力的实际上可能需要大量工作。例如我不知道 Twitter 在其边缘服务器上添加 IPv6 支持需要做多少繁杂的工作。
### 其它关于 IPv6 的问题
这里还有一些关于 IPv6 的问题,也许我之后再会探讨:
* 支持 IPv6 的缺点是什么?什么会出错呢?
* 对于拥有了足够 IPv4 地址的 ISP 来说,有什么让他们提供 IPv6 的激励措施?(另一种问法是:我的 ISP 是否有可能在未来几年内转为支持 IPv6或者他们可能不会支持 IPv6
* [Digital Ocean][4] 译注一家建立于美国的云基础架构提供商面向软件开发人员提供虚拟专用服务器VPS只提供 IPv4 的浮动地址,不提供 IPv6 的浮动地址。为什么不提供呢?有更多 IPv6 地址,那提供 IPv6 的浮动地址不是变得更 _便捷_ 吗?
* 当我尝试 ping IPv6 地址时(例如 example.com 的 IP 地址`2606:2800:220:1:248:1893:25c8:1946`),我得到一个报错信息 `ping: connect: Network is unreachable`。这是为什么呢?(回答:因为我的 ISP 不支持 IPv6所以我的电脑没有公共 IPv6 地址)
这篇 [来自 Tailscale 的 IPv4 与 IPv6 文章][5] 非常有意思,并回答了上述的一些问题。
--------------------------------------------------------------------------------
via: https://jvns.ca/blog/2022/01/29/reasons-for-servers-to-support-ipv6/
作者:[Julia Evans][a]
选题:[lujun9972][b]
译者:[chai001125](https://github.com/chai001125)
校对:[校对者ID](https://github.com/校对者ID)
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
[a]: https://jvns.ca/
[b]: https://github.com/lujun9972
[1]: https://twitter.com/b0rk/status/1487156306884636672
[2]: https://en.wikipedia.org/wiki/Carrier-grade_NAT
[3]: https://jvns.ca/blog/2021/10/05/tools-to-look-at-bgp-routes/
[4]: https://docs.digitalocean.com/products/networking/floating-ips/
[5]: https://tailscale.com/kb/1134/ipv6-faq/