组织:中国互动出版网(http://www.china-pub.com/)
RFC文档中文翻译计划(http://www.china-pub.com/compters/emook/aboutemook.htm)
E-mail:ouyang@china-pub.com
译者:charliechen(charliechen   charliecy@263.net)
译文发布时间:2001-4-2
版权:本中文翻译文档版权归中国互动出版网所有。可以用于非商业用途自由转载,但必须保留本文档的翻译及版权信息。



Network Working Group                                        Bill Duvall
Request for Comments: 2                                              SRI


RFC 2 - 主机软件
                           (RFC 2  Host soft ware)




目录
1 链接 1
1a 控制链接 1
1b 主链接 2
1c   辅助链接 2
2 操作链接 3
2a 控制链接 3
2b 主链接 3
2c 辅助链接 4
3.错误检查 5
4  监控器功能 7
4a  网络I/O驱动 7
4b  网络状态 9
5 可执行操作 9
5a 主链接 9
5b辅助链接 9
5c 特殊执行函数 10
6 初始校验 10



1 链接

   1a 控制链接

      1a1    逻辑链接0作为网络任意两台主机的控制链接

      1a1a  网络任意两台主机只存在一条控制链接。如果网络上有n 台主机,则对于每个主机有n-1个控制链接

      1a2    主要用语主机之间通讯的目的

      1a2a   建立用户链接

      1a2b   打断用户链接

      1a2c   根据链接的状态和/或程序通过链接传递中断
         
      1a2d   监控器通讯

      1a3     网络上的IMP自动跟踪通过链接0发送的所有消息

   1b 主链接
      1b1     一台给定主机的用户与网络上的其它主机有1个主链接

      1b1a   主链接必须是一台主机的用户与其它主机之间建立的第一个链接

      1b1b   主链接对用户是全局的,用户程序可以打开主链接,在明确地关闭之前她始终是打开的

      1b1c   主链接被当作与远程主机通过普通的数据电话或直接连接的TTY一样看待,即远程主机认为一个主链接是一个普通的TTY用户。

      1b1d   主链接用来传递(用户)控制信息给远程主机,举例来说,它被用来登录到远程主机使用远程主机的标准登录过程)

   1c   辅助链接
     1c1       用户程序可以和他自己或已连接的主机之间建立任意个辅助链接 

     1c1a     这些链接可以传输二进制或字符

     1c1b     子系统建立的辅助链接是本地的,所以当子系统退出时这些链接会关闭

2 操作链接
   2a 控制链接
     2a1       系统载入时建立链接

     2a2       控制链接的状态可能是激活的或非激活的

     2a2a     控制链接的状态必须反映主机之间的关系
   2b 主链接
     2b1       用户或调用调用程序来建立与控制器的主链接

     2b1a     主机的网络身份号码必须包含在调用程序中。

     2b1b     试图建立多余一个的主链接到特殊主机会被认为是一个错误,这时请求被设置成默认的

     2b1c      标准传输字符集
      
     2b1c1    数据传输是用标准字符集通过主链接和控制链接进行的

     2b1c1a  用的是8位ASCII 

     2b1d      (获取链接)从主机A到主机B建立链接的协议如下

     2b1d1     A从它的分配表选择一条当前未使用的链接到B

     2b1d2     A通过链接0发送一条链接-连接消息至B  

     2b1d3     A等待

     2b1d3a   B发送一条关于那条链接的信息

     2b1d3b   等待一段时间

     2b1d4     如果一个信息认为该链接从B获得,那么它将被检验是否确实

     2b1d4a    A确认B的链接

     2b1d4a1  从监控器发送一个成功的返回到请求者。链接号返回给请求者,链接建立

     2b1d4b   B请求建立这个链接。这意味着:B试图建立独立于A的但与A一样的链接

     2b1d4b1  如果A(Na)的网络ID号大于B(Nb)的网络ID号,A忽略该请求,并且继续等待B的链接的确认
    
    2b1d4b2   如果是Na<Nb, A:

    2b1d4b2a 允许从B发过来的请求以建立链接。

   2b1d4b2b  发送需要的确认消息

    2b1d4b2c  A中断自身的请求,重复分配过程

    2b1d4c      从B发出的关于链接的其它信息

   2b1d4c1    这是一个错误条件,下同
    2b1d4c1a   A错误地选择了先前已分配的链接来作为分配

    2b1d4c1b   B通过一个未分配的链接传输信息

  2b1d4c1c   或者B发送给A的关于分配的信息在传输过程中发生了变化

  2b1d4c2     在这种情况下,A采取的动作:

    2b1d4c2a   发送一条关于试图连接的断开消息给B 

    2b1d4c2b   认为主机B的状态出错,开始进入出错分支处理

  2b1d5     如果在指定的一段时间内无法从B接收到关于链接的信息,认为主机B被在出错状态

  2b1d5a      A发送一个中断链接的消息到B

  2b1d5b      调用出错处理分支
  2c 辅助链接
    2c1             用户程序发送调用指令给监控器以建立辅助链接

    2c1a           请求必须详细说明和监控器建立的链接相关的数据

    2c1a1         连接到B的主链接号

    2c1b           双方主机(A和B)的用户程序必须都请求辅助链接

    2c1c           如果Na > Nb,主机A使用如上的方式(获取链接)继续建立一个到主机B的链接                                  

    2c1d           如果Na<Nb, A等待 :

    2c1d1         等待主机B建立该链接(在注意B是否已经建立相关的链接以后)

  2c1d2         等待一段时间

    2c1d2a        即主机B对主机A的请求不作出反应

    2c1d2b        主机A和B的程序应该指定等待的时间以确定是否超时

3.错误检查

   3a      通过网络发送的所有消息一开始就进行错误检查以隔离硬件和软件错误

   3b                 一个与次序相关的校验码会加入到每条消息中去

   3b1               以下的运算法则将被使用:

   3b1a             通过把连续地被检查的字符串中的相续字段相加形成一个长度为1的检查和,并且把
                       进位加到和的最低位
              +--------------+
              |              |
              +---字段 1----+

          加法 +--------------+
              |              |
              +----字段 2---+

            +-+--------------+
            | |              |
            +-+--------------+
              \
               \          +--+
          加法   进位---> |  |
                          +--+

              +--------------+
              |              |
              +----结果----+

   3b1a1       这种方法称为折叠

   3b1a2       如果在作完加法后适当地折叠,可以把字段相加并且平行地折叠

              +---------+---------+---------+---------+
              | 字段  4 | 字段   3 | 字段   2 | 字段   1 |
              +---------+---------+---------+---------+

              +---------+---------+---------+---------+
              | 字段  8 | 字段  7 | 字段 6  | 字段 5 |
              +---------+---------+---------+---------+
            加法
            +-+---------+---------+---------+---------+
            | |         |         |         |         |
            +-+---------+---------+---------+---------+
             |      |        |         |         |
             |      |        |         |         v
             |      |        |         |    +---------+
             |      |        |         |    |         |
             |      |        |         |    +---------+
             |      |        |         |
             |      |        |         \    +---------+
             |      |        |          `-> |         |
             |      |        |              +---------+
             |      |        |
             |      |        \              +---------+
             |      |         `-----------> |         |
             |      |                       +---------+
             |      |
             |      \                       +---------+
             |       `--------------------->|         |
             |                              +---------+
             |
             \                                    +---+
              `-----进位------------------------>|   |
                                                  +---+
                                  加法
                                  +---------+---------+
                                  |         |         |
                                  +--进位--+---------+
                                       |
                                       \        +-----+
                                    加法 `-----> |     |
                                                +-----+

                                            +---------+
                                            |         |
                                            +-结果--+

   3b1a2a       采用这种方法的话,如果有n个字段,第一个n-1字段的进位自动地加到下一个较高字
             段的低位,所以通过折叠,只需把[n]结果字段的值与第n个字段的进位相加, 然后 加上一
             个从那次加法得到合适大小的进位,并且重复一定的次数以获得结果。

    3b1a3       以该种方式计算生成的校验码具有可在不同字长机器上使用的优点。

3b1a3a      如果用适当长度的字符串来计算生成校验码,并且选择适当长度的校验码字段,则
                 每台机器的校验技术将会相当理想

   3b1a3a1     字段长度: 288 位 (?未翻译:lowest common denomenator of (24,32,36))

   3b1a3a2     校验码长度:8位(适合所有机器的字段大小)

   3b1b          如果一条消息被分割成几组字段,每一组都采用这种校验方式,那么每组就会获得一
                     个与次序相关的校验码,并且加入到下一个组的校验码中去。

   3c              双方主机进入请求对消息的检查确认模式时,提供一个设备以满足该要求。该检查确认
                     通过控制链接发送

4  监控器功能
4a  网络I/O驱动
   4a1            输入

   4a1a          从IMP输入消息

   4a1b          对消息进行错误检查

   4a1b1        校验检查和

   4a1b2        如果回应模式已打开,通过控制链接发送“收到消息”回应

   4a1c           字符转化

   4a1c1         有相当大的可能性字符转化是在IMP中完成的

   4a1c2         这需要BBN 进一步研究

   4a1c3         有两个需要主要考虑的事项

   4a1c3a       转化由表来做还是由运算法则完成?

   4a1c3a1     一开始看起来好象用表实现是最佳途径

   4a1c3b       哪些消息是应该转化的,是不是所有都要转化(当然不是!!!)?那么用哪种方
                     法到底该如何区别?

   4a1d          对头解码,发送消息到源指定的接收者,链接之

   4a2            输出

   4a2a          构造头

   4a2b          字符转化

   4a2b1        留意输出转换部分的备注

   4a2c           生成校验和

   4a2d          检查链接状态

   4a2d1        如果在链接上传送最后一条消息后没有RFNM,则等待

   4a2e          传输消息给IMP

   4a2f           如果回应模式是打开的,则等待

   4a2f1         RFNM来自目的地的IMP

   4a2f2         目的地的主机通过链接0发出回应
4b  网络状态
   4b1             维持网络上其它主机的状态

   4b1a            如果一个IMP关闭了,那么它的主机也将关闭

   4b2              维持控制链接的状态

   4b3              回应其它主机发出的状态查询

   4b4              通知其它主机 关于中断基础的主、辅助链接的状态

   4b5              通知其它主机关于程序使用主、次链接的状态

5 可执行操作
   5a 主链接
      5a1           需要主机号作为参数

      5a1a         建立主链接

      5a1b         连接主控制TTY到主链接

      5a1c         通过主链接输入/输出

      5a1d         询问主链接状态

      5a1d1       不知道确切应该怎么做,但是看起来它可能是有用的

      5a1e          断开和主链接的控制TTY

      5a1f          杀掉主链接
   5b辅助链接
      5b1           建立辅助链接
      5b1a         需要主机号作为参数
      5b1b         返回一个类似文件索引的逻辑链接号。该逻辑链接号作为参数传递给  它辅助链接         
      5b2           通过辅助链接输入/输出
      5b3           询问辅助链接状态
      5b3a         不知道确切应该怎么做,但是看起来它可能是有用的
      5b4           杀掉辅助链接
5c 特殊执行函数
      5c1           透明的。通过链接输入/输出         
      5c1a         这可能用来阻塞通过链接进行的I/O传输
      5c1b         实例中控制器的功能是传输一个缓冲给它的IMP
      5c1c          缓冲保持原样
      5c1c1        这意味着头和其它控制信息必定包含在缓冲中
      5c1d          这样做的目的是为了网络调试

6 初始校验

 6a 用模拟数据电话模式的链接初始检验网络

   6a1               所有消息是一个字符长
      
   6a2               对于控制器来说,链接是透明的,并且由用户程序使用特殊的可执行操作来控制

   6a2a             初始化测试有两台不同主机上的拥护程序运行,举例来说,从DDT到DDT

   6a2b             通过电话链接或其它相似的来并行

           [  This RFC was put into machine readable form for entry  ]
           [  into the online RFC archives by Robbie Bennet 10/1998  ]
           [  This RFC was nroffed by Kelly Tardif, Viagenie 10/1999 ]

RFC 2  Host SoftWare                                        RFC 2      主机软件

1


1
RFC中文文档翻译计划