Telnet (short for "telecommunications network")[1] is a client/server application protocol that provides access to virtual terminals of remote systems on local area networks or the Internet.[2] It is a protocol for bidirectional 8-bit communications. Its main goal was to connect terminal devices and terminal-oriented processes.
Telnet consists of two components: (1) the protocol itself which specifies how two parties are to communicate and (2) the software application that provides the service. User data is interspersed in-band with Telnet control information in an 8-bit byte oriented data connection over the Transmission Control Protocol (TCP). Telnet was developed as secret technology in 1969 beginning with, extended in, and standardized as Internet Engineering Task Force (IETF) Internet Standard STD 8, one of the first Internet standards.[3] [4] Telnet transmits all information including usernames and passwords in plaintext so it is not recommended for security-sensitive applications such as remote management of routers.[5] Telnet's use for this purpose has waned significantly in favor of SSH.[6] Some extensions to Telnet which would provide encryption have been proposed.
Telnet consists of two components: (1) the protocol itself and (2) the service component. The telnet protocol is a client-server protocol, based on a reliable connection-oriented transport. This protocol is used to establish a connection to Transmission Control Protocol (TCP) port number 23 or 2323, where a Telnet server application is listening.[7] [8] [9] The Telnet protocol abstracts any terminal as a Network Virtual Terminal (NVT). The client must simulate a NVT using the NVT codes when messaging the server.
Telnet predated UDP/IP and originally ran over Network Control Protocol (NCP).[10] The telnet service is best understood in the context of a user with a simple terminal using the local Telnet program (known as the client program) to run a logon session on a remote computer where the user's communications needs are handled by a Telnet server program.
Even though Telnet was an ad hoc protocol with no official definition until March 5, 1973,[11] the name actually referred to Teletype Over Network Protocol as the (NIC 7176) on Telnet makes the connection clear:[12] Essentially, it used an 8-bit channel to exchange 7-bit ASCII data. Any byte with the high bit set was a special Telnet character. On March 5, 1973, a Telnet protocol standard was defined at UCLA[13] with the publication of two NIC documents: Telnet Protocol Specification, NIC 15372, and Telnet Option Specifications, NIC 15373.
Many extensions were made for Telnet because of its negotiable options protocol architecture. Some of these extensions have been adopted as Internet standards, IETF documents STD 27 through STD 32. Some extensions have been widely implemented and others are proposed standards on the IETF standards track (see below).
The Telnet service is the application providing services over the Telnet protocol. Most operating systems provide a service that can be installed or enabled to provide Telnet services to clients.
Telnet is vulnerable to network-based cyberattacks, such as packet sniffing sensitive information including passwords and fingerprinting.[14] Telnet services can also be exploited to leak information about the server (such as hostnames, IP addresses and brand) by packet sniffing the banner. This information can then be searched to determine if a Telnet service accepts a connection without authentication. Telnet is also frequently exploited by malware due to being improperly configured. In fact, Telnet is targeted by attackers more frequently than other common protocols, especially when compared to UPnP, CoAP, MQTT, AMQP and XMPP . Common devices targeted are Internet of things devices, routers and modems.
The SANS Institute recommends that the use of Telnet for remote logins should be discontinued under normal circumstances for the following reasons:[15]
Extensions to Telnet provide Transport Layer Security (TLS) security and Simple Authentication and Security Layer (SASL) authentication that address the above concerns.[16] However, most Telnet implementations do not support these extensions; and they do not address other vulnerabilities such as parsing the banner information.
IBM 5250 or 3270 workstation emulation is supported via custom telnet clients, TN5250/TN3270, and IBM i systems. Clients and servers designed to pass IBM 5250 data streams over Telnet generally do support SSL encryption, as SSH does not include 5250 emulation. Under IBM i (also known as OS/400), port 992 is the default port for secured telnet.[17]
Historically, Telnet provided access to a command-line interface on a remote host. However, because of serious security concerns when using Telnet over an open network such as the Internet, its use for this purpose has waned significantly in favor of SSH.[18] The usage of Telnet for remote management has declined rapidly, especially on the public Internet, in favor of the Secure Shell (SSH) protocol.[19] SSH provides much of the functionality of telnet, with the addition of strong encryption to prevent sensitive data such as passwords from being intercepted, and public key authentication, to ensure that the remote computer is actually who it claims to be.
The Telnet client may be used in debugging network services such as SMTP, IRC, HTTP, FTP or POP3, to issue commands to a server and examine the responses. For example, Telnet client applications can establish an interactive TCP session to a port other than the Telnet server port. However, communication with such ports does not involve the Telnet protocol, because these services merely use a transparent 8-bit TCP connection, because most elements of the telnet protocol were designed around the idea of accessing a command line interface and none of these options or mechanisms is employed in most other internet service connections.
For example, a command line telnet client could make an HTTP request to a web server on TCP port 80 as follows:[20]
Telnet is commonly used by amateur radio operators for providing public information.[22]
Despite recommendation against it, security researchers estimated that 7,096,465 exposed systems on the Internet continue to use Telnet as of 2021. However, estimates of this number have varied significantly, depending on the number of ports scanned beyond the default TCP port 23.
The technical details of Telnet are defined by a variety of specifications including .
Name | Byte code | Explanation | Notes | |
---|---|---|---|---|
NULL | 0 | |||
Line feed | 10 | |||
Carriage return | 13 | |||
Bell | 7 | |||
Backspace | 8 | |||
Horizontal tab | 9 | |||
Vertical tab | 11 | |||
Form feed | 12 | |||
Source: J. Postel and Reynolds (1983) |
Telnet commands consist of at least two bytes. The first byte is the IAC escape character (typically byte 255) followed by the byte code for a given command:
SE (Subnegotiation end) | 240 | End of negotiation (or data block) of a sub-service of a protocol mechanism | ||
NOP (No operation) | 241 | Data packet that does nothing | ||
Data Mark | 242 | |||
Break | 243 | |||
Interrupt Process | 244 | Request that other party ends current process | ||
Abort output | 245 | Request that other party stops sending output | ||
Are you there? | 246 | |||
Erase character | 247 | |||
Erase Line | 248 | |||
Go ahead | 249 | |||
SB (Subnegotiation begin) | 250 | Initiate the negotiation of a sub-service of a protocol mechanism | ||
WILL | 251 | Informs other party that this party will use a protocol mechanism | ||
WON'T | 252 | Informs other party that this party will not use a protocol mechanism | ||
DO | 253 | Instruct other party to use a protocol mechanism | ||
DON'T | 254 | Instruct other party to not use a protocol mechanism | ||
IAC | 255 | Sequence Initializer/Escape Character | ||
Source: J. Postel and Reynolds (1983) |
All data octets except 0xff are transmitted over Telnet as is.(0xff, or 255 in decimal, is the IAC byte (Interpret As Command) which signals that the next byte is a telnet command. The command to insert 0xff into the stream is 0xff, so 0xff must be escaped by doubling it when sending data over the telnet protocol.)
Telnet also has a variety of options that terminals implementing Telnet should support.
0 | Binary Transmission | |||
1 | Echo | |||
2 | Reconnection | NIC 15391 of 1973 | ||
3 | Suppress Go Ahead | The "Go Ahead" command code (249) in the original Telnet protocol is used to notify to the other end that the other end could start sending back messages. This was used in "half duplex" communication, as some terminals could send messages and receive messages, but not simultaneously. | ||
4 | Approx Message Size Negotiation | NIC 15393 of 1973 | ||
5 | Status | |||
6 | Timing Mark | |||
7 | Remote Controlled Trans and Echo | |||
8 | Output Line Width | NIC 20196 of August 1978 | ||
9 | Output Page Size | NIC 20197 of August 1978 | ||
10 | Output Carriage-Return Disposition | |||
11 | Output Horizontal Tab Stops | |||
12 | Output Horizontal Tab Disposition | |||
13 | Output Formfeed Disposition | |||
14 | Output Vertical Tabstops | |||
15 | Output Vertical Tab Disposition | |||
16 | Output Linefeed Disposition | |||
17 | Extended ASCII | |||
18 | Logout | |||
19 | Byte Macro | |||
20 | Data Entry Terminal | |||
21 | SUPDUP | |||
22 | SUPDUP Output | |||
23 | Send Location | |||
24 | Terminal Type | |||
25 | End of Record | |||
26 | TACACS User Identification | |||
27 | Output Marking | |||
28 | Terminal Location Number | |||
29 | Telnet 3270 Regime | |||
30 | X.3 PAD | |||
31 | Negotiate About Window Size | |||
32 | Terminal Speed | |||
33 | Remote Flow Control | |||
34 | Linemode | |||
35 | X Display Location | |||
36 | Environment Option | |||
37 | Authentication Option | |||
38 | Encryption Option | |||
39 | New Environment Option | |||
40 | TN3270E | See IBM 3270 | ||
41 | XAUTH | |||
42 | CHARSET | |||
43 | Telnet Remote Serial Port (RSP) | |||
44 | Com Port Control Option | |||
45 | Telnet Suppress Local Echo | |||
46 | Telnet Start TLS | |||
47 | KERMIT | See Kermit (protocol) | ||
48 | SEND-URL | |||
49 | FORWARD_X | |||
50-137 | Unassigned | |||
138 | TELOPT PRAGMA LOGON | |||
139 | TELOPT SSPI LOGON | |||
140 | TELOPT PRAGMA HEARTBEAT | |||
141-254 | Unassigned | |||
255 | Extended-Options-List | |||
from 1977 has been recreated as a text art movie served through Telnet.[23]