Telnet RFCs

This is a list of various RFCs describing the telnet protocol. I've avoided listing obsolete RFCs.

Pre-genesis RFCs

These RFCs came out before the major document describing the telnet protocol as a whole.

RFC 652

Still doing more research.

Genesis, and post-genesis RFCs

RFC 854 marks the point at which the framework of the telnet protocol was basically solidified. The framework allows for considerable extensions. Sadly, RFC 854 doesn't talk about extensions implemented in previous RFCs, it only talks about the base protocol which means that previous RFCs have to be examined in order to fully understand the current telnet protocol.

RFC 854, RFC 855, RFC 856, RFC 857, RFC 858. RFC 859, RFC 860, RFC 861
The base telnet protocol specification. These describe the basic protocol, and the first set of supported sub-options.
RFC 885
The End of Record option. I'm not sure what this is used for, but I suspect that the IBM 3270 telnet spec may use it. It also adds a new IAC escape sequence (EOR) to the set defined in RFC 854.
RFC 927
A way to send a user ID in order to avoid having to have a login prompt.
RFC 933
A way to send a piece of text flagged as a 'banner' that is constantly displayed on the screen. This is a DoD request so they can avoid constantly resending banners that label things as 'top secret'.
RFC 1041
This describes a method to handle 3270 terminals via telnet.
RFC 1073
This describes a way for telnet sessions to say something when the size of their display window changes.
RFC 1079
How to send information about what baud rate your connection is on so programs can make decisions based on this. emacs, for example, chooses and uglier, but much more efficient redraw method for lower baud rates.
RFC 1091
This describes a way for a server to query a client about terminal types supported by the client's display. One might believe that RFC 1408 obsoletes this, but this also describes a way for the client and server to negotiate to a mutually agreeable terminal type, which can't really be done using the protocol described in RFC 1408. For exchanging terminal type information, this protocol is preferred over RFC 1408.
RFC 1096
Describes a method by which a server can query a client about what X11 display it is on. This is definitely obsoleted by RFC 1408. Future implementations need to udnerstand this mechanism of transferring X display information, but the protocol specififed in RFC 1408 is the preferred method.
RFC 1097
This describes a protocol that can be used to flag messages as being subliminal messages.
RFC 1143
This describes, in detail, option negotion loop problems in the telnet protocol, and how to avoid them when writing a telnet implementation.
RFC 1116, RFC 1184
These two describe how to handle line-at-a-time mode. RFC 1184 obsoletes RFC 1116, but linemode is complex, and having both RFCs would probably clarify things. Also, linemode adds several IAC escapes (EOF, SUSP, and ABORT) to the base set defined in RFC 854.
RFC 1205
So, you want to pretend to be an IBM 5250 terminal....
RFC 1372
Describes a protocol for handling flow control. This is mainly concerned with user-level flow control, like hitting Control-S to pause output.
RFC 1408, RFC 1571
Describes a protocol for sending environment variables from client to server in the telnet protocol. This protocol could be used instead of the terminal type (RFC 1091) and X11 display (RFC 1096) protocols.

Both of these RFCs are mentioned because the reference implementation of RFC 1408 disagreed with the actual implementation. RFC 1571 describes a method for resolving the ambiguity. Because of this, the nearly identical protocol described in RFC 1572 is the preferred method of sending environment variables.

RFC 1416
Describes a protocol for sending authentication information back and forth between client and server. This protocol uses magic numbers defined in RFC 1700 to indicate which authentication method will be used, or is supported.
RFC 1411
Describes how to use the protocol described in RFC 1416 to do KERBEROS_V4 authentication.
RFC 1572
Describes an alternate environment variable passing protocol that fixes the ambiguities between the reference implementation, and the text of the spec in RFC 1408 and RFC 1571. This is the preferred environment variable passing protocol.
RFC 2066
Describes a protocol that can be used to negotiate a character set and input translations primarily for multi-lingual telnet.
RFC 2217
Describes a protocol that can be used to exchange RS232 parameters and modem control line state change information via telnet. This is so telnet can be used as an interface to a modem pool or terminal server.

Another document of interest is the telnet portion of the assigned numbers RFC.


Back to Eric Hopper's technical stuff
Eric Hopper eric-www@omnifarious.org My homepage