ARPANET 协议的工作原理及最初的分组交换网络协议的创建

注:机翻,未校。


How the ARPANET Protocols Worked

ARPANET 协议的工作原理

08 Mar 2021

The ARPANET changed computing forever by proving that computers of wildly different manufacture could be connected using standardized protocols. In my post on the historical significance of the ARPANET, I mentioned a few of those protocols, but didn’t describe them in any detail. So I wanted to take a closer look at them. I also wanted to see how much of the design of those early protocols survives in the protocols we use today.
ARPANET 永久改变了计算机领域,因为它证明了不同制造商的计算机可以使用标准化协议相互连接。在我关于 ARPANET 历史重要性的帖子中,我提到了一些这些协议,但没有详细描述。因此,我想更仔细地看看它们。我还想了解这些早期协议的设计有多少在我们今天使用的协议中得以保留。

The ARPANET protocols were, like our modern internet protocols, organized into layers.1 The protocols in the higher layers ran on top of the protocols in the lower layers. Today the TCP/IP suite has five layers (the Physical, Link, Network, Transport, and Application layers), but the ARPANET had only three layers—or possibly four, depending on how you count them.
ARPANET 的协议与我们现代互联网协议一样,组织成层次结构。较高层的协议运行在较低层的协议之上。今天的 TCP/IP 套件有五个层级(物理层、链路层、网络层、传输层和应用层),而 ARPANET 只有三层 —— 或者可能是四层,这取决于你如何计算它们。

I’m going to explain how each of these layers worked, but first an aside about who built what in the ARPANET, which you need to know to understand why the layers were divided up as they were.
我将解释这些层中的每一个是如何工作的,但首先要说明谁在 ARPANET 中构建了什么,你需要知道这一点才能理解为什么这些层被如此划分是必要的。

Some Quick Historical Context

一些快速的历史背景

The ARPANET was funded by the US federal government, specifically the Advanced Research Projects Agency within the Department of Defense (hence the name “ARPANET”). The US government did not directly build the network; instead, it contracted the work out to a Boston-based consulting firm called Bolt, Beranek, and Newman, more commonly known as BBN.
ARPANET 由美国联邦政府资助,特别是国防部下属的高级研究计划局(因此得名 “ ARPANET ”)。美国政府没有直接建设该网络;取而代之的是,它将这项工作承包给了一家位于波士顿的咨询公司,名为 Bolt,Beranek 和 Newman,通常被称为 BBN。

BBN, in turn, handled many of the responsibilities for implementing the network but not all of them. What BBN did was design and maintain a machine known as the Interface Message Processor, or IMP. The IMP was a customized Honeywell minicomputer, one of which was delivered to each site across the country that was to be connected to the ARPANET. The IMP served as a gateway to the ARPANET for up to four hosts at each host site. It was basically a router. BBN controlled the software running on the IMPs that forwarded packets from IMP to IMP, but the firm had no direct control over the machines that would connect to the IMPs and become the actual hosts on the ARPANET.
反过来,BBN 承担了实施网络的许多责任,但不是全部。BBN 所做的是设计和维护一台称为接口消息处理器(IMP)的机器。IMP 是一台定制的霍尼韦尔小型计算机,其中一台被运送到全国各地要连接到 ARPANET 的每个站点。IMP 充当 ARPANET 的网关,每个主机站点最多可容纳 4 台主机。它基本上是一个路由器。BBN 控制着在 IMP 上运行的软件,该软件将数据包从 IMP 转发到 IMP,但该公司无法直接控制连接到 IMP 并成为 ARPANET 实际主机的机器。

The host machines were controlled by the computer scientists that were the end users of the network. These computer scientists, at host sites across the country, were responsible for writing the software that would allow the hosts to talk to each other. The IMPs gave hosts the ability to send messages to each other, but that was not much use unless the hosts agreed on a format to use for the messages. To solve that problem, a motley crew consisting in large part of graduate students from the various host sites formed themselves into the Network Working Group, which sought to specify protocols for the host computers to use.
主机由计算机科学家控制,这些计算机科学家是网络的最终用户。这些计算机科学家在全国各地的主机站点负责编写软件,使主机能够相互交谈。IMP 使主机能够相互发送消息,但除非主机就消息使用的格式达成一致,否则这没有多大用处。为了解决这个问题,一个由来自各个主机站点的大部分研究生组成的杂乱无章的团队组成了网络工作组,该工作组试图为主机计算机指定要使用的协议。

