Network Working Group Jon Postel Request for Comments: 318 UCLA-NMC NIC: 9348 3 Nisan 1972 References: RFC 139, 158 ve NIC 7104
Telnet Protokolü
Ekim 1971 Network Working Group Toplantısı'nda, Resmî Telnet Protokolü'nü açık ve özlü biçimde tanımlayan ve açıklayan bir belgeyi derhal hazırlayacağıma söz verdim. Bu belge, bu sözün hiçbir bölümünü karşılamamaktadır. Bu belge derhal hazırlanmadı. Bu belge ne açık ne de özlüdür. Resmî bir Telnet Protokolü YOKTUR.
Aşağıdaki sayfalar, geçici (ad hoc) Telnet protokolüne ilişkin anlayışımı sunmaktadır. Bu protokol hakkında ciddi soruları olan kişiler bulunmaktadır. Protokole önerilen değişiklikler Bölüm IV'te verilmiştir.
Her türlü yorum, Network Information Center aracılığıyla (Ident = JBP) ya da telefonla (213) 825-2368 numarasından veya posta yoluyla derhal bana iletilmelidir.
Jon Postel
SPADE Group
3804 Boelter Hall
UCLA
Los Angeles, California 90024
I. Ağ Sanal Terminalinin Tanımı
Ağ Sanal Terminali (Network Virtual Terminal - NVT), çift yönlü bir karakter aygıtıdır. Karakterler 8 bitlik kodlarla temsil edilir. NVT'nin zamanlama özellikleri yoktur. 0 ile 127 arasındaki karakter kodları USASCII kodlarıdır (tüm kod değerlerinin ondalık olarak verildiğine dikkat ediniz). 128 ile 255 arasındaki kodlar özel denetim sinyalleri için kullanılır. NVT, bir yazıcı ve bir klavyeye sahip olarak tanımlanır. Yazıcı gelen verilere yanıt verir ve klavye giden verileri üretir.
Yazıcı
NVT yazıcısının taşıyıcı genişliği belirtilmemiştir (yaygın değerler 40, 72, 80, 120, 128, 132'dir). Yazıcı, 95 USASCII grafik karakterinin (32 ile 126 arasındaki kodlar) tümünün gösterimini üretebilir. 33 USASCII denetim kodundan (0 ile 31 ve 127), aşağıdaki 8 tanesinin NVT yazıcısı için özel anlamı vardır.
| Ad | Kod | Anlamı |
|---|---|---|
| NULL (NUL) | 0 | İşlemsizdir. |
| BELL (BEL) | 7 | Duyulabilir veya görülebilir bir sinyal üretir. |
| Back Space (BS) | 8 | Yazıcıyı bir karakter konumu geri alır. |
| Horizontal Tab (HT) | 9 | Yazıcıyı bir sonraki yatay sekme durağına götürür. |
| Line Feed (LF) | 10 | Yazıcıyı bir sonraki satıra taşır (aynı yatay konumu koruyarak). |
| Vertical Tab (VT) | 11 | Yazıcıyı bir sonraki dikey sekme durağına götürür. |
| Form Feed (FF) | 12 | Yazıcıyı bir sonraki sayfanın başına götürür. |
| Carriage Return (CR) | 13 | Yazıcıyı geçerli satırın sol kenarına götürür. |
Kalan USASCII kodları (1 ile 6, 14 ile 31 ve 127) NVT yazıcısının herhangi bir işlem yapmasına neden olmaz.
Klavye
NVT Klavyesi, 128 USASCII kodunun tümünü üretmek için tuşlara veya tuş birleşimlerine ya da tuş dizilerine sahiptir. NVT yazıcısı üzerinde etkisi olmayan kodlar bulunsa da, NVT Klavyesi bu kodları üretebilme yeteneğine sahiptir.
Satır Sonu Kuralı
Bir metin satırının sonu, Carriage Return Line Feed (CR, LF) karakter dizisiyle gösterilecektir. Bu kural, hem gönderme (Klavye) hem de alma (Yazıcı) (sanal) mekanizmaları için geçerlidir.
Break ve Ters Break
Telnet denetim sinyalleri, çoğu terminalde bulunan break, attention veya interrupt düğmesinin kullanımını benzetmek için kullanılabilen bir BREAK sinyali sağlar. Bu sinyalin NVT üzerinde bir etkisi yoktur. BREAK Telnet denetim sinyali sunucudan kullanıcıya doğru kullanıldığında, bazen ters break olarak adlandırılır. Böyle bir ters break'in NVT üzerinde bir etkisi yoktur.
II. Telnet Protokolünün Tanımı
Telnet Protokolünün amacı, bir sitedeki terminal aygıtlarını başka bir sitedeki süreçlere bağlamak için standart bir yöntem sağlamaktır.
Telnet Protokolü üç ana alt yapıdan oluşur: birincisi Başlangıç Bağlantı Protokolü (Initial Connection Protocol - ICP), ikincisi Ağ Sanal Terminali (NVT) ve üçüncüsü burada tanımlanan Telnet denetim sinyalleridir.
Telnet kullanıcı ve sunucu süreçleri, bağlantıları kurmak için ICP'yi izler. Logger terimi, hizmet veren sistemde ICP'ye yanıt veren ve başlangıç etkileşimlerini (örneğin ad ve parola alma) gerçekleştiren süreçler kümesiyle ilişkilendirilmiştir. ICP ile başlangıç soket numarası ve bayt boyutu parametreleri Current Network Protocols (NIC #7104) belgesinde tanımlanmıştır.
Kullanıcı ve sunucu programları arasında (ve tersi yönde) iletilen veriler, içine denetim sinyalleri gömülü bir karakter akışı olarak ele alınır.
Tüm kod değerlerinin ondalık olarak verildiğine dikkat ediniz.
Telnet Denetim Sinyalleri
| Ad | Kod | Anlamı |
|---|---|---|
| DATA MARK | 128 | Veri akışında bir noktayı işaretlemek için kullanılır. INS ile birlikte kullanılır. SYNCH'e bakınız. |
| BREAK | 129 | Kullanıcıdan Sunucuya: Birçok terminalde bulunan Break, Interrupt veya Attention düğmesiyle sunucu açısından aynı anlama sahiptir. |
| Sunucudan Kullanıcıya: Bazı terminallerde kullanılan ters break ile kullanıcı açısından aynı anlama sahiptir. | ||
| NOP | 130 | İşlemsiz. |
| NO ECHO | 131 | Kullanıcıdan Sunucuya: Sunucudan iletilen verilerin yankılarının geri gönderilmemesini ister. |
| Sunucudan Kullanıcıya: Sunucunun iletilen verilerin yankılarını göndermediğini belirtir. Yalnızca ECHO veya NO ECHO'ya yanıt olarak ya da gizli giriş durumunu sona erdirmek için gönderilir. | ||
| ECHO | 132 | Kullanıcıdan Sunucuya: Sunucudan iletilen verilerin yankılarının gönderilmesini ister. |
| Sunucudan Kullanıcıya: Sunucunun iletilen verilerin yankılarını gönderdiğini belirtir. Yalnızca ECHO veya NO ECHO'ya yanıt olarak gönderilir. | ||
| Hide Your Input | 133 | Amaç, bir sunucunun, kullanıcı gizli bir şey (örneğin bir parola) yazmak üzereyken, yerel yankı yapan bir kullanıcı sistemine bu sinyali göndermesidir. Kullanıcı sistemi, sunucu bir NO ECHO sinyali gönderene kadar yerel yankılamayı bastıracak ya da girdinin üzerine yazacaktır. Kullanıcı sisteminin yerel yankı yapmadığı durumlarda, bu sinyal sunucu tarafından gönderilmemelidir. |
| INS | — | Host-to-Host protokolü tarafından tanımlanan ve Network Control Program (NCP) tarafından uygulanan Interrupt on Send sinyali. SYNCH'e bakınız. |
SYNCH
Bu, DATA MARK ve INS'in birleşimiyle gösterilen bir durumdur.
Kullanıcıdan Sunucuya: Sunucu, girdi veri akışını inceleyerek bir DATA MARK sinyali arayacaktır; bir DATA MARK bulunursa, bir INS alınana kadar daha fazla işlem yapmamalıdır. Sunucu bir INS alırsa, veri akışını derhal incelemesi ve bir DATA MARK sinyaline kadar olan break türü karakterler (örneğin ETX, SUB, BREAK) üzerinde uygun işlemleri yapması ve ardından normal işlemeye devam etmesi gerekir. Atlanan karakterler atılabilir.
Sunucudan Kullanıcıya: Kullanıcı, veri akışında bir DATA MARK bulursa, bir INS beklemek zorundadır. Kullanıcı bir INS alırsa, bir DATA MARK'a kadar ve DATA MARK dâhil olmak üzere karakterleri incelemeli ve atmalıdır.
Veri Türleri
Telnet normalde ASCII karakterleriyle çalışır, ancak diğer kod kümelerine kaçış için düzenekler bulunmaktadır. Bu kaçışlardan biri kullanılırsa, Telnet sinyallerinin hâlâ anlamlı olup olmadığı ya da ASCII kümesine nasıl geri dönüleceği burada tanımlanmamıştır. Kod kümesi değişimini göstermek için kullanılan Telnet sinyalleri şunlardır:
| Kod | Anlamı |
|---|---|
| 160 | ASCII – Standart Telnet |
| 161 | Transparent |
| 162 | EBCDIC |
Kullanıcı Telnet Sinyalleri
Aşağıdaki sinyaller, insan kullanıcının, kullanıcı Telnet'inin belirtilen eylemi gerçekleştirmesini sağlamak için kullanılabilir olacaktır.
- Transmit Now – Girilen ve yerel olarak arabelleğe alınmış tüm verileri şimdi iletir. Satır modu ile birlikte kullanılmak üzere tasarlanmıştır.
- Suppress End-of-Line – Girilen ve yerel olarak arabelleğe alınmış tüm verileri şimdi iletir ve bu sinyali izleyen satır sonunu hemen iletmez.
Standart Telnet Gerçekleştirmesi
Kullanan Site
- Kullanıcı, tüm ASCII kodlarını girebilmeli ve iletebilmelidir.
- Kullanıcı, Telnet sinyalleri BREAK, SYNCH, ECHO ve NO ECHO'nun iletilmesini tetikleyebilmelidir.
- Kullanıcı Telnet sinyallerini sağlar (örneğin Transmit Now).
- CR LF satır sonu kuralını uygular.
- Yerel kullanıcı terminalleri için yerel yankılama sağlar.
- Sunucudan alınan Telnet sinyalleri BREAK, SYNCH, NOP, ECHO, NO ECHO ve Hide Your Input'u doğru biçimde işler.
Hizmet Veren Site
- ASCII ile yerel karakter kümesi arasında bir eşleme sağlar.
- Telnet sinyalleri BREAK, SYNCH, NOP, NO ECHO ve ECHO'yu doğru biçimde işler.
- CR LF satır sonu kuralını uygular.
- Kullanan sitenin yankılama sağladığını varsayar. Bir sunucu yankı modu sağlayabilir.
Asgari Telnet Gerçekleştirmesi
Kullanan Site
- Kullanıcı, tüm ASCII kodlarını girebilmeli ve iletebilmelidir.
- Hizmet veren siteden gelen tüm Telnet sinyallerini yok sayar ve siler.
- Yerel kullanıcı terminalleri için yerel yankılama sağlar.
- CR LF satır sonu kuralını uygular.
- Kullanıcı Telnet sinyallerini sağlar.
Hizmet Veren Site
- ASCII ile yerel karakter kümesi arasında bir eşleme sağlar.
- Kullanan siteden gelen tüm Telnet sinyallerini yok sayar ve siler.
- Kullanan sitenin yankılama sağladığını varsayar.
- CR LF satır sonu kuralını uygular.
III. Telnet Protokolünün Tartışılması
Siteler arasında terminal kodu için ağ genelinde standart bir ara gösterimin kullanılması, kullanan ve hizmet veren sitelerin birbirlerinin terminallerinin özellikleri ve terminal işleme kuralları hakkında bilgi tutma gereksinimini ortadan kaldırmayı amaçlar. Bu yaklaşım başarılı olabilir, ancak yalnızca kullanıcı, kullanan site ve hizmet veren site belirli sorumlulukları üstlenirse.
- Hizmet veren site, ara kodun kendi sitesinde beklenen terminal kodlarına nasıl eşleneceğini belirtmelidir.
- Kullanıcı bu eşleme hakkında bilgi sahibi olmalıdır.
- Kullanan site, kullanıcının tüm ara kodları ve kolaylık olarak özel Telnet sinyallerini girebilmesi için bir yol sağlamalı; ayrıca hizmet veren siteden gelen sinyallerin kullanıcı terminalinde nasıl sunulacağını kullanıcıya belirtmelidir.
Diğer düzenekler değerlendirilmiş ancak reddedilmiştir. Örneğin, kullanan sitenin, hizmet veren sitenin beklediği koda çeviri yapmaktan sorumlu olması önerisi reddedilmiştir; çünkü bu, kullanan sitenin tüm hizmet veren sitelerin kod tablolarını tutmasını ve her durum için bir eşleme sağlamasını gerektiriyordu. Ağa yeni ana bilgisayarlar eklendikçe bu bilgiler sürekli bakım gerektirecekti.
Karakter Kümesi
Mevcut veya gelecekteki sitelerin, ağ genelindeki standart kod (8 bitlik bir alanda 7 bit ASCII) ile kendi terminallerinden beklenen kodlar arasındaki eşlemeyi nasıl belirtecekleri bilinmediğinden, kullanıcının 128 ASCII kodunun her birinin iletimini sağlayabilmesi ve ayrıca (tam kullanıcı gücü için) seçilmiş sinyalleri (Telnet denetim niteliğinde olanlar veya break ya da attention gibi özel terminal nitelikli olanlar) gönderebilmesi gerekli görünmektedir.
Kullanan sitedeki kullanıcı/sistem arayüzünün önemi konusunda güçlü bir görüş vardı; ancak aynı derecede güçlü bir görüş de bu sorunun yerel gerçekleştirme konusu olduğu ve ağ genelinde standartlara tabi tutulmak yerine kullanan sitenin kurulum felsefesini yansıtması gerektiği yönündeydi. Bu alandaki bazı değerlendirme başlıkları şunlardır:
Kullanan sitede mevcut olmayan özel grafiklerin kullanıcı terminalinde nasıl temsil edileceği.
Yalnızca büyük harfli aygıtlarda büyük/küçük harf sorununun ele alınması.
- Küçük harfli çıktının temsil edilmesi.
- Kullanıcılara shift ve shift-lock sinyallerinin sağlanması.
Telnet'e düzenleme yeteneklerinin dâhil edilmesi.
Yerel kullanıcılara sunulmayan ağ modu kullanıcı seçeneklerinin genişletilmesi (örneğin çıktıyı tutma veya yazdırmayı durdurma).
Kullanıcıların klavye girdisinin nasıl çevrileceğini belirtebilmesine izin verilmesi; örneğin terminalden gelen bir karakterin, kullanıcının Telnet'i tarafından belirli bir dizgenin gönderilmesine neden olması.
Telnet Protokolü sorununa önerilen çözüm, asgari bir gerçekleştirme için bir mekanizma sağlarken, mevcut ve gelecekteki kullanım için terminal uygulamalarında, süreçten sürece iletişimde ve veri ya da denetim bilgisini iletmek için diğer kurallar tarafından kullanılabilecek daha zengin protokol kümelerinin geliştirilmesi için bir temel sunuyor gibi görünmektedir.
ASCII'nin ağ genelinde bir kod olarak kullanılması anlayışı uzun süredir yerleşmiştir. Telnet'te kullanımı, azami 128 karakterlik bir karakter kümesi sınırlamasıyla ilgili bir sorun ortaya çıkarmıştır. Bazı sistemler, çalışmaları sırasında bundan daha fazlasını sağlar ve bu nedenle hizmet veren site olarak bire bir eşleme yapamazlar.
Bu tür her hizmet veren site, muhtemelen tüm sistem denetim sinyallerini içeren makul derecede kullanışlı bir karakter kümesini, kendi kodlarının 128 tanesini eşleyerek ve diğer kodlara ağ kullanıcılarının erişimini sağlamayarak sunabilir. Ancak dışarıda bırakılan herhangi bir karakter, daha sonra o sitede büyük bir uygulamada özel bir denetim sinyali olarak kullanılabilir. Bu durum, ağ kullanıcılarının o uygulamanın sunduğu olanaktan mahrum kalmasına yol açabilir. Bu nedenle hizmet veren siteler, ASCII kodu ile hizmet veren sistemde kullanılan kod arasında tam bir eşleme sağlamaya teşvik edilmektedir. Bu, sunucunun, sunucu karakter kümesindeki tek karakterlere karşılık gelen iki karakterli ASCII dizilerini belirtmesini gerektirebilir.
NVT yazıcısı üzerinde etkisi olmayan bazı ASCII kodlarının bulunduğuna dikkat ediniz. Bu kodlar, hizmet veren süreç tarafından çıktıda üretildiğinde veya kullanıcı tarafından girildiğinde ağ üzerinden iletilmelidir.
Satır Sonu Kuralı
Bir terminalde fiziksel bir satırın sonunun gösterimi, farklı ağ ana bilgisayarlarında farklı biçimlerde uygulanır. Örneğin bazıları return (veya new line) tuşunu kullanır; terminal donanımı hem taşıyıcıyı ya da yazıcıyı satır başına döndürür hem de kâğıdı bir sonraki satıra ilerletir. Diğer uygulamalarda kullanıcı carriage return tuşuna basar ve donanım taşıyıcıyı geri döndürürken yazılım terminale bir line feed gönderir. Ağ genelindeki gösterim, carriage return'u izleyen line feed'dir. Bu, hedeflenen fiziksel biçimlendirmeyi temsil eder ve hem kullanan site hem de hizmet veren site tarafından yorumlanmalı ve uygun şekilde çevrilmelidir.
Örnek: Bir Multics kullanıcısı, ağ üzerinden bir hizmet veren site ana bilgisayarında çalışmaktadır. Oturum sırasında kullanıcı, Model 37 TTY'sinde birçok kez New Line tuşuna basar. Her seferinde Multics sistemi bir New Line kesmesiyle uyanır, arabelleğe alınmış karakter satırı Telnet'e aktarılır ve burada özel karakterler açısından taranır. Hiçbiri bulunmazsa, New Line'ın girildiği yere carriage return ve ardından line feed eklenir ve satır iletim için NCP'ye teslim edilir. Benzer şekilde, Multics Telnet, hizmet veren siteden gelen veri akışında carriage return line feed dizisini bulduğunda, bu iki karakter uygun New Line kodu ile değiştirilir ve terminale gönderilir.
Telnet, bir satırın sonunun ASCII karakter çifti CR LF ile belirtileceğini tanımlar. Gerçek dünyadaki birçok aygıtta yalnızca tek bir yeni satır (NL) işlevi vardır. Birçok bilgisayar sisteminde ise bazı programlarda CR ve LF işlevleri, sağladıkları biçim etkisinin ötesinde anlamsal bir anlam taşıyacak şekilde kullanılmıştır. Ayrıca birçok bilgisayar sistemi CR ve LF işlevlerinin ayrı ayrı kullanılmasına izin verir (örneğin bir satırın üstüne yazılabilmesi gibi). Yalnızca bir NL işlevine sahip bir aygıta NVT’yi eşlemek zorunda olan Telnet (kullanıcı) programları için ortaya çıkan sorunlardan biri, CR LF ile nasıl başa çıkılacağıdır. Bir çözüm, CR’den sonra gelen karakteri incelemektir. Eğer bir LF bulunursa, NL işlevi gerçekleştirilir; başka herhangi bir şey bulunursa satırın başına geri gidilir.
Bir başka sorun, yerel olarak yeni satır işlevini tetiklemek için nokta "." kullanan ve bazı programlarda CR ve LF’yi anlamsal olarak önemli işlemler için kullanan bir bilgisayar sistemi durumudur. Kullanıcı Telnet CR LF dizisini gönderdiğinde bu "yeni satır" mı demektir, yoksa "CR işlemi"nin ardından "LF işlemi" mi gelir? Bu soruna bir çözüm, CR LF çiftinin parçası olması amaçlanmayan bir CR’nin Telnet programları tarafından CR NUL çifti olarak gönderilmesini zorunlu kılmaktır. Böylece alıcı program her zaman bir CR’yi tutabilir ve bir yeni satır işlevinin amaçlanıp amaçlanmadığını belirlemek için sonraki karakteri inceleyebilir. Bu çözüm şiddetle önerilmektedir.
Burada bir başka soru ortaya çıkar: "Yeni satır anlamına gelmesi amaçlanan bir CR ile bir LF arasına Telnet sinyali NOP (kod 130) göndermeye izin var mıdır?" Yanıt "evet, NOP sinyali veri akışının herhangi bir yerinde bulunabilir" şeklindedir.
Yankılama
Yankılama için varsayılan durumun, gerekli her türlü yankının kullanılan site tarafından sağlanması olması yönündeki karar, yankılamayı kapatamayan ya da tuş vuruşları sonucunda yerel olarak yazdıran terminallere sahip bazı kurulumların karşılaştığı zorluklar nedeniyle alınmıştır. Hizmet veren siteler "kullanıcı yankılamayı kapatsın" tutumunu benimseyebilirdi, ancak bu kullanıcı için gereksiz bir yük gibi görünmektedir. Buna ek olarak, bazı hizmet veren siteler hiç yankı hizmeti sunmamayı seçebilir; bu durumda yankısız varsayımı ağ genelinde tekdüze bir durum sağlar, diğer varsayımlar ise karma bir başlangıç durumu oluştururdu.
"ECHO" ve "NO ECHO" sinyallerini kullanma geleneği, hem dinamik yankı denetimi gereksinimlerini hem de Telnet Protokolünün asgari bir gerçekleştirimini karşılıyor gibi görünmektedir. Kullanıcı ECHO veya NO ECHO istediğinde, sunucunun istenen moda geçerek yanıt verdiğine (ve olası olarak yeni moda ait sinyali geri gönderdiğine) ya da mevcut modda kalıp mevcut moda ait sinyali geri gönderdiğine dikkat ediniz. Sunucu, HIDE YOUR INPUT’u iptal etmek için kullanılabilecek bir NO ECHO durumu dışında, kendiliğinden asla ECHO veya NO ECHO sinyali göndermez.
Girdinizi Gizleyin
HIDE YOUR INPUT sinyali, ne kadarının gizleneceğinin belirsiz olması nedeniyle bazı güçlükler sunar. Sunucu sitesi genellikle gizlinin ne kadar uzun olduğunu bilir, ancak kullanıcı Telnet genel olarak bunu bilmez. Ayrıca kullanıcı sitesi yerel yankılamayı bastıramıyorsa, zor bir gerçekleştirim sorunu ortaya çıkar. Bir olasılık, kullanılan sitenin tüm bir satırı bir maske ile üstten yazdırması ve ardından kullanıcının gizlisini bu maske üzerine yazmasıdır. Gizli bir satırdan uzunsa, maske kullanımının tekrarlanması gerekir.
HIDE YOUR INPUT kullanımı, hizmet veren sitenin (yalnızca yeterince uzun olduğunu bildiği) bir maske göndererek kullanıcının gizli bilgiyi bunun üzerine yazmasını istemesiyle tamamen önlenebilir.
Örnek:
- Varsayılan kabul, kullanıcı sitesinin yankılama yaptığıdır.
- Sunucudan Kullanıcıya: Password Please CR LF
- Sunucudan Kullanıcıya: XXXXCRIIIIICRMMMMCR NUL
- Kullanıcıdan Sunucuya: "password" CR LF
- Sunucudan Kullanıcıya: Ready CR LF
Break’ler ve Attention’lar
Bazı terminallerde, ASCII’de karşılık gelen bir bit örüntüsü olmayan, ancak özel bir elektriksel sinyal ile iletilen özel bir denetim sinyali vardır. Bu denetim sinyali, 2741’de Attn ve Teletype’ta Break olarak adlandırılır. Bu sinyal Telnet denetim sinyali BREAK ile temsil edilir. Ters break için, hizmet veren sitelerden kullanan sitelere doğru kullanılmak üzere karşılık gelen bir denetim sinyali de vardır. Ancak NVT’nin çift yönlü bir karakter aygıtı olduğuna dikkat ediniz; dolayısıyla "hattı tersine çevirmeye" gerek yoktur.
Bazı sistemler Break’i, veri akışıyla birlikte kullanılabilen ek bir kod olarak ele alır. Örneğin bir sistem Break’i, "mevcut satırı bu noktaya kadar sil" anlamına gelen özel bir düzenleme kodu olarak kullanır. Bu durumlarda kod, kullanıcı tarafından herhangi bir özel ek işlem yapılmaksızın doğrudan veri akışına eklenebilir.
Diğer sistemler Break veya Attn’ı, uygulamanın işlenmesini durdur, denetimi bana ver ya da mevcut işi iptal et gibi anlamlara gelen özel bir kesme biçiminde kullanır. (Girdiyi karakter karakter inceleyen diğer sistemler bu amaçla
Örnek — Sorun:
PDP-10 normalde, giriş arabelleğini doldurduğunda, bir terminalden karakterleri kabul etmeye devam eder; her birini denetim karakteri olup olmadığını görmek için inceler, eğer öyleyse işlem yapar, değilse atar.
Hizmet veren sitedeki Telnet sunucusu, yığınlama denetimi ve dolayısıyla Telnet’e karakter patlamalarının ulaşması konusunda NCP’nin insafına kaldığından, Telnet gerçekleştirimlerinin, karakterleri atmadan kabul etmeye hazır olana kadar arabelleklerine akışı kesmesi beklenebilir.
Bu koşul altında, hizmet veren süreç kullanan terminale çıktı veriyor olabilir; sunucudaki giriş arabellekleri (kullanıcı tarafından üretilen karakterlerle) dolar ve
Benzer bir sorun, satır satır çalışan bir sunucu olarak Multics veya bazı IBM sistemlerinde de ortaya çıkabilir. Kullanan sitedeki kullanıcı, hizmet veren sitedeki sürecini bir çıktı döngüsüne sokar ve Telnet bağlantısını serbest bırakmak zorunda kalmadan süreci durdurmak ister. Arabellekler bağlantıyı tıkar, iletim kesilir ve
Örnek — Çözüm:
Kullanan sitedeki kullanıcı, özel bir denetim sinyali (Break, Attn,
Kullanıcıdan Kullanan Site Telnet’e:
- SYNCH gönder.
Kullanan Site Telnet’ten Hizmet Veren Site Telnet’ine:
- Veri akışında DATA MARK.
Kullanan Site Telnet’ten Kullanan Site NCP’sine:
- Bir INS gönder.
Hizmet Veren Site NCP’sinden Telnet Sunucusuna:
- Kesme: "INS alındı".
Hizmet Veren Site Telnet’i:
- DATA MARK’ı görene kadar (özel denetim sinyallerini arayarak) giriş veri akışını inceler, ardından normal işleyişe döner.
- Sunucunun yerel gerçekleştirimine bağlı olarak, bir INS alındığında özel karaktere ulaşmak için veri akışının özel bir şekilde ele alınması sağlanabilir.
- DATA MARK’ı gördüğünde, bunu bir eşzamanlama noktası olarak tanır ve özel karakterin iletilmiş olduğunu bilerek DATA MARK’ı veri akışından çıkarır ve normal moda döner.
- DATA MARK, INS’ten önce gelirse, hizmet veren site bir INS alınana kadar veri akışını daha fazla işlememelidir.
Seçili özel karakterlerin veya sinyallerin ele alınmasına yönelik bu yaklaşım, kullanan Telnet süreçlerini hem hizmet veren sitenin özel karakterlerini tanımak zorunda kalmaktan hem de hizmet veren sitenin bunları nasıl ele almak istediğini bilmek zorunda kalmaktan kurtarır. Aynı zamanda bu yordam, kullanıcının hizmet veren siteye ilişkin yalnızca asgari düzeyde bir anlayışa sahip olmasını gerektirir. Bu uygun görünmektedir; çünkü Telnet ASCII kuralları bir Ağ Sanal Terminali sağlamaktadır, bir Ağ Sanal Kullanıcısını değil.
Doğru sıralamanın (1) özel karakter veya sinyal (örneğin BREAK veya
Kullanıcı Telnet Sinyalleri
Kullanıcının, kullanan site Telnet’inin herhangi bir ASCII karakter kombinasyonunu bir dize halinde ve yalnızca o kombinasyonu göndermesini sağlayabilme yeteneği, Telnet ASCII kurallarının kullanıcı açısından yararlılığı için önemli görülmektedir. Bu nedenle bazı kullanıcı siteleri, insan kullanıcıdan kullanan site Telnet’ine özel yerel Telnet sinyalleri sağlamayı gerekli bulabilir.
Örnek:
Girdi işlenmeden önce satır sonu sinyali gerektiren satır satır çalışan bir sistemde (Multics, System 360, GCOS vb.) bulunan bir kullanıcı, ağ üzerinden karakter karakter çalışan bir hizmet veren siteyle çalışmaktadır. Uygulama, kullanıcının "location=" yazmasına izin veren ve buna karşılık n döndüren bir hata ayıklama yardımcısıdır; burada n, o konumdaki mevcut içeriği temsil eder. Hizmet veren sitedeki süreç, "location=" dizisinin ardından bir carriage return line feed dizisi görmeyi beklemez. Kullanan sitedeki kullanıcı, konumu yazabilmeli, bunun ardından (kullanıcı Telnet’ine) satır sonu geleneğini bastıran bir sinyal göndermeli, sonra da satır sonu sinyalini girmeli ve "location=" dizisinin, sunucuya bir satır sonu dizisi iletilmeden derhal gönderilmesini bekleyebilmelidir.
Örnek:
Başka bir durumda, kullanan bir site her seferinde dört karakter biriktirip hizmet veren siteye göndermenin uygun olduğuna karar vermiştir; ancak bir satır sonu sinyali gözlenirse, satır sonu dizisi, biriktirilmiş olan karakter sayısı (muhtemelen üç ya da daha az) neyse onun önüne eklenerek gönderilir. Aynı hata ayıklama uygulamasında, adres öyle bir durumdadır ki sonu dört karakterlik arabellek sınırıyla örtüşmez. Kullanıcı, düzgün biçimlendirmeyi korumak için satır sonu sinyali yerine "hemen ilet" anlamına gelen bir kod girebilme ve adresin hizmet veren siteye gönderilmesini bekleme yeteneğine sahip olmalıdır.
Telnet Sinyalleri tartışılmıştır ve bugüne kadar tanıtılanların Telnet ASCII kuralının bir gerçekleştirimini sağlamak için muhtemelen yeterli olduğu düşünülmektedir.
Terminoloji
ASCII \
- NIC #7104’te tanımlandığı şekliyle USASCII karakter kümesi. Telnet Protokolünde sekiz bitlik kodlar kullanıldığında, kod kümesinin alt yarısı ASCII olarak tanımlanır.
yankılama \
- Girilen bir karakterin görüntülenmesine yankılama denir. Bunun gerçekleştiği iki kip vardır. Karakter girişi için kullanılan aygıt, karakteri bilgisayara iletmeden önce (ya da iletirken) görüntülüyorsa, yankılama kipine yerel yankı denir. Buna karşılık, aygıt girilen karakteri görüntülemeden bilgisayara iletir ve bilgisayar daha sonra yankı görüntüsü için aygıta bir karakter gönderirse, bu yankılama kipine uzak yankı denir.
karakter kipi \
- Bu çalışma kipinde Telnet her karakteri mümkün olan en kısa sürede iletir. Genel olarak karakter kipi, kullanan terminalin, kullanan sistemin ve hizmet veren sistemin tamamının uzak yankı kipinde çalıştığı durumlarda kullanılır. Kullanıcı tarafından girilen karakterlere ait yankılar hizmet veren sistemden (yani ağ üzerinden) iletilir.
satır kipi \
- Bu çalışma kipinde Telnet, satırları oluşturan karakter gruplarını iletir. Genel olarak bu kip, kullanan terminalin, kullanan sistemin ya da hizmet veren sistemin bir veya daha fazlasının yerel yankı kipinde çalıştığı durumlarda kullanılır. Kullanıcı tarafından girilen karakterlere ait yankılar ağ üzerinden iletilmez.
tam çift yönlü \
- Bu terim, dört telli bir bağlantı kullanan ve her iki yönde eşzamanlı iletime izin veren bir iletim yordamını ifade eder.
yarı çift yönlü \
- Bu terim, iki telli bir bağlantı kullanan ve verinin aynı anda yalnızca tek yönde iletilmesini gerektiren bir iletim yordamını ifade eder.
Yarı çift yönlü aygıtların genellikle yerel yankı yaptığına, ancak tam çift yönlü aygıtların yerel yankı ya da uzak yankı kiplerinden herhangi birinde olabileceğine dikkat ediniz.
IV. Telnet Protokolünde Önerilen Değişiklikler
Burada önerilen değişiklikler bana ait değildir; dolayısıyla sunum hatalı olabilir. Bu değişiklikler lehine ya da aleyhine başka değişiklikler veya daha iyi gerekçeler öneren RFC’leri ya da diğer iletişimleri memnuniyetle karşılarım.
Yankılama
Telnet’ten ECHO, NOECHO ve HIDE YOUR INPUT denetim sinyallerinin çıkarılması önerilmektedir. Yankılama sağlamayan sunucu sistemleri için bu komutlar yararsızdır. Yankılama sağlayan sunucu sistemlerinde ise deneyimler, denetimin en etkili biçimde sunucu sistemi komutlarıyla sağlandığını göstermiştir.
Veri Türleri
Telnet’ten veri türlerine ilişkin tüm atıfların çıkarılması önerilmektedir. Karakter akışı ya ASCII’dir ya da bir Telnet iletişimi değildir. Veri türünü değiştirmek gerçekten gerekli ise, ASCII olarak bir komut veri akışı içinde gönderilebilir.
Asgari Gerçekleştirim
Asgari gerçekleştirimin, kullanıcı Telnet’inin kullanıcının tüm Telnet denetim sinyallerini göndermesine izin vermesini ve sunucu Telnet’inin de bu sinyallerin tümünü doğru şekilde işlemesini gerektirmesi önerilmektedir.
Teşekkürler
Telnet Protokolü üzerindeki çalışmalar birçok kişiyi içermiştir. Bu belge, Tom O'Sullivan tarafından yazılan RFC #139 ve #158’den alınmıştır. Komitelerde görev yapmış diğer kişiler şunlardır:
- Bob Bressler — MIT-DMCG
- Will Crowther — BBN
- Bob Long — SDC
- Alex McKenzie — BBN
- John Melvin — SRI-ARC
- Bob Metcalfe — MIT-DMCG
- Ed Meyer — MIT-Multics
- Tol O'Sullivan — Raytheon
- Mike Padlipsky — MIT-Multics
- Jon Postel — UCLA-NMC
- Bob Sundberg — Harvard
- Joel Winett — LL
- Steve Wolfe — UCLA-CCN
[Bu RFC, Kelly Tardif tarafından Viaginie 10/99 tarihinde çevrimiçi RFC arşivlerine girmek üzere makine tarafından okunabilir biçime dönüştürülmüştür]