Telnet Veri Girişi Terminali Seçeneği
John Day
27 Haziran 1977
NIC 40652
RFC 731
1. Komut Adı ve Kodu
- DET — 20
2. Komut Anlamları
IAC WILL DET
Bu komutun göndericisi, Veri Girişi Terminalini denetlemek için alt komutları gönderip almayı talep eder veya bunu kabul eder.
IAC WONT DET
Bu komutun göndericisi, Veri Girişi Terminalini denetlemek için alt komutları gönderip almayı reddeder.
IAC DO DET
Bu komutun göndericisi, Veri Girişi Terminalini denetlemek için alt komutları gönderip almayı talep eder veya bunu kabul eder.
IAC DONT DET
Bu komutun göndericisi, Veri Girişi Terminalini denetlemek için alt komutları gönderip almayı reddeder.
DET seçeneği beş sınıf alt komut kullanır:
- Uygulamanın ve terminalin gereksinimlerini ve yeteneklerini belirlemek için
- Ekranı biçimlendirmek için
- Düzenlemeyi denetlemek için
- Silmeyi denetlemek için
- İletim işlevlerini denetlemek için
Bu işlevleri yerine getiren alt komutlar aşağıda açıklanmaktadır.
Ağ Sanal Veri Girişi Terminali (NVDET)
NVDET, bir klavye ve dikdörtgen bir ekrandan oluşur. Klavye, ASCII karakter kümesindeki tüm karakterleri üretebilecek yeteneğe sahiptir. Buna ek olarak, klavye, basıldıklarında bir FN alt komutunun gönderilmesine neden olan bir dizi işlev tuşuna sahip olabilir. (Çoğu DET, kağıt bant okuyucu veya yazıcı gibi bir veya daha fazla çevre birimini destekleyecek olsa da, bu seçenek bunların desteğini ele almaz. Çevre birimlerinin desteği ayrı bir seçenekle ele alınmalıdır.)
Veri girişi terminalinin ekranı, M karaktere N satıra sahip bir dikdörtgendir. M ve N değerleri sırasıyla Çıkış Satır Genişliği ve Çıkış Sayfa Boyutu seçeneklerinin müzakere edilmesiyle ayarlanır. Ekrandaki bir sonraki yazma konumu (x, y) (burada x karakter konumunu, y ise ekrandaki satırın konumunu ifade eder), imleç adı verilen özel bir görüntü karakteri ile gösterilir. İmleç, ekrandaki mevcut karakterleri bozmadan ekran üzerindeki herhangi bir konuma taşınabilir.
Mevcut terminallerde imleç adresleme, çeşitli topolojiler ve adresleme yöntemleri kullanır. Gerçekleştirme yükünü olabildiğince kolaylaştırmak için bu protokol iki topolojiyi (sonlu düzlem ve sarmal torus) ve üç adresleme yöntemini ((x, y); x ve y; ve göreli artımlar) destekler. Mutlak adresleme ile sonlu düzlem en az belirsiz ve diğerlerine çevrilmesi en kolay olan yöntem olduğundan, NVDET tarafından kullanılan varsayılan şemadır. Göreli veya mutlak adresleme ile toroidal biçim kolaylık sağlamak amacıyla sunulmuştur.
Ayrıca NVDET, ekranda özel özniteliklere sahip alanların tanımlanması için bir mekanizma sağlar. Örneğin, bu alanlara girilen karakterler daha parlak yoğunlukta görüntülenebilir, ters video veya yanıp sönme ile vurgulanabilir ya da kullanıcı tarafından değiştirilmekten korunabilir. Bu son özellik, DET’in kullanıcı tarafından doldurulacak bir form görüntülediği uygulamalarda en yoğun kullanılan özelliklerden biridir.
NVDET’in tanımı, tüm işlevlerini yerine getirmek için Telnet seçenek alt müzakerelerini kullanır. Veri akışında gönderilen ASCII karakterlerinin hiçbiri bu işlevleri tanımlamak için kullanılmadığından, DET seçeneği "ham" hatta "seyrek" bir kipte kullanılabilir. Uygulama programının karşı uçtaki terminalin türünü bildiği durumlarda, seçenek veya bir gerçekleştirim tarafından desteklenmeyen işlevleri denetlemek için gereken ASCII karakterlerini gönderebilir. Genel olarak, tüm NVDET işlevlerinin veri akışı dışında tutulması daha iyi esneklik sağlar.
Tesis İşlevleri
(Ayrıntılı anlamsal açıklamalar için Bölüm 5’e bakınız.)
IAC SB DET
Burada:
, tanımlanacak tesislerin sınıfını gösteren tek bir 8 bitlik bayttır. - <tesis haritası>, gönderici tarafından gerekli veya istenen tesisleri tanımlayan bayrakları içeren bir veya iki adet 8 bitlik bayttan oluşan bir alandır.
Tesis haritalarının bitleri, sağdan başlayarak sıfırdan numaralandırılır. Dolayısıyla, bit 2 ayarlanmışsa alanın ondalık değeri 4 olacaktır.
Düzenleme Tesisleri (Alt Komut Kodu: 1)
Tesis Haritası Bit Numaraları
- Toroidal İmleç Adresleme — 6
- Artımlı İmleç Adresleme — 5
- İmleç Adresini Okuma — 4
- Satır Ekleme/Silme — 3
- Karakter Ekleme/Silme — 2
- Geri Sekme — 1
- Yalnızca Pozitif Adresleme — 0
Açıklamalar
- Toroidal İmleç Adresleme biti ayarlanmışsa, gönderici SKIP TO LINE ve SKIP TO CHAR alt komutlarının desteklenmesini talep eder veya sağlar.
- Artımlı İmleç Adresleme biti ayarlanmışsa, gönderici UP, DOWN, LEFT ve RIGHT alt komutlarının desteklenmesini talep eder veya sağlar.
- İmleç Okuma biti ayarlanmışsa, gönderici READ CURSOR alt komutunu talep eder veya sağlar.
- Satır Ekleme/Silme biti ayarlanmışsa, gönderici LINE INSERT ve LINE DELETE alt komutlarının desteklenmesini talep eder veya sağlar.
- Karakter Ekleme/Silme biti ayarlanmışsa, gönderici CHAR INSERT ve CHAR DELETE alt komutlarının desteklenmesini talep eder veya sağlar.
- Geri Sekme biti ayarlanmışsa, gönderici BACK TAB alt komutunun desteklenmesini talep eder veya sağlar.
- Pozitif Adresleme biti ayarlanmışsa, gönderici alıcıyı imleci yalnızca pozitif yönde hareket ettirebildiği konusunda bilgilendirir. (Bu özelliğe sahip terminaller, başlangıca dönmek için bir Home işlevine de sahiptir.)
Silme Tesisleri (Alt Komut Kodu: 2)
Tesis Haritası Bit Numaraları
- Alanı Sil — 4
- Satırı Sil — 3
- Ekranın Kalanını Sil — 2
- Satırın Kalanını Sil — 1
- Alanın Kalanını Sil — 0
Bu tesis komutu için tesis haritasındaki bir bit ayarlanmışsa, gönderici bitin belirttiği tesisi talep eder veya sağlar. Bu işlevlerin her birinin daha ayrıntılı açıklaması için aşağıdaki Silme İşlevleri bölümüne bakınız.
İletim Tesisleri (Alt Komut Kodu: 3)
Tesis Haritası Bit Numaraları
- Veri İletimi — 5
- Satır İletimi — 4
- Alan İletimi — 3
- Ekranın Kalanının İletimi — 2
- Satırın Kalanının İletimi — 1
- Alanın Kalanının İletimi — 0
Bu tesis komutu için tesis haritasındaki bir bit ayarlanmışsa, gönderici bitin belirttiği tesisi talep eder veya sağlar. Bu işlevlerin her birinin daha ayrıntılı açıklaması için aşağıdaki İletim İşlevleri bölümüne bakınız.
Biçimlendirme Tesisleri (Alt Komut Kodu: 4)
Tesis Haritası Bit Numaraları
Bayt 0
- Tekrar — 4
- Yanıp Sönme — 3
- Ters Video — 2
- Sağa Yaslama — 1
- Üst Üste Yazma — 0
Bayt 1
- Koruma Açık/Kapalı — 6
- Koruma — 5
- Yalnızca Alfabetik Koruma — 4
- Yalnızca Sayısal Koruma — 3
- Yoğunluk — 0–2
Açıklamalar
- Tekrar biti ayarlanmışsa, gönderici REPEAT alt komutunu talep eder veya sağlar.
- Yanıp Sönme biti ayarlanmışsa, gönderici bir karakter dizisini yanıp sönmesini sağlayarak vurgulama yeteneğini talep eder veya sağlar.
- Ters Video biti ayarlanmışsa, gönderici bir karakter dizisini video görüntüsünü tersine çevirerek vurgulama yeteneğini talep eder veya sağlar.
- Sağa Yaslama biti ayarlanmışsa, gönderici veri girişlerinin alanda sağa yaslanmasını sağlama yeteneğini talep eder veya sağlar.
- Üst Üste Yazma biti ayarlanmışsa, gönderici ekranda bir karakteri başka bir karakterin üzerine bindirme yeteneğini talep eder veya sağlar.
- Koruma Açık/Kapalı biti ayarlanmışsa, gönderici alan korumasını açıp kapatma yeteneğini talep eder veya sağlar.
- Koruma biti ayarlanmışsa, gönderici belirli karakter dizilerinin kullanıcı tarafından değiştirilmesini engelleme yeteneğini talep eder veya sağlar. Bu ayrıca ERASE UNPROTECTED ve TRANSMIT UNPROTECTED alt komutlarının desteğini de ima eder.
- Yalnızca Alfabetik Koruma biti ayarlanmışsa, gönderici belirli ekran alanlarında girişi alfabetik veriyle sınırlama yeteneğini talep eder veya sağlar.
- Yalnızca Sayısal Koruma biti ayarlanmışsa, gönderici belirli ekran alanlarında girişi sayısal veriyle sınırlama yeteneğini talep eder veya sağlar.
Yoğunluk alanının üç biti, desteklenen yoğunluk düzeyi sayısını belirten pozitif bir ikili tamsayı içerir:
- 1 — Tek görünür yoğunluk
- 2 — İki yoğunluk: normal ve parlak
- 3 — Üç yoğunluk: kapalı, normal ve parlak
3 — Üçten fazla yoğunluk: kapalı, kalan düzeyler en sönükten en parlak olana doğru orantılanmıştır
Yukarıdaki tüm komutlar için, tesis haritasındaki ilgili bit ayarlanmamışsa, gönderici bu tesisi talep etmez veya sağlamaz.
Düzenleme İşlevleri
IAC SB DET MOVE CURSOR
Alt Komut Kodu: 5
Burada
Bu alt komut, imleci aşağıdaki sınır koşullarıyla mutlak ekran adresi (x, y) konumuna taşır:
- Eğer x > M − 1 ise, x = M − 1 olarak ayarlanır ve bir ERROR alt komutu gönderilir
- Eğer y > N − 1 ise, y = N − 1 olarak ayarlanır ve bir ERROR alt komutu gönderilir
Bu, ekranda sonlu düzlem topolojisini tanımlar.
IAC SB DET SKIP TO LINE
Alt Komut Kodu: 6
Burada
Bu alt komut, imleci mutlak ekran satırı y konumuna taşır. x konumu sabit kalır. y > N − 1 değerleri için:
- y = y mod N
IAC SB DET SKIP TO CHAR
Alt Komut Kodu: 7
Burada
Bu alt komut, imleci mutlak karakter konumu x’e taşır. y konumu sabit kalır; ancak x > M − 1 ise:
- x′ = x mod M
- y′ = y + (x DIV N)
Burada x′ ve y′, imlecin yeni değerleridir.
Bu son iki alt komut, ekranda toroidal bir topolojiyi tanımlar.
İmleç Hareketi Alt Komutları
- IAC SB DET UP IAC SE — alt komut kodu: 8
- IAC SB DET DOWN IAC SE — alt komut kodu: 9
- IAC SB DET LEFT IAC SE — alt komut kodu: 10
- IAC SB DET RIGHT IAC SE — alt komut kodu: 11
Bu alt komutlar, bazı terminaller için kolaylık sağlamak amacıyla sunulmuştur. UP, DOWN, LEFT ve RIGHT komutları şu şekilde tanımlanır:
- UP: (x,y) = (x, y − 1 mod N)
- DOWN: (x,y) = (x, y + 1 mod N)
- LEFT: (x,y) = (x − 1, y); eğer x = 0 ise x − 1 = 0
- RIGHT: (x,y) = (x + 1 mod M, y) ve eğer x + 1 > M − 1 ise y = y + 1
Not: DOWN, LEFT ve RIGHT her zaman sırasıyla satır sonu, geri silme ve boşluk için ASCII kodlarıyla değiştirilemez. İkinciler biçim etkileyicileridir; birinciler ise imleç denetimleridir.
Home ve Satır Düzenleme Alt Komutları
IAC SB DET HOME IAC SE
Alt komut kodu: 12
Bu alt komut, imleci (0,0) konumuna yerleştirir. Bu, MOVE CURSOR 0,0 komutuna veya SKIP TO LINE 0, SKIP TO CHAR 0 dizisine eşdeğerdir. Bu alt komut, çoğu terminalde ayrı bir denetim olarak bulunduğundan kolaylık sağlamak amacıyla sunulmuştur.
IAC SB DET LINE INSERT IAC SE
Alt komut kodu: 13
Bu alt komut, y satırı (imlecin konumuyla belirlenen geçerli satır) ile y − 1 satırı arasına boşluklardan oluşan bir satır ekler. y’den N − 2’ye kadar olan satırlar bir satır aşağı kayar; yani y satırı y + 1 olur, y + 1 satırı y + 2 olur; …; N − 2 satırı N − 1 olur. N − 1 satırı ekranın altından kaybolur. İmlecin konumu değişmez.
IAC SB DET LINE DELETE IAC SE
Alt komut kodu: 14
Bu alt komut, imlecin geçerli satır konumu olan y satırını siler. y + 1’den N − 1’e kadar olan satırlar bir satır yukarı kayar; yani y + 1 satırı y olur, y + 2 satırı y + 1 olur; …; N − 1 satırı N − 2 olur. N − 1’inci satır konumu tamamen boşluklardan oluşacak şekilde ayarlanır. İmlecin konumu değişmez.
Karakter Düzenleme Alt Komutları
IAC SB DET CHAR INSERT IAC SE
Alt komut kodu: 15
Bu alt komut, veri akışındaki bir sonraki karakteri, imlecin geçerli karakter konumu olan x’inci karakter ile x − 1’inci karakter arasına ekler. Satırdaki x’inci ile M − 2’nci karakterler bir karakter konumu sağa kaydırılır. Yeni karakter boşalan x’inci konuma yerleştirilir. M − 1’inci karakter kaybolur. İmlecin konumu değişmez.
IAC SB DET CHAR DELETE IAC SE
Alt komut kodu: 16
Bu alt komut, ekranda x’inci konumdaki karakteri siler. x’inci karakter kaldırılır ve x + 1’den M − 1’e kadar olan karakterler bir karakter konumu sola kayarak x’inci ile M − 2’nci karakterler haline gelir. M − 1’inci karakter konumu boş bırakılır (çoğu terminalde NUL veya boşluk olarak ayarlanır). İmlecin konumu değişmez.
İmleç Konumu Raporlama
IAC SB DET READ CURSOR IAC SE
Alt komut kodu: 17
Bu alt komut, alıcıdan imlecin mevcut konumunu göndericiye iletmesini talep eder.
IAC SB DET CURSOR POSITION IAC SE
Alt komut kodu: 18
Burada <x> ve <y>, pozitif 8 bitlik ikili tamsayılardır.
Bu alt komut, READ CURSOR alt komutuna yanıt olarak bir Telnet gerçekleştirim tarafından, imlecin koordinatlarını karşı tarafa iletmek için gönderilir. Not: x, M’den küçüktür ve y, N’den küçüktür.
IAC SB DET REVERSE TAB IAC SE
Alt komut kodu: 19
Bu alt komut, imlecin bir önceki sekme konumuna gitmesini sağlar. Mevcut satırda böyle bir konum yoksa, bir sekme bulunana veya (0,0) adresine ulaşılana kadar imleç bir önceki satıra geçer ve bu şekilde devam eder. Alan koruması etkin olduğunda, imleç bir önceki korunmamış alanın başlangıcına gider.
İletim İşlevleri
(Ayrıntılı anlamsal açıklamalar için Bölüm 5’e bakınız.)
IAC SB DET TRANSMIT SCREEN IAC SE
Alt komut kodu: 20
Bu alt komut, terminalin ekrandaki tüm karakterleri (0,0) konumundan (M − 1, N − 1) konumuna kadar iletmesini sağlar. İşlem tamamlandıktan sonra imleç (0,0) konumunda olacaktır.
IAC SB DET TRANSMIT UNPROTECTED IAC SE
Alt komut kodu: 21
Bu alt komut, terminalin korunmamış alanlardaki tüm karakterleri (0,0) konumundan (M − 1, N − 1) konumuna kadar iletmesini sağlar. Korunmamış alanlar, alan ayırıcı alt komut ile ayrılır. İşlem tamamlandıktan sonra imleç (0,0) konumunda veya ilk korunmamış alanın başlangıcında olacaktır.
IAC SB DET TRANSMIT LINE IAC SE
Alt komut kodu: 22
Bu alt komut, terminalin y’inci satırdaki tüm verileri iletmesini sağlar; burada y, imlecin mevcut konumuyla belirlenir. Veri, karakter konumu (0,y)’den satır sonuna veya hangisi önce gelirse (M − 1, y) konumuna kadar gönderilir. İletimden sonraki imleç konumu, satır sonu koşulundan sonraki bir karakter konumu veya bir sonraki satırın başlangıcı olan (0, y + 1) olacaktır.
IAC SB DET TRANSMIT FIELD IAC SE
Alt komut kodu: 23
Bu alt komut, terminalin imlecin şu anda bulunduğu alandaki tüm verileri iletmesini sağlar. İşlem tamamlandıktan sonraki imleç konumu, alanın sonundan sonraki bir karakter konumu veya eğer bu konum korunmuşsa, bir sonraki korunmamış alanın başlangıcı olacaktır.
IAC SB DET TRANSMIT REST OF SCREEN IAC SE
Alt komut kodu: 24
Bu alt komut, terminalin ekrandaki (x,y) konumundan (M − 1, N − 1) konumuna kadar ya da metnin sonuna kadar olan tüm karakterleri iletmesine neden olur. (x,y) geçerli imleç konumudur. İşlemden sonraki imleç konumu, son metin karakterinden bir karakter konumu sonradır ya da son doldurulmuş karakter konumu (M − 1, N − 1) ise (0,0) olur.
IAC SB DET TRANSMIT REST OF LINE IAC SE
Alt komut kodu: 25
Bu alt komut, terminalin y’nci satırdaki (x,y) konumundan satır sonuna ya da hangisi önce gelirse (M − 1, y) konumuna kadar olan tüm karakterleri iletmesine neden olur. (x,y) geçerli imleç konumudur. İşlemden sonraki imleç konumu, satırın son karakterinden bir karakter konumu sonrası ya da bir sonraki satırın ilk karakteridir.
IAC SB DET TRANSMIT REST OF FIELD IAC SE
Alt komut kodu: 26
Bu alt komut, alıcının imlecin şu anda bulunduğu alandaki karakterlerin geri kalanını iletmesine neden olur. İşlemden sonraki imleç konumu bir sonraki alanın başlangıcındadır.
IAC SB DET DATA TRANSMIT IAC SE
Alt komut kodu: 27
Bu alt komut, bir kullanıcı eylemine ya da bir TRANSMIT komutuna yanıt olarak terminalden gönderilen verilerin önüne eklemek için kullanılır. <x> ve <y> parametreleri imlecin başlangıç konumunu belirtir. Daha fazla ayrıntı için Bölüm 5’teki Transmit Subcommands alt bölümüne bakınız.
Silme İşlevleri
IAC SB DET ERASE SCREEN IAC SE
Alt komut kodu: 28
Bu alt komut, ekrandaki tüm karakterlerin kaldırılmasına neden olur. Özniteliklerinden bağımsız olarak tüm alanlar silinir. İşlemden sonraki imleç konumu (0,0) olacaktır. Çoğu terminal silinen karakterleri ya NUL ya da boşluk karakterleri olarak ayarlar.
IAC SB DET ERASE LINE IAC SE
Alt komut kodu: 29
Bu alt komut, geçerli imleç konumunun bulunduğu satır olan y’nci satırdaki tüm karakterlerin ekrandan kaldırılmasına neden olur. Özniteliklerinden bağımsız olarak tüm alanlar silinir. Bu işlemden sonraki imleç konumu (0,y) olacaktır. Not: Bu işlem, LINE DELETE ve LINE INSERT dizisiyle kolayca benzetilebilir. Ancak, ekranın altından veri kaybı olmamasını sağlamak için sıra önemlidir.
IAC SB DET ERASE FIELD IAC SE
Alt komut kodu: 30
Bu alt komut, imlecin bulunduğu alandaki tüm karakterlerin kaldırılmasına neden olur. İşlemden sonraki imleç konumu alanın başlangıcındadır.
IAC SB DET ERASE REST OF SCREEN IAC SE
Alt komut kodu: 31
Bu alt komut, (x,y) konumundan (M − 1, N − 1) konumuna kadar olan tüm karakterlerin ekrandan kaldırılmasına neden olur. Özniteliklerinden bağımsız olarak tüm alanlar silinir. İşlemden sonraki imleç konumu değişmez. Bu, y’den büyük satırlar için ERASE REST OF LINE artı LINE DELETE yapılmasına eşdeğerdir.
IAC SB DET ERASE REST OF LINE IAC SE
Alt komut kodu: 32
Bu alt komut, (x,y) konumundan (M − 1, y) konumuna kadar olan tüm karakterlerin ekrandan kaldırılmasına neden olur. Özniteliklerinden bağımsız olarak tüm alanlar silinir. İşlemden sonraki imleç konumu değişmez.
IAC SB DET ERASE REST OF FIELD IAC SE
Alt komut kodu: 33
Bu alt komut, (x,y) konumundan geçerli alanın sonuna kadar olan tüm karakterlerin ekrandan kaldırılmasına neden olur. İşlemden sonraki imleç konumu değişmez.
IAC SB DET ERASE UNPROTECTED IAC SE
Alt komut kodu: 34
Bu alt komut, ekrandaki korumasız alanlarda bulunan tüm karakterlerin ekrandan kaldırılmasına neden olur. İşlemden sonraki imleç konumu (0,0) ya da bu konum korumalıysa ilk korumasız alanın başlangıcındadır.
Biçimlendirme İşlevleri
IAC SB DET FORMAT DATA IAC SE
Alt komut kodu: 35
Burada <format map>, aşağıdaki bayrakları içeren 8 bitlik bir bayttır:
- Yanıp Sönme — bit 7
- Ters Video — bit 6
- Sağa Yaslama — bit 5
- Koruma — bit 3–4
- Yoğunluk — bit 0–2
Bayrak Tanımları
Yanıp Sönme biti ayarlanmışsa, alıcı tarafından sonraki
<count>karakterden oluşan alana yanıp sönme özniteliği uygulanmalıdır.Ters Video biti ayarlanmışsa, sonraki
<count>karakterden oluşan alan alıcı tarafından ters video ile görüntülenmelidir.Sağa Yaslama biti ayarlanmışsa,
<count>karakterden oluşan alana girilen giriş sağa yaslanmalıdır.Koruma alanı iki bit genişliğindedir ve aşağıdaki değerleri alabilir:
- 0 — koruma yok
- 1 — korumalı
- 2 — yalnızca alfabetik
- 3 — yalnızca sayısal
Koruma özniteliği, karşı tarafın sonraki
<count>baytlık alanda herhangi bir karakteri değiştirebilmesini (koruma yok), hiçbir karakteri değiştirememesini (korumalı), yalnızca alfabetik karakterler (A–Z ve a–z) girmesini ya da yalnızca sayısal karakterler (0–9, +, ., ve −) girmesini belirtir.Yoğunluk alanı 3 bit genişliğindedir ve aşağıdaki şekilde yorumlanmalıdır:
0–6 değerleri, sonraki
<count>karakter genişliğindeki alanda görüntülenecek ya da girilecek karakterler için kullanılacak göreli parlaklığı belirtir. Kullanılabilir parlaklık seviye sayısı, daha önce Format Facility alt komutu ile elde edilmiş olmalıdır. Bu değerlerin mevcut yoğunluk seviyelerine nasıl eşleneceğine ilişkin kesin algoritma uygulayıcılara bırakılmıştır. Yoğunluk alanında 7 değeri, parlaklığın kapalı olması gerektiğini ve alandaki ya da alana girilen herhangi bir karakterin görüntülenmemesi gerektiğini belirtir.
<count>, bu komuttan etkilenen ve onu izleyen karakter sayısını temsil eden pozitif bir 16 bitlik ikili tamsayı olarak yorumlanması gereken 2 bayttır.
Sayım kapsamı dışında kalan ve ekranın yazılmamış alanları için terminale ya da kullanan ana bilgisayara gönderilen veriler, biçim haritasının varsayılan değerleriyle görüntülenmelidir. Varsayılan değerler şunlardır: yanıp sönme yok, normal video, yaslama yok, koruma yok ve normal yoğunluk.
John Day Veri Giriş Terminali Seçeneği 27 Haziran 1977 NIC 40652 RFC 731
Bu alt komut, terminal ekranında görüntülenecek verileri biçimlendirmek için kullanılır. <format map>, <count> bayt genişliğindeki alanın sahip olması gereken öznitelikleri tanımlar. Bu alan, komut uygulandığında imlecin bulunduğu konumda başlar. Veri akışındaki sonraki <count> görüntülenebilir karakter alanı doldurmak için kullanılır. Bu alanın içeriğini belirtmek için sonraki REPEAT alt komutları kullanılabilir. Gönderen, Format Facility alt komutu kullanılarak üzerinde anlaşılmamış öznitelikler belirtirse, Telnet süreci gönderene bir Error Alt Komutu göndermeli, ancak ekranı sanki ilgili bit ayarlanmamış gibi biçimlendirmelidir.
IAC SB DET REPEAT <count><char> IAC SE
alt komut kodu: 36
Burada:
<count>pozitif bir 8 bitlik ikili tamsayıdır.<char>bir ASCII karakteri içeren 8 bitlik bir bayttır.
Bu alt komut, terminale aktarılan veriler üzerinde veri sıkıştırması yapmak için, aynı karakterlerden oluşan dizileri karakter ve sayım olarak kodlayarak kullanılır. Tekrarlanan karakterler, belirtilmiş bir alanın parçası olabilir.
IAC SB DET SUPPRESS PROTECTION <negotiation> IAC SE
alt komut kodu: 37
Burada <negotiation>, Telnet seçenek uzlaşmasının aşağıdaki değerlerini alabilir:
- 251 — WILL
- 252 — WONT
- 253 — DO
- 254 — DONT
Bu alt komut, alan korumasını tahribatsız bir biçimde bastırmak için kullanılır. Birçok veri giriş terminali, ekranın ya da terminal belleğinin içeriğini değiştirmeden korumanın açılıp kapatılabilmesini sağlayan araçlar sunar. Böylece formu yeniden iletmeden koruma kapatılıp tekrar açılabilir. Seçeneğin varsayılan ayarı, korumanın açık olmasıdır; başka bir deyişle:
IAC SB DET SUPPRESS PROTECTION WONT IAC SE
IAC SB DET SUPPRESS PROTECTION DONT IAC SE
John Day Veri Giriş Terminali Seçeneği 27 Haziran 1977 NIC 40652 RFC 731
Bu alt komutun uzlaşması, Telnet seçeneklerinin uzlaşmalarıyla aynı kuralları izler.
IAC SB DET FIELD SEPARATOR IAC SE
alt komut kodu: 38
Ekranın yalnızca korumasız bölümünü iletirken alanları sınırlamak için bir yol sağlamak gereklidir. Mevcut DET’ler Tab, Grup Ayırıcı, Birim Ayırıcı vb. gibi çeşitli ASCII karakterleri kullanır. NVDET’in şeffaflığını korumak amacıyla, alanları ayırmak için bu alt komut kullanılır. Açıkça görüldüğü üzere bu, oldukça yüksek bir ek yük getirir. Bu ek yük, Byte Macro Seçeneği kullanılarak önlenebilir (Ek 3’e bakınız).
Çeşitli Komutlar
IAC SB DET FN <code> IAC SE
alt komut kodu: 39
Burada <code> bir bayttır.
Birçok veri giriş terminali, basıldığında sunucuya tek karakterlik bir komut gönderen bir dizi "işlev" tuşu sağlar. Bu alt komut, böyle bir olanağı tanımlar. <code> alanının değerleri kullanıcı ve sunucu tarafından tanımlanır. Seçenek yalnızca bilginin aktarılmasını sağlayan aracı sunar.
IAC SB DET ERROR <cmd> <error code> IAC SE
alt komut kodu: 40
Burada:
<cmd>, hatalı olan alt komutun alt komut kodunu içeren bir bayttır.<error code>, bir hata kodu içeren bir bayttır. (Tanımlı hata kodlarının listesi için Ek 2’ye bakınız.)
Bu alt komut, DET seçeneği uygulamalarının algıladıkları hataları ilgili Telnet sürecine bildirmesine olanak sağlamak için sunulmuştur. Bu noktada, bu seçeneğin felsefesinin, bir hata algılandığında bunun raporlanması gerektiği olduğu tekrar vurgulanmalıdır; ancak uygulama, hatalı alt komutun ya da verinin amacını yerine getirmek için elinden gelenin en iyisini yapmaya çalışmalıdır.
John Day Veri Giriş Terminali Seçeneği 27 Haziran 1977 NIC 40652 RFC 731
3. Varsayılan ve Asgari Uygulama Özellikleri
Varsayılan
WON'T DET -- DON'T DET
Her iki ana bilgisayar da Veri Giriş Terminali seçeneğini kullanmak istemez.
Asgari Uygulama
- DET EDIT FACILITIES
- DET ERASE FACILITIES
- DET TRANSMIT FACILITIES
- DET FORMAT FACILITIES
- DET MOVE CURSOR
<x><y> - DET HOME
- DET ERASE SCREEN
- DET TRANSMIT SCREEN
- DET FORMAT DATA
- DET ERROR
<cmd> <error code>
Verinin biçimlendirilmesi durumunda, asgari uygulama, bir alandaki tüm ya da hiçbir karakter için düşük ve yüksek yoğunluk düzeyini ve korumayı destekleyebilmelidir. Ancak bu işlevler zorunlu değildir.
Asgari uygulama ayrıca Output Line Width ve Output Page Size Telnet seçeneklerinin desteklenmesini gerektirir.
John Day Veri Giriş Terminali Seçeneği 27 Haziran 1977 NIC 40652 RFC 731
4. Gerekçe
Telnet protokolü başlangıçta, standart teleprinter gibi kaydırma kipli terminallerin ağ üzerinden süreçlerle iletişim kurmasını sağlamak amacıyla tasarlanmıştır. Bu, o dönemdeki terminallerin ve kullanıcıların büyük çoğunluğu için uygundu. Ancak ağın kullanımı diğer alanlara, özellikle ağın başka işler için bir üretim ortamı sağladığı düşünülen alanlara doğru arttıkça, kullanıcı topluluğunun istekleri ve gereksinimleri değişmiştir. Bu nedenle, başlangıçta desteklenmeyen olanakların desteklenmesi gerektiği düşünülmelidir. Bu Telnet seçeneği, veri giriş terminalleri gerektiren uygulamalar için bunu yapmayı amaçlar.
Bu seçenek, fiilen Ağ Sanal Veri Giriş Terminalini tanımlar. Bu seçeneğin açıklaması oldukça uzun olsa da, bu durum Telnet protokolünün bu olanak için yetersiz bir araç olduğu anlamına gelmez. Veri Giriş Terminalleri, yetenekleri bakımından oldukça karmaşık ve çeşitlidir. Bu seçenek, ya tümünde ortak olan ya da kolayca benzetilebilen yararlı işlevlerin asgari kümesini ve bazı terminallerde sunulan daha gelişmiş işlevleri desteklemeye çalışır.
Çoğu gerçek veri giriş terminalinde, terminal işlevleri yerel karakter kümesinin bir veya daha fazla karakteri içine kodlanmışken, bu seçenek tüm bu denetimleri Telnet alt uzlaşma mekanizması içinde gerçekleştirir. Bu, iletişim kurdukları terminal türünü yakından bilen programların, seçenek ya da uygulama tarafından desteklenmeyen komutlar göndermesine olanak tanır. Başka bir deyişle, gerekli olduğu ölçüde seçeneğin kullanıldığı bir "ham" ya da en azından "seyrek" kipte çalışmak mümkündür.
Birçok veri giriş terminali yazıcılar, kasetler vb. gibi çeşitli çevre birimlerini desteklese de, bu tür hususları ele almak bu seçeneğin kapsamı dışındadır. Bu cihazların bu yönünü ele almak için ayrı bir seçenek tanımlanmalıdır.
John Day Veri Giriş Terminali Seçeneği 27 Haziran 1977 NIC 40652 RFC 731
5. Açıklama
Genel Notlar
Bu seçeneğin tüm uygulamalarının, bu seçenek için belirli bir asgari alt komut kümesini desteklemesi zorunludur. Bölüm 3, bu asgari kümedeki alt komutların tam bir listesini içerir. Telnet protokolü felsefesine uygun olarak, bir uygulamanın uygulamadığı komutları ayrıştırmak zorunda kalmaması gerektiğinden, bu seçeneğin her alt komutu ya asgari kümede yer alır ya da tesis alt komutlarından biri tarafından kapsanır. Bir uygulama, asgari kümede olmayan alt komutları kullanmadan önce, muhatabıyla bu alt komutları kullanma izni için uzlaşmalıdır. Bu uzlaşma sürecinin ayrıntıları için aşağıdaki tesis alt komutları bölümüne bakınız.
Çoğu veri giriş terminali yarı çift yönlü kipte kullanılır. (Piyasadaki çoğu DET, ister veri giriş terminali ister standart etkileşimli terminal olarak kullanılabilse de, burada yalnızca DET olarak kullanımlarıyla ilgileniyoruz.) Bu seçenek kullanıldığında, aşağıdaki Telnet seçeneklerinin reddedilmesi önerilir: Echo, Remote Controlled Transmission and Echoing ve Suppress Go-Ahead. Bununla birlikte, bu seçenek burada sağlanan temel imleç denetim işlevlerini kullanarak basit bir tam çift yönlü CRT tabanlı uygulamayı desteklemek için de kullanılabilir. Bu durumlar için yukarıdaki seçenek listesinden biri veya birkaçı gerekebilir. (Gelişmiş etkileşimli kaligrafik uygulamaların desteklenmesi bu seçeneğin kapsamı dışındadır ve başka bir seçenek ya da Ağ Grafik Protokolü ile yapılmalıdır.)
RFC 728'de, bir senkronizasyon dizisinin Telnet Kontrol işlevleri ile veri akışı arasında istenmeyen etkileşimlere neden olabileceği belirtilmiştir. Bir senkronizasyon dizisi, kontrol işlevlerini değil ancak veriyi temizler. Bir senkronizasyon dizisi gerçekleştiğinde, hemen ardından gelen veriyi etkileyen bir kontrol işlevi veri akışı içinde mevcutsa, kontrol işlevi etkisini amaçlanan veri üzerinde değil, Veri İşareti'nden hemen sonra gelen veri üzerinde gösterecektir. Aşağıdaki DET alt komutları bu tuzağa açıktır:
- CHAR INSERT
- DATA TRANSMIT
- FORMAT DATA
İstenmeyen etkileşimlerden en iyi şekilde, senkronizasyon dizisini alan tarafın bu alt komutları ve onlarla ilişkili tüm verileri, kontrol işlevlerini işlemeye devam etmeden önce silmesiyle kaçınılır. Bu durum, Veri İşareti'nin bu alt komutlarla ilişkili verinin ortasında yer almaması gerektiği anlamına gelir.
Tesis Alt Komutları
Bu dört alt komut, Kullanıcı ve Sunucu gerçekleştirimleri tarafından kullanılabilecek terminal alt komutlarını ve özniteliklerini müzakere etmek için kullanılır. Bu müzakere, terminalin (Kullanıcı Ana Bilgisayarının) hangi tesisleri sağladığını belirtmesi ve Sunucu Ana Bilgisayarın (veya uygulama programının) hangi tesisleri istediğini belirtmesi olarak görülebilir.
Ne Zaman Gönderilir: DET seçeneğini kullanan bir Sunucu Telnet gerçekleştirim, asgari gerçekleştirimde bulunmayan belirli bir alt komutun veya terminal özniteliğinin kullanımını talep eden bir tesis alt komutunu, bu alt komutun veya özniteliğin ilk kullanımından önce göndermelidir. Kullanıcı Telnet gerçekleştirim, yanıtını mümkün olan en kısa sürede vermelidir. Ne Kullanıcı ne de Sunucu, alt komutları tek tek müzakere etmek zorunda değildir. Ayrıca, bir tesis alt komutuna yanıt veren bir Telnet gerçekleştirim, yalnızca o alt komut için izin vermek zorunda değildir. Desteklediği o sınıfa ait tüm tesisleri gösteren bir biçim eşlemi gönderebilir. Ancak, tesis talep eden bir Telnet gerçekleştirim, önceki müzakereler tesisin sağlandığını göstermiş olsa bile, alt komutu ilk kez kullanmadan önce mutlaka bir tesis alt komutu göndermelidir. Karşılık gelen bir tesis alt komutu alınana kadar tesis kullanılamaz. Tesis alt komutlarının ne zaman gönderilebileceği konusunda başka bir kısıtlama yoktur. Özellikle, bir uygulamanın bir oturumun başında kullanacağı tüm tesisleri bilmesi gerekli değildir.
Alındığında Yapılacak İşlem: Bir tesis alt komutu alındığında, alıcının talep eden mi yoksa sağlayıcı (Kullanıcı) mı olduğuna bağlı olarak iki olası işlem vardır.
Talep Eden: Bir tesis alt komutu bir talep eden tarafından alındığında ve Yanıt Bekleniyor durumundaysa, Yanıt Beklenmiyor durumuna geçmelidir. Daha sonra gönderdiği tesis eşlemini almış olduğu tesis eşlemiyle mantıksal kesişim oluşturacak şekilde birleştirmelidir. (Yoğunluk özniteliği için, alınan sayı ile istenen sayıdan küçük olanı alınmalıdır.) Sonuç, başarıyla müzakere edilen tesisleri gösterir. Not: Alıcı Yanıt Bekleniyor durumunda değilse, bu durum aşağıda açıklanan sağlayıcı durumudur.
Sağlayıcı: Bir tesis alt komutu alındığında, mümkün olan en kısa sürede sağladığı tesislerin bir tesis eşlemini içeren bir tesis alt komutu göndermelidir. Ardından, aldığı tesis eşlemi ile gönderdiği eşlemin mantıksal kesişimini oluşturarak talep eden için hangi yeni tesisleri sağladığını belirlemelidir.
Not: Çoğu durumda talep eden Sunucu Ana Bilgisayar ve sağlayıcı da terminali destekleyen Kullanıcı Ana Bilgisayar olsa da, bu ayrım her zaman geçerli olmayabilir.
Aktarım Alt Komutları
İki tür aktarım alt komutu vardır: verinin talep edene gönderilmesini istemek için kullanılanlar ve talep edene gönderilen verinin önüne eklenen bir alt komut. İlk tür, talep edene verinin terminalden ne zaman, nereden ve bir dereceye kadar ne kadarının aktarılacağını denetleme olanağı sağlar. Bunların açıklaması doğrudandır ve Bölüm 2'de bulunabilir.
Veri terminalden iki olay sonucunda gönderilebilir: terminal kullanıcısının aktarımı başlatması veya bir aktarım alt komutuna yanıt olarak. Bazı programlar, aktarımın ekranda nereden başladığını bilmek isteyebilir. (Bu makuldür, çünkü terminal kullanıcısı aktarım yapmadan önce imleci önemli ölçüde hareket ettirmiş olabilir.) Diğer programlar ise bu tür bilgilere ihtiyaç duymayabilir. Bu işlev gerekirse kullanılmak üzere DATA TRANSMIT alt komutu sağlanmıştır. Kullanıldığında, bu alt komut terminalden gelen verinin önüne eklenir. <x> ve <y> parametreleri aktarımın başlangıcının ekran koordinatlarını verir. <x> M-1'e eşit veya daha küçük, <y> ise N-1'e eşit veya daha küçük olmalıdır. Bu DATA TRANSMIT ile bir sonraki arasında yer alan tüm verinin, ilk alt komutta verilen koordinatlardan başladığı ve ekranın kısıtları ile verideki biçim etkileyicilere göre her satırı doldurarak devam ettiği varsayılır. Dolayısıyla, akıllı veya özensiz (bakış açınıza bağlı olarak) bir kullanıcı-ana bilgisayar DET gerçekleştirim, yalnızca yeni başlangıç noktası son bitiş noktasından farklı olduğunda bir DATA TRANSMIT alt komutu eklemek zorundadır.
6. Örnek Etkileşim
Bu örneği açıklamak için RFC 726'nın adlandırması kullanılacaktır. İlgili RFC'den alıntı yapmak gerekirse:
- "S:" hizmet veren ana bilgisayardan kullanan ana bilgisayara gönderilir.
- "U:" kullanan ana bilgisayardan hizmet veren ana bilgisayara gönderilir.
- "T:" terminal kullanıcısı tarafından girilir.
- "P:" terminalde yazdırılır.
Köşeli parantezler ([]) içindeki metin yorumdur. Açılı parantezler (<>) içindeki metin tek bir birim olarak alınmalıdır. Örneğin, satır başı <cr> olarak, ondalık 27 değeri ise <27> olarak gösterilir.
Kullanıcının Telnet bağlantısını kurduğu, oturum açtığı ve bir uygulama programının ya kullanıcı tarafından doğrudan ya da önceden hazırlanmış bir başlatma yordamı aracılığıyla yeni başlatıldığı varsayılmaktadır. Sayfadaki sunum, yalnızca varlıkları gruplamak içindir ve ileti sınırlarının konumunu ima etmez. Diyaloğun herhangi bir bölümünün tek bir ileti veya birden çok ileti olarak gönderilebileceği varsayılmalıdır. Programın veya Telnet'in ilk eylemi DET seçeneğini müzakere etmektir:
S: <IAC><DO><DET>
U: <IAC><WILL><DET>
S: <IAC><DO><OUTPUT PAGE SIZE> [Önce ekran boyutunu müzakere edin. Bu durumda kullanıcıdan
terminalin boyutunu istiyoruz. Bu, DET seçeneği müzakere edilmeden
U: <IAC><WILL><NAOP> önce de yapılmış olabilirdi.]
U: <IAC><SB><NAOP><DR><25><IAC><SE>
S: <IAC><SB><NAOP><DS><0><IAC><SE>
S: <IAC><DO><OUTPUT LINE WIDTH>
U: <IAC><SB><NAOL><DR><80><IAC><SE> [Ekranı 25 satır ve 80 karakter olarak tanımlar.
S: <IAC><SB><NAOL><DS><0><IAC><SE> Sunucu, ekranı biçimlendirirken bu bilgiyi kullanabilir.]
S: <IAC><SB><DET><FORMAT FACILITIES> [Şimdi terminal özniteliklerini ayarlayın.]
<Repeat><Protection, 3 Levels Intensity><IAC><SE>
U: <IAC><SB><DET><FORMAT FACILITIES>
<Repeat, Blinking><Protection, 3 Levels Intensity><IAC><SE>
S: <IAC><SB><DET><ERASE SCREEN><IAC><SE> [Ekranı silin ve formu göndermeye başlayın.]
<IAC><SB><DET><FORMAT DATA>
<Protection=1, Intensity=1><0><5><IAC><SE> Name:
<IAC><SB><DET><MOVE CURSOR><0><1><IAC><SE>
<IAC><SB><DET><FORMAT DATA>
<Protection=1, Intensity=1><0><8><IAC><SE> Address:
<IAC><SB><DET><MOVE CURSOR><0><4><IAC><SE>
<IAC><SB><DET><FORMAT DATA>
<Protection=1, Intensity=1><0><17><IAC><SE> Telephone number:
<IAC><SB><DET><MOVE CURSOR><32><4><IAC><SE>
<IAC><SB><DET><FORMAT DATA>
<Protection=1, Intensity=1><0><24><IAC><SE> Social Security Number:
<IAC><SB><DET><FORMAT DATA> [Yazılanların görüntülenmediği bir alan oluşturun.]
<Protection=1, Intensity=7><0><11><IAC><SE>
<IAC><SB><DET><MOVE CURSOR><32><5><IAC><SE>
<IAC><SB><DET><FORMAT FACILITIES> [Blinking Özniteliğini kullanmak için izin alın.]
<Blinking><0><IAC><SE>
U: <IAC><SB><DET><FORMAT FACILITIES>
<Repeat, Blinking><Protection, 3 Levels Intensity><IAC><SE>
S: <IAC><SB><DET><FORMAT DATA>
<Blinking=1, Protection=1, Intensity=1><0><29><IAC><SE>
Your SSN will not be printed.
<IAC><SB><DET><HOME><IAC><SE>
<IAC><GA>
Önceki değiş tokuş, ekrana aşağıdaki gibi görünen bir form yerleştirmiştir:
Name:
Address:
Telephone Number: Social Security Number:
"Your SSN will not be printed."
burada tırnak içindeki dize yanıp sönmektedir.
Terminal kullanıcısı artık sağlanan formu doldurmakta serbesttir. İmleci ilk alanın başına getirir (bu genellikle sekme tuşuna basılarak yapılır) ve yazmaya başlar. Bu etkileşimi göstermiyoruz, çünkü Kullanıcı Telnet programı veya ağ ile herhangi bir etkileşim oluşturmaz. Terminal kullanıcısı formu doldurmayı tamamladıktan sonra, formun korumasız kısmını göndermek için aktarım tuşuna basar; ancak önce Kullanıcı Telnet programı, Alan Ayırıcı alt komutunu yoğunlaştırmak için Byte Macro Seçeneğini müzakere eder:
U: <IAC><DO><BM> [Byte Macro Seçeneğini müzakere edin.]
S: <IAC><WILL><BM> [Ondalık 166'yı Alan Ayırıcı alt komutu olarak tanımlayın
U: <IAC><SB><BM><DEFINE> (Ek 3'e bakınız)]
<166><6><IAC SB DET FIELD SEPARATOR IAC SE><IAC><SE>
S: <IAC><SB><BM><ACCEPT><166><IAC><SE> [Sunucu makroyu kabul eder.]
U: <IAC><SB><DET><DATA TRANSMIT><0><6><IAC><SE>
John Doe <166> 1515 Elm St., Urbana, Il 61801
<166> 217-333-9999 <166> 123-45-6789 <166>
S: <IAC><SB><DET><ERASE SCREEN><IAC><SE>
Thank you.
Ve böyle devam eder.
Ek 1 – Alt Komutlar, İşlem Kodları ve Sözdizimi
| Kod | Alt Komut | Parametreler |
|---|---|---|
| 1 | EDIT FACILITIES | <Facility map> |
| 2 | ERASE FACILITIES | <Facility map> |
| 3 | TRANSMIT FACILITIES | <Facility map> |
| 4 | FORMAT FACILITIES | <Facility map 1> <Facility map 2> |
| 5 | MOVE CURSOR | <x> <y> |
| 6 | SKIP TO LINE | <y> |
| 7 | SKIP TO CHAR | <x> |
| 8 | UP | |
| 9 | DOWN | |
| 10 | LEFT | |
| 11 | RIGHT | |
| 12 | HOME | |
| 13 | LINE INSERT | |
| 14 | LINE DELETE | |
| 15 | CHAR INSERT | |
| 16 | CHAR DELETE | |
| 17 | READ CURSOR | |
| 18 | CURSOR POSITION | <x><y> |
| 19 | REVERSE TAB | |
| 20 | TRANSMIT SCREEN | |
| 21 | TRANSMIT UNPROTECTED | |
| 22 | TRANSMIT LINE | |
| 23 | TRANSMIT FIELD | |
| 24 | TRANSMIT REST OF SCREEN | |
| 25 | TRANSMIT REST OF LINE | |
| 26 | TRANSMIT REST OF FIELD | |
| 27 | DATA TRANSMIT | <x><y> |
| 28 | ERASE SCREEN | |
| 29 | ERASE LINE | |
| 30 | ERASE FIELD | |
| 31 | ERASE REST OF SCREEN | |
| 32 | ERASE REST OF LINE | |
| 33 | ERASE REST OF FIELD | |
| 34 | ERASE UNPROTECTED | |
| 35 | FORMAT DATA | <format map> |
| 36 | REPEAT | <count><char> |
| 37 | SUPPRESS PROTECTION | <negotiation> |
| 38 | FIELD SEPARATOR | |
| 39 | FN | <code> |
| 40 | ERROR | <cmd><error code> |
Ek 2 – Hata Kodları
| Kod | Açıklama |
|---|---|
| 1 | Tesis daha önce müzakere edilmemiş. |
| 2 | Geçersiz alt komut kodu. |
| 3 | İmleç adresi sınırların dışında. |
| 4 | Tanımlanmamış FN değeri. |
| 4 | Kabul edilebilir satır genişliği müzakere edilemiyor. |
| 5 | Kabul edilebilir sayfa uzunluğu müzakere edilemiyor. |
| 6 | Alt komutta geçersiz parametre. |
| 7 | Alt komut ayrıştırılırken sözdizimi hatası. |
| 8 | Alt komutta çok fazla parametre. |
| 9 | Alt komutta çok az parametre. |
| 10 | Tanımlanmamış parametre değeri. |
| 11 | Biçim Özniteliklerinin desteklenmeyen birleşimi. |
Ek 3 – Byte Macro Seçeneğinin Kullanımı
DET seçeneğinin başlıca sakıncalarından biri, işlevlerin Telnet seçenek alt müzakereleri olarak kodlanması nedeniyle oldukça yüksek bir ek yük getirmesidir. Çoğu terminalde tek bir bayt olarak kodlanan Character Insert gibi bir işlev, DET seçeneğinde altı bayt gerektirir. Başlangıçta, alt komutların sağladığı saydamlıkla aynı sonucu elde edebilecek tek diğer çözüm, ek Telnet kontrol işlevleri tanımlamak olurdu. Ancak bunun Telnet protokolünün kendisinde değişiklik gerektirmesi nedeniyle, bunun akıllıca bir çözüm olmadığı düşünülmüştür. Daha sonra Telnet Byte Macro Seçeneği (RFC 729) tanımlanmıştır. Bu seçenek, kullanıcı ve sunucu Telnet'lerinin rastgele bir karakter dizisini tek bir bayta eşlemesine ve bunun ağ üzerinden aktarılmasına olanak tanır. Böylece Byte Macro Seçeneği, yoğun biçimde kullanılan alt komutlar için ek yükten kaçınma olanağını gerçekleştirimlere sağlar. Bu ekin geri kalanı, Byte Macro Seçeneğinin DET seçeneğine nasıl uygulanması gerektiğini önerir.
Byte Macro Seçeneğinin belirtimine uygun olarak, makro baytlar 128 ile 239 aralığından seçilecektir. DET seçeneği için, makro baytların alt komut koduna 128 eklenerek seçilmesi önerilir. Buna ek olarak, her iki tarafın da bu algoritmaya göre tüm alt komutlar için makro baytları desteklemeye istekli olduğunu (ancak alt komutların tümünü desteklemek zorunda olmadığını) belirten gayriresmî bir DET alt komutu tanımlanabilir. Bu alt komut şu olacaktır:
IAC SB DET DET-MACRO <negotiation> IAC SE
alt komut kodu: 254
burada <negotiation>, Telnet seçenek müzakeresinin değerlerine sahip olabilir:
- 251 — WILL
- 252 — WONT
- 253 — DO
- 254 — DONT
Bu alt komut, bir Telnet gerçekleştirim tarafından, aşağıdaki algoritmaya göre tüm DET alt komutları için bayt makrolarını benimseme isteğini belirtmek amacıyla gönderilir:
Alt komut i için makro baytı i + 128 olacaktır ve parametresiz alt komutlar için aşağıdaki dizgeyi temsil edecektir:
IAC SB DET <subcommand code> IAC SE
ve parametreli alt komutlar için aşağıdaki dizgeyi temsil edecektir:
IAC SB DET <subcommand code>
Bu alt komut için varsayılan ayar, makroların yürürlükte olmamasıdır; başka bir deyişle:
IAC SB DET DET-MACRO WONT IAC SE
IAC SB DET DET-MACRO DONT IAC SE
Bu alt komutun müzakeresi, Telnet seçeneklerinin müzakerelerinde uygulanan kuralların aynısını izler.
References
ADM-1 Interactive Display Terminal Operator's Handbook, Lear-Siegler, Inc. 7410-31.
ADM-Interactive Display Terminal Operator's Handbook, Lear-Siegler, Inc. EID, 1974.
Burroughs TD 700/800 Reference Manual, Burroughs Corp., 1973.
Burroughs TD 820 Reference Manual, Burroughs Corp., 1975.
CC-40 Communications Station: General Information Manual, Computer Communication, Inc., Yayın No. MI-1100, 1974.
Crocker, David. "Telnet Byte Macro Option," RFC 729, 1977.
Data Entry Virtual Terminal Protocol for Euronet, Taslak, 1977.
Day, John. "Telnet Protokolünde Küçük Bir Tuzak," RFC 728, 1977.
Hazeltine 2000 Desk Top Display Operating Instructions. Hazeltine IB-1866A, 1870.
How to Use the Consul 980: A Terminal Operator's Guide and Interface Manual. Applied Digital Data Systems, Inc. 98-3000.
How to Use the Consul 520: A Terminal Operator's Guide and Interface Manual. Applied Digital Data Systems, Inc. 52-3000.
Honeywell 7700 Series Visual Information Projection (VIP) Systems: Preliminary Edition. 1973.
An Introduction to the IBM 3270 Information Display System. IBM GA27-2739-4, 1973.
Naffah, N. "Protocole Appareil Virtuel type Ecran" Reseau Cyclades. TER 536, 1976.
Postel, Jon ve Crocker, David. "Uzaktan Denetimli İletim ve Yankılama Telnet Seçeneği" RFC 726, NIC 39237, Mart 1977.
Schicker, Peter. "Sanal Terminal Protokolü (Öneri 2)." INWG Protocol Note #32, 1976.
UNISCOPE Display Terminal: Programmer Reference. Sperry-Univac UP-7807 Rev. 2, 1975.
Universal Terminal System 400: System Description. Sperry-Univac UP-8357, 1976.
Walden, David C. "Telnet Çıkış Satırı Genişliği Seçeneği." NIC #20196, 1973, ayrıca ARPANET Protocol Handbook içinde, 1976.
Walden, David C. "Telnet Çıkış Sayfa Boyutu." NIC #20197, 1973, ayrıca ARPANET Protocol Handbook içinde, 1976.