Aufbau der Telnet Verbindung mit UDP, TCP/IP
Der Aufbau der Telnetverbindung besteht aus den Phasen a) Aufruf des Telnet
Hostrechners mit UDP, b) TCP/IP Synchronisation, c) Vereinbarung von Telnet
Parametern, d) Authentisierung mit Login und Password, e) Äbertragung von Daten
über User und Telnet sowie der Eingabeaufforderung des Hostrechners. SatzID DLä Daten -------------------------------------------------------------------------------- 2A Cl.Adr=84 C3 16 30 DNSAdr=84 C3 14 0D 2C 000101000001 000000000100 05 WRA05 03 URZ 0D UNI-WUPPERTAL 02 DE 0000010001 9E DNSAdr=84 C3 14 0D Cl.Adr=84 C3 16 30 D8 000185800001 000100050006 05 WRA05 03 URZ 0D UNI-WUPPERTAL 02 DE 0000010001 C00C000100010001 51800004 84 C3 14 90 C016000200010001 51800005 02 NS C016C016000200010001 51800006 03 NS3 C016C016000200010001 51800015 07 WS-HAM1 06 WIN-IP 03 DFN C024C016000200010001 5180000A 07 WS-MUE1 C073C016000200010001 5180000D 02 NS 04 RIPE 03 NET 00C048000100010001 51800004 84C3140D C059000100010001 51800004 84C31403 C06B00010001000070 43 230004C1AE4B92C08C 000100010000 CC4A0004C1AE4BA6C0 A2001C00010000 A95E00102001061002 40000000530000 00000193C0A200010001 000155B10004 C10000C1 SatzID Sequ.Nr. Bestät.Nr. FeCl. FeSe Flag DLä Daten -------------------------------------------------------------------------------- 2C 46 50 32 A4 00 00 00 00 2238 02 08 02 04 05 b4 01 01 04 02 A0 00 42 71 AB 46 50 32 A5 EF42 12 04 02 04 05 b4 2D 46 50 32 A5 00 42 71 AC 2238 10 A1 00 42 71 AC 46 50 32 A5 EF42 18 0C FFFD18 FFFD20 FFFD23 FFFD24 2E 46 50 32 A5 00 42 71 B8 222C 18 03 FFFB18 A2 00 42 71 B8 46 50 32 A8 EF3F 10 2F 46 50 32 A8 00 42 71 B8 222C 18 09 FFFC20 FFFC23 FFFC24 A3 00 42 71 B8 46 50 32 B1 EF42 10 A4 00 42 71 B8 46 50 32 B1 EF39 10 06 FFFA1801 FFF0 30 46 50 32 B1 00 42 71 BE 2226 18 0A FFFA1800 ANSI FFF0 A5 00 42 71 BE 46 50 32 BB EF42 18 0F FFFB03 FFFD01 FFFD1F FFFB05 FFFD21 31 46 50 32 BB 00 42 71 CD 2217 18 03 FFFD03 A6 00 42 71 CD 46 50 32 BE EF42 10 32 45 50 32 BE 00 42 71 CD 2217 18 0C FFFB01 FFFC1F FFFE05 FFFC21 A7 00 42 71 CD 46 50 32 CA EF36 10 A8 00 42 71 CD 46 50 32 CA EF42 18 1E FFFE01 FFFB01 0D0A0D0A IRIXb(WRA05) 0D0A0D000D0A0D00 33 46 50 32 CA 00 42 71 EB 21F9 18 03 FFFC01 A9 00 42 71 EB 46 50 32 D0 EF3F 18 07 LOGIN:b 34 46 50 32 D0 00 42 71 F2 21F2 18 03 FFFD01 AA 00 42 71 F2 46 50 32 D0 EF42 10 SatzID Sequ.Nr. Bestät.Nr. FeCl. FeSe Flag DLä Daten -------------------------------------------------------------------------------- 35 46 50 32 D0 00 42 71 F2 21F2 18 08 EA0724 0D0A AB 00 42 71 F2 46 50 32 D8 EF3A 18 06 EA0724 36 46 50 32 D8 00 42 71 F8 21EC 10 AC 00 42 71 F8 46 50 32 D8 EF42 18 0B PASSWORD: 37 46 50 32 D8 00 42 72 03 21E1 18 09 HANSGEO 0D0A AD 00 42 72 03 46 50 32 E1 EF42 18 02 0D0A 38 46 50 32 E1 00 42 72 05 21DF 10 SatzID Sequ.Nr. Bestät.Nr. FeCl. FeSe Flag DLä Daten -------------------------------------------------------------------------------- AE 00 42 72 03 46 50 32 E1 EF42 18 CC IRIX Release 6.5 IP32 WRA05 0D0A Copyright 1987-1999 Silicon Graphics, Inc. All Rights Reserved. 0D0A Last login: Fri Feb 27b 13:57:23 MET 2004 By UNKNOWN`uni- at-home56.dialin. uni-wuppertal.de 0D0A Ihr DISPLAY zeigt n A5 ach: uni-at-home56.dialin.uni- wuppertal.de:0 0D0A Ihre Email-Adresse ist: EA0724`stud.uni- wuppertal.de 0D0A Environments:b 0D0A - Uni: 990812 0D0A - Mail: 990812 0D0A EA0724 WRA05 1%b 39 46 50 32 E1 00 42 73 76 206E 10 Die oben dargestellten Phasen des Aufbaus einer Telnetverbindung sind durch doppelte Leerzeilen voneinander getrennt. Für die erste Phase, Aufruf des Telnet Hostrechners, gelten die Überschriften nur bezüglich der ID, Datenlänge, Daten. An Stelle der Sequenz- und Bestätigungsnummern sind hier die IP Adressen für Client und DN Server gesetzt worden, die unter PPP/IPCP zugeteilt wurden. Die IP Addresse des Client bleibt über die gesamte Session gleich. Für den auf UDP folgenden TCP Dialog gibt die UDP Bestätigung des Servers eine neue IP Adresse hex. 84 C3 14 90. Telnet hat serverseitig feste Portnummern: 0035 für UDP und 0017 für TCP. Die Portnummern des Clients gibt dieser in seinen ersten Anforderungspaketen bekannt (hier hex. 042c für UDP und 0405 für TCP). Der oben dargestellte Dialog enthält nicht die vollständigen Daten der IP, UDP, TCP Headersätze, sondern nur einige für den Aufbau der Telnetverbindung relevante Kennzeichen und Felder der Headersätze. Der Datenteil der Pakete ist vollständig wiedergegeben. Die Sätze, die der Client sendet, haben die Satz-ID 2A u. folgende. Die Sätze, die der Server sendet, haben die Satz-ID 9E u. folgende. Da die Headersätze erhebliche Redundanz aufweisen, die z.B. durch die Van Jacobson Headerkompression wieder beseitigt werden kann, wird hier auf vollständige Darstellung der Headersätze verzichtet. Die Satzstrukturen sind datailliert in den RFC's 791 (IP), 792 (ICMP), 793 (TCP), 768 (UDP), und in der Literatur, z.B. G.M. Glaser, M.Hein, J. Vogel, TCP/IP, 2. Aufl. München 1997, oder in UNIX-Rechnernetze, DATACOM, 1994, beschrieben. Über den neuesten Stand der Werte von Kennziffern gibt das "Assigned Numbers" RFC 790 Auskunft. Die obigen Satzauszüge sind in hexadezimaler Form wiedergegeben. Texte in den Daten sind alphabetisch dargestellt. Leerstellen an Textenden sind als b gekenn zeichnet. Die Leerstellen zwischen hexadezimal dargestellten Zeichen dienen nur der Gliederung und Übersichtlichkeit. Sie sind im Datenstrom nicht enthalten. Da UDP, mit dem der Telnet Verbindungsaufbau beginnt, nicht ein verbindungs orientiertes Protokoll wie TCP ist, besitzt es, auser dem IP-Header, nur einen 8 Byte UDP-Header, mit dem Portnummern, für Telnet fest 0035 und für den Client z.B. 042C übertragen werden. UDP arbeitet mit den von PPP zugewiesenen IP Adressen für Client und Server, die mit den Portnummern den Datenweg identifizieren. Das erste UDP Paket enthält den Aufruf des Hostrechners mit dessen Bezeichnung. Die umfangreiche Bestätigung des Servers enthält Angaben zu den Servern, sowie die neue Server-IP-Adresse hex. 84 c3 14 90. Der Aufbau der TCP Verbindung beginnt mit Senden eines Synchronisationssatzes vom Client. Das Flag (Wert 02) kennzeichnet den Vorgang als Synchronisation. Wert 12 kennzeichnet Synchronisationsbestätigung. Wert 10 kennzeichnet ein ACK. Wert 18 ist ACK+Datentransfer. Weitere Kennzeichen sind Verbindungsreset (Wert 04) und Verbindungsende (Wert 01). Die TCP Verbindung wird durch die Eröffnung einer "Datenbuchhaltung" mit dem Austausch von "Anfangskontoständen" definiert. Der Synchronisationssatz des Client sendet als Kontostand eine 4 Byte Sequenznummer sowie ein 2 Byte "Daten- Fenster" für die Menge zu erwartender Daten. Der Server Bestätigt die Synchronisation durch Addieren von 1 zur Seqenznummer des Client, die für ihn Bestätigungsnummer ist, und Senden eines eigenen Anfangskontostandes durch seine Sequenznummer sowie eines Fensterwertes.Die Sequenznummern der einen Seite werden von der Gegenseite jeweils als Bestätigungsnummern geführt und die Längen empfangener gültiger Daten hinzuaddiert.So sind Wiederholungsanforderungen bei fehlerhafter Übertragung möglich, indem der "alte Kontostand", bis zu dem die Übertragung erfolgreich war, als Bestätigunsnummer zurückgesendet wird. Die Gegenseite kann mit der Übertragung bei diesem "Kontostand" aufsetzen. Vom Empfänger als gültig akzeptierte Daten werden mit dem Längenwert vom "Fenster" subtrahiert. Damit wird signalisiert, daß die Daten richtig übertragen wurden und aus dem Wiederholungspuffer des Senders gelöscht werden können. Der Client subtrahiert fortlaufend vom "Fenster" (FeCl). Der Server setzt das "Fenster" (FeSe) laufend zurück auf den Anfangswert. Auch der Client muß daten mengenbedingt den Fensterwert wieder zurücksetzen. Dieses Verfahren der Datenübertragungskontrolle macht TCP zu einem "verbindungs- orientierten" Protokoll. Das Verbindungsende wird ebenfalls durch Senden von Terminierungspaketen vereinbart. Das Ende der Synchronisationsphase wird vom Client durch Übertragen der für jede Seite gültigen Sequenznummer/Bestätigunsnummer sowie des Fensteranfangs- wertes bestätigt, nachdem die Seqenznummer des Servers ebenfalls um 1 erhöht wurde. Damit sind die "Anfangskontostände" für die Datenübertragung vereinbart. In der Synchronisationsphase werden ferner die maximalen Segmentlängen für die Datenübertragung vereinbart. Die 8 bzw. 4 Byte Werte sind Bestandteil eines um 2 bzw. 1 Datenwort erweiterten TCP Headers. Z.B. wird eine max. Segmentlänge von hex. 05B4, d.h. 1460 Byte vereinbart. Mit PPP wurde bereits eine max. Paketlänge von 250 Byte vereinbart. Längere Datensegmente als 244 Byte (+ 5 Byte PPP Frame = 249 Byte) müssen fragmentiert werden. Das Datenbeispiel enthält bereits zwei fragmentierte Datensegmente mit der UDP Bestätigung und mit der Übertragung der User und Telnet Daten sowie der ersten Telnet Eingabeaufforderung. Hier wird ein Anfangsfragment von hex. F4 = 244 Byte - 40 Byte IP und TCP Header = 204 Datenbyte empfangen, sowie ein Folgefragment von hex. B9 = 185 Byte - 20 Byte IP Header (Folgefragmente enthalten keine TCP Header) = 165 Byte Daten. Diese Paket- und Segmentlängen machen für einen 8 Bit Prozessor die Prüfung und Bearbeitung der einzelnen Datenpakte mit einem 1 Byte Schleifenzähler (bis 256) möglich. Der zusätzliche Fragmentierungsaufwand fällt bei Telnet ausschließlich für den größeren Serverrechner an. In der dritten Phase werden Telnet Parameter in den mit FF beginnenden Befehls- folgen vereinbart. FF kennzeichnet ein nachfolgendes Telnetkommando. F0 bis FE sind Befehlscodes. 0 bis 24 sind Telnetoptionen. Es werden Parameter zu Echo, Abort, Flow Control, Terminal Type und Terminal Speed vereinbart. Einzelheiten zu dieser Kommandosprache werden in der o.g. Literatur erläutert. In der vierten Phase werden LOGIN und PASSWORD eingegeben und bestätigt. Danach werden in der fünften Phase Benutzer- und Systemdaten an den Client übermittelt, sowie der Eingabepromt WRA05 1% des UNIX (IRIX) Systems, auf dem via Telnet gearbeitet werden soll, ausgegeben. Der nach Aufbau dieser Verbindung mögliche Dialog mit IRIX besteht einerseits aus den Tastatureingaben der Unixkommandosprache seitens des Clients und andererseits aus dem Empfang und Display von Meldungen, Dateiverzeichnissen und Dateiinhalten gesendet vom UNIX System des Serverrechners. Bei Tastaureingaben wird jedes Zeichen einzeln übertragen. D.h. ein Tastaturzeichen wird in 20 Byte IP Header + 20 Byte TCP-Header + 5 Byte PPP-Frame und FCS verpackt. Der Server sendet sodann eine Bestätigung (Flag 10=ACK) mit IP und TCP Headern + PPP Frame und FCS. Dann wird das Tastaturzeichen in gleicher Verpackung zur Bestätigung zurückgesendet. Der Client sendet nochmals ACK (Flag 10) mit 45 Byte Headern und PPP Frame zur Bestätigung, daß das zurückerhaltene Zeichen dem Originalzeichen entspricht. Somit werden 2x das Tastaturzeichen selbst, zuzüglich 4x IP, TCP Header + PPP Frame = 182 Zeichen zur "Absicherung" der Übertragung nur eines Tastaturzeichens über das Netz gesendet. Wird dabei nur eines der 182 Byte zerstört, ist die Übertragung des einen Tastaturzeichens nicht mehr erfolgreich. In der Praxis treten dabei allerdings kaum Verluste auf. Die Quote der Tastatureingabefehler, bei denen die Eingabe wiederholt werden muß, ist unverhältnismäßig höher. Dieser overheadintensive Bestätigungsformalismus mit Echo wird nur für die vom Client gesendeten Tastatureingaben vorgenommen. Die vom Server an den Client gesendeten Meldungen, Dateiverzeichnisse und Dateiinhalte werden vom Client nur durch ein einfaches ACK Paket (Flag 10) bestätigt. Der Serverrechner ist jedoch großzügig im Senden von Datenwiederholungen auch ohne Anforderung. Insofern be steht das Problem, aus dem erhaltenen Datenvolumen die benötigten Daten heraus zusortieren, was anhand der Sequenz- und Bestätigungsnummern möglich ist. Eine Wiederholungsaufforderung wird gegeben, indem der Client ein ACK Paket mit der Bestätigungsnummer auf dem Stand vor dem letzten (vorletzten) Empfang an den Server sendet. Übernimmt MTEC4 die Rolle des Servers und wird z.B. von einem PC angerufen, um eine Telnet Verbindung herzustellen, gilt der gleiche Ablauf mit vertauschten Rollen. Mondenias MTEC4 Kleinrechner wickelt diesen UDP/TCP/IP Protokoll- und Telnet betrieb mit einem Codieraufwand von etwa 1KB zusätzlich zu den bereits von PPP benutzten Protokoll- und Senderoutinen von etwa 400 Byte ab. Damit werden auch für einen 1MHz Rechner bei 9600 Baud noch annehmbare Bedienungs- und Über tragungszeiten erreicht. |
HOME |