SlideShare a Scribd company logo
© Peter R. Egli 2015
1/10
Rev. 2.50
TELNET indigoo.com
Peter R. Egli
INDIGOO.COM
OVERVIEW OF THE TELNET PROTOCOL
FOR REMOTE LOGIN SESSIONS
TELNET
© Peter R. Egli 2015
2/10
Rev. 2.50
TELNET indigoo.com
Contents
1. What is TELNET?
2. TELNET commands
3. TELNET options
4. TELNET sub-options
5. NVT Network Virtual Terminal
© Peter R. Egli 2015
3/10
Rev. 2.50
TELNET indigoo.com
1. What is TELNET?
• TELNET (RFC854) is a protocol providing platform independent, bi-directional byte-oriented
communication between hosts (unlike rlogin which is Unix based).
• Most often TELNET is used for remote login to hosts on the Internet.
• TELNET is basically a TCP connection with interspersed TELNET control information.
• TELNET may use option negotiation for providing additional services.
Terminal Driver
TELNET Client
TCP/IP TCP/IP
TELNET Server
Pseudo
Terminal Driver
Login Shell
TCP Connection
(for both user data and TELNET control)
NVT Connection
User Server
Maps local
characteristics
to a NVT
© Peter R. Egli 2015
4/10
Rev. 2.50
TELNET indigoo.com
2. TELNET commands (1/2)
• TELNET commands are used to cause an action at the remote terminal such as erasure of a
character (control interaction between client and server).
• TELNET commands (and options) are incorporated into the data stream (in-band signaling).
• Commands are distinguished from user data by setting the MSB (Most Significant Bit) to 1
(non-ASCII characters).
• Commands have the form (IAC=Interpret As Command, hex 0xFF):
IAC <command> [option]
Example (TELNET session data stream in TCP connection):
… ff fc 27 ff fc 24 ff fa 18 00 76 74 31 30 30 ff f0 0d 0a 0d 0a 53 75 6e
4f 53 20 35 2e 39 0d 0a 0d 00 0d 0a 0d 00 ff fd 01 6c 6f 67 69 6e 3a 20 …
where
… ff fc 27 … are commands (TELNET control) and
… 4f 53 20 … is user data.
IAC
(Interpret As
Command)
DO Echo
Server requests client to do local echo
(of characters typed by user).
© Peter R. Egli 2015
5/10
Rev. 2.50
TELNET indigoo.com
2. TELNET commands (2/2)
TELNET command codes:
Name Dec/Hex Code Description
SE 240/0xF0 End of subnegotiation parameters.
NOP 241/0xF1 No operation.
DM 242/0xF2 Data mark: Indicates the position of a Synch event within the data stream. This
should always be accompanied by a TCP urgent notification.
BRK 243/0xF3 Break Indicates that the "break" or "attention" key was hit.
IP 244/0xF4 Suspend Interrupt or abort the process to which the NVT is connected.
AO 245/0xF5 Abort output: Allows the current process to run to completion but does not send
its output to the user.
AYT 246/0xF6 Are you there: Send back to the NVT some visible evidence that the AYT was
received.
EC 247/0xF7 Erase character: The receiver should delete the last preceding undeleted
character from the data stream.
EL 248/0xF8 Erase line: Delete characters from the data stream back to but not including the
previous CRLF.
GA 249/0xF9 Go ahead Under certain circumstances used to tell the other end that it can
transmit.
SB 250/0xFA Subnegotiation of the indicated option follows.
WILL 251/0xFB The sender wants to enable the option itself.
WONT 252/0xFC The sender wants to disable the option itself.
DO 253/0xFD The sender wants the receiver to enable the option.
DONT 254/0xFE The sender wants the receiver to disable the option.
IAC 255/0xFF Interpret as a command
WILL / WONT / DO / DONT
are used for
option negotiation.
© Peter R. Egli 2015
6/10
Rev. 2.50
TELNET indigoo.com
3. TELNET options (1/2)
TELNET option negotiation allows the client and server to provide more services than is possible
with pure NVT.
TELNET option codes are of the form enable/disable (no parameter for options).
Either side (client and server) can initiate option negotiation at any time (also during data
transfer).
There are 6 cases for option negotiation (between sender and receiver):
Sender Direction Receiver Description Means
1. WILL  Sender wants to enable option. Option is in effect.
 DO Receiver says OK.
2. WILL  Sender wants to enable option. Option is not in effect.
 DONT Receiver says no.
3. DO  Sender wants receiver to enable option. Option is in effect.
 WILL Receiver says OK.
4. DO  Sender wants receiver to enable option. Option is not in effect.
 WONT Receiver says no.
5. WONT  Sender wants to disable option. DONT is only valid response.
 DONT Receiver must say OK.
6. DONT  Sender wants receiver to disable option. WONT is only valid response.
 WONT Receiver must say OK.
© Peter R. Egli 2015
7/10
Rev. 2.50
TELNET indigoo.com
3. TELNET options (2/2)
Options have the form (IAC=Interpret As Command, hex 0xFF):
IAC <command> <option>
TELNET option codes:
Dec/Hex code Name RFC
3/0x03 suppress go ahead 858
5/0x05 status 859
1/0x01 echo 857
6/0x06 timing mark 860
24/0x18 terminal type 1091
31/0x1F window size 1073
32/0x20 terminal speed 1079
33/0x21 remote flow control 1372
34/0x22 linemode 1184
36/0x24 environment variables 1408
© Peter R. Egli 2015
8/10
Rev. 2.50
TELNET indigoo.com
4. TELNET sub-options
Some options require more information than just enable/disable.
Sub-options have the form:
(IAC=Interpret As Command, hex 0xFF):
IAC SB <sub-option> <value> IAC SE
Example Sub-option (TELNET session data stream in TCP connection):
… ff fe 24 ff fa 18 01 ff f0 …
IAC
(Interpret As
Command)
SB
Sub-option
Begin
Sub-option
Terminal Type
Send your
Terminal Type
IAC
(Interpret As
Command)
SE
Sub-option
End
© Peter R. Egli 2015
9/10
Rev. 2.50
TELNET indigoo.com
5. NVT Network Virtual Terminal (1/2)
Each end of the communication implements an NVT (Network Virtual Terminal).
An NVT is an imaginary device that provides a standard, network-wide intermediate
representation of a canonical terminal.
All hosts (user and server) map their local characteristics to the NVT.
NVT is the definition of some standard formatting control codes that must be supported by
an NVT-compliant terminal.
NVT uses 7-bit ASCII characters. End-of-line is represented as CRLF (“rn”).
NVT mandatory control codes:
Name Code Dec/Hex Code Description
NULL NUL 0/0x00 No operation.
Line Feed LF 10/0x0A Moves the printer (cursor) to the next print
line, keeping the same horizontal position.
Carriage Return CR 13/0x0D Moves the printer (cursor) to the left margin of
the current line.
© Peter R. Egli 2015
10/10
Rev. 2.50
TELNET indigoo.com
5. NVT Network Virtual Terminal (2/2)
NVT optional control codes:
Name Code Dec/Hex Code Description
BELL BEL 7/0x07 Produces an audible or visible signal (which does
NOT move the print head (cursor).
Back Space BS 8/0x08 Moves the print head one character position
towards the left margin. [On a printing devices
this mechanism was commonly used to form
composite characters by printing two basic
characters on top of each other.]
Horizontal Tab HT 9/0x09 Moves the printer to the next horizontal tab
stop. It remains unspecified how either party
determines or establishes where such tab stops
are located.
Vertical Tab VT 11/0x0B Moves the printer to the next vertical tab stop.
It remains unspecified how either party
determines or establishes where such tab stops
are located.
Form Feed FF 12/0x0C Moves the printer to the top of the next page,
keeping the same horizontal position. [On visual
displays this commonly clears the screen and
moves the cursor to the top left corner.]

More Related Content

TELNET Protocol

  • 1. © Peter R. Egli 2015 1/10 Rev. 2.50 TELNET indigoo.com Peter R. Egli INDIGOO.COM OVERVIEW OF THE TELNET PROTOCOL FOR REMOTE LOGIN SESSIONS TELNET
  • 2. © Peter R. Egli 2015 2/10 Rev. 2.50 TELNET indigoo.com Contents 1. What is TELNET? 2. TELNET commands 3. TELNET options 4. TELNET sub-options 5. NVT Network Virtual Terminal
  • 3. © Peter R. Egli 2015 3/10 Rev. 2.50 TELNET indigoo.com 1. What is TELNET? • TELNET (RFC854) is a protocol providing platform independent, bi-directional byte-oriented communication between hosts (unlike rlogin which is Unix based). • Most often TELNET is used for remote login to hosts on the Internet. • TELNET is basically a TCP connection with interspersed TELNET control information. • TELNET may use option negotiation for providing additional services. Terminal Driver TELNET Client TCP/IP TCP/IP TELNET Server Pseudo Terminal Driver Login Shell TCP Connection (for both user data and TELNET control) NVT Connection User Server Maps local characteristics to a NVT
  • 4. © Peter R. Egli 2015 4/10 Rev. 2.50 TELNET indigoo.com 2. TELNET commands (1/2) • TELNET commands are used to cause an action at the remote terminal such as erasure of a character (control interaction between client and server). • TELNET commands (and options) are incorporated into the data stream (in-band signaling). • Commands are distinguished from user data by setting the MSB (Most Significant Bit) to 1 (non-ASCII characters). • Commands have the form (IAC=Interpret As Command, hex 0xFF): IAC <command> [option] Example (TELNET session data stream in TCP connection): … ff fc 27 ff fc 24 ff fa 18 00 76 74 31 30 30 ff f0 0d 0a 0d 0a 53 75 6e 4f 53 20 35 2e 39 0d 0a 0d 00 0d 0a 0d 00 ff fd 01 6c 6f 67 69 6e 3a 20 … where … ff fc 27 … are commands (TELNET control) and … 4f 53 20 … is user data. IAC (Interpret As Command) DO Echo Server requests client to do local echo (of characters typed by user).
  • 5. © Peter R. Egli 2015 5/10 Rev. 2.50 TELNET indigoo.com 2. TELNET commands (2/2) TELNET command codes: Name Dec/Hex Code Description SE 240/0xF0 End of subnegotiation parameters. NOP 241/0xF1 No operation. DM 242/0xF2 Data mark: Indicates the position of a Synch event within the data stream. This should always be accompanied by a TCP urgent notification. BRK 243/0xF3 Break Indicates that the "break" or "attention" key was hit. IP 244/0xF4 Suspend Interrupt or abort the process to which the NVT is connected. AO 245/0xF5 Abort output: Allows the current process to run to completion but does not send its output to the user. AYT 246/0xF6 Are you there: Send back to the NVT some visible evidence that the AYT was received. EC 247/0xF7 Erase character: The receiver should delete the last preceding undeleted character from the data stream. EL 248/0xF8 Erase line: Delete characters from the data stream back to but not including the previous CRLF. GA 249/0xF9 Go ahead Under certain circumstances used to tell the other end that it can transmit. SB 250/0xFA Subnegotiation of the indicated option follows. WILL 251/0xFB The sender wants to enable the option itself. WONT 252/0xFC The sender wants to disable the option itself. DO 253/0xFD The sender wants the receiver to enable the option. DONT 254/0xFE The sender wants the receiver to disable the option. IAC 255/0xFF Interpret as a command WILL / WONT / DO / DONT are used for option negotiation.
  • 6. © Peter R. Egli 2015 6/10 Rev. 2.50 TELNET indigoo.com 3. TELNET options (1/2) TELNET option negotiation allows the client and server to provide more services than is possible with pure NVT. TELNET option codes are of the form enable/disable (no parameter for options). Either side (client and server) can initiate option negotiation at any time (also during data transfer). There are 6 cases for option negotiation (between sender and receiver): Sender Direction Receiver Description Means 1. WILL  Sender wants to enable option. Option is in effect.  DO Receiver says OK. 2. WILL  Sender wants to enable option. Option is not in effect.  DONT Receiver says no. 3. DO  Sender wants receiver to enable option. Option is in effect.  WILL Receiver says OK. 4. DO  Sender wants receiver to enable option. Option is not in effect.  WONT Receiver says no. 5. WONT  Sender wants to disable option. DONT is only valid response.  DONT Receiver must say OK. 6. DONT  Sender wants receiver to disable option. WONT is only valid response.  WONT Receiver must say OK.
  • 7. © Peter R. Egli 2015 7/10 Rev. 2.50 TELNET indigoo.com 3. TELNET options (2/2) Options have the form (IAC=Interpret As Command, hex 0xFF): IAC <command> <option> TELNET option codes: Dec/Hex code Name RFC 3/0x03 suppress go ahead 858 5/0x05 status 859 1/0x01 echo 857 6/0x06 timing mark 860 24/0x18 terminal type 1091 31/0x1F window size 1073 32/0x20 terminal speed 1079 33/0x21 remote flow control 1372 34/0x22 linemode 1184 36/0x24 environment variables 1408
  • 8. © Peter R. Egli 2015 8/10 Rev. 2.50 TELNET indigoo.com 4. TELNET sub-options Some options require more information than just enable/disable. Sub-options have the form: (IAC=Interpret As Command, hex 0xFF): IAC SB <sub-option> <value> IAC SE Example Sub-option (TELNET session data stream in TCP connection): … ff fe 24 ff fa 18 01 ff f0 … IAC (Interpret As Command) SB Sub-option Begin Sub-option Terminal Type Send your Terminal Type IAC (Interpret As Command) SE Sub-option End
  • 9. © Peter R. Egli 2015 9/10 Rev. 2.50 TELNET indigoo.com 5. NVT Network Virtual Terminal (1/2) Each end of the communication implements an NVT (Network Virtual Terminal). An NVT is an imaginary device that provides a standard, network-wide intermediate representation of a canonical terminal. All hosts (user and server) map their local characteristics to the NVT. NVT is the definition of some standard formatting control codes that must be supported by an NVT-compliant terminal. NVT uses 7-bit ASCII characters. End-of-line is represented as CRLF (“rn”). NVT mandatory control codes: Name Code Dec/Hex Code Description NULL NUL 0/0x00 No operation. Line Feed LF 10/0x0A Moves the printer (cursor) to the next print line, keeping the same horizontal position. Carriage Return CR 13/0x0D Moves the printer (cursor) to the left margin of the current line.
  • 10. © Peter R. Egli 2015 10/10 Rev. 2.50 TELNET indigoo.com 5. NVT Network Virtual Terminal (2/2) NVT optional control codes: Name Code Dec/Hex Code Description BELL BEL 7/0x07 Produces an audible or visible signal (which does NOT move the print head (cursor). Back Space BS 8/0x08 Moves the print head one character position towards the left margin. [On a printing devices this mechanism was commonly used to form composite characters by printing two basic characters on top of each other.] Horizontal Tab HT 9/0x09 Moves the printer to the next horizontal tab stop. It remains unspecified how either party determines or establishes where such tab stops are located. Vertical Tab VT 11/0x0B Moves the printer to the next vertical tab stop. It remains unspecified how either party determines or establishes where such tab stops are located. Form Feed FF 12/0x0C Moves the printer to the top of the next page, keeping the same horizontal position. [On visual displays this commonly clears the screen and moves the cursor to the top left corner.]