Network Working Group John Day
Request for Comments: 728 Apr 1977
NIC #40036
A Minor Pitfall in the Telnet Protocol
- Designers of Telnet options should be aware of the following possible
-
- case in the Telnet protocol which may generate unexpected behavior on
-
- either end of the connection. Although at present none of the existing
-
- options are susceptible to this problem, it could arise in the future.
-
- The Telnet sync sequence causes all data to be deleted from the data
-
- stream until a data mark is encountered. Telnet control functions are
-
- not affected by the sync sequence (see page 9 of the protocol
-
- specification). A Telnet option subnegotiation could be defined such
-
- that it had an affect on the data following it in the data stream. For
-
- example, a subnegotiation might be used to indicate the terminal was to
-
- display the following data in a particular font or should receive other
-
- special treatment by the terminal. A Telnet sync sequence sent after
-
- such a subnegotiation and its data and before the subnegotiation had
-
- been processed could resuit in the subnegotiation having its affect on
-
- data other than that intended.
-
- Two possible solutions come to mind at once. First, the data to be
-
- affected could be included as a parameter of the subnegotiation. in
-
- other words, the data is inserted in the data stream before the IAC SE
-
- that terminates the subnegotiation. The disadvantages of this solution
-
- are both theoretical and practical. Theoretically, it is improper and
-
- not really in the spirit of the Telnet protocol design to send data as
-
- subnegotiation parameters. Practically, in a situation where this case
-
- would arise it would be equally unexpected behavior (and perhaps
-
- confusing if a human was affected) if all data except that affected by
-
- the subnegotiation was flushed.
-
- The second solution would be for designers of options which have such
-
- subnegotiations define a subnegotiation or other mechanism that would
-
- follow immediately after the Data Mark and nullify the affects of any
-
- offending subnegotiation. The exact semantics of such a subnegotiation
-
- would probably be very specific to the option.
-