当前位置:首页 > 知识学习 > 详情

arpanet(arpanet属于什么阶(jie)段的网络里程碑)

2024-11-26 12:29:42 阅读(41) 美好明星网
arpanet(arpanet属于什么阶段的网络(luo)里程碑)-美好明星网

ARPANET 坟场情降效果 通过证明可以使用标准化协议(yi)连接完全不同的制造商的计算机,永远(yuan)改变了计算。在我的 关于 ARPANET 的历史意义的文章中,我(wo)提到了其中的一(yi)些协议,但没有(you)详细描述它们。所以我想仔(zai)细看看它们。也想(xiang)看看那些早期协议的设计有多少(shao)保留到了我们今天使用的协(xie)议中。

ARPANET 协议像我们现代的互联网协议,是通过分层形式来组织的。[1]较高层协议运行在较低层协议之(zhi)上。如今的 TCP/IP 套件有 5 层(物理层、链路层、网络层(ceng)、传输层以及应(ying)用层),但是这个 ARPANET 仅有 3 层,也可能是 4 层,这取决于你怎样计算它们。

我将会(hui)解释每一层是如何工作的,但首先(xian),你需要知道是谁在 ARPANET 中(zhong)构建了些什么,你需要知道这(zhe)一点才能理解为什么这些层是这样划分(fen)的。

一些简短的历史背景

ARPANET 由美国联邦政府资(zi)助,确切的说是位(wei)于美国国防部的高级研究计(ji)划局Advanced Research Projects Agency(因此被命名为 “ARPANET” )情(qing)降和合的作用。美国政府并(bing)没有直接建设这个网络;而是,把这项(xiang)工作外包给了位于波士顿的一家名(ming)为 “Bolt, Beranek, and Newman” 的咨询公司,通(tong)常更多时候被称为 BBN。

而 BBN 则承担了实(shi)现这个网络的大部分(fen)任务,但不是全部。BBN 所(suo)做的是设计和维护一(yi)种称为接口消息(xi)处理机Interface Message Processor(简称为 IMP) 的机器。这个(ge) IMP 是一种定制的霍尼韦(wei)尔Honeywell小型机minicomputer,它们被分配给(gei)那些想要接入这(zhe)个 ARPANET 的遍及全国各地的(de)各个站点。它们(men)充当通往 ARPANET 的网关,为每个站点提供多(duo)达四台主机的连接支持。它(ta)基本上是一台路由器(qi)。BBN 控制在 IMP 上运行的软件,把数据包从(cong)一个 IMP 转发到另一个(ge) IMP ,但(dan)是该公司无法直接控制那些(xie)将要连接到 IMP 上(shang)并且成为 ARPANET 网络中实际主机的(de)机器。

那些主机(ji)由网络中作为终端(duan)用户的计算机科学家们所控制(zhi)。这些计算机科学家在全国各地(di)的主机站负责编写软件,使主机之间能够相互(hu)通讯。而 IMP 赋予主机之间互相(xiang)发送消息的能力,但是那(na)并没有多大用处,除非主机之间能商定(ding)一种用于消息的格式。为了解决(jue)这个问题,一群杂七杂八(ba)的人员组成了网络工作组,其(qi)中有大部分是来自各个站点的(de)研究生们,该组力(li)求规定主机计算机使用的协议。

因此,如果你设(she)想通过 ARPANET 进行一次成功的网络互动,(例如(ru)发送一封电子邮件),使这些互动(dong)成功的一些工程由一组人负责(BBN),然而其他的一些工程则由另一(yi)组人负责(网络工作(zuo)组和在每个站点的(de)工程师们)。这种组织和后(hou)勤方面的偶然性或许对推动采用分(fen)层的方法来管理 ARPANET 网络中的协议起到很大(da)的作用,这反过来又(you)影响了 TCP/IP 的分层方(fang)式。

好的,回到(dao)协议上来arpanet(arpanet属于什么阶段的网络里程碑)-美好明(ming)星网

ARPANET 协议层次结(jie)构

这些协(xie)议层被组织成一个层次结构,在最(zui)底部是 “Level 0”。[2]这在某种意义上(shang)是不算数的,因为在 ARPANET 中这层完全由(you) BBN 控制,所以不需要标(biao)准协议。Level 0 的作用是管(guan)理数据在 IMP 之间如何传输。在 BBN 内部,有管理 IMP 如何(he)做到这一点的规则;在 BBN 之外,IMP 子网是一个黑(hei)匣子,它只会传送你提(ti)供的任意数据。因此,Level 0 是一个没有真正协议的层,就公开已知和商定的规则集而言,它的(de)存在可以被运行在 ARPANET 的主机(ji)上的软件忽略。粗略地(di)说,它处理相当于当今使用的 TCP/IP 套件的物(wu)理层、链路层和网络层下的(de)所有内容,甚至还包括相当多的(de)传输层,这是我将在这篇文(wen)章的末尾回来讨论的内容。

