组织:中国互动出版网(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中文文档翻译计划