📄 rfc2840.txt
字号:
Network Working Group J. AltmanRequest for Comments: 2840 F. da CruzCategory: Informational Columbia University May 2000 TELNET KERMIT OPTIONStatus of this Memo This memo provides information for the Internet community. It does not specify an Internet standard of any kind. Distribution of this memo is unlimited.Copyright Notice Copyright (C) The Internet Society (2000). All Rights Reserved. The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in RFC 2119.ABSTRACT This document describes an extension to the Telnet protocol to allow the negotiation, coordination, and use of the Kermit file transfer and management protocol over an existing Telnet protocol connection.CONTENTS 1. MOTIVATION . . . . . . . . . . . . . . . . . . . . . . . . 2 2. DEFINITIONS. . . . . . . . . . . . . . . . . . . . . . . . 2 3. COMMANDS AND CODES . . . . . . . . . . . . . . . . . . . . 3 4. COMMAND MEANINGS . . . . . . . . . . . . . . . . . . . . . 3 5. KERMIT PROTOCOL IMPLICATIONS . . . . . . . . . . . . . . . 5 6. EXAMPLES . . . . . . . . . . . . . . . . . . . . . . . . . 6 6.1. EXAMPLE 1. . . . . . . . . . . . . . . . . . . . . . . . 6 6.2. EXAMPLE 2. . . . . . . . . . . . . . . . . . . . . . . . 7 6.3. EXAMPLE 3. . . . . . . . . . . . . . . . . . . . . . . . 8 6.4. EXAMPLE 4. . . . . . . . . . . . . . . . . . . . . . . . 9 6.5. EXAMPLE 5. . . . . . . . . . . . . . . . . . . . . . . . 10 7. SECURITY CONSIDERATIONS. . . . . . . . . . . . . . . . . . 11 8. REFERENCES . . . . . . . . . . . . . . . . . . . . . . . . 11 9. AUTHORS' ADDRESSES . . . . . . . . . . . . . . . . . . . . 11 10. FULL COPYRIGHT STATEMENT. . . . . . . . . . . . . . . . . 12Altman & da Cruz Informational [Page 1]RFC 2840 TELNET KERMIT OPTION May 20001. MOTIVATION The Kermit protocol [KER] performs error-corrected file transfer and management over many types of connections, including terminal connections, among diverse hardware and software platforms. It is supported by a large number of Telnet clients and is also widely available on the Internet hosts to which Telnet connections are made. Traditionally, the Kermit protocol connection is started manually by a user, or perhaps by an automated script. It is the user's responsibility to start the Kermit server on one end of the connection and the Kermit client on the other, or to start a Kermit "send" operation on one end and a Kermit "receive" on the other. This procedure grew out of necessity on ordinary direct-dial connections, and serves its purpose within the limitations of that context. But it introduces timing and dexterity problems, and lacks an effective way for each Kermit program to determine the "mode" of the other, or even its very presence, and therefore to know with certainty which operations and procedures are legal on the connection at any given time. When Kermit services are offered on the Internet, however, a strong coupling can be established between the two end applications by having the Telnet protocol [TEL] serve as a supervisor for Kermit sessions, ensuring that a valid and known relationship is always obtained. Kermit sessions are, in effect, embedded within Telnet sessions, with Telnet providing the mechanism for starting and stopping them and defining which end is the Kermit client and which is the Kermit server, possibly changing the relationship in response to user actions.2. DEFINITIONS Kermit server A software program that is ready to accept and act upon commands in the form of well-defined Kermit packets [KER]. Kermit client A software program that receives requests through its user interface from a human agent (or a script or other source) and translates them to command packets, which it sends to a Kermit server, thus initiating a Kermit protocol transaction such as the transfer of one or more files.Altman & da Cruz Informational [Page 2]RFC 2840 TELNET KERMIT OPTION May 2000 Availability of Kermit server For the purposes of this document, a Kermit server is said to be available if, through the negotiations described herein, its Telnet partner knows that it is a Kermit server.3. COMMANDS AND CODES Support for a Kermit server is negotiated separately in each direction, allowing Kermit service to be embedded in the Telnet client, the Telnet server, or in both. The proposed Telnet extensions are, therefore, symmetrical. When the connection is first opened, Kermit service is unavailable in both directions. The availability of Kermit service is negotiated using the following Telnet option: KERMIT 47 (assigned by IANA) The state of the connection is controlled by the following Telnet subnegotiation function codes: START-SERVER 0 STOP-SERVER 1 REQ-START-SERVER 2 REQ-STOP-SERVER 3 SOP 4 RESP-START-SERVER 8 RESP-STOP-SERVER 94. COMMAND MEANINGS The KERMIT OPTION is negotiated using the standard Telnet mechanisms: IAC WILL KERMIT The sender of this command incorporates a Kermit server and is willing to negotiate its use. IAC WONT KERMIT The sender of this command does not incorporate a Kermit server or refuses to negotiate its use. IAC DO KERMIT The sender of this command requests that the receiver negotiate use of a Kermit server.Altman & da Cruz Informational [Page 3]RFC 2840 TELNET KERMIT OPTION May 2000 IAC DONT KERMIT The sender of this command refuses to negotiate the use of a Kermit server. Once WILL KERMIT is negotiated in a particular direction, subnegotiations are used to indicate or request a change in state of the connection, or to convey other information. Subnegotiations may be sent at any time. IAC SB KERMIT START-SERVER This command is sent by the WILL side to indicate that the Kermit server is now active; that is, that client-initiated Kermit packets will be accepted. IAC SB KERMIT STOP-SERVER This command is sent by the WILL side to indicate that the Kermit server is no longer active, and therefore that it is not ready to accept Kermit packets. IAC SB KERMIT REQ-START-SERVER This command is sent by the DO side to request that the Kermit server be started. It must be responded to with either RESP- START-SERVER or RESP-STOP-SERVER depending upon whether the request was accepted. IAC SB KERMIT REQ-STOP-SERVER This command is sent by the DO side to request that the Kermit server be stopped. It must be responded to with either RESP- START-SERVER or RESP-STOP-SERVER depending upon whether the request was accepted. IAC SB KERMIT RESP-START-SERVER This command is sent by the WILL side in response to REQ-START- SERVER or REQ-STOP-SERVER to indicate that the Kermit server is active after the request was accepted or denied. IAC SB KERMIT RESP-STOP-SERVER This command is sent by the WILL side in response to REQ-START- SERVER or REQ-STOP-SERVER to indicate that the Kermit server is not active after the request was accepted or denied. IAC SB KERMIT SOP <octet> Kermit Start Of Packet. The sender of this command specifies the octet it will use to mark the beginning of the Kermit packets it sends. This command must be sent by each connection partner upon the first WILL/DO pair to allow unambiguous identification of Kermit packets in the data stream. This subnegotiation must be sent whenever the Start of Packet character changes. The valuesAltman & da Cruz Informational [Page 4]RFC 2840 TELNET KERMIT OPTION May 2000 are restricted to ASCII C0 control characters other than Carriage Return and NUL. The normal value is 1 (ASCII SOH). The two Kermit partners normally use the same SOP, but may use distinct ones if desired. IAC SB KERMIT SOP is necessary to allow each Telnet partner to recognize subsequent incoming Kermit packets. Data following the SOP is processed by the Kermit packet analyzer. All other Kermit protocol parameters are automatically negotiated within the Kermit protocol upon the initial exchange of Kermit packets [KER]. START-SERVER and STOP-SERVER commands must be sent by the WILL side whenever the state of the Kermit server changes. When WILL is successfully negotiated the state of the WILL side is assumed to be STOP-SERVER. If the server is active, the WILL side must send a START-SERVER to indicate the change in state. The receiver of a REQ-START-SERVER or REQ-STOP-SERVER is not required to agree to the request to change state. The receiver must respond with either RESP-START-SERVER or RESP-STOP-SERVER to indicate the state of the Kermit Server subsequent to the request. RESP-xxx- SERVER is sent instead of xxx-SERVER to enable the sender of REQ- xxx-SERVER to distinguish between the WILL side's spontaneous change in state and the response to the DO side's request. If the Kermit server receives a Kermit packet commanding it to cease Kermit service (such as a FINISH, REMOTE EXIT or BYE packet [KER]), it must send IAC SB KERMIT STOP-SERVER if the command is accepted. These rules ensure that the Telnet client's user interface always knows whether (and on which end) a Kermit server is available, and can therefore present the user only with valid choices, and that changes in state of one Telnet partner automatically switch the other to a complementary and valid state. While it is possible for a traditional telnet service (port 23) to implement this option while at the same time supporting the existing remote shell access functionality, it is not expected that this option will be used in that manner. Instead, this option is primarily meant for use with dedicated Kermit services such as the Internet Kermit Service (port 1649) [IKS].5. KERMIT PROTOCOL IMPLICATIONS The Kermit protocol is described elsewhere [KER]. It is an extensible and self-configuring protocol, like Telnet, and thus any two proper Kermit implementations should interoperate automatically.Altman & da Cruz Informational [Page 5]RFC 2840 TELNET KERMIT OPTION May 2000 In Kermit, as in Telnet, one particular octet is distinguished. In Telnet's case, it is IAC (decimal 255); in Kermit's it is the character specified by the IAC SB KERMIT SOP negotiation, normally SOH (decimal 1, Ctrl-A). All Kermit packets must begin with the SOP and should not contain the SOP character in an unquoted form. Telnet protocol takes precedence over Kermit protocol; whenever an IAC is detected, it is processed as the beginning of a Telnet command unless quoted by another IAC. Telnet commands can contain any characters at all, including the SOP octet, transparently to the Kermit protocol, and in fact Telnet commands are not seen by the Kermit protocol at all. Kermit protocol must follow Telnet NVT rules in each direction when Telnet binary mode is not negotiated for that direction. If 8-bit transparency is desired, Telnet binary mode may be negotiated upon entry to Kermit protocol in the appropriate direction, and the previous mode (NVT or binary) restored upon exit from Kermit protocol. Telnet binary mode can result in more efficient transfers, but is not required for data transfer, since Kermit protocol does not require a transparent path.6. EXAMPLES6.1. EXAMPLE 1 The Telnet server contains a Kermit server. The Telnet client includes Kermit protocol but does not implement the Telnet KERMIT Option. Telnet Server Telnet Client ----------------------------- ----------------------------- <starts negotiations> WILL KERMIT DO KERMIT <responds to negotiations> DONT KERMIT WONT KERMIT From this point, no subnegotiations take place, and the Kermit client/server relationship is under manual control of the user of the Telnet client.Altman & da Cruz Informational [Page 6]
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -