Telnet

Wśród rozlicznych usług, które mogą być realizowane w sieciach opartych na protokole TCP/IP, jedną z najbardziej elementarnych i podstawowych jest telnet. Technicznie jest to najprostsza z usług sieciowych: służy do nawiązania interaktywnego połączenia terminalowego ze wskazanym komputerem w sieci (a dokładniej z programem - serwerem telnetu, pracującym na tym komputerze). Po nawiązaniu takiego połączenia znaki wpisywane na klawiaturze naszego komputera przesyłane są poprzez sieć do maszyny, z którą jesteśmy połączeni, a przesyłane w odwrotną stronę odpowiedzi wyświetlane są na naszym ekranie. Połączenie takie jest zatem z użytkowego punktu widzenia bardzo podobne do zwykłego połączenia modemowego, z jakiego korzysta się dzwoniąc np. do BBS-ów, albo providerów Internetu udostępniających konta typu shell, czyli pozwalające właśnie na pracę terminalową na maszynie providera (abstrahując rzecz jasna od faktu, że aby móc skorzystać z telnetu, trzeba juz mieć dostęp do Internetu na swoim komputerze). I podobnie jak w przypadku połączenia modemowego, nawiązanie połączenia przez telnet na zdecydowanej większości komputerów uruchamia zwykłą procedurę identyfikacji (logowania) użytkownika, a po jej pomyślnym zakończeniu następuje otwarcie normalnej sesji w systemie operacyjnym, tak jakbyśmy siedzieli przy terminalu podłączonym bezpośrednio do komputera, z którym się łączymy. Telnet pozwala zatem na zdalną pracę na dowolnym komputerze w sieci (pod warunkiem oczywiście posiadania na nim konta) - swego rodzaju bycie w miejscu, w którym nas fizycznie nie ma. Jest to oczywiście możliwe tylko w przypadku komputerów z wielodostępnymi systemami operacyjnymi, dostosowanymi "z natury" do pracy z terminalami, jak np. Unix, IBM VM czy VAX VMS. Nie uda się próba nawiązania połączenia telnetowego z komputerem pracującym pod nadzorem systemu nie będącego wielodostępnym, jak np. MS-DOS (nawet wraz z MS-Windows), lub z systemem nie obsługującym terminali, jak serwer sieci Novell Netware - chyba, że zostało zainstalowane jakieś specjalne oprogramowanie działające jako serwer telnetu, ale nawet w tym przypadku efekt połączenia telnetowego może dalece się różnić od normalnej pracy w systemie operacyjnym.

Program klienta telnetu, który uruchamiamy w celu nawiązania połączenia, w większości systemów operacyjnych nosi nazwę - jak nietrudno się domyślić - telnet, a jego typowym sposobem wywołania jest

telnet adres

gdzie adres jest adresem komputera, z którym chcemy się połączyć - w poleceniu telnet można używać zarówno adresów symbolicznych (domenowych), jak i numerycznych. Po wydaniu takiej komendy pojawi się kilka komunikatów informujących o przebiegu nawiązywania połączenia (ich postać zależy oczywiście od używanego systemu operacyjnego i wersji programu telnet), a po chwili, o ile tylko docelowy komputer nie jest akurat wyłączony lub z innych powodów nieosiągalny w sieci (np. awaria łącza), powinniśmy zobaczyć jego zaproszenie do rozpoczęcia pracy. W przypadku najczęściej spotykanych w sieci komputerów pracujących pod nadzorem różnych odmian Unixa wygląda ono podobnie jak poniżej:

Linux 1.2.3 (ux) (ttyp0)
login:
Pierwsza linijka jest "przedstawieniem się" systemu - zawiera ona opis wersji Unixa pracującej na komputerze, z którym się połączyliśmy (w tym przypadku jest to Linux - popularna darmowa odmiana Unixa na komputery PC - w wersji 1.2.3), nazwę, jaką nadał temu komputerowi administrator (tu "ux" - z reguły nazwa ta jest identyczna z pierwszym członem adresu domenowego, chyba że dany komputer ma w sieci kilka różnych adresów domenowych) oraz ewentualnie (nie wszystkie systemy go podają) numer tzw. wirtualnego terminala, jaki został przypisany naszej sesji przez system operacyjny (tu "ttyp0", a zatem jesteśmy aktualnie pierwszym użytkownikiem pracującym przez telnet - następne sesje będą miały oznaczenia "ttyp1", "ttyp2" itd.). W drugiej natomiast linijce system prosi nas, abyśmy my się jemu przedstawili. Musimy teraz zalogować się w systemie, to znaczy podać nasz identyfikator użytkownika (zwany też nazwą konta), który został nam nadany przez administratora danego komputera. Poza nielicznymi kontami "gościnnymi" (zob. poniżej) większość kont wymaga podania hasła, stanowiącego prywatny, znany tylko użytkownikowi "klucz" umożliwiający wejście do systemu (to właśnie zdobycie tych haseł, a w szczególności hasła administratora systemu, jest celem ataków crackerów - komputerowych włamywaczy; nie należy więc wybierać haseł zbyt łatwych do odgadnięcia, jak np. imię bliskiej osoby). Pojawi się zatem kolejne pytanie
Password:
w odpowiedzi na które musimy wpisać swoje hasło (nie pojawia się ono na ekranie!). Jeżeli czynności te wykonaliśmy poprawnie, to po kilku zależnych od konkretnego komputera komunikatach wstępnych uzyskamy zgłoszenie systemu operacyjnego i możemy rozpocząć normalną pracę.

Z powyższego wynika, że telnet jest usługą przeznaczoną w zasadzie tylko dla osób posiadających konto na komputerze, z którym się łączą. Na nielicznych komputerach istnieją utworzone z uprzejmości administratorów konta "gościnne", zwykle o ograniczonych uprawnieniach w stosunku do kont normalnych użytkowników, na które może logować się każdy bez podania hasła (konta takie typowo noszą nazwy "guest", "visitor", "anonymous" itp.), ze względu jednak na nierzadko zdarzające się nadużycia takich kont, np. poprzez rozsyłanie - pod zasłoną anonimowości - obraźliwych listów pocztą elektroniczną, ich istnienie jest raczej wyjątkiem niż regułą. Znacznie częściej spotykane są natomiast konta ogólnodostępne przeznaczone do wykonywania tylko jednego konkretnego zadania. Można się na nie również logować bez hasła (bądź też hasło jest publicznie znane), ale po zalogowaniu nie uzyskujemy dostępu do linii komend systemu operacyjnego, lecz od razu uruchamiany jest pewien z góry zdefiniowany program, i tylko z tym programem możemy pracować. Zakończenie pracy z programem powoduje automatyczne zakończenie sesji. O niektórych dostępnych w ten sposób programach można przeczytać dalej.

Terminalowy galimatias

Zgodnie z tym, co powiedziano powyżej, telnet działa jak zdalny terminal komputera, z którym się łączymy. Wiadomo jednakże (szczególnie osobom sporo korzystającym z modemów i BBS-ów), że istnieją różne rodzaje terminali i poszczególne komputery przystosowane są do pracy tylko z określonymi spośród nich. Dla użytkownika telnetu istotną wiadomością jest zatem, z jakimi typami terminali potrafi pracować docelowy komputer, a z drugiej strony - jakie terminale potrafi "udawać" (emulować) wykorzystywany przez nas program telnetu. W razie niemożliwości znalezienia "wspólnego języka" możemy mieć kłopoty z poprawną pracą przez telnet - np. niektóre klawisze nie będą działać tak, jak powinny, albo nie będą działać w ogóle, bądź też pewne informacje na ekranie będą niewidoczne. Na szczęście sytuacja nie wygląda tak źle, jak to mogłoby się wydawać z powyższego zdania, ponieważ zdecydowana większość komputerów, do których można podłączyć się przez telnet, jak i programów - klientów telnetu, używa zbliżonych standardów obsługi terminala.

Najprostszym typem terminala jest tzw. tępy terminal (dumb terminal). Jego możliwości sprowadzają się wyłącznie do przesyłania w obie strony drukowalnych znaków ASCII, bez możliwości jakiegokolwiek sterowania sposobem ich wyświetlania. Korzystając z takiego terminala możemy zapomnieć o jakiejkolwiek pracy pełnoekranowej, używaniu klawiszy kursora, wyświetlaniu na ekranie podświetleń czy kolorów, czy chociażby możliwości wyczyszczenia przez program zawartości ekranu. Tępy terminal ma jednakże tę zaletę, że obsługiwany jest przez każdy komputer i program. Jeżeli zatem oprogramowanie po obu stronach nie może uzgodnić wspólnego standardu obsługi terminala, "ratuje się" pracą w tym trybie. W trybie tępego terminala jednakże niektóre programy - przede wszystkim wymagające pracy pełnoekranowej, jak np. edytory - mogą w ogóle nie dać się uruchomić.

Większość systemów Unixowych (i nie tylko) osiągalnych w Internecie, jak również większość typowych programów telnetu, przystosowana jest do obsługi terminali zgodnych z terminalem VT100 firmy DEC, opartych na sekwencjach sterujących ANSI. Terminale te zapewniają realizację m.in. takich funkcji, jak wypisywanie tekstu we wskazanym miejscu ekranu, czyszczenie ekranu lub jego fragmentu, przesuwanie kursora, realizacja podświetleń itp., nadają się zatem do pracy pełnoekranowej. Terminal VT100 i pokrewne terminale z tej samej rodziny (VT102, VT220) stały się praktycznie standardem w Internecie i dysponując oprogramowaniem emulującym takie terminale jesteśmy w stanie połączyć się ze znakomitą większością systemów osiągalnych przez telnet.

Istnieją jednakże systemy o zupełnie innej filozofii obsługi terminali. Są to duże komputery firmy IBM, pracujące pod systemami VM i MVS, dla których standardowym typem terminala jest IBM 3270. O ile w terminalach opartych na sekwencjach sterujących ANSI, takich jak rodzina VT, pomiędzy terminalem a zdalnym komputerem przesyłany jest na bieżąco każdy wprowadzony lub wyświetlany znak, o tyle w terminalach IBM 3270 wymiana informacji pomiędzy komputerem i terminalem odbywa się całymi ekranami - komputer przesyła do terminala cały ekran tekstu, z wyznaczonymi polami, w których użytkownik może wpisywać swoje komendy lub dane. Użytkownik wypełnia pola tekstem lokalnie na terminalu (znaki nie są przesyłane do komputera), i dopiero po naciśnięciu klawisza ENTER odsyłana jest do komputera znowu zawartość całego ekranu. Z takim systemem oprogramowanie emulujące terminal ANSI nie potrafi się "dogadać" inaczej, jak tylko w trybie tępego terminala, w którym z kolei większość standardowego oprogramowania systemu VM nie daje się uruchomić. Na szczęście dla wielu komputerów dostępna jest specjalna wersja programu telnet, o nazwie tn3270, pozwalająca emulować tryb pracy terminala IBM 3270 i łączyć się z komputerami IBM z systemów opartych na ANSI, np. z Unixa. Analogiczny, działający "w odwrotną stronę" program o nazwie tnvt100 dostępny jest dla komputerów pracujących pod VM (oferowana przezeń emulacja terminala VT100 jest jednak dość kiepska - wynika to niestety z samej, opisanej powyżej, filozofii obsługi terminali przez VM).

Tajemnicze numery portów

W informacjach o różnych usługach, z których można skorzystać przez telnet, czasami pojawia się informacja o "numerze portu", z którym trzeba się połączyć. Cóż to takiego? Otóż aby było możliwe równoczesne udostępnianie różnych usług sieciowych (często na tym samym komputerze) i np. dane przesyłane w ramach sesji telnetowej nie pomieszały się z fragmentami obrazka "ściąganego" z serwera WWW, każde połączenie realizowane w protokole TCP/IP oprócz adresu docelowego komputera określa tzw. numer portu na tym komputerze, z którym będziemy się łączyć. Numer portu to jakby "telefon wewnętrzny" do programu - serwera danej usługi po nawiązaniu połączenia z danym komputerem. Każda standardowa usługa sieciowa ma przypisany sobie ustalony numer portu: np. standardowym portem dla telnetu jest 23, poczty elektronicznej - 25, WWW - 80, Usenet news - 119 itp. Wszystkich numerów portów jest 65536, wiele z nich jest zatem niewykorzystanych. Do któregoś z takich niewykorzystanych numerów portów można zatem przypisać program udostępniający w sieci naszą własną, niestandardową usługę (klasycznym przykładem mogą tu być opisywane w numerze styczniowym "Internetu" gry typu MUD). Jak jednak z takiej niestandardowej usługi skorzystać od strony klienta? Najprostszym sposobem jest tu właśnie telnet. Prawie każdy klient telnetu pozwala na jawne podanie innego niż standardowy numeru portu, z którym ma nastąpić połączenie. W ten sposób możemy korzystać z udostępnionych na danym komputerze nietypowych usług. Można oczywiście również wykorzystać telnet do połączenia z portem zarezerwowanym dla którejś z innych usług sieciowych: np. łącząc się z portem 25 na jakimś komputerze obsługującym pocztę elektroniczną uzyskujemy dostęp do systemu transportu poczty i możemy "zabawić się" w "ręczne", bez programu pocztowego, wysyłanie poczty elektronicznej, pracowicie wpisując treść listu wraz ze wszystkimi komendami i nagłówkami wymaganymi przez protokół SMTP. Nawiązując natomiast połączenie z portem 13 jakiegokolwiek komputera Unixowego uzyskamy informację o aktualnym czasie systemowym na tym komputerze - port ten jest wykorzystywany do synchronizacji czasu między komputerami w sieci.

Do czego to się może przydać?

Poza oczywiście podstawowym zastosowaniem telnetu, którym jest zdalne korzystanie z własnego konta na innym komputerze, przez telnet udostępnianych jest w sieci szereg usług informacyjnych. Udostępniane są w ten sposób na ogół te usługi, które wymagają bezpośredniej interakcji z obsługującym je programem, a więc w pierwszym rzędzie rozmaite bazy danych - poczynając od ogromnej liczby dostępnych w Internecie katalogów bibliotecznych, poprzez bazy danych o lotach sond kosmicznych, trzęsieniach ziemi, aż po notowania giełdowe i wyniki sportowe. Część z udostępnianych w ten sposób baz danych jest ogólnie dostępna, część natomiast odpłatna i dostęp do bazy możliwy jest po wykupieniu subskrypcji i uzyskaniu swojego identyfikatora użytkownika i hasła (w Polsce np. udostępniane są w ten sposób serwisy Polskiej Agencji Prasowej) *.

Przez telnet udostępniana jest często możliwość zdalnego korzystania z oprogramowania, którego przeciętny użytkownik nie może zainstalować u siebie - ze względu na wysoki koszt, specyficzne wymagania sprzętowe itp. Możliwy jest również dostęp w ten sposób do niektórych włączonych do Internetu BBS-ów (w Polsce np. warszawskie BBS-y Maloka i Polbox) **. Obok podany jest wykaz usług sieciowych dostępnych przez telnet w Polsce.

Na świecie dostępnych jest bardzo wiele systemów udostępniających informacje przez telnet. Na ogół trudno jest je znaleźć korzystając z klasycznych "wyszukiwaczek" Internetowych, takich jak np. Yahoo, WebCrawler czy Lycos, gdyż koncentrują się one na ogół na zawartości serwerów WWW i gophera. Znakomitym źródłem informacji o usługach dostępnych przez telnet jest natomiast Hytelnet. Jest to okresowo uaktualniana baza danych, zawierająca adresy większości systemów dostępnych przez telnet (w tym przede wszystkim ogromnej liczby katalogów bibliotecznych - autor Hytelneta jest bibliotekarzem) wraz z krótkimi instrukcjami korzystania z każdego z nich. Program obsługujący tę bazę prezentuje jej zawartość w postaci hipertekstowej, umożliwiając natychmiastowe połączenie przez telnet ze wskazanym serwisem. Hytelnet dostępny jest w wersjach dla Unixa, VMS, DOS-u, Windows i Macintosha pod adresem ftp://ftp.usask.ca/pub/hytelnet/. Z Hytelneta można również korzystać bez instalowania go na swoim komputerze, poprzez WWW (http://library.usask.ca/hytelnet), jak również (oczywiście...) poprzez telnet - należy połączyć się z komputerem library.usask.ca i zalogować jako hytelnet, bez hasła (de facto uruchamia się wówczas tekstowa przeglądarka WWW - Lynx - odwołująca się do podanej powyżej strony).


* Ten sposób udostępniania serwisów PAP obecnie już nie funkcjonuje.
** Obydwa opisane BBS-y już nie działają; dostępny jest natomiast przez telnet BBS CHIP-a pod adresem bbs.chip.pl.


Jarosław Rafa 1996. Tekst udostępniony na licencji Creative Commons (uznanie autorstwa - użycie niekomercyjne - bez utworów zależnych). Kliknij tutaj, aby dowiedzieć się, co to oznacza i co możesz z tym tekstem zrobić. W razie jakichkolwiek wątpliwości licencyjnych bądź w celu uzyskania zgody na rozpowszechnianie wykraczające poza warunki licencji proszę o kontakt e-mailem: raj@ap.krakow.pl.

Wersja HTML opracowana 3.04.96, uzupełnienie 22.07.99.


Powrót do wykazu artykułów o Internecie Statystyka