So if you imagine a single successful network interaction over the ARPANET, (sending an email, say), some bits of engineering that made the interaction successful were the responsibility of one set of people (BBN), while other bits of engineering were the responsibility of another set of people (the Network Working Group and the engineers at each host site). That organizational and logistical happenstance probably played a big role in motivating the layered approach used for protocols on the ARPANET, which in turn influenced the layered approach used for TCP/IP.
因此,如果你想象通过 ARPANET 进行一次成功的网络交互(例如发送电子邮件),那么使交互成功的一些工程部分是一组人(BBN)的责任,而其他工程部分是另一组人(网络工作组和每个主机站点的工程师)的责任。这种组织和后勤上的偶然性可能在推动 ARPANET 协议采用分层方法方面发挥了重要作用,而 ARPANET 协议又影响了用于 TCP/IP 的分层方法。

Okay, Back to the Protocols 好的,回到协议

ARPANET Network Stack

The ARPANET protocol hierarchy.

ARPANET 协议层次结构

The protocol layers were organized into a hierarchy. At the very bottom was “level 0.”2 This is the layer that in some sense doesn’t count, because on the ARPANET this layer was controlled entirely by BBN, so there was no need for a standard protocol. Level 0 governed how data passed between the IMPs. Inside of BBN, there were rules governing how IMPs did this; outside of BBN, the IMP sub-network was a black box that just passed on any data that you gave it. So level 0 was a layer without a real protocol, in the sense of a publicly known and agreed-upon set of rules, and its existence could be ignored by software running on the ARPANET hosts. Loosely speaking, it handled everything that falls under the Physical, Link, and Internet layers of the TCP/IP suite today, and even quite a lot of the Transport layer, which is something I’ll come back to at the end of this post.
协议层被组织成一个层次结构。最底部是 “0 级”。2 从某种意义上说,这是不算数的层,因为在 ARPANET 上,这一层完全由 BBN 控制,因此不需要标准协议。级别 0 控制数据在 IMP 之间传递的方式。在 BBN 内部,有管理 IMP 如何做到这一点的规则;在 BBN 之外,IMP 子网络是一个黑匣子,它只是传递您提供给它的任何数据。因此,级别 0 是一个没有真正协议的层,从公开知道和商定的规则集的意义上说,它的存在可以被运行在 ARPANET 主机上的软件忽略。粗略地说,它处理了当今 TCP/IP 套件的物理层、链路层和 Internet 层下的所有内容,甚至还处理了相当多的传输层,这是我将在本文末尾回到的内容。

The “level 1” layer established the interface between the ARPANET hosts and the IMPs they were connected to. It was an API, if you like, for the black box level 0 that BBN had built. It was also referred to at the time as the IMP-Host Protocol. This protocol had to be written and published because, when the ARPANET was first being set up, each host site had to write its own software to interface with the IMP. They wouldn’t have known how to do that unless BBN gave them some guidance.
“1 级” 层在 ARPANET 主机和它们所连接的 IMP 之间建立了接口。如果你愿意的话,这是一个 API,用于 BBN 构建的黑匣子级别 0。它当时也被称为 IMP-Host 协议。该协议必须编写和发布,因为当首次建立 ARPANET 时,每个主机站点都必须编写自己的软件来与 IMP 接口。除非 BBN 给他们一些指导,否则他们不会知道如何做到这一点。

The IMP-Host Protocol was specified by BBN in a lengthy document called BBN Report 1822. The document was revised many times as the ARPANET evolved; what I’m going to describe here is roughly the way the IMP-Host protocol worked as it was initially designed. According to BBN’s rules, hosts could passmessagesto their IMPs no longer than 8095 bits, and each message had aleaderthat included the destination host number and something called alink number.3 The IMP would examine the designation host number and then dutifully forward the message into the network. When messages were received from a remote host, the receiving IMP would replace the destination host number with the source host number before passing it on to the local host. Messages were not actually what passed between the IMPs themselves—the IMPs broke the messages down into smallerpacketsfor transfer over the network—but that detail was hidden from the hosts.
IMP-Host 协议由 BBN 在一份名为 BBN Report 1822 的冗长文档中指定。随着 ARPANET 的发展,该文件被多次修订;我在这里要描述的大致是 IMP-Host 协议最初设计时的工作方式。根据 BBN 的规则,主机可以向其 IMP 传递消息的时间不超过 8095 位,并且每条消息都有一个 leader ,其中包括目标主机号和称为链接号的东西。3 IMP 将检查指定的主机号,然后尽职尽责地将消息转发到网络中。当从远程主机接收到消息时,接收 IMP 会先将目标主机号替换为源主机号,然后再将其传递到本地主机。消息实际上并不是在 IMP 本身之间传递的内容 - IMP 将消息分解为较小的数据包,以便通过网络传输 - 但该细节对主机是隐藏的。