“Level 1” 层在(zai) ARPANET 的主机和它(ta)们所连接的 IMP 之间(jian)建立了接口。如果(guo)你愿意,可以认为它是为(wei) BBN 构建的 “Level 0” 层(ceng)的黑匣子使用的一(yi)个应用程序接口(API)。当时它(ta)也被称为 IMP-Host 协议(yi)。必须编写该协议并公布出来,因为(wei)在首次建立 ARPANET 网络(luo)时,每个主机站(zhan)点都必须编写自己的软件来与 IMP 连接。除非(fei) BBN 给他们一些指(zhi)导,否则他们不会知道如何做到(dao)这一点。

BBN 在一份名为 BBN Report 1822的冗长文件中规(gui)定了 IMP-Host 协议。随(sui)着 ARPANET 的发展(zhan),该文件多次被修订;我将在这里(li)大致描述 IMP-Host 协议最初设计时的工作方式。根据 BBN 的规则,主(zhu)机可以将长度不超过(guo) 8095 位的消息传(chuan)递给它们的 IMP,并且每条(tiao)消息都有一个包含目标主机(ji)号和链路识别号(hao)的头部字段。[3]IMP 将检查指定的主机号,然后(hou)尽职尽责地将消息转发到网(wang)络中。当从远端主机接收到消息时,接收的 IMP 在将消息传递给本(ben)地主机之前会把目标主机号替换(huan)为源主机号。实际上在 IMP 之间传递的内容并不是消息 —— IMP 将消息分解成更(geng)小的数据包以便通过网络传输(shu) —— 但该细节对主机来说是不(bu)可见的。

arpanet(arpanet属于什么阶段的网络里程碑(bei))-美好明星网

Host-IMP 消息头(tou)部格式,截至 1969。 图表(biao)来自 BBN Report 1763

链路号的(de)取值范围为 0 到 255 ,它有(you)两个作用。一是更高级别的协议可(ke)以利用它在网络上的任何两台(tai)主机之间建立多个通信信道,因为(wei)可以想象得到,在任何时刻都有可能存在多个(ge)本地用户与同一个目标主机进行通信(xin)的场景(换句话说,链路号允许(xu)在主机之间进行多路通信)。二是它也(ye)被用在 “Level 1” 层去控制主(zhu)机之间发送的大量流量,以防止高性(xing)能计算机压制低性能计算机的情(qing)况出现。按照最初(chu)的设计,这个 IMP-Host 协议限制每台主机(ji)在某一时刻通过某条链路仅(jin)发送一条消息。一(yi)旦某台主机沿着某条链路发送了一条(tiao)消息给远端主机后,在它沿着该链(lian)路发送下一条消息之前,必须等待接收(shou)一条来自远端的 IMP 的特别类型的消息,叫做 RFNM(请求下一条消(xiao)息Request for Next Message)。后来为了提高性能,对(dui)该系统进行了修订,允许一(yi)台主机在给定的时刻传送多达 8 条消息给另一台主机。[4]

“Level 2” 层才是事情真正开始变得有趣(qu)的地方,因为这一层和在(zai)它上面的那一层由 BBN 和国防部全部留给学者(zhe)们和网络工作组自己去研发(fa)。“Level 2” 层包括了 Host-Host 协议(yi),这个协议最初在(zai) RFC9 中草拟,并且在 RFC54 中首次正式规定。在 ARPANET 协议手(shou)册中有更易读的 Host-Host 协议的解释。

“Host-Host 协议” 管理主机之间(jian)如何创建和管理连接。“连接”是某个主机上的写套接字和另一个主机(ji)上的读套接字之间的一个单向的数(shu)据管道。“套接字socket” 的概念是在 “Level-1” 层的有限的链路设(she)施(记住,链路(lu)号只能是那 256 个值中的一个(ge))之上被引入的,是为了给程序(xu)提供寻址运行在远端主机上(shang)的特定进程的一种方式。“读(du)套接字” 是用偶数(shu)表示的,而“写套接字(zi)”是用奇数表示的;套接字是 “读(du)” 还是 “写(xie)” 被称为套接字的 “性别(bie)”。并没有类似于 TCP 协议那样的 “端口号” 机制,连接的打(da)开、维持以及关闭操作是通(tong)过主机之间使用 “链路 0” 发送(song)指定格式的 Host-Host 控制消(xiao)息来实现的,这也是 “链路 0” 被保留的目的。一旦(dan)在 “链路 0” 上交换控制消息(xi)来建立起一个连接后,就可以使用接收(shou)端挑选的另一个链路号来发送进(jin)一步的数据消息。

