Telnet - TELecommunication NETwork
What is Telnet?
Telnet (short for TELecommunication NETwork) is a network protocol used to provide a bidirectional interactive text-based communication facility using a virtual terminal connection. It allows users to remotely access and manage devices over a TCP/IP network, typically on port 23.
Why is Telnet useful?
Remote Access – Enables users to log into remote systems and control them as if they were local.
Device Management – Commonly used for configuring network devices like routers and switches.
Simple Protocol – Lightweight and easy to implement for basic remote control.
Cross-Platform – Available on most operating systems and networked devices.
Testing and Debugging – Useful for testing open ports and services on remote systems.
How it works?
Connection Initiation – The client initiates a TCP connection to the server on port 23.
Negotiation – Client and server negotiate options like terminal type and echo settings.
Authentication – The user is prompted to enter a username and password (in plaintext).
Command Execution – The user can execute commands on the remote system via a virtual terminal.
Session Maintenance – The session remains active until the user logs out or the connection is closed.
Session Termination – Either side can terminate the session, closing the TCP connection.
Where is Telnet used?
Legacy Systems – Still used in older systems that don’t support SSH.
Network Device Configuration – Used to configure routers, switches, and firewalls.
Remote Server Access – For managing servers without graphical interfaces.
Testing TCP Connectivity – Useful for checking if a port is open on a remote host.
Educational Environments – Used in labs to demonstrate basic networking concepts.
Which OSI layer does this protocol belong to?
User Interaction – Provides a user interface for remote communication.
Runs Over TCP – Operates on top of the transport layer (TCP).
Application-Level Protocol – Handles terminal emulation and command execution at the application layer.
IS Telnet windows specific?
No, Telnet is not Windows-specific.
It is supported on many platforms including Windows, Linux, macOS, and network devices.
IS Telnet Linux Specific?
No, Telnet is not Linux-specific.
It is widely available on Linux and other Unix-like operating systems.
Which Transport Protocol is used by Telnet?
Telnet uses TCP as its transport protocol.
Which Port is used by Telnet?
Telnet typically uses TCP port 23.
Is Telnet using Client server model?
Yes, Telnet uses the client-server model.
The client initiates a connection to the Telnet server to provide a remote command-line interface.
Topics in this section,
In this section, you are going to learn
Terminology
Version Info
Telnet |
RFC |
Year |
Core Idea / Contribution |
---|---|---|---|
Version |
|||
Initial Version |
|||
RFC 854 |
1983 |
Defined the base Telnet protocol, including the concept of a Network Virtual Terminal (NVT), option negotiation using IAC commands, and symmetric terminal-process communication. |
|
Clarifications |
|||
RFC 1123 |
1989 |
Provided implementation requirements and clarifications for Telnet and other protocols as part of host requirements. |
|
Option Extensions |
|||
RFC 4777 |
2006 |
Defined Telnet encryption option using AES, extending Telnet for secure communication. |
|
Character Encoding |
|||
RFC 5198 |
2008 |
Specified Unicode (UTF-8) text transmission over Telnet, improving internationalization support. |
Setup
Setup
TCP Connection Establishment Packet
S.No |
Protocol Packets |
Description |
Size(bytes) |
---|---|---|---|
1 |
TCP Connection Establishment |
Telnet runs over TCP, typically on |
Standard TCP |
port 23 |
header |
||
(2060 bytes) |
|||
Source Port |
Port of the client |
2 |
|
Destination Port |
Usually 23 (Telnet server) |
2 |
|
Sequence Number |
TCP sequence tracking |
4 |
|
Acknowledgment No. |
Acknowledges received data |
4 |
|
Flags |
SYN, ACK, etc. for connection control |
1 |
|
Window Size |
Flow control |
2 |
|
Checksum |
Error checking |
2 |
|
Options (optional) |
TCP options |
Variable |
|
Telnet Data Packet
2 |
Telnet Data Packet |
Transmits user input or output |
Variable |
---|---|---|---|
data |
|||
Data Byte |
ASCII character or control byte (e.g., user input/output) |
1 |
|
IAC (0xFF) |
If present, indicates start of a Telnet command (must be escaped if literal) |
1 |
|
Command Byte |
If IAC is present, this byte specifies the command (e.g., DO, WILL, SB, etc.) |
1 |
|
Option Byte |
If applicable, specifies the Telnet option being negotiated |
1 |
|
Subnegotiation |
Begins with IAC SB, includes option code and data, ends with IAC SE |
Variable |
|
Telnet Command Packet (IAC Sequence) Packet
3 |
Telnet Command Packet (IAC Sequence) |
Used to negotiate options or send |
23+ |
---|---|---|---|
control commands |
|||
IAC |
Interpret As Command (always 0xFF) |
1 |
|
Command |
DO (0xFD), DON’T (0xFE), WILL (0xFB), WON’T (0xFC), etc. |
1 |
|
Option |
Option code (e.g., Echo = 0x01) |
1 |
|
Subnegotiation Packet
4 |
Subnegotiation Packet |
Used for complex option |
Variable |
---|---|---|---|
negotiation |
|||
IAC |
Start of command (0xFF) |
1 |
|
SB |
Subnegotiation Begin (0xFA) |
1 |
|
Option Code |
Option being negotiated |
1 |
|
Data |
Option-specific data |
Variable |
|
IAC SE |
End of subnegotiation (0xFF 0xF0) |
2 |
|
Telnet Control Commands
5 |
Telnet Control Commands |
Used for session control and |
2 |
---|---|---|---|
signaling |
|||
IAC |
0xFF |
1 |
|
Command |
e.g., NOP (0xF1), Break (0xF3) |
1 |
|
Telnet Option Codes
6 |
Telnet Option Codes |
Defines the meaning of the option |
3 |
---|---|---|---|
byte in negotiation |
|||
IAC |
Interpret As Command escape byte to indicate a Telnet command (0xFF) |
1 |
|
Command |
Negotiation command: DO, DONT, WILL, WONT |
1 |
|
Option Code |
Specifies the Telnet feature being negotiated (e.g., Echo, Terminal Type) |
1 |
|
Telnet Session Termination
7 |
Telnet Session Termination |
TCP FIN or RST used to close the |
TCP header |
---|---|---|---|
session |
(2060 bytes) |
||
FIN/RST |
TCP flag bits used to close the |
1 bit each |
|
connection |
(within 1-byte |
||
TCP flags field) |
|||
s.no |
Use Case |
Description |
---|---|---|
1 |
Remote Device Access |
Allows users to log into and control remote systems over a network. |
2 |
Network Equipment Configuration |
Used to configure routers, switches, and firewalls via command-line interface. |
3 |
Legacy System Management |
Still used in older systems that dont support SSH or modern protocols. |
4 |
Port Connectivity Testing |
Helps test if a specific TCP port is open on a remote host (e.g., telnet host 80). |
5 |
Educational Demonstrations |
Used in labs and classrooms to teach basic networking and terminal protocols. |
6 |
Simple Client-Server Testing |
Can simulate a basic client to test server responses (e.g., HTTP, SMTP). |
7 |
Debugging Services |
Useful for manually sending commands to services like SMTP, POP3, or HTTP. |
S.no |
Feature |
Description |
---|---|---|
1 |
Text-Based Communication |
Provides a command-line interface for remote communication using ASCII text. |
2 |
Remote Login |
Allows users to log into remote systems and interact as if locally connected. |
3 |
Port-Based Access |
Operates over TCP, typically on port 23, but can connect to any TCP port. |
4 |
Network Virtual Terminal (NVT) |
Standardizes communication between different systems. |
5 |
Option Negotiation |
Supports dynamic negotiation of features using commands like DO, WILL, etc. |
6 |
Subnegotiation Support |
Allows detailed configuration of options like terminal type, window size, etc. |
7 |
Cross-Platform Compatibility |
Works across various operating systems and hardware platforms. |
8 |
Simple Protocol Structure |
Lightweight and easy to implement for basic remote access needs. |
Text_based_Communication - Testcases
# |
Test Case |
Description |
Expected Result |
---|---|---|---|
1 |
Establish Telnet Session |
Connect to remote host |
Session established |
2 |
Send ASCII Text |
Send basic text command |
Command received |
3 |
Receive ASCII Text |
Receive response from server |
Response displayed |
4 |
Command Echo |
Verify command echoing |
Input echoed correctly |
5 |
Line Termination |
Test newline handling |
Proper line breaks |
6 |
Backspace Handling |
Test character deletion |
Characters removed |
7 |
Special Character Handling |
Send symbols like @#$% |
Symbols transmitted |
8 |
Case Sensitivity |
Send upper/lowercase |
Case preserved |
9 |
Command Prompt Display |
Check prompt visibility |
Prompt shown |
10 |
Session Timeout |
Leave session idle |
Session times out |
11 |
Session Reconnect |
Reconnect after timeout |
Session resumes |
12 |
Invalid Command Handling |
Send unknown command |
Error message shown |
13 |
Multi-line Input |
Send multi-line commands |
All lines processed |
14 |
Telnet Port Access |
Connect to port 23 |
Connection successful |
15 |
Telnet Banner Display |
Check welcome message |
Banner displayed |
16 |
Telnet Negotiation |
Verify option negotiation |
Options exchanged |
17 |
Telnet Escape Character |
Use escape key |
Control returned |
18 |
Telnet Session Logging |
Log session text |
Log file created |
19 |
Telnet Session Termination |
Exit session |
Connection closed |
20 |
Telnet with Localhost |
Connect to 127.0.0.1 |
Session established |
21 |
Telnet with Hostname |
Connect using DNS name |
Name resolved |
22 |
Telnet with IP Address |
Connect using IP |
IP accepted |
23 |
Telnet with IPv6 |
Connect using IPv6 address |
Session established |
24 |
Telnet with Firewall Enabled |
Attempt connection |
Blocked or allowed per rules |
25 |
Telnet with Logging Enabled |
Enable logging |
All text recorded |
26 |
Telnet with Different Shells |
Test bash, sh, cmd |
Shell responds correctly |
27 |
Telnet with User Authentication |
Login prompt appears |
Credentials accepted |
28 |
Telnet with Incorrect Credentials |
Enter wrong password |
Access denied |
29 |
Telnet with Session Banner |
Display custom banner |
Banner shown |
30 |
Telnet with Command History |
Use up/down arrows |
History navigated |
31 |
Telnet with Tab Completion |
Use tab for commands |
Completion works |
32 |
Telnet with Command Aliases |
Use aliases like ll |
Aliases executed |
33 |
Telnet with Environment Variables |
Echo $PATH or %PATH% |
Variables displayed |
34 |
Telnet with Color Output |
Use ANSI color codes |
Colors rendered |
35 |
Telnet with Unicode Characters |
Send non-ASCII text |
Characters handled or rejected |
36 |
Telnet with Line Editing |
Use Ctrl+U, Ctrl+A |
Editing works |
37 |
Telnet with Command Output Paging |
Use more, less |
Output paged |
38 |
Telnet with File Redirection |
Use > or >> |
Output redirected |
39 |
Telnet with Piping |
Use ` |
` to chain commands |
40 |
Telnet with Background Tasks |
Use & to run in background |
Task runs |
41 |
Telnet with Command Chaining |
Use && or ; |
Commands executed in order |
42 |
Telnet with Remote Shell Access |
Access shell remotely |
Shell prompt available |
43 |
Telnet with Command Output Logging |
Capture output |
Output saved |
44 |
Telnet with Session Encryption (via wrapper) |
Use SSL wrapper |
Encrypted session |
45 |
Telnet with Session Replay |
Replay logged session |
Output matches original |
46 |
Telnet with Command Injection Test |
Send malicious input |
Input sanitized or rejected |
47 |
Telnet with Session Monitoring |
Monitor session in real-time |
Output visible |
48 |
Telnet with Multiple Clients |
Connect from multiple terminals |
All sessions stable |
49 |
Telnet with Network Latency |
Simulate delay |
Session remains responsive |
50 |
Telnet with Packet Loss |
Simulate dropped packets |
Session recovers gracefully |
Remote Login - Testcases
# |
Test Case |
Description |
Expected Result |
---|---|---|---|
1 |
Remote Login with Valid Credentials |
Login with correct username/password |
Access granted |
2 |
Remote Login with Invalid Credentials |
Use wrong password |
Access denied |
3 |
Remote Login with Empty Credentials |
Leave fields blank |
Login rejected |
4 |
Remote Login with Locked Account |
Try logging into a locked account |
Access denied |
5 |
Remote Login with Expired Password |
Use expired credentials |
Prompt for password change |
6 |
Remote Login with Disabled Account |
Attempt login |
Access denied |
7 |
Remote Login with Multiple Users |
Simultaneous logins |
All sessions established |
8 |
Remote Login with Admin Privileges |
Login as admin |
Admin shell available |
9 |
Remote Login with Limited User |
Login as restricted user |
Limited access granted |
10 |
Remote Login with SSH Disabled |
Telnet enabled only |
Telnet login succeeds |
11 |
Remote Login with Hostname |
Connect using DNS name |
Login successful |
12 |
Remote Login with IP Address |
Connect using IP |
Login successful |
13 |
Remote Login with IPv6 Address |
Use IPv6 |
Session established |
14 |
Remote Login with Port 23 |
Default Telnet port |
Connection succeeds |
15 |
Remote Login with Custom Port |
Use non-standard port |
Login successful |
16 |
Remote Login with Network Latency |
Simulate delay |
Login still succeeds |
17 |
Remote Login with Packet Loss |
Simulate dropped packets |
Session recovers |
18 |
Remote Login with Firewall Enabled |
Port 23 open |
Login allowed |
19 |
Remote Login with Firewall Blocked |
Port 23 blocked |
Connection fails |
20 |
Remote Login with VPN |
Connect over VPN |
Session established |
21 |
Remote Login with NAT |
Behind NAT device |
Login successful |
22 |
Remote Login with Proxy |
Use Telnet proxy |
Session routed correctly |
23 |
Remote Login with Logging Enabled |
Enable session logs |
Login recorded |
24 |
Remote Login with Session Timeout |
Idle session |
Auto logout |
25 |
Remote Login with Session Reconnect |
Reconnect after drop |
Session resumes |
26 |
Remote Login with Session Lock |
Lock session manually |
Requires unlock |
27 |
Remote Login with Session Termination |
Kill session remotely |
Session ends |
28 |
Remote Login with Host Banner |
Display login banner |
Banner shown |
29 |
Remote Login with Host Message of the Day |
Show MOTD |
Message displayed |
30 |
Remote Login with Shell Access |
Access command shell |
Shell prompt available |
31 |
Remote Login with Restricted Shell |
Limited shell access |
Restrictions enforced |
32 |
Remote Login with Environment Variables |
Check $USER, $HOME |
Variables set |
33 |
Remote Login with Command Execution |
Run remote commands |
Output returned |
34 |
Remote Login with File Access |
Access remote files |
Files listed |
35 |
Remote Login with File Transfer |
Use cat or echo to transfer |
Data transferred |
36 |
Remote Login with Directory Navigation |
Use cd, ls |
Navigation works |
37 |
Remote Login with Process Monitoring |
Use ps, top |
Output displayed |
38 |
Remote Login with System Info |
Use uname, df |
Info retrieved |
39 |
Remote Login with User Switching |
Use su, sudo |
Privilege escalation |
40 |
Remote Login with Multiple Sessions |
Open multiple terminals |
All sessions stable |
41 |
Remote Login with Session Logging |
Log all commands |
Log file created |
42 |
Remote Login with Audit Trail |
Track user actions |
Audit logs updated |
43 |
Remote Login with Access Control |
Enforce login policies |
Access restricted |
44 |
Remote Login with Host Resource Limits |
Limit CPU/memory |
Limits enforced |
45 |
Remote Login with Host Reboot |
Reboot during session |
Session lost |
46 |
Remote Login with Host Shutdown |
Shutdown during session |
Session terminated |
47 |
Remote Login with Host Load |
High CPU load |
Login still possible |
48 |
Remote Login with Host Maintenance Mode |
Maintenance banner shown |
Login restricted |
49 |
Remote Login with Host Time Sync |
Check time consistency |
Time accurate |
50 |
Remote Login with Compliance Policy |
Enforce login rules |
Policy enforced |
Port Based Access - Testcases
# |
Test Case |
Description |
Expected Result |
---|---|---|---|
1 |
Connect to Default Port 23 |
Use standard Telnet port |
Connection successful |
2 |
Connect to Custom Port 2323 |
Use non-standard port |
Connection successful |
3 |
Connect to Closed Port |
Try a port with no service |
Connection refused |
4 |
Connect to HTTP Port 80 |
Connect to web server |
Raw HTTP response shown |
5 |
Connect to SMTP Port 25 |
Connect to mail server |
SMTP banner displayed |
6 |
Connect to FTP Port 21 |
Connect to FTP server |
FTP banner displayed |
7 |
Connect to SSH Port 22 |
Try connecting to SSH |
Binary/garbled output |
8 |
Connect to Echo Port 7 |
Test echo service |
Input echoed back |
9 |
Connect to Disallowed Port |
Blocked by firewall |
Connection blocked |
10 |
Connect to Open TCP Port |
Any open TCP port |
Connection succeeds |
11 |
Connect to UDP Port |
Try non-TCP port |
Connection fails |
12 |
Connect to Port with TLS |
Encrypted service |
Garbled output |
13 |
Connect to Port with Telnet Service |
Confirm Telnet is running |
Login prompt shown |
14 |
Connect to Port with No Listener |
No service bound |
Connection timeout |
15 |
Connect to Port with Rate Limiting |
Port under DoS protection |
Connection delayed or dropped |
16 |
Connect to Port with NAT |
Behind NAT device |
Connection successful |
17 |
Connect to Port with Port Forwarding |
Forwarded to another host |
Connection redirected |
18 |
Connect to Port with Load Balancer |
Behind load balancer |
Session established |
19 |
Connect to Port with Proxy |
Use Telnet proxy |
Connection routed |
20 |
Connect to Port with VPN |
Over VPN tunnel |
Connection successful |
21 |
Connect to Port with IPv4 |
Use IPv4 address |
Connection successful |
22 |
Connect to Port with IPv6 |
Use IPv6 address |
Connection successful |
23 |
Connect to Port with DNS Name |
Use hostname |
Name resolved |
24 |
Connect to Port with IP Address |
Use direct IP |
Connection successful |
25 |
Connect to Port with Port Knocking |
Requires sequence |
Access granted after knock |
26 |
Connect to Port with ACL |
Access control list applied |
Access allowed/denied |
27 |
Connect to Port with IDS/IPS |
Intrusion detection active |
Connection logged or blocked |
28 |
Connect to Port with Logging Enabled |
Log all connections |
Entry recorded |
29 |
Connect to Port with Banner |
Custom banner shown |
Banner displayed |
30 |
Connect to Port with Session Timeout |
Idle session |
Auto disconnect |
31 |
Connect to Port with Session Limit |
Max sessions reached |
Connection refused |
32 |
Connect to Port with Port Scan Detection |
Scan multiple ports |
Alert triggered |
33 |
Connect to Port with Firewall Logging |
Log blocked attempts |
Entry in firewall logs |
34 |
Connect to Port with Port Range |
Scan range of ports |
Open ports identified |
35 |
Connect to Port with Port Redirection |
Redirected to another port |
Connection successful |
36 |
Connect to Port with Port Mirroring |
Monitor traffic |
Telnet session visible |
37 |
Connect to Port with QoS |
Quality of Service applied |
Prioritized traffic |
38 |
Connect to Port with Rate Limiting |
Limit connections/sec |
Excess connections dropped |
39 |
Connect to Port with TCP Reset |
Server sends RST |
Connection closed |
40 |
Connect to Port with TCP Keepalive |
Keep session alive |
Session persists |
41 |
Connect to Port with TCP Window Scaling |
Large window sizes |
Data transferred efficiently |
42 |
Connect to Port with TCP Retransmission |
Simulate packet loss |
Retransmission occurs |
43 |
Connect to Port with TCP Congestion Control |
Under congestion |
Session adapts |
44 |
Connect to Port with TCP Fast Open |
Use TFO-enabled server |
Faster handshake |
45 |
Connect to Port with TLS Wrapper |
Use stunnel or similar |
Encrypted Telnet session |
46 |
Connect to Port with Port Filtering |
Only specific ports allowed |
Connection allowed/denied |
47 |
Connect to Port with Port-Based Authentication |
Auth required per port |
Prompt shown |
48 |
Connect to Port with Port-Specific Logging |
Log per-port activity |
Logs generated |
49 |
Connect to Port with Port-Specific Banner |
Unique banner per port |
Correct banner shown |
50 |
Connect to Port with Port-Based Access Control |
Role-based access |
Access granted/denied |
Network Virtual Terminal - Testcases
# |
Test Case |
Description |
Expected Result |
---|---|---|---|
1 |
NVT Character Set Support |
Use standard ASCII characters |
Characters transmitted correctly |
2 |
NVT Line Termination |
Use CR+LF for new lines |
New lines rendered properly |
3 |
NVT Backspace Handling |
Send backspace character |
Character deleted |
4 |
NVT Null Character Handling |
Send null byte |
Ignored as per spec |
5 |
NVT Control Characters |
Send Ctrl+C, Ctrl+Z |
Control signals interpreted |
6 |
NVT Printable Characters |
Send all printable ASCII |
Displayed correctly |
7 |
NVT Command Interpretation |
Interpret Telnet commands |
Commands processed |
8 |
NVT Option Negotiation |
Negotiate options like ECHO |
Agreement reached |
9 |
NVT Binary Mode Disabled |
Ensure ASCII-only mode |
Non-ASCII rejected |
10 |
NVT Binary Mode Enabled |
Allow binary transmission |
Binary data accepted |
11 |
NVT Echo Option |
Enable/disable echo |
Echo behavior changes |
12 |
NVT Suppress Go Ahead |
Test with option enabled |
No GA character sent |
13 |
NVT Terminal Type Negotiation |
Request terminal type |
Type returned |
14 |
NVT Window Size Negotiation |
Exchange terminal size |
Size updated |
15 |
NVT Environment Variable Negotiation |
Exchange env vars |
Variables received |
16 |
NVT Status Request |
Request session status |
Status returned |
17 |
NVT Timing Mark |
Send timing mark |
Response received |
18 |
NVT Flow Control |
Test XON/XOFF |
Flow controlled |
19 |
NVT Interrupt Process |
Send IP command |
Process interrupted |
20 |
NVT Abort Output |
Send AO command |
Output suppressed |
21 |
NVT Are You There |
Send AYT command |
Response received |
22 |
NVT Erase Character |
Send EC command |
Character erased |
23 |
NVT Erase Line |
Send EL command |
Line erased |
24 |
NVT Break Signal |
Send BRK command |
Break signal sent |
25 |
NVT Subnegotiation |
Use subnegotiation for options |
Data exchanged |
26 |
NVT Option Refusal |
Refuse unsupported option |
Refusal acknowledged |
27 |
NVT Option Acceptance |
Accept supported option |
Option enabled |
28 |
NVT Option Toggle |
Enable/disable option mid-session |
Behavior changes |
29 |
NVT Option Conflict |
Send conflicting options |
Conflict resolved |
30 |
NVT Option Timeout |
No response to negotiation |
Timeout handled |
31 |
NVT Option Retry |
Retry failed negotiation |
Retry succeeds |
32 |
NVT Option Logging |
Log all negotiations |
Log file created |
33 |
NVT Option Order |
Send options in sequence |
Order preserved |
34 |
NVT Option Compression |
Use compressed negotiation |
Data interpreted |
35 |
NVT Option Encryption |
Use encrypted negotiation |
Data secured |
36 |
NVT Option Authentication |
Authenticate during negotiation |
Auth successful |
37 |
NVT Option Rejection Logging |
Log rejected options |
Entry recorded |
38 |
NVT Option Compatibility |
Test across OS types |
Compatible behavior |
39 |
NVT Option with Legacy Client |
Use old Telnet client |
Session works |
40 |
NVT Option with Modern Client |
Use modern Telnet client |
Session works |
41 |
NVT Option with Custom Client |
Use custom-built client |
NVT compliance verified |
42 |
NVT Option with Telnet Proxy |
Use proxy in between |
NVT preserved |
43 |
NVT Option with NAT |
Behind NAT |
NVT negotiation succeeds |
44 |
NVT Option with IPv6 |
Use IPv6 transport |
NVT works |
45 |
NVT Option with IPv4 |
Use IPv4 transport |
NVT works |
46 |
NVT Option with High Latency |
Simulate delay |
NVT still functions |
47 |
NVT Option with Packet Loss |
Simulate loss |
NVT recovers |
48 |
NVT Option with Session Resume |
Resume session |
NVT state restored |
49 |
NVT Option with Session Logging |
Log all NVT traffic |
Log complete |
50 |
NVT Option with Compliance Test |
Validate against RFC 854 |
Fully compliant |
Option Negotiation - Testcases
# |
Test Case |
Description |
Expected Result |
---|---|---|---|
1 |
Send DO Command |
Request server to enable option |
Server responds with WILL or WONT |
2 |
Send DONT Command |
Request server to disable option |
Server responds with WONT |
3 |
Send WILL Command |
Offer to enable option |
Server responds with DO or DONT |
4 |
Send WONT Command |
Refuse to enable option |
Server acknowledges |
5 |
Echo Option Negotiation |
Negotiate ECHO option |
Echo enabled/disabled |
6 |
Suppress Go Ahead Option |
Negotiate SGA option |
GA character suppressed |
7 |
Terminal Type Option |
Request terminal type |
Terminal type returned |
8 |
Window Size Option |
Negotiate window size |
Size exchanged |
9 |
Terminal Speed Option |
Request terminal speed |
Speed returned |
10 |
Remote Flow Control Option |
Enable flow control |
Flow control active |
11 |
Linemode Option |
Enable line mode |
Line mode activated |
12 |
Environment Option |
Exchange environment variables |
Variables received |
13 |
Status Option |
Request session status |
Status returned |
14 |
Timing Mark Option |
Send timing mark |
Response received |
15 |
Negotiate Multiple Options |
Send multiple DO/WILL |
All options negotiated |
16 |
Unsupported Option Request |
Request unknown option |
Server responds with WONT |
17 |
Option Negotiation Timeout |
No response to DO |
Timeout handled |
18 |
Option Negotiation Retry |
Retry failed negotiation |
Retry succeeds |
19 |
Option Negotiation Logging |
Log all negotiation commands |
Log file created |
20 |
Option Negotiation Order |
Send options in sequence |
Order preserved |
21 |
Option Negotiation with Legacy Server |
Use old Telnet server |
Negotiation succeeds |
22 |
Option Negotiation with Modern Server |
Use updated server |
Negotiation succeeds |
23 |
Option Negotiation with Custom Client |
Use custom-built client |
Options negotiated |
24 |
Option Negotiation with Proxy |
Proxy in path |
Options preserved |
25 |
Option Negotiation with NAT |
Behind NAT |
Options negotiated |
26 |
Option Negotiation with IPv6 |
Use IPv6 transport |
Options exchanged |
27 |
Option Negotiation with IPv4 |
Use IPv4 transport |
Options exchanged |
28 |
Option Negotiation with Encryption Wrapper |
Use stunnel or SSL |
Options still negotiated |
29 |
Option Negotiation with Packet Loss |
Simulate loss |
Retransmission occurs |
30 |
Option Negotiation with High Latency |
Simulate delay |
Options negotiated |
31 |
Option Negotiation with Firewall |
Firewall in path |
Options allowed/blocked |
32 |
Option Negotiation with IDS/IPS |
Intrusion detection active |
Negotiation logged |
33 |
Option Negotiation with Logging Enabled |
Enable verbose logs |
Commands recorded |
34 |
Option Negotiation with Logging Disabled |
Disable logs |
No logs created |
35 |
Option Negotiation with Session Resume |
Resume session |
Options re-negotiated |
36 |
Option Negotiation with Session Timeout |
Idle session |
Options renegotiated |
37 |
Option Negotiation with Session Termination |
End session mid-negotiation |
Session closed cleanly |
38 |
Option Negotiation with Session Reconnect |
Reconnect session |
Options renegotiated |
39 |
Option Negotiation with Telnet Daemon |
Use telnetd |
Options handled |
40 |
Option Negotiation with Busy Server |
High load |
Options still negotiated |
41 |
Option Negotiation with Multiple Clients |
Simultaneous sessions |
All options handled |
42 |
Option Negotiation with Invalid Sequence |
Send malformed DO/WILL |
Server ignores or rejects |
43 |
Option Negotiation with Repeated Commands |
Send DO repeatedly |
Server handles gracefully |
44 |
Option Negotiation with Conflicting Commands |
Send DO and DONT |
Conflict resolved |
45 |
Option Negotiation with Custom Option Code |
Use non-standard code |
Server responds appropriately |
46 |
Option Negotiation with Telnet Client Library |
Use libtelnet or similar |
Options negotiated |
47 |
Option Negotiation with Telnet over Serial |
Use serial-to-TCP bridge |
Options negotiated |
48 |
Option Negotiation with Telnet over VPN |
Use VPN tunnel |
Options negotiated |
49 |
Option Negotiation with Compliance Test |
Validate against RFC 854/855 |
Fully compliant |
50 |
Option Negotiation with Security Policy |
Enforce allowed options only |
Policy enforced |
Subnegotiation support - Testcases
# |
Test Case |
Description |
Expected Result |
---|---|---|---|
1 |
Terminal Type Request |
Request terminal type |
Type returned (e.g., VT100) |
2 |
Terminal Type Response |
Server sends terminal type |
Client accepts |
3 |
Window Size Request |
Request window dimensions |
Size returned |
4 |
Window Size Change |
Resize terminal window |
Update sent via subnegotiation |
5 |
Environment Variable Request |
Request env vars |
Variables returned |
6 |
Environment Variable Response |
Server sends env vars |
Client parses correctly |
7 |
Terminal Speed Request |
Request baud rate |
Speed returned |
8 |
Terminal Speed Response |
Server sends speed |
Client accepts |
9 |
Linemode Subnegotiation |
Enable line mode |
Line mode activated |
10 |
Status Subnegotiation |
Request status |
Status returned |
11 |
Terminal Type Negotiation Loop |
Multiple requests |
All handled correctly |
12 |
Window Size Negotiation Loop |
Multiple updates |
All processed |
13 |
Subnegotiation with Legacy Client |
Use old Telnet client |
Subnegotiation succeeds |
14 |
Subnegotiation with Modern Client |
Use updated client |
Subnegotiation succeeds |
15 |
Subnegotiation with Custom Client |
Use custom-built client |
Data exchanged correctly |
16 |
Subnegotiation with Proxy |
Proxy in path |
Data preserved |
17 |
Subnegotiation with NAT |
Behind NAT |
Subnegotiation succeeds |
18 |
Subnegotiation with IPv6 |
Use IPv6 transport |
Data exchanged |
19 |
Subnegotiation with IPv4 |
Use IPv4 transport |
Data exchanged |
20 |
Subnegotiation with Encryption Wrapper |
Use SSL wrapper |
Data encrypted |
21 |
Subnegotiation with Packet Loss |
Simulate loss |
Retransmission occurs |
22 |
Subnegotiation with High Latency |
Simulate delay |
Data still exchanged |
23 |
Subnegotiation with Firewall |
Firewall in path |
Data allowed/blocked |
24 |
Subnegotiation with IDS/IPS |
Intrusion detection active |
Logged or allowed |
25 |
Subnegotiation with Logging Enabled |
Enable verbose logs |
Data recorded |
26 |
Subnegotiation with Logging Disabled |
Disable logs |
No logs created |
27 |
Subnegotiation with Session Resume |
Resume session |
Subnegotiation reinitiated |
28 |
Subnegotiation with Session Timeout |
Idle session |
Subnegotiation ends |
29 |
Subnegotiation with Session Termination |
End session mid-subnegotiation |
Session closed cleanly |
30 |
Subnegotiation with Session Reconnect |
Reconnect session |
Data re-exchanged |
31 |
Subnegotiation with Telnet Daemon |
Use telnetd |
Subnegotiation supported |
32 |
Subnegotiation with Busy Server |
High load |
Subnegotiation succeeds |
33 |
Subnegotiation with Multiple Clients |
Simultaneous sessions |
All subnegotiations succeed |
34 |
Subnegotiation with Invalid Data |
Send malformed data |
Server rejects or ignores |
35 |
Subnegotiation with Repeated Requests |
Send same request repeatedly |
Server handles gracefully |
36 |
Subnegotiation with Conflicting Data |
Send conflicting values |
Conflict resolved |
37 |
Subnegotiation with Custom Option Code |
Use non-standard code |
Server responds appropriately |
38 |
Subnegotiation with Telnet Client Library |
Use libtelnet or similar |
Data exchanged |
39 |
Subnegotiation with Telnet over Serial |
Use serial-to-TCP bridge |
Subnegotiation succeeds |
40 |
Subnegotiation with Telnet over VPN |
Use VPN tunnel |
Data exchanged |
41 |
Subnegotiation with Compliance Test |
Validate against RFC 1091 |
Fully compliant |
42 |
Subnegotiation with Security Policy |
Enforce allowed options only |
Policy enforced |
43 |
Subnegotiation with Terminal Emulation |
Emulate VT100, xterm |
Emulation supported |
44 |
Subnegotiation with Terminal Capabilities |
Exchange capabilities |
Data interpreted |
45 |
Subnegotiation with Terminal Reset |
Reset terminal mid-session |
Subnegotiation reinitiated |
46 |
Subnegotiation with Terminal Refresh |
Refresh screen |
Data re-sent |
47 |
Subnegotiation with Terminal Scroll |
Scroll window |
Size update sent |
48 |
Subnegotiation with Terminal Font Change |
Change font settings |
Font info exchanged |
49 |
Subnegotiation with Terminal Color Support |
Exchange color capabilities |
Colors supported |
50 |
Subnegotiation with Terminal Input Mode |
Switch input modes |
Mode updated |
Cross Platform Compatiblity - Testcases
# |
Test Case |
Description |
Expected Result |
---|---|---|---|
1 |
Telnet on Windows |
Use built-in or third-party client |
Session established |
2 |
Telnet on Linux |
Use telnet command |
Session established |
3 |
Telnet on macOS |
Use Terminal app |
Session established |
4 |
Telnet on FreeBSD |
Use native client |
Session established |
5 |
Telnet on Solaris |
Use system client |
Session established |
6 |
Telnet on Android (via Termux) |
Use Telnet package |
Session established |
7 |
Telnet on iOS (via SSH app) |
Use Telnet-capable app |
Session established |
8 |
Telnet on Embedded Linux |
Use BusyBox Telnet |
Session established |
9 |
Telnet on Raspberry Pi |
Use Raspbian OS |
Session established |
10 |
Telnet on ARM Architecture |
Use ARM-based device |
Session established |
11 |
Telnet on x86 Architecture |
Use standard PC |
Session established |
12 |
Telnet on x64 Architecture |
Use 64-bit system |
Session established |
13 |
Telnet on MIPS Architecture |
Use router OS |
Session established |
14 |
Telnet on PowerPC |
Use legacy hardware |
Session established |
15 |
Telnet on Virtual Machine |
Use VM (e.g., VirtualBox) |
Session established |
16 |
Telnet on Docker Container |
Use containerized client |
Session established |
17 |
Telnet on WSL (Windows Subsystem for Linux) |
Use Linux Telnet in WSL |
Session established |
18 |
Telnet on Cloud VM |
Use AWS/GCP/Azure instance |
Session established |
19 |
Telnet on Chromebook |
Use Linux shell |
Session established |
20 |
Telnet on Smart TV OS |
Use developer shell |
Session established |
21 |
Telnet on Network Switch |
Use CLI interface |
Session established |
22 |
Telnet on Router Firmware |
Use OpenWRT/DD-WRT |
Session established |
23 |
Telnet on IoT Device |
Use Telnet-enabled firmware |
Session established |
24 |
Telnet on Game Console Dev Kit |
Use debug shell |
Session established |
25 |
Telnet on Legacy OS (e.g., Windows XP) |
Use built-in client |
Session established |
26 |
Telnet on Modern OS (e.g., Windows 11) |
Use optional feature |
Session established |
27 |
Telnet Server on Linux |
Host Telnet server |
Accepts connections |
28 |
Telnet Server on Windows |
Use third-party server |
Accepts connections |
29 |
Telnet Server on macOS |
Use telnetd |
Accepts connections |
30 |
Telnet Server on Embedded Device |
Use BusyBox server |
Accepts connections |
31 |
Telnet Server on Virtual Machine |
Host server in VM |
Accepts connections |
32 |
Telnet Server on Docker |
Host server in container |
Accepts connections |
33 |
Telnet Server on Cloud |
Host server in cloud |
Accepts connections |
34 |
Telnet Server on IPv4 |
Use IPv4 address |
Connection successful |
35 |
Telnet Server on IPv6 |
Use IPv6 address |
Connection successful |
36 |
Telnet Server on NAT |
Behind NAT |
Connection successful |
37 |
Telnet Server on VPN |
Use VPN tunnel |
Connection successful |
38 |
Telnet Server on Firewall |
Allow port 23 |
Connection successful |
39 |
Telnet Server with Logging |
Enable logs |
Cross-platform logs recorded |
40 |
Telnet Server with Authentication |
Require login |
Auth works across OSes |
41 |
Telnet Server with Encryption Wrapper |
Use stunnel |
Secure session |
42 |
Telnet Client with Unicode Support |
Send UTF-8 |
Characters handled |
43 |
Telnet Client with ANSI Support |
Use ANSI codes |
Colors rendered |
44 |
Telnet Client with Keyboard Mapping |
Test key inputs |
Keys mapped correctly |
45 |
Telnet Client with Locale Settings |
Use different locales |
Session adapts |
46 |
Telnet Client with Timezone Settings |
Use different timezones |
Time displayed correctly |
47 |
Telnet Client with Accessibility Tools |
Use screen reader |
Text accessible |
48 |
Telnet Client with Scripting |
Automate login |
Script executes |
49 |
Telnet Client with GUI Wrapper |
Use GUI-based Telnet |
Session functional |
50 |
Telnet Client with Compliance Test |
Validate RFC compatibility |
Fully compliant |
Simple Protocol structure - Testcases
# |
Test Case |
Description |
Expected Result |
---|---|---|---|
1 |
Minimal Packet Size |
Send basic command |
Small packet transmitted |
2 |
Basic ASCII Command |
Send ls, dir, etc. |
Command executed |
3 |
No Encryption Overhead |
Inspect packet |
Plain text visible |
4 |
No Handshake Required |
Connect directly |
Session starts immediately |
5 |
No Certificate Exchange |
Inspect connection |
No TLS/SSL negotiation |
6 |
Simple Command Parsing |
Send valid command |
Parsed and executed |
7 |
Simple Error Handling |
Send invalid command |
Error message returned |
8 |
No Client Installation |
Use built-in client |
Works out of the box |
9 |
No Server Configuration |
Use default telnetd |
Accepts connections |
10 |
Lightweight Memory Usage |
Monitor RAM |
Low memory footprint |
11 |
Lightweight CPU Usage |
Monitor CPU |
Minimal usage |
12 |
No GUI Required |
Use CLI only |
Fully functional |
13 |
No Dependencies |
Run Telnet client |
No external libraries needed |
14 |
Simple Port Access |
Use port 23 |
Connection succeeds |
15 |
Simple Protocol Stack |
Use TCP only |
No additional layers |
16 |
Simple Session Start |
Connect and login |
Immediate access |
17 |
Simple Session End |
Type exit |
Session closes |
18 |
Simple Text Output |
Run command |
Output in plain text |
19 |
Simple Input Handling |
Type command |
Input accepted |
20 |
Simple Prompt Display |
Show shell prompt |
Prompt visible |
21 |
Simple Authentication |
Username/password |
Login successful |
22 |
Simple Logging |
Enable session log |
Text recorded |
23 |
Simple Scripting |
Automate with script |
Script runs successfully |
24 |
Simple Debugging |
Use packet sniffer |
Easy to trace |
25 |
Simple Protocol Analysis |
Use Wireshark |
Protocol easily decoded |
26 |
Simple Protocol Documentation |
Refer to RFC 854 |
Easy to understand |
27 |
Simple Option Negotiation |
Use DO/WILL |
Options exchanged |
28 |
Simple Subnegotiation |
Exchange terminal type |
Data received |
29 |
Simple Echo Test |
Enable echo |
Input echoed |
30 |
Simple Go-Ahead Suppression |
Enable SGA |
GA suppressed |
31 |
Simple Terminal Emulation |
Use VT100 |
Emulation works |
32 |
Simple Command History |
Use up arrow |
Previous command shown |
33 |
Simple Line Editing |
Use backspace |
Text edited |
34 |
Simple Session Timeout |
Idle session |
Auto logout |
35 |
Simple Session Reconnect |
Reconnect after drop |
Session resumes |
36 |
Simple Port Redirection |
Forward port 23 |
Connection redirected |
37 |
Simple NAT Traversal |
Behind NAT |
Session works |
38 |
Simple Firewall Rule |
Allow port 23 |
Connection succeeds |
39 |
Simple Proxy Use |
Use Telnet proxy |
Session routed |
40 |
Simple IPv4 Support |
Use IPv4 address |
Connection succeeds |
41 |
Simple IPv6 Support |
Use IPv6 address |
Connection succeeds |
42 |
Simple Localhost Access |
Connect to 127.0.0.1 |
Session established |
43 |
Simple Remote Access |
Connect to remote host |
Session established |
44 |
Simple Multi-Platform Use |
Use on any OS |
Works consistently |
45 |
Simple Embedded Use |
Use on microcontroller |
Session works |
46 |
Simple Cloud Use |
Use on cloud VM |
Session works |
47 |
Simple Container Use |
Use in Docker |
Session works |
48 |
Simple VM Use |
Use in virtual machine |
Session works |
49 |
Simple Compliance Check |
Validate RFC 854 |
Protocol compliant |
50 |
Simple Educational Use |
Teach protocol basics |
Easy to demonstrate |
Reference links