Das Telnet-Protokoll ist als Standard-Protokoll eine Aufbau-Schnittstelle (Interface) für Terminals und Applikationen im Internet. Es sorgt für Basisregeln bei einer Verbindung zwischen einem Client (ein System mit Bildschirm und Tastatur) und einem Server.
Das Telnet-Protokoll nutzt eine TCP-Verbindung und verschickt in ASCII formatierte, 8-bit-codierte Daten getrennt durch Telnet-Kontrollsequenzen. Es bildet somit ein leicht zu bedienendes, bidirektionales (half-duplex), 8-bit.codiertes und kommunikationsorientes System.
Das Telnet-Protokoll beruht auf drei Säulen:
dem Paradigma des virtuellen Netzwerkterminals NVT (Network Virtual Terminal),
dem Prinzip der verhandelten Optionen und
den Verhandlungsregeln.
Das Protokoll ist an sich ein Basisprotokoll, auf das andere Protokolle aus der TCP/IP-Familie (FTP, SMTP, POP3 usw.) geknüpft wurden. Die Telnet-Spezifikationen beschreiben keinerlei Authentifizierungsmaßnahmen. Ein Authentifizierungsprozess findet oberhalb von Telnet auf FTP-Ebene statt, da Telnet vollständig von Benutzer-Applikationen getrennt abläuft. Außerdem ist das Telnet-Protokoll als solches kein sicheres Datentransfermittel, weil Daten unverschlüsselt durch das Netz gehen. Bei der Verbindung eines Gasts mit einem Rechner, auf dem Telnet implementiert ist, nutzt das Protokoll den Port 23.
Von den assoziierten Optionen und Verhandlungsregeln abgesehen sind die Telnet-Protokollspezifikation grundlegend. Die Datenübertragung über Telnet besteht aus dem Übermitteln von Bytes im TCP-Strom. Grunddaten werden aber, wenn nicht anders vorgesehen, zunächst zusammen in einen Puffer gelegt, bevor sie gesendet werden. Daten werden Zeile für Zeile übertragen. Wenn ein Byte 255 übertragen wird, so wird das folgende Byte als Befehl verstanden. Das Byte 255 heißt in diesem Fall IAC (Interpret as Command, zu deutsch wie einen Befehl interpretieren). Weitere Informationen zu den Telnet-Befehlen finden Sie weiter unten und hier.
Die Grundspezifikationen vom Telnet-Protokoll stehen im RFC 854 zu Verfügung, die zahlreichen Optionen sind in den RFC 855 bis 861 beschrieben.
Telnet-bezogene RFC | |
---|---|
RFC 854 | Telnet Protocol Specifications |
RFC 855 | Telnet Option Specifications |
RFC 856 | Telnet Binary Transmission |
RFC 857 | Telnet Echo Option |
RFC 858 | Telnet suppress go ahead Option |
RFC 859 | Telnet Status Option |
RFC 860 | Telnet Timing Mark Option |
RFC 861 | Telnet Extended Options-List |
In den Anfangzeiten des Internets bestand das Netz (ARPANET) aus sehr wenigen, homogenen Rechnerkonfigurationen (Tastaturen Zeichensätze, Auflösungen, Bildschirmzeilenlänge). Auf der anderen Seite besaßen Sitzungsterminals ihre eigene Art der I/O-Datenflusskontrolle.
So wurde von Adaptern für jeden Endbenutzergerätetyp zwecks Zwischenverständigung der Systeme abgesehen und eine Standard-Schnittstelle entwickelt, die NVT (Network Virtual Terminal) genannt wurde. Der Basiskommunikationsstandard war aufgebaut durch: 7 Bits ASCII-Zeichensatz mit dem erweiterten ASCII-Code, drei Kontrollzeichen, fünf optionale Kontrollzeichen und einen trivialen Signalkontrollsatz. So bestückt ermöglicht das Telnet-Protokoll eine Befreiung vom Terminal, was zur Folge hat, dass jeder Benutzer (sei es Client oder Server) mit einem anderen Gast kommunizieren kann, ohne dessen Kenndaten zu wissen.
Die Telnet-eigenen Protokollspezifikationen machen es möglich, bei bestimmten Terminals - ergänzend zu ihren eigenen nicht spezifikationskonformen Eigenschaften - mittels zusätzlicher Dienste gewisse erweiterte Funktionen anzubieten. Diese neue Funktionalitäten werden in Form von Optionen aufgerufen. Das Telnet-Protokoll schlägt somit ein Optionenverhandlungssystem vor mit erweiterten Funktionen als Optionen auf beiden Seiten des Prozesses durch das Einsetzen von Erlaubnisanfragen beim Fernsystem.
Die Telnet-Optionen beeinflussen sie Datenkanäle in beide Richtungen. Jede Endstelle ist imstande, Optionen zu verhandeln, das heißt die Optionen zu definieren, die sie:
benutzen will (DO),
ablehnen will (DON'T),
der anderen Endstelle aufzwingen will (WILL) oder
der anderen Endstelle verbieten will (WON'T).
Auf diese Weise kann jede Partei Benutzungsanträge für Optionen senden. Die andere Stelle muss dann die Option annehmen oder ablehnen. Im Fall einer Anfrage zur Verriegelung einer Option darf der Anfrage-Empfänger dies nicht ablehnen, um völlig NVT-kompatibel zu bleiben.
Die Verhandlungsoptionen im Telnet | ||
---|---|---|
Anfrage | Antwort | Interpretierung |
DO | WILL | Der Sender setzt eine Option an. |
WON'T | Der Empfänger darf die Option nicht anwenden. | |
WILL | DO | Der Sender verwendet die Option nach dem Senden von DO. |
DON'T | Der Empfänger darf die Option nicht anwenden. | |
DON'T | WON'T | Der Sender meldet eine stillgelegte Option an. |
WON'T | DON'T | Der Empfänger meldet, dass der Empfänger eine Option stilllegen muss. |
Die Anzahl der Optionencodes beträgt 255. Telnet sieht aber einen zusätzlichen Adressenraum für neue Optionen vor. Die Dokumentierung neuer Optionen ist in RFC 855 erklärt.
Die Verhandlungsregeln für Optionen sind so ausgelegt, dass Rundschleifen verhindert werden (zum Beispiel wenn eine Seite Optionsverhandlungsanfragen bei jeder Bestätigung der anderen Seite stellt). Dafür gelten die folgenden Regeln:
Anfragen dürfen nur gesendet werden, wenn sich der Modus ändert.
Wenn eine Seite eine Anfrage zum Modus-Ändern empfängt, darf sie nur antworten, wenn sie selbst im besagten Modus ist.
Eine Anfrage darf nur an der Stelle im Datenstrom gestellt werden, wo sie aktiv wird.
Folgende Zeichen sind Befehle zur Kontrolle des virtuellen Netzterminal-Bildschirms:
Bildschirmkontrollbefehle | |||
---|---|---|---|
Nummer | Code | Name | Bedeutung |
0 | NULL | Null | Dieser Befehl verschickt Daten an den Ferngast, ohne dass sie interpretiert werden müssen (etwa um zu melden, dass der lokale Gast online ist). |
1 | LF | Line Feed | Dieser Befehl veranlasst eine Cursor-Bewegung zur nächsten Zeile auf derselben Spalte. |
2 | CR | Carriage Return | Dieses Kommando (Wagenrücklauf) platziert den Cursor auf die linke, äußerste Spalte derselben Zeile. |
Mit dem Befehl CRLF, bestehend aus den beiden Befehlen CR und LF, geht der Cursor geht auf die linke, äußerste Spalte der nächsten Zeile.
Die vorhergehenden Zeichen sind die einzigen (aus den 128 Zeichen des ASCII-Basiscodes und aus den 128 Zeichen des erweiterten Codes) mit einer eigenen Bedeutung am virtuellen Netzwerkterminal. Die folgenden Zeichen dagegen können eventuell eine Bedeutung haben, sind aber nicht unbedingt implementiert.
Befehle zur Bildschirmkontrolle | |||
---|---|---|---|
Nummer | Code | Name | Bedeutung |
7 | BEL | Bell | Sendet ein sichtbares oder hörbares Signal ohne Einfluss auf den Cursor. |
8 | BS | BackSpace | Bringt den Cursor an die vorherige Stelle. |
9 | HT | Horizontal Tab | Bringt den Cursor auf die nächste rechte Tabulatorstelle derselben Zeile. |
11 | VT | Vertical Tab | Bringt den Cursor auf die nächste rechte Tabulatorstelle in der darunterliegenden Zeile. |
12 | FF | Form Feed | Bringt den Cursor auf die gleiche Stelle der nächsten Seite. |
Die folgenden Zeichen dienen der Kontrolle einer Telnet-Sitzung. Diese Befehle dürfen nur dann als Kontrollzeichen interpretiert werden, wenn sie nach dem Escape-Zeichen IAC (Interpret As Command) stehen. Ohne die Sequenz IAC werden sie als reine Zeichen abgesetzt. Um das Zeichen IAC selbst zu benutzen, wird diesem eine Escape-Sequenz vorgelegt.
Den Befehlen der Optionsverhandlung wird ein Byte zur näheren Beschreibung der Option angehängt. So werden unter anderem Signalunterbrechungen und die Löschung von Informationen aus dem Terminal-Cache bewerkstelligt.
Sitzungskontrollzeichen | |||
---|---|---|---|
Nummer | Code | Name | Bedeutung |
240 | SE | Ende der Optionsverhandlung | |
241 | NOP | No Operation | Daten werden an den Ferngast ohne vorherige Interpretation gesendet (etwa um zu melden, dass der lokale Gast online ist). |
243 | DM | Data Mark | Löscht sämtliche Pufferspeicher zwischen dem virtuellen Netzwerkterminal und dem Ferngast. Wird durch Drücken auf die Sync-Taste von NVT ausgelöst und folgend muss unbedingt das TCP-Bit DRINGEND gesetzt werden. |
243 | BRK | Break | Break Zeichen am virtuellen Terminal |
244 | IP | Interrupt Process | Veranlasst ein Aufheben, Unterbrechen oder Aufgeben des Fernprozesses. |
245 | AO | Abort Output | Veranlasst ein Aufheben, Unterbrechen oder Aufgeben des Fernprozesses. |
246 | AYT | Are You There | Prüft, ob das Fernsystem da ist. |
247 | EC | Erase Character | Löscht das vorherige Zeichen. |
248 | EL | Erase Line | Löscht die gesamte vorherige Zeile. |
249 | GA | Go Ahead | Invertiert den Kontrollgang (bei Half-Duplex-Verbindungen) |
250 | SB | SB | Die Daten sind die Folge der vorherigen Optionsverhandlung. |
251 | WILL | Optionsargument | |
252 | WON'T | Optionsargument | |
253 | DO | Optionsargument | |
254 | DON'T | Optionsargument | |
255 | IAC | Interpret As Command | Ändert das folgenden Zeichen-Byte zu einem interpretiebaren Befehl. Der Befehl IAC ist mächtiger als die Basis-Befehle. |
Foto: © Martial Red - Shutterstock.com