1969 Host-IMP Leader

The Host-IMP message leader format, as of 1969. Diagram from BBN Report 1763.

Host-IMP 消息 leader 格式,截至 1969 年。图表来自 BBN 报告 1763。

The link number, which could be any number from 0 to 255, served two purposes. It was used by higher level protocols to establish more than one channel of communication between any two hosts on the network, since it was conceivable that there might be more than one local user talking to the same destination host at any given time. (In other words, the link numbers allowed communication to be multiplexed between hosts.) But it was also used at the level 1 layer to control the amount of traffic that could be sent between hosts, which was necessary to prevent faster computers from overwhelming slower ones. As initially designed, the IMP-Host Protocol limited each host to sending just one message at a time over each link. Once a given host had sent a message along a link to a remote host, it would have to wait to receive a special kind of message called an RFNM (Request for Next Message) from the remote IMP before sending the next message along the same link. Later revisions to this system, made to improve performance, allowed a host to have up to eight messages in transit to another host at a given time.4
链接编号可以是 0 到 255 之间的任何数字,有两个用途。它被更高级别的协议用于在网络上的任意两台主机之间建立多个通信通道,因为可以想象,在任何给定时间,可能有多个本地用户与同一目标主机通信。(换言之,链路号允许在主机之间进行多路复用通信。但它也被用于第 1 层,以控制主机之间可以发送的流量,这对于防止较快的计算机压倒较慢的计算机是必要的。按照最初的设计,IMP 主机协议将每个主机限制为一次只能通过每个链路发送一条消息。一旦给定主机通过链接向远程主机发送了一条消息,它就必须等待从远程 IMP 接收一种称为 RFNM(下一条消息请求)的特殊类型的消息,然后才能沿同一链接发送下一条消息。为了提高性能,后来对此系统进行了修订,允许一个主机在给定时间最多有八条消息传输到另一个主机 4。

The “level 2” layer is where things really start to get interesting, because it was this layer and the one above it that BBN and the Department of Defense left entirely to the academics and the Network Working Group to invent for themselves. The level 2 layer comprised the Host-Host Protocol, which was first sketched in RFC 9 and first officially specified by RFC 54. A more readable explanation of the Host-Host Protocol is given in the ARPANET Protocol Handbook.
“第 2 层” 是事情真正开始变得有趣的地方,因为正是这一层及其上面的一层,BBN 和国防部完全留给了学术界和网络工作组自己发明。第 2 层由主机 - 主机协议组成,该协议首先在 RFC 9 中草拟,并首次由 RFC 54 正式指定。ARPANET 协议手册中对主机 - 主机协议进行了更易读的解释。

The Host-Host Protocol governed how hosts created and managedconnectionswith each other. A connection was a one-way data pipeline between awrite socketon one host and aread socketon another host. The “socket” concept was introduced on top of the limited level-1 link facility (remember that the link number can only be one of 256 values) to give programs a way of addressing a particular process running on a remote host. Read sockets were even-numbered while write sockets were odd-numbered; whether a socket was a read socket or a write socket was referred to as the socket’s gender. There were no “port numbers” like in TCP. Connections could be opened, manipulated, and closed by specially formatted Host-Host control messages sent between hosts using link 0, which was reserved for that purpose. Once control messages were exchanged over link 0 to establish a connection, further data messages could then be sent using another link number picked by the receiver.
主机 - 主机协议控制主机如何创建和管理彼此之间的连接。连接是一台主机上的写入套接字和另一台主机上的读取套接字之间的单向数据管道。“套接字” 概念是在有限的 1 级链接工具之上引入的(请记住,链接编号只能是 256 个值之一),为程序提供了一种寻址远程主机上运行的特定进程的方法。读取套接字是偶数,而写入套接字是奇数;套接字是读取套接字还是写入套接字被称为套接字的性别。没有像 TCP 那样的 “端口号”。可以通过使用链接 0 在主机之间发送的特殊格式的主机 - 主机控制消息来打开、操作和关闭连接,该链接 0 是为此目的保留的。一旦通过链路 0 交换控制消息以建立连接,就可以使用接收方选择的另一个链路号发送进一步的数据消息。

Host-Host control messages were identified by a three-letter mnemonic. A connection was established when two hosts exchanged a STR (sender-to-receiver) message and a matching RTS (receiver-to-sender) message—these control messages were both known as Request for Connection messages. Connections could be c

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值