Jak to działa?

        Znaczna część internautów nie korzysta w ogóle z usługi telnetu. To prawda, że z powodzeniem można zostać użytkownikiem sieci ograniczając się do usług FTP, WWW i Poczty, ale czy aby nie ograniczamy sobie przez to horyzontów? Czy telnet może być użyteczny dla przeciętnego użytkownika sieci? Oczywiście. Oto przykład. Pewnego dnia do jednej z polskich CyberCafe przyszła klientka z zamiarem odczytania poczty z własnego konta, znajdującego się gdzieś, hen na włoskich serwerach. Co prawda lokalny serwer był podłączony do nie byle jakiego łącza (1 Mbps), ale uzyskanie sensownego transferu między polskimi a włoskimi serwerami za pośrednictwem Polpaku jest nie lada problemem. W skrzynce pocztowej zalegało ok. 8 MB pokaźnych maili (przeważnie grafiki w formacie BMP przełożone na MIME). Protokół POP3 (podobnie jak i SMTP) ma jedną poważną wadę - brak możliwości ponowienia transferu tego samego listu, stąd też każdy z listów (o ponad 1 MB rozmiarze) musiał być przesłany bez zerwania transmisji. Okazało się to nie lada problemem. Koniec końców jedynym rozwiązaniem było ściągnięcie inboxu bezpośrednio z serwera (w tym wypadku można było ponowić transfer), niestety usługi telnetowe wspomnianego serwera były zablokowane... Gdyby jednak istniała możliwość dostania się na serwer za pośrednictwem telnetu i uruchomienia dowolnego, unixowego programu pocztowego, problem można by bardzo szybko rozwiązać, przenosząc pliki z obrazkami do innego folderu (na serwerze), a ściągając za pośrednictwem pop3 jedynie istotne informacje. Wnioski: nie pozwólmy zapychać sobie skrzynki pocztowej obrazkami... albo nauczmy się posługiwać telnetem.
        Takie przykłady można by mnożyć, choć z drugiej strony znaczna część użytkowników sieci nawet nie zdaje sobie sprawy z możliwości tkwiących w zdalnej pracy na serwerze. Cóż... pozostawmy to więc wtajemniczonym, a nie wtajemniczeni niech dalej płacą koszmarne rachunki pozostawiając on-line własne maszyny w celu ściągnięcia kilkumegabajtowych plików przy bardzo wolnym transferze...
        Usługa telnetu jest najłatwiejsza do zrozumienia, jeśli ktoś już zetknął się z systemem UNIX, gdzie gros pracy przebiega na terminalach działających w trybie tekstowym. Użytkownik zalogowany do systemu dostaje do dyspozycji powłokę systemową, tak zwany shell. Z jego poziomu może obsługiwać system przez wpisywanie komend i podawanie parametrów. Nadto każda powłoka, a tych jest kilka, żeby tylko wymienić sh, zsh, csh, tcsh, ksh, bash, oferuje pewien zestaw własnych komend, wkompilowanych w jej kod, może interpretować skrypty, dokonywać przekierowania wejścia i wyjścia etc. Do powłoki, a tym samym do systemu, można się dostać pokonawszy wcześniej program o nazwie login, dokonujący weryfikacji użytkownika i sprawdzający, czy ma on prawo pracować na danej maszynie.
        Telnet, jako się rzekło, jest usługą pozwalającą na zdalne zalogowanie na danej maszynie przy użyciu protokołu TCP/IP. Program wykonujący tę usługę nazywa się również "telnet" i w istocie jest emulatorem lokalnego terminala. Z punktu widzenia systemu nie jest bowiem istotne, czy użytkownik pracuje lokalnie, czy też zdalnie, jedyną różnicą może być szybkość odpowiedzi systemu na polecenia. Pod wszystkimi innymi względami terminal emulowany przez program telnet zachowuje się dokładnie tak samo, jako lokalny terminal serwera, czyli najpierw daje nam do obejrzenia login, a po wpisaniu identyfikatora i hasła udostępnia powłokę.
        Telnet jest aplikacją typu serwer-klient, co najlepiej może pokazać poniższy rysunek.

Na rysunku tym można wyróżnić kilka zasadniczych elementów.:
  • Klient Telnet wymienia informacje zarówno z użytkownikiem pracującym na terminalu, jak i z protokołami TCP/IP. Zwykle wszystko co napiszemy przesyłane jest przez połączenie TCP/IP, a to co odebraliśmy wyświetlane jest na naszym terminalu.
  • Serwer Telnet współpracuje często z tzw. pseudoterminalem. Dzięki temu powłoka logowania traktuje sesję Telnet jako uruchomioną na tym serwerze i tak samo widzą ją wszystkie inne programy uruchomione przez tę powłokę, które przesyłają i odbierają informacje z naszego terminala.
  • Wykorzystywane jest tylko jedno połączenie TCP/IP. Ponieważ zdarza się, że klient telnet musi komunikować się z serwerem (i odwrotnie), to musi istnieć jakiś sposób przedstawienia przesyłanych poleceń i odróżniania ich od danych.
  • Programy obsługi terminala i pseudoterminala, wraz z implementacją TCP/IP, są zwykle częścią jądra systemu operacyjnego. Klient i serwer Telnet to zwykle samodzielne aplikacje użytkownika.
  • Aby zalogować się w systemie używając aplikacji Telnet, musimy mieć na nim swoje konto. Zdalne logowanie się nie jest aplikacją do przesyłania dużych ilości danych. Pomiędzy dwoma stronami wymienianych jest wiele małych pakietów. Pisząc krótkie polecenia, generujemy zwykle dość duże odpowiedzi.
Protokół Telnet

        Telnet został opracowany w taki sposób, aby działał pomiędzy dowolnymi hostami i dowolnymi terminalami(pomiędzy różnymi systemami operacyjnymi). Opiera się o protokół TCP, a jego specyfikacja jest zgodna z NVT(ang. Network Virtual Terminal - Wirtualny Terminal Sieciowy ). NVT jest wyimaginowanym urządzeniem, na które mapują swoje terminale oba końce połączenia, klient i serwer. NVT jest urządzeniem znakowym, stąd wzięła się nazwa NVT ASCII.

NVT ASCII

        Określenie NVT ASCII odnosi się do 7-bitowego, opracowanego w USA wariantu znaków ASCII, który miał być używany w protokołach sieci Internet. Każdy z 7-bitowych znaków jest wysyłany jako znak 8-bitowy, w którym najstarszy bit jest ustawiony na 0.


Polecenia Telnet'a

        Telnet w obu kierunkach używa sygnalizacji in-band. Bajt FF(255 - liczba ta nie mieści się w zakresie 7-bitowym, ale istnieje opcja binarna dla aplikacji Telnet pozwalająca na transmisję 8-bitową) jest nazywany IAC(ang. Interpret As Command). Kolejny bajt jest bajtem zawierającym polecenie.
Polecenia:

Nazwa

Kod

Opis

EOF

236

Koniec pliku

SUSP

237

Wstrzymanie bieżącego procesu

ABORT

238

Wyjście z procesu

EOR

239

Koniec Rekordu

SE

240

Koniec podopcji

NOP

241

Nie Działa

DM

242

Znacznik Danych

BRK

243

Przerwa

IP

244

Proces przerwania

AO

245

Zamknięcie wyjścia

AYT

246

Czy jesteś tam?

EC

247

Wyjście

EL

248

Skasuj Wiersz

GA

249

Go Ahead

SB

250

Początek podopcji

WILL

251

Negocjowanie opcji

WONT

252

Negocjowanie opcji

DO

253

Negocjowanie opcji

DONT

254

Negocjowanie opcji

IAC

255

Bajt danych 255



Tryb pracy

        Większość klientów i serwerów Telnet pracuje w czterech trybach.:
  • Tryb półdupleks
            Jest to domyślny tryb pracy obecnie rzadko stosowany. Domyślny terminal NVT jest urządzeniem półdupleksowym, które wymaga polecenia GO AHEAD (GA) wysłanego przez serwer, zanim zostaną zaakceptowane informacje podane przez użytkownika. Wpisywane przez użytkownika znaki są lokalnie odsyłane w postaci echa z klawiatury NVT na drukarkę NVT, dzięki czemu dopiero całe linie wysyłane są z klienta do serwera.
  • Tryb znakowy
            Każdy znak wpisywany przez użytkownika jest natychmiast wysyłany do serwera. Serwer odsyła echo większości znaków, chyba że jego aplikacja wyłączyła tę funkcję. Kłopot z tym trybem pracy polega na tym, że podczas pracy na wolnych łączach lub w sieci o dużym ruchu, opóźnienie w nadsyłaniu echa jest zauważalne przez użytkownika. Tym nie mniej, ten tryb będziemy napotykali jako domyślny w większości używanych obecnie implementacji.
  • Tryb wierszowy
  • Tryb liniowy

Podsumowanie

        Aby obsługiwać niejednorodne środowisko, Telnet jest wyposażony w funkcję negocjowania opcji pomiędzy klientem i serwerem i ustalania trybu pracy na podstawie informacji o tym, co obsługują obie strony połączenia. Jest to podejście, które nie pozwala na implementację prostych rozwiązań klienta i serwera, ale umożliwia wykorzystanie nowszych funkcji, jeśli są one obsługiwane przez obie strony połączenia.


Józek Łapiński


Bibliografia:
  • Ogólnoświatowa sieć komputerowa Internet
  • "Biblia TCP/IP, Tom 1 - Protokoły" - W.Richard Stevens
  • Magazyn "Internet"


MAIN

JAK TO DZIAŁA?
WADY,ZALETY
ZASTOSOWANIE
HISTORIA
PROGRAMY
KONFIGURACJA
PODSUMOWANIE
AUTORZY
LINKI
INDEX




HTML Vadilator 2.1