📄 rfc1037.txt
字号:
Network Working Group B. GreenbergRequest for Comments: 1037 S. Keene December 1987 NFILE - A File Access ProtocolSTATUS 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 20Greenberg & 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 71Greenberg & 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 851. 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 filesGreenberg & 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 19874. 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 remote host and establishes a network connection. This initial connection is the control conection of the dialogue. If TCP is used as the underlying protocol, contact NFILE's well-known port, 59. If Chaos is used, use the contact name "NFILE". The control connection is the vehicle used by the user to send its commands, and the server to send its command responses. These types of communication occur over the NFILE control connection:
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -