📄 rfc1037.txt
字号:
Network Working Group B. Greenberg
Request for Comments: 1037 S. Keene
December 1987
NFILE - A File Access Protocol
STATUS OF THIS MEMO
This document includes a specification of the NFILE file access
protocol and its underlying levels of protocol, the Token List
Transport Layer and Byte Stream with Mark. The goal of this
specification is to promote discussion of the ideas described here,
and to encourage designers of future file protocols to take advantage
of these ideas. A secondary goal is to make the specification
available to sites that might benefit from implementing NFILE. The
distribution of this document is unlimited.
TABLE OF CONTENTS
Page
1. INTRODUCTION 3
2. NFILE PROTOCOL LAYERING 4
3. OVERVIEW OF AN NFILE SESSION 5
4. NFILE CONTROL AND DATA CONNECTIONS 6
5. NFILE FILE OPENING MODES 7
6. NFILE CHARACTER SET 9
7. CONVENTIONS USED IN THIS DOCUMENT 10
7.1 Mapping Data Types Into Token List Representation 10
7.2 Format of NFILE Commands and Responses 10
7.3 Data Channel Handles and Direct File Identifiers 13
7.4 Syntax of File and Directory Pathname Arguments 13
7.5 Format of NFILE File Property/Value Pairs 14
8. NFILE COMMANDS 16
8.1 ABORT Command 16
8.2 CHANGE-PROPERTIES Command 16
8.3 CLOSE Command 17
8.4 COMPLETE Command 19
8.5 CONTINUE Command 20
Greenberg & Keene [Page 1]
RFC 1037 NFILE - A File Access Protocol December 1987
8.6 CREATE-DIRECTORY Command 21
8.7 CREATE-LINK Command 21
8.8 DATA-CONNECTION Command 22
8.9 DELETE Command 23
8.10 DIRECT-OUTPUT Command 23
8.11 DIRECTORY Command 24
8.11.1 NFILE DIRECTORY Data Format 26
8.12 DISABLE-CAPABILITIES Command 27
8.13 ENABLE-CAPABILITIES Command 28
8.14 EXPUNGE Command 28
8.15 FILEPOS Command 29
8.15.1 Implementation Hint for FILEPOS Command 30
8.16 FINISH Command 30
8.17 HOME-DIRECTORY Command 31
8.18 LOGIN Command 32
8.19 MULTIPLE-FILE-PLISTS Command 34
8.20 OPEN Command 35
8.20.1 NFILE OPEN Optional Keyword/Value Pairs 39
8.20.2 NFILE OPEN Response Return Values 45
8.21 PROPERTIES Command 47
8.22 READ Command 49
8.23 RENAME Command 50
8.24 RESYNCHRONIZE-DATA-CHANNEL Command 51
8.24.1 Implementation Hints for RESYNCHRONIZE-DATA- 51
CHANNEL Command
8.25 UNDATA-CONNECTION Command 52
9. NFILE RESYNCHRONIZATION PROCEDURE 53
9.1 NFILE Control Connection Resynchronization 54
9.2 NFILE Data Connection Resynchronization 55
10. NFILE ERRORS AND NOTIFICATIONS 58
10.1 Notifications From the NFILE Server 58
10.2 NFILE Command Response Errors 59
10.3 NFILE Asynchronous Errors 60
10.4 NFILE Three-letter Error Codes 61
11. TOKEN LIST TRANSPORT LAYER 65
11.1 Introduction to the Token List Transport Layer 65
11.2 Token List Stream 66
11.2.1 Types of Tokens and Token Lists 66
11.2.2 Token List Stream Example 68
11.2.3 Mapping of Lisp Objects to Token List Stream 70
Representation
11.2.4 Aborting and the Token List Stream 71
Greenberg & Keene [Page 2]
RFC 1037 NFILE - A File Access Protocol December 1987
11.3 Token List Data Stream 72
12. BYTE STREAM WITH MARK 73
12.1 Discussion of Byte Stream with Mark 73
12.2 Byte Stream with Mark Abortable States 75
13. POSSIBLE FUTURE EXTENSIONS 77
APPENDIX A. NORMAL TRANSLATION MODE 79
APPENDIX B. RAW TRANSLATION MODE 83
APPENDIX C. SUPER-IMAGE TRANSLATION MODE 84
NOTES 86
LIST OF TABLES
TABLE 1. TRANSLATIONS FROM NFILE CHARACTERS TO UNIX CHARACTERS 80
TABLE 2. TRANSLATIONS FROM UNIX CHARACTERS TO NFILE CHARACTERS 80
TABLE 3. TRANSLATIONS FROM NFILE TO PDP-10 CHARACTERS 81
TABLE 4. TRANSLATIONS FROM PDP-10 CHARACTERS TO NFILE 82
CHARACTERS
TABLE 5. SUPER-IMAGE TRANSLATION FROM NFILE TO ASCII 84
TABLE 6. SUPER-IMAGE TRANSLATION FROM ASCII TO NFILE 85
1. INTRODUCTION
NFILE stands for "New File Protocol". NFILE was originally designed
as a replacement for an older protocol named QFILE, with the goal of
solving robustness problems of QFILE, hence the name "New File
Protocol".
NFILE was designed and implemented at Symbolics by Bernard S.
Greenberg. Mike McMahon made important contributions, especially in
the design and implementation of the Byte Stream with Mark and Token
List Transport layers. NFILE has been used successfully for file
access between Symbolics computers since 1985. NFILE servers have
been written for UNIX hosts as well. NFILE is intended for use by
any type of file system, not just the native Symbolics file system.
NFILE is a file access protocol that supports a large set of
operations on files and directories on remote systems, including:
- Reading and writing entire files
- Reading and writing selected portions of files
- Deleting and renaming files
Greenberg & Keene [Page 3]
RFC 1037 NFILE - A File Access Protocol December 1987
- Creating links
- Listing, creating, and expunging directories
- Listing and changing the properties of files
- Enabling and disabling access capabilities on a remote
host
NFILE supports file transfer of binary or character files.
The NFILE server provides information about any errors that occur in
the course of a command. In addition, NFILE has a robust scheme for
handling aborts on the user side.
This specification defines NFILE user version 2 and server version 2.
We do not envision NFILE as an unchanging protocol, but rather as a
protocol that could continue to develop if additional requirements
are identified though the process of this Request for Comments. The
design of NFILE makes room for various useful extensions. Some of
the extensions that we are considering are described later on in this
document: See the section "Possible Future Extensions", section 13.
2. NFILE PROTOCOL LAYERING
NFILE is a layered file protocol. The layers are:
+-----------------------------------------------+
|client program or user interface |
+-----------------------------------------------+
|NFILE |
+-----------------------------------------------+
|Token List Transport Layer |
+-----------------------------------------------+
|Byte Stream with Mark |
+-----------------------------------------------+
|reliable host-host byte transmission protocol |
+-----------------------------------------------+
Byte Stream with Mark is a simple protocol that guarantees that an
out-of-band signal can be transmitted in the case of program
interruption. Byte Stream with Mark is to be layered upon extant
byte stream protocols. An important goal of the NFILE design was
that NFILE could be built on any byte stream. It is currently
implemented on TCP and Chaosnet. See the section "Byte Stream with
Mark", section 12.
The Token List Transport Layer is a protocol that facilitates the
transmission of simple structured data, such as lists. See the
section "Token List Transport Layer", section 11.
Greenberg & Keene [Page 4]
RFC 1037 NFILE - A File Access Protocol December 1987
The NFILE commands and command responses are transmitted in "token
lists". See the section "NFILE Commands", section 8.
This specification does not include a client program or user
interface to the protocol. In the Symbolics implementation, the
normal file operations transparently invoke NFILE, when the remote
host is known to support NFILE. Another possible interface to NFILE
would be through a dedicated client program that would issue NFILE
commands in response to explicit requests by the user.
3. OVERVIEW OF AN NFILE SESSION
An NFILE session is a dialogue between two hosts. The host that
initiates the NFILE session is known as the "user side", and the
other host is the "server side". The user side sends all NFILE
commands. The server receives each command, processes it, and
responds to it, indicating the success or failure of the command.
The user side keeps track of commands sent and command responses
received by using "transaction identifiers" to identify each command.
The user side generates a transaction identifier (which must be
unique per this dialogue) for each command, and sends the transaction
identifier to the server along with the command. Each NFILE server
response includes the transaction identifier of the command with
which the response is associated. The server is not required to
respond to commands in the same order that the user gave them.
The user side sends NFILE commands over a bidirectional network
connection called the "control connection". The server sends its
command responses on the same control connection. The control
connection governing the NFILE session is established at the
beginning of the session. If the control connection is ever broken,
the NFILE session is ended.
Whereas NFILE commands and responses are transmitted on the control
connection, file data is transferred over "data channels". An "input
data channel" transfers data from server to user. An "output data
channel" transfers data from user to server. Each input data channel
is associated with an output data channel; together these two
channels comprise a "data connection".
Often more than one NFILE activity is occurring at any given time.
For example, several files can be open and transferring data
simultaneously; one or more commands can be in process at the same
time; and the server can be simultaneously transmitting directory
lists and processing further commands. This happens in an
implementation in which the user side has multiple processes, and
several processes share a single NFILE server.
Greenberg & Keene [Page 5]
RFC 1037 NFILE - A File Access Protocol December 1987
4. NFILE CONTROL AND DATA CONNECTIONS
The user and server communicate through a single control connection
and a set of data connections. Data connections are established and
disestablished by NFILE commands. The user side sends NFILE commands
to the server over the control connection. The server responds to
every user command over this control connection. The actual file
data is transmitted over the data connections.
User aborts can disrupt the normal flow of data on the control
connection and data connections. An important aspect of any file
protocol is the way it handles user aborts. NFILE uses a
resynchronization procedure to bring the affected control connection
or data channel from an unknown, unsafe state into a known state.
After resynchronization, the control connection or data channel can
be reused. See the section "NFILE Resynchronization Procedure",
section 9.
THE CONTROL CONNECTION
An NFILE session is begun when the NFILE user program connects to a
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -