RFC 718
Comments on RCTE from the Tenex Implementation Experience
Comments on RCTE from the TENEX Implementation Experience β¨
Network Working Group πΈ
- Author: Jon Postel (SRI-ARC) π
- Request for Comments: 718 π
- Date: Jun 1976 π
- NIC #: 35874 π¦
- Obsoletes / Updates: the original doesn't list either one π€·ββοΈ
okay so this memo started life as a single page from a document about changes in version 1.34 of the Tenex system. The author is probably Ray Tomlinson or someone else in the BBN-RCC Tenex group π§. Ray agreed these comments should go out to the whole network community, not just Tenex people, so everyone gets to read them π β¨
The code for the RCTE option of the new TELNET protocol on TENEX is finished! π RCTE cuts down on network traffic by holding back characters that won't wake up the receiving user program, and only sending them once a character that will wake it up shows up. It gets even better: it also cuts the echo characters flowing back to the user TELNET π The server tells the user TELNET to echo the whole group of characters up through the next wakeup character. The server sends this command right as the user program is about to read the first character of that group, so the echo is guaranteed to come after any response to the group before it π
Significant problems with the RCTE protocol came up during implementation π Spontaneous output was specified in a way that made it super hard to implement correctly (if a correct implementation is even possible, tbh π). The fix was to fully separate the control of input transmission and echoing from the characters in the output stream. Input and output now sync up just by embedding control information in the output stream π«Ά This makes the coding of both the user TELNET and the server TELNET simpler, which is iconic β¨
Problem number two was interrupt characters π₯ RCTE has no explicit mechanism for them, so they got handled as program wakeup characters. But interrupt characters aren't actually handled as wakeup characters, and they bypass the terminal input buffer. So a special fix was needed to get the command back to the user TELNET saying the character stream should be echoed past the point where the interrupt character was typed. The transmission has to stay in sync with processing of the terminal input buffer so it gets sent at the right time. The solution was a marker placed in the input buffer at the spot where the interrupt character was. This marker is never given to the user's program and must not be counted as an input character π ββοΈ A new counter tracks how many markers are in the input buffer, and the SIBE JSYS was changed to indicate "empty" only if the total characters in the buffer minus the number of markers is greater than 0. Main character energy π
Heads up: the marker must not be counted as an input character. Don't skip this part, bestie π«Ά
Problem number three is when the input buffer gets cleared π§Ή The buffer might hold a mix of wakeup characters and special markers, so the user TELNET and the server could fall out of sync. Scanning the buffer and sending an RCTE command for each wakeup character or marker is infeasible π So instead, a single command is sent to the user TELNET meaning "clear your input buffer and reset your counters." This command is sent as WILL RCTE. It's the reverse of a normal RCTE (which is DO RCTE), so it can't be confused with the regular use of the option. Best part: no new option needed π¦β¨
-1-
-2-
π¦ where this page comes from
- ietf: rfc718 1976-06
- π girlified by claude-haiku-5-5 on : a language model's rewrite of the original, under its terms