Host-Host 控制消息一般通(tong)过 3 个字母的助记符(fu)来表示。当两个主机交(jiao)换一条 STR(发送端到接(jie)收端sender-to-receiver)消息和一条配对的 RTS(接收端到发送端receiver-to-sender)消息后,就建立起了一条连接 —— 这些控制消息都被(bei)称为请求链接消息。链接能够被(bei) CLS控制消息关闭。还有更多的控(kong)制信息能够改变从发送(song)端到接收端发送消息的速率。从(cong)而再次需要确保较快的主机不(bu)会压制较慢的主机。在 “Level 1” 层上的协议(yi)提供了流量控制的功能,但对(dui) “Level 2” 层来说显然是不够(gou)的;我怀疑这是因为从远端 IMP 接收到的 RFNM 只能保(bao)证远端 IMP 已经传送该消息到目(mu)标主机,而不能保证目(mu)标主机已经全部处理了该消息。还有(you) INR(接收(shou)端中断interrupt-by-receiver)、INS(发送端中断interrupt-by-sender)控制消息,主要供(gong)更高级别的协议使用(yong)。

更高级别的协议(yi)都位于 “Level 3”,这层是 ARPANET 的应用层。Telnet 协议,它提供(gong)到另一台主机的一个虚拟电传链(lian)接,其可能是这些协议中最重要的。但(dan)在这层中也有许(xu)多其他协议,例如用于传输文件的 FTP 协议和各种用于发送 Email 的协议实验。

在这一层中有一个(ge)不同于其他的协议:初(chu)始链接协议Initial Connection Protocol(ICP)。ICP 被认为是一个 “Level-3” 层协议,但实际上它是(shi)一种 “Level-2.5” 层协(xie)议,因为其他 “Level-3” 层协议都依赖(lai)它。之所以需要 ICP,是因为 “Level 2” 层(ceng)的 Host-Host 协议提供(gong)的链接只是单向的,但大多数(shu)的应用需要一个双向(例如(ru):全双工)的连接来做任何有趣的(de)事情。要使得运行在某个主机上(shang)的客户端能够连接到另一个(ge)主机上的长期运行的服务进程,ICP 定义了两个步骤。第一步(bu)是建立一个从服务端到客户端(duan)的单向连接,通过使用服务(wu)端进程的众所周(zhou)知的套接字号来实现。第二步服务端(duan)通过建立的这个连接(jie)发送一个新的套接字套接字号给客户端(duan)。到那时,那个存在的连接就会被丢弃(qi),然后会打开另外(wai)两个新的连接,它们是基于(yu)传输的套接字号建立的“读”连接和基(ji)于传输的套接字号加 1 的“写”连接。这个小插曲是大多(duo)数事务的一个前提——比(bi)如它是建立 Telnet 链接的第一步。

以上是我们逐层攀登了(le) ARPANET 协议层次结构。你(ni)们可能一直期待我在某个时候(hou)提一下 “网络控制(zhi)协议Network Control Protocol”(NCP) 。在我坐下来为这篇文章和上一篇(pian)文章做研究之前,我肯定(ding)认为 ARPANET 运行在一(yi)个叫 “NCP” 的协议之(zhi)上。这个缩写有时(shi)用来指代整个 ARPANET 协议,这可能就(jiu)是我为什么有这个想法的原因(yin)。举个例子,RFC801讨论了将(jiang) ARPANET 从 “NCP” 过渡到 “TCP” 的方式,这使 NCP 听起来像是一个相(xiang)当于 TCP 的 ARPANET 协议。但是对于 ARPANET 来说,从来(lai)都没有一个叫 “网络控制协议” 的东西(即(ji)使大英百科全书是这样认为的),我(wo)怀疑人们错误地将 “NCP” 解释(shi)为 “网络控制(zhi)协议Network Control Protocol” ,而实际上它代表(biao)的是 “网络控制程序Network Control Program” 。网络控制程序是一个运行在各(ge)个主机上的内核级别的程序,主(zhu)要负责处理网络(luo)通信,等同于现如今操作系统中的 TCP/IP 协议栈。用在 RFC 801 的 “NCP” 是一种转喻,而不是协(xie)议。

与 TCP/IP 的比较

ARPANET 协议以后都会被 TCP/IP 协议替换(但 Telnet 和 FTP 协议除外,因为它们很容易就能(neng)在 TCP 上适配运行)。然而 ARPANET 协议都基于这么一(yi)个假设:就是网络是由一个(ge)单一实体(BBN)来构建和管理的。而 TCP/IP 协议套(tao)件是为网间网设计的,这是一(yi)个网络的网络,在那里一切(qie)都是不稳定的和不可靠的。这就导(dao)致了我们的现代协议套件和(he) ARPANET 协议有(you)明显的不同,比如我们现在怎样区分(fen)网络层和传输层。在 ARPANET 中部分由 IMP 实现的类似(si)传输层的功能现在完全由在(zai)网络边界的主机负责。

我发现 ARPANET 协议最有趣的事情是(shi),现在在 TCP 中的许多传输层的功(gong)能是如何在 ARPANET 上(shang)经历了一个糟糕(gao)的青春期。我不是网络专家,因此我(wo)拿出大学时的网络课本(ben)(让我们跟着 Kurose 和 Ross 学(xue)习一下),他们对传输层通常负责什么(me)给出了一个非常好的概述。总(zong)结一下他们的解释,一个传输层协议(yi)必须至少做到以下几(ji)点。这里的 “段segment” 基本等同于 ARPANET 上的(de)术语 “消息message”:

提供进程之间的传送服务,而(er)不仅仅是主机之间的(传输(shu)层多路复用和多(duo)路分解)在每个段的基础上提(ti)供完整性检查(即确保传输过程中没有数据损坏)

像 TCP 那样,传输层也能够提供可(ke)靠的数据传输,这意味着:

“段” 是按顺序被传送的不会(hui)丢失任何 “段”“段” 的传送速度不会太(tai)快以至于被接收端丢弃(流量控制)

似乎在 ARPANET 上关于如(ru)何进行多路复用和多路分解(jie)以便进程可以通信存在(zai)一些混淆 —— BBN 在 IMP-Host 层引入了(le)链路号来做到这一点(dian),但结果证明在(zai) Host-Host 层上无论如何套接(jie)字号都是必要的(de)。然后链路号只是用于 IMP-Host 级别的流量(liang)控制,但 BBN 似乎后来放弃了它(ta),转而支持在唯(wei)一的主机对之间进行流(liu)量控制,这意味(wei)着链路号一开始(shi)是一个超载的东西,后来基本上变成(cheng)了虚设。TCP 现在使用端口号代替,分别(bie)对每一个 TCP 连接单独进行流量(liang)控制。进程间的多路复用和多路分解完(wan)全在 TCP 内部进行,不会(hui)像 ARPANET 一样(yang)泄露到较低层去。

同样有趣的是,鉴于 Kurose 和 Ross 如何开发 TCP 背后的想法,ARPANET 一开始就采用(yong)了 Kurose 和 Ross 所(suo)说的一个严谨的 “停止并等待stop-and-wait” 方法,来实现 IMP-Host 层上的可(ke)靠的数据传输。这个 “停止并等待” 方(fang)法发送一个 “段” 然后(hou)就拒绝再去发送更多 “段” ,直到收到一个最近发送的(de) “段” 的确认为止。这是(shi)一种简单的方法,但这意味着只有一(yi)个 “段” 在整个网络中运行,从而导致协议非常缓慢(man) —— 这就是为(wei)什么 Kurose 和 Ross 将(jiang) “停止并等待” 仅仅作为在通往功能齐全的传输层协(xie)议的路上的垫脚石的原因(yin)。曾有一段时间 “停止并等待” 是 ARPANET 上的工作方式(shi),因为在 IMP–Host 层,必须接收到请(qing)求下一条消息Request for Next Message(RFNM)以(yi)响应每条发出的消息,然(ran)后才能发送任何进一步的消息。客(ke)观的说 ,BBN 起初认为这对于提供主机(ji)之间的流量控制是必要的,因(yin)此减速是故意的。正如我已经提到(dao)的,为了更好的性能,RFNM 的要求后来放(fang)宽松了,而且 IMP 也开始向消(xiao)息中添加序列号和保(bao)持对传输中的消息的 “窗口(kou)” 的跟踪,这或(huo)多或少与如今 TCP 的实现如出(chu)一辙。[5]

因此,ARPANET 表明,如果你能让每个人(ren)都遵守一些基本规则,异构(gou)计算系统之间的通信是可(ke)能的。正如我先(xian)前所说的,这是 ARPANET 的最重要的遗产。但是,我(wo)希望对这些基线(xian)规则的仔细研究揭示(shi)了 ARPANET 协议对我们今天使用的协议有多大影响(xiang)。在主机和 IMP 之间分(fen)担传输层职责的方式上肯定有很多笨(ben)拙之处,有时候是冗余的(de)。现在回想起来真的很可笑(xiao),主机之间一开(kai)始只能通过给出的任意链路在某刻(ke)只发送一条消息。但是(shi) ARPANET 实(shi)验是一个独特的机(ji)会,可以通过实际构建和操作网络来(lai)学习这些经验,当(dang)到了是时候升级到我们今天所知的互(hu)联网时,似乎这些经验变得很有用。

如(ru)果你喜欢这篇贴(tie)子,更喜欢每四周发布一次的(de)方式!那么在 Twitter 上关注(zhu) @TwoBitHistory或者订阅RSS 提要,以(yi)确保你知道新帖子的发布(bu)时间。

协议分层(ceng)是网络工作组发(fa)明的。这个论点是在 RFC 871中提出的。分层也是 BBN 如何在主机和 IMP 之间划分职(zhi)责的自然延伸,因此 BBN 也值得称赞。??

“level” 是被网络工作组使用(yong)的术语。 详见 RFC 100??

在 IMP-Host 协议的后续(xu)版本中,扩展了头(tou)部字段,并且将链(lian)路号升级为消息 ID。但是(shi) Host-Host 协议仅仅继(ji)续使用消息 ID 字段的(de)高位 8 位,并将其视为链路号。请(qing)参阅 ARPANET 协议手册的 “Host-Host” 协议部分。??

John M. McQuillan 和 David C. Walden。 “ARPA 网络设计决策(ce)”,第 284页,https://www.walden-family.com/public/whole-paper.pdf。 2021 年 3 月 8 日查看。??

同上。 ??

via: https://twobithistory.org/2021/03/08/arpanet-protocols.html

作(zuo)者:Two-Bit History选题:lujun9972译者:Lin-vy校对:wxy

本文由 LCTT原创编译,Linux中国荣誉推出

上一篇:苹果手(shou)机下载aicoin(苹果手机下载aicoin教程)

下一篇:法偿性(法(fa)偿性货币)

推荐阅读:

  • nmile是(shi)什么单位(nmole是什么单位)

    nmile是(shi)什么单位(nmole是什么单位)

    nmile是什么(me)意思?是一码谈贺(he)个英制计量长度的单位,1涅(nmile)=1852米(m)。长(chang)度名称中,为了与公制或中(zhong)国传统单位区别(bie),多在单位前加一“英”字,或冠以口字旁称之,如:英里(英哩)、…
    2023-06-11 阅读(41)
  • 凉都是什(shi)么地方(被称为中国凉都的地方是哪里)

    凉都是什(shi)么地方(被称为中国凉都的地方是哪里)

    国内哪座城市夏天均温19度,被称为“中国凉都”?每年(nian)的七月下旬八月上旬不管(guan)是南方还是北方天气是非常炎(yan)热的,但是也不(bu)排除那么几个地方。每到(dao)这个时候,人们的内心也是非(fei)常浮躁的…
    2023-06-11 阅读(35)
  • 湖南中南大学(xue)是985还是211大学(湖南中南大学全国排名)

    湖南中南大学(xue)是985还是211大学(湖南中南大学全国排名)

    中南大学是985还是211?中南大学属于(yu)国家“211工程”首批重点建设高(gao)校,以及国家“985工程”部省重点共建高水平大学和国(guo)家“2011计划”首批牵头高校。中南大学由原湖南医科大学、长沙(sha)铁道学院与中…
    2023-06-11 阅读(40)
  • 尾盘选股技巧(qiao)第二天必高开(短线选股技巧 第二天必涨选股法)

    尾盘选股技巧(qiao)第二天必高开(短线选股技巧 第二天必涨选股法)

    尾盘怎么选股(gu)常见的尾盘选股技(ji)巧你好,下午14:45到15:00点,这最后15分(fen)钟也是承上启下的15分钟,当天走势(shi)已基本定型,第二(er)天走势隐约可见,若有合适的机会可在最后15分钟考虑进场,以便使自(…
    2023-06-11 阅读(36)
  • 鄙视你(ni)是什么意思(鄙视你是什么意思?)

    鄙视你(ni)是什么意思(鄙视你是什么意思?)

    一个女孩对你(ni)说我鄙视你是什么意思鄙视(shi),简单的解释是:瞧(qiao)不起。她那样说:是你(ni)有某种言语或行为让她(ta)反感,看不上眼。一般口头(tou)随意表达“鄙视”只是简(jian)单表达不满意的意思。“我鄙…
    2023-06-11 阅读(38)