یکی از قابلیتهای اولیه یونیکس آن بود که امکان ورود به سیستم را از راه دور برای کاربران فراهم می کرد؛ یعنی یک کاربر می توانست با در اختیار داشتن یک ترمینال از هر مکانی و با استفاده از یک خط ارتباطی همانند خط تلفن با سیستم ارتباط برقرار کرده و به سیستم وارد شود و از آن سرویس بگیرد.
یک کاربر مجاز در این سیستم ابتدا ارتباط فیزیکی ترمینال خود را با کامپیوتر مرکزی برقرار کرده و پس از وارد کردن شماره ی شناسایی و کلمه ی عبور، توسط سیستم یونیکس احزار هویت می شود؛ در صورت مجاز شناخته شدن، یک پروسه ی خاص برای سرویس دهی به او ایجاد خواهد شد.
در حقیقت با این قابلیت، یک کاربر در هر کجای دنیا، در صورتی که بتواند ارتباط فیزیکی خود را با مرکز کامپیوتر برقرار کند، قادر خواهد بود از سیستم سرویس بگیرد؛ با این قابلیت، تفاوتی، بین یک کاربر که در مقرّ کامپیوتر مرکزی نشسته و یک کاربر راه دور وجود ندارد.
با ارزان و سریع شدن سخت افزار و توسعۀ خدمات اینترنت، کامپیوترهای شخصی به خانه ها راه یافته اند ولی هنوز کاربرانی وجود دارند که نیازمند آن هستند تا بجای استفاده از ترمینال، از طریق کامپیوتر شخصی خود به یک سیستم راه دور وارد شوند.
به عنوان مثال فرض کنید که شما یک کامپیوتر شخصی پتیوم با سیستم عامل MS-Windows 9x در اختیار دارید ولی دانشگاه شما دارای سک سیستم مینی کامپیوتر SUN با سیستم عامل یونیکس است.
شما برنامه ای کاربردی خود را در محیط یونیکس نوشته اید و همانجا ذخیره کرده اید.
حال به فرض اگر خواستید در منزل خود همانند کسی که در مرکز کامپیوتر نشته است به محیط یونیکس وارد شده و برنامه های خود را ویرایش یا اجرا نماید، نیازمند یک ترمینال سازگار با یونیکس هستید ولی تنها چیزی که در اختیار شماست یک کامپیوتر شخصی است.
در اینجا برنامۀ TELNET راهگشاست.
برنامه ی TELNET یک ترمینال مجازی و سازگار با ترمینالهای حقیقی از سیستم سرویس دهنده، بر روی کامپیوتر شما شبیه سازی می کند و اجازه می دهد به سیستم یونیکس وارد شده و با آن محاوره نمایید.
برنامۀ TELNET فرامینی را که صادر می کنید به نحو مناسبی به سمت کامپیوتر راه دور هدایت می کند و پس از تغییر و اجرای فرمان صادره بر روی آن کامپیوتر، نتیجه به برنامۀ TELNET بر روی کامپیوتر شما باز خواهد گشت.
بنابراین در یک تعریف ساده، برنامۀ TELNET موظف است بر روی ماشین کاربر، مشخصه های ترمینال حقیقی سرویس دهنده را شبیه سازی نماید. به این ترمینال شبیه سازی شده اختصاراً NVT گفته می شود.
در یک نگاه ساده برنامۀ TELNET، برنامه ساده ای به نظر می رسد، چرا که موظف است پس از برقراری یک نشست فرمانهای کاربر را به سمت ماشین سرویس دهنده ارسال کرده و نتایج خروجی را نشان بدهد؛ در مجموع برنامۀ TELNET پیچیده تر از آنست که نشان می دهد، چرا که موظف است با ترمینالهای متفاوت خود را تطبیق بدهد.
به عنوان مثال فرض کنید یک کاربر از کامپیوتری با کدهای ASCII استفاده می کند در حالی که تمایل داردبه سیستمی وارد شود که استاندارد آن کدهای EBCIDIC است؛ آگاهی از این موضوع و تبدیل این کدها به عهدۀ برنامۀ TELNET است.
یا اگر کاربر یک برنامه به زبان C را بر روی سرویس دهنده اجرا کند، نتایج خروجی منطبق با کنسول خروجی ماشین سرویس دهنده است نه ماشین خودش، بنابراین تطبیق صفحه نمایش شبیه سازی شده، به عهدۀ برنامۀ TELNET است.
مقصود از یک نشست TELNET برقراری موفق یک ارتباط TCP با پورت 23(یا یکی از پورتهای شناخته شده) از ماشین سرویس دهنده است به گونه ای که ماشین سرویس دهنده ضمن پذیرش این ارتباط و احراز هویت کاربر ( در صورت لزوم )، آمادۀ پذیرش فرمانهای صادره از کاربر و اجرای آنها شود.
مراحل یک نشست TELNET به تصویر کشیده شده است. این نشست با اجرای برنامۀ TELNET در خط فرمان آغاز میشود.
در مثال زیر حروف پررنگ توسط کاربر نوشته شده و بقیه، پیغامهای عمومی برنامۀ TELNET هستند در این مثال نام ماشین سرویس دهنده VARMINT و دارای سیستم عامل یونیکس و سخت افزار SUN است.
Tehet varmint
Trying 194.5.30.68…
Connected to varmint.
Escape character is ‘^[“.
SunOS UNIX ( varmint )
Login anna
Password: ******
Varmint%
برنامه Telnet در دو قسمت سازماندهی می شود:
- پروسۀ سرویس دهندۀ TelNet: این برنامه که بر روی کامپیوتر سرویس دهنده نصب و اجرا می شود، موظف است تقاضاهای ورودی برای برقراری یک نشست TelNet را بپذیرد و پس از هماهنگی های لازم با برنامۀ مشتری، به او سرویس بدهد. این برنامه در محیط یونیکس به نام telnetd شناخته می شود.
- پروسۀ مشتری TelNet : این برنامه که بر روی کامپیوتر کاربران نصب می شود و منطبق بر سخت افزار و سیستم عامل ماشین کاربر است وظیفه دارد تا مراحل برقراری یک نشست TelNet را برقرار کرده و یک ترمینال مجازی را به گونه ای شبیه سازی نماید که فرامین صادره از کاربر، منطبق و سازگار با ماشین سرویس دهده باشد بطور عام این برنامه telnet نامیده شده است.وقتی یک نشست telnet برقرار شد کاربر می تواند یک فرمان را به سمت سرویس دهنده ارسال نماید. حال هر کلید یا فرمانی که بر روی کامپیوتر او فشار داده می شود، باید از پروسه های گوناگونی عبور نماید تا تحویل برنامۀ کاربردی شود.
- این روال بصورت زیر است:
- ابتدا برنامۀ telnet بر روی کامپیوتر کاربر، آن کارکتر را تحویل گرفته و پس از پردازش لازم ( از لحاظ تغییر استاندارد کد) از آن یک بستۀ TCP ساخته و از طریق لایه های زیرین آنرا به سمت ماشین مقصد به جریان می اندازد و نهایتاً در مقصد تحویل سرویس دهندۀ telnet می شود.
- برنامه telnet بر روی کامپیوتر سرویس دهنده آنرا تحویل گرفته و در صورت لزوم پس از تبدیل کد و با کمک سیستم عامل، در اختیار برنامۀ کاربردی قرار می دهد.
- برنامۀ کاربردی ضمن پردازش آن، خروجی مناسب را تولید و به سمت برنامۀ telnet در سمت کاربر هدایت می نماید.
جریان عبور داده ها از بین پروسه های مخالف بین برنامۀ مشتری تا برنامه کاربردی در ماشین سرویس دهنده، نشان داده شده است.
حال فرض کنید که سیستم عامل در کامپیوتر سرویس دهنده مبتنی بر « پنجره » باشد بدین معنا که بجای صدور فرامین در خط فرمان، کاربر در یک محیط گرافیکی ( شامل پنجره ، منو، آیکون و …) از سیستم سرویس بگیرد.
در اینجا اتصال به سیستم از راه دور، شرایطِ پیچیده تری دارد. زیرا این محیط گرافیکی باید بر روی کامپیوتر کاربر شبیه سازی شود؛ ولی هر عملی که کاربر بر روی این محیط انجام میدهد باید توسط سرویس دهندۀ راه دور پردازش شود.
در چنین شرایطی، حرکت موس، هر گونه کلیک یا فشار کلیدهای صفحه کلید باید سریعاً به سمت سرویس دهنده ارسال و پاسخ آن از سرویس دهنده برگردد.
در این محیط حجم اطلاعاتی که بین ماشین محلی و ماشین راه دور مبادله می شود بسیار زیادتر از برنامه های مبتنی بر «خط فرمان» است. چرا که هر حرکت مکان نمای موس باید سرویس دهنده گزارش شود.
(برنامه های telnet برای اتصال به سرویس دهنده ای مبتنی بر پنجره وجود دارند، همانند:Motifیا X windows .)
برای انکه برنامۀ telnet را در خط فرمان اجرا نمایید، ابتدا اسم برنامه و نام ماشین سرویس دهنده نوشته می شود مثال:
Merlin> telnet tpci_hpws4
Trying…connected to tpci_hpws4
Escape character is ‘^]’.
HP-UX tcpi-hpws4 A.09.01.A9000/720 (ttys2)
Login: tparker
Password: ********
Tpci_hpws4-1 $ pwd
/u1/tparker
Tpci-hpws4-2 $ cd docs
Tpci_hpws4-3 $ pwd
/u1/parker/docs
Tpci_hpws4-4<ctrl+d>
Connection closed by foreign host Merlin>
وقتی برنامۀ Telnet را برای ورود به یک سیستم راه دور بکار می گیرید، پس از برقراری ارتباط، از شما یک کد کاربری و یک کلمۀ عبور خواسته می شود و در صورت تصدیق هویت ، علامت خط فرمان یونیکس روی خروجی ظاهر می شود. با دیدن این علامت هر فرمانی که روی خط فرمان صادر می نمایید به سمت سرویس دهنده ارسال خواهد شد.
در مثال بالا پس از برقراری ارتباط، پیغام زیر روی خروجی نشان داده شده است:
Escape character is ‘^].
HP-UX tpci_hpws4 A.09.01 A9000/720 (ttys2)
این پیغام به این معناست که شما پس از برقراری نشست telnet، هر فرمانی که صادر کنید به سمت سرویس دهنده ارسال خواهد شد ولی اگر خواستید که فرامین کاربری Telnet را اجرا کنید می توانید با فشار دادن کلید های ctrl+] به حالت فرامین کاربری بروید. در این حالت هر فرمانی که صادر می شود بجای ارسال به سرویس دهنده بصورت محلی و توسط برنامۀ Telnet تحلیل خواهد شد. برای ختمیک نشست Telnet از کلیدهای Ctrl+D استفاده می شود.
در خط دوم از پیغام، ضمن معرفی ماشین سرویس دهنده، پارامتر های استاندارد ترمینال که بر روی آن توافق شده اعلان گردیده است. (ttys2)
بگونه ای که دیده می شود پس از برقراری نشست Telnet فرامین سیستم عامل یونیکس بر روی ماشین راه دور، صادر و اجرا شده است.
برای برقراری ارتباط با یک سیستم عامل مبتنی بر پنجره:
اولاً باید سرویس دهندۀ مورد نظر کاربر، چنین سرویسی را فراهم آورده باشد.
ثانیاً برنامه Telnet بر روی ماشین کاربر باید چنین قابلیتی را داشته باشد.
ثالثاً طرفین بر روی پارامترهای استاندارد توافق کنند تا بتوانند فرامین مربوط با پنجره را تحلیل کرده و خروجی لازم را نشان بدهد.