Network Working Group
Request for Comments: 437
NIC: 13701
Yazar: E. Faeh, Computer Systems Laboratory, UCSB
Tarih: 30 Haziran 1973
UCSB'DE VERİ YENİDEN YAPILANDIRMA HİZMETİ
Bu RFC’nin amacı, UCSB’de Veri Yeniden Yapılandırma Hizmeti’nin (Data Reconfiguration Service, DRS) kullanılabilir olduğunu duyurmak ve DRS Zaman Paylaşımlı Sisteminin kullanımını açıklamaktır. DRS, Ağ veri akışlarını yeniden biçimlendirmek için esnek bir yönteme yönelik bir deneydir. DRS, farklı giriş/çıkış arayüzlerine sahip süreçlerin birbirine bağlanmasını ve aralarından geçen veriler üzerinde kullanıcı tarafından belirlenen dönüşümlerin gerçekleştirilmesini sağlayan bir araç sunar. DRS’nin temsilî kullanım örnekleri arasında alan ekleme, alan silme, değişken uzunluklu dize işleme, dize uzunluğu hesaplama, alan yer değiştirme, karakter paketleme ve paketten çıkarma ile karakter kümesi çevirileri yer alır.
DRS’yi kullanmak için kullanıcı önce, iki soket arasında geçen veriler üzerinde yapılacak yeniden biçimlendirmeyi tanımlayan bir form (her tek yönlü ileti yolu için bir form ilişkilendirilir) tanımlar. Daha sonra DRS, ilgili iki süreçle Ağ bağlantıları kurmak ve aralarındaki diyaloğu izlemek üzere yönlendirilebilir. DRS, bir süreçten bir giriş akışı alır, girdiyi formda belirtilen kurallara göre yeniden biçimlendirir ve yeniden biçimlendirilmiş veriyi ikinci sürece bir çıkış akışı olarak gönderir. İki süreç, sanki doğrudan birbirine bağlıymış gibi iletişim kurar.
DRS üç ana bileşenden oluşur:
- DRS kaynak programlarını (formlar) daha basit, makineden bağımsız bir komut dizisine (nesne programı) indirgeyen bir derleyici
- Derleyici tarafından oluşturulan nesne programını çalıştıran bir yorumlayıcı
- Ağ kullanıcısını DRS’ye bağlayan yürütücü bir program olan DRS Zaman Paylaşımlı Sistemi
DRS kaynak dili ve derleyicisinin ayrıntılı açıklamaları aşağıdaki belgelerde bulunmaktadır:
- "The Data Reconfiguration Service—An Experiment in Adaptable, Process/Process Communications", The Rand Corp., R-860-ARPA, Kasım 1971.
- "Data Reconfiguration Service Compiler: Communications Among Heterogeneous Computer Centers Using Remote Resource Sharing", The Rand Corp., R-887-ARPA, Nisan 1972.
DRS Zaman Paylaşımlı Sistemi (DRS/TSS) ve onun sunucu Telnet’i şu anda kullanılabilir durumdadır ve ondalık 1281 soketi üzerinden adreslenebilir. DRS/TSS, kullanıcıyı DRS’ye bağlar. TENEX-benzeri yürütücü komutların bir alt kümesine ek olarak, formların adlarıyla oluşturulması ve saklanması ile DRS derleyicisi veya yorumlayıcısının çağrılması için komutlar mevcuttur. Hem derleyici hem de yorumlayıcı DRS/TSS’den bağımsız olarak (asenkron) çalıştığından, kullanıcı derleme veya yorumlama isteklerinin başlatıldığı ve sonlandırıldığı zaman bilgilendirilir. Ayrıca, bir formun yürütülmesi sona erdiğinde yorumlayıcı tarafından bir tanılama iletisi sağlanır.
Bir kullanıcı DRS/TSS’ye bağlandığında, terminalinin tanımlanması için kendisine dahili bir TTY numarası atanır. Kullanıcı derleyici veya yorumlayıcıyı çağıran bir komut verdiğinde, TTY numarası ve kullanıcı tarafından belirlenen bir iş adı isteği benzersiz olarak tanımlamak için kullanılır. Bundan sonra isteğe iş adı ile atıfta bulunulur. Bir Ağ ana bilgisayarı, ana bilgisayar adıyla veya başına # eklenmiş ana bilgisayar numarasıyla belirtilir. Bir soket numarası, kullanılan tabanı belirtmek için isteğe bağlı bir taban göstergesi ile başına eklenebilen bir tamsayı olarak belirtilir. Varsayılan taban ondalık ve varsayılan işaret pozitiftir. Negatif bir soket numarası ikinin tümleyeni biçiminde tutulur.
Denetim Karakterleri
Aşağıdaki denetim karakterleri DRS tarafından tanınır:
- Control A (SOH) veya Rubout (DEL): son karakteri siler
- Control V (SYN): son kelimeyi siler
- Control W (ETB): son ifadeyi siler
- Control X (CAN): tüm satırı siler
- Control D (EOT): geçerli kelimeyi görüntüler
- Control E (ENQ): geçerli ifadeyi görüntüler
- Control F (ACK): tüm satırı görüntüler
- Control Y (EM): geçerli ifadenin adını görüntüler
Komut kabulü, satır başı–satır sonu (carriage return–line feed) ya da nokta ile yapılır. Bir boşluk, geçerli kelimenin tanınmasını zorlar ve ? şu anda mümkün olan girdileri listeler.
Aşağıdaki bölümler DRS/TSS komut sözdizimini açıklar. <CA> komut kabulünü, köşeli parantezler [] isteğe bağlı bilgiyi gösterir. Tüm değişmez bilgiler tek tırnak içinde ' ' yer alır. Parantez içindeki ve | ile ayrılmış listelerden bir alternatif seçilir.
DRS/TSS Komut Sözdizimi
Komutlar
'ATTACH' <tty no.> <password> <CA>
'BREAK' (<tty list>|<CA>) <CA>
'COMPILE' <job name> <formid> <CA>
'CONVERT' <integer> ['TO'] <base> <CA>
'DEFINE' <formid> <CA>
'DELETE' [<file type>] <formid> <CA> <CA>
'DETACH' <CA> <CA>
'DIRECTORY' <formid> <CA>
'DISCONNECT' <CA> <CA>
'FULLDUPLEX' <CA>
'HALFDUPLEX' <CA>
'HELP' <CA>
'LINE_AT_A_TIME' <CA>
'LINK' ('ENABLE'|'DISABLE'|<tty list>|<CA>) <CA>
'LIST' [<file type>] <formid> <CA>
'LOGIN' <userid> <password> <acct no.> <CA>
'LOGOUT' <CA>
'MONITOR' (<tty list>|<CA>) <CA>
'QUIT' (<job rename>|<CA>) <CA>
'RADIX' <base> <CA>
'RENAME' <formid> ['TO'] <formid> <CA>
'RESPONSE' ('ALL'|'HANDHOLD'|'PROMPT'|'NORMAL'|'UNUSUAL'|
'ERRORS'|'NONE') <CA>
'RUN' <job name> ('SIMPLEX' <run parameters>|
'DUPLEX' '(' <run parameters> <run parameters> ')') <CA>
'SELECT' (<tty list>|<CA>) <CA>
';' <text> <CA>
Yerine Koymalar
<formid> = ['<' <userid> ',' <password> '>'] <form name>
<base> = ('DECIMAL'|'HEXADECIMAL'|'OCTAL')
<file type> = ('DIAGNOSTICS'|'OBJECT_CODE'|'SOURCE')
<run parameters> = ('SICP' <socket number> |
'UICP' [<hostid>] <socket number> |
'RFC' [<hostid>] <socket number> [<hostid>] <socket number>)
['BYTE SIZE' <integer>]
['CONNECT_TIME' <integer>]
['RUN_TIME' <integer>]
<formid>
Tanımlar
<acct no>
Hesap numarası, azami uzunluğu 4 olan bir karakter dizisidir.
<form name>
Form adı, azami uzunluğu 6 olan ve ilk karakteri alfabetik olan bir karakter dizisidir.
<hostid>
Bir Ağ ana bilgisayarını belirtmek için başına # eklenmiş ana bilgisayar numarası veya ana bilgisayar adı kullanılabilir.
<integer>
Tamsayıların başına isteğe bağlı olarak artı veya eksi işareti ve kullanılan tabanı belirtmek üzere H veya X (onaltılık), 0 (sekizlik) ya da D (ondalık) eklenebilir. Varsayılan taban ondalık ve varsayılan işaret pozitiftir.
<job name>
İş adı, azami uzunluğu 6 olan ve ilk karakteri alfabetik olan bir karakter dizisidir.
<password>
Şu anda kabul edilen parola 'ARPA'dır.
<socket number>
Soket numaraları <integer> olarak belirtilir.
<tty list>
TTY listesi, virgülle ayrılmış bir veya daha fazla TTY numarasından oluşur.
<tty no.>
TTY numarası, bir DRS terminal kimlik numarasını temsil eden bir tamsayıdır.
<userid>
Kullanıcı kimliği, azami uzunluğu 8 olan ve ilk karakteri alfabetik olan bir karakter dizisidir.
Komut Açıklamaları
ATTACH
'ATTACH' <tty no.> <password> <CA>
Kullanıcının konsolunu, kimlik numarası <tty no.> olan DRS/TSS terminaline bağlar. <tty no.> terminali daha önce ayrılmış (detached) olmalı ve silinmemiş olmalıdır. (Şu anda, ayrılmış terminaller 1 saat sonra silinmektedir.)
BREAK
'BREAK' (<tty list>|<CA>) <CA>
<tty list> içinde belirtilen terminallere olan bağlantıların koparılmasına neden olur. <tty list> belirtilmezse, kurulmuş tüm bağlantılar koparılır. (Bağlantıların nasıl kurulduğuna ilişkin açıklama için 'LINK', 'MONITOR' ve 'SELECT' komutlarına bakınız.)
COMPILE
'COMPILE' <job name> <formid> <CA>
<formid> formunun derlenmesine neden olur. DRS Derleyicisi çağrılmadan önce, <formid> formunun kaynağının mevcut olduğu ve nesne kodunun halihazırda bulunmadığı doğrulanır. DRS Derleyicisi, kullanıcının terminalinden bağımsız olarak (asenkron) çalışır. DRS Derleyicisi, form için bir tanılama dosyası ve hata ile karşılaşılmaması durumunda nesne dosyaları üretir. <job name>, isteği tanımlamak için kullanılır ve mevcut istek beklemede olduğu sürece başka herhangi bir işi tanımlamak için kullanılamaz.
Ana bellek gereksinimleri nedeniyle, herhangi bir anda yalnızca bir derlemenin yürütülmesine izin verilir. Sonraki istekler, istek kuyruğu dolu değilse daha sonra yürütülmek üzere kuyruğa alınır; kuyruk doluysa istek reddedilir. Kullanıcı, derlemesi başlatıldığında ve sona erdiğinde bilgilendirilir.
CONVERT
'CONVERT' <integer> ['TO'] <base> <CA>
Kullanıcının sekizlik, ondalık veya onaltılık tamsayıları bir tabandan diğerine dönüştürmesine olanak tanır. <base>, sonucun istenen tabanını belirtir ve 'OCTAL', 'DECIMAL' veya 'HEXADECIMAL' olabilir.
DEFINE
'DEFINE' <formid> <CA>
Kullanıcının yeni bir kaynak form tanımlamasına veya mevcut bir kaynak forma ekleme yapmasına olanak tanır. Yeni satır göstergesi $$, girdinin kaynak formu tanımlamak için kullanılacağını belirtmek üzere normal $ın yerini alır. Control C (ETX), form tanımının sona erdiğini bildirir ve normal $ yeni satır göstergesini geri getirir.
Ne yazık ki, formları düzenlemek için mevcut olanaklar son derece sınırlıdır. Yalnızca o anda girilmekte olan satır düzenlenebilir. Bir satır CR–LF ile sonlandırılıp yeni satır göstergesi göründükten sonra, satır düzenlenemez. Bir form tanımlanırken aşağıdaki denetim karakterleri kullanılabilir:
- Control A (SOH) veya Rubout (DEL): son karakteri siler
- Control X (CAN): tüm satırı siler
- Control F (ACK): tüm satırı görüntüler
Geçerli satır dışındaki satırlarda değişiklik yapılması gerekiyorsa, tüm form silinmeli ve yeniden girilmelidir.
DELETE
'DELETE' [<file type>] <formid> <CA>
<formid> formunun belirtilen bileşen dosya(larını) siler. <file type>, silinecek bileşen dosyasını belirtir; 'SOURCE', 'DIAGNOSTIC' veya 'OBJECT_CODE' olabilir. <file type> belirtilmezse, formun tüm bileşenleri silinir.
DETACH
'DETACH' <CA> <CA>
DRS ile kullanıcı arasındaki TELNET bağlantısını koparır, ancak kullanıcının DRS terminalini belirli bir süre için silmez; bu süre şu anda 1 saattir. Terminal ayrıldığında, terminalin aktif olan herhangi bir işi etkilenmez. Kullanıcı daha sonra 'ATTACH' komutunu kullanarak DRS terminaline yeniden bağlanabilir.
DIRECTORY
'DIRECTORY' <formid> <CA>
<formid> formunun hangi bileşen(ler)inin mevcut olduğunu listeler. Eksiksiz bir form, 'SOURCE', 'DIAGNOSTICS' ve 'OBJECT_CODE' dosyalarından oluşur.
DISCONNECT
'DISCONNECT' <CA> <CA>
DRS ile kullanıcı arasındaki TELNET bağlantısını koparır ve kullanıcının DRS terminalini siler. Terminalin aktif olan tüm işleri temizlenir.
FULLDUPLEX
'FULLDUPLEX' <CA>
DRS’ye kullanıcı girdisini yankılamasını bildirir; önceki bir 'LINE_AT_A_TIME' komutunu geçersiz kılar.
HALFDUPLEX
'HALFDUPLEX' <CA>
DRS’ye kullanıcı girdisini yankılamamasını bildirir; önceki bir 'LINE_AT_A_TIME' komutunu geçersiz kılar.
HELP
'HELP' <CA>
DRS denetim karakterlerini ve anlamlarını listeler.
LINE_AT_A_TIME
'LINE_AT_A_TIME' <CA>
Kullanıcının satır-satır modunda çalıştığını DRS’ye bildirir ve önceki bir 'FULLDUPLEX' veya 'HALFDUPLEX' komutunu geçersiz kılar. DRS, kullanıcı komut girerken kullanıcıya herhangi bir çıktı göndermez.
LINK
'LINK' ('ENABLE'|'DISABLE'|<tty list>|<CA>) <CA>
LINK komutu, diğer terminallere olan bağlantıları etkinleştirmek veya devre dışı bırakmak ya da terminaller arasında bağlantılar kurmak için kullanılabilir.
'LINK' 'ENABLE' <CA>, diğer terminallerin kullanıcının terminaliyle bağlantı kurmasına yönelik sonraki isteklerin DRS tarafından kabul edilmesini sağlar.'LINK' 'DISABLE' <CA>, diğer terminallerin kullanıcının terminaliyle bağlantı kurmasına yönelik sonraki isteklerin DRS tarafından reddedilmesini sağlar.'LINK' (<tty list>|<CA>) <CA>, kullanıcının terminali ile<tty list>içinde belirtilen terminaller arasında çift yönlü bağlantılar kurulmasını DRS’den ister.<tty list>belirtilmezse, DRS kullanıcının terminalini diğer tüm aktif terminallere bağlamayı dener.
Kullanıcının terminali başka bir terminale bağlıyken, kullanıcının terminaline giden tüm çıktılar bağlı terminale de yönlendirilir ve bağlı terminale giden tüm çıktılar kullanıcının terminaline de yönlendirilir. Tek yönlü bağlantılar 'MONITOR' ve 'SELECT' komutları aracılığıyla kurulabilir.
LIST
'LIST' [<file type>] <formid> <CA>
<formid> formunun <file type> dosyasının içeriğini listeler. <file type>, 'SOURCE', 'DIAGNOSTIC' veya 'OBJECT_CODE' olabilir ve varsayılanı 'SOURCE'dur.
LOGIN
'LOGIN' <userid> <password> <acct no.> <CA>
Kullanıcıyı sisteme giriş yaptırır, iş odaklı komutları etkinleştirir ve DRS kullanımının faturalandırılacağı hesabı belirtir. Şu anda DRS için faturalandırma uygulanmamaktadır ve <userid> ile <acct no.> kullanıcı tarafından serbestçe seçilebilir. DRS için faturalandırma uygulamaya alındığında, kullanıcı kimlikleri ve hesap numaraları atanacak ve giriş sırasında geçerlilikleri denetlenecektir. Şu anda kabul edilen tek <password> 'ARPA'dır.
LOGOUT
'LOGOUT' <CA>
Kullanıcıyı sistemden çıkarır ve iş odaklı komutları ile daha önce belirtilen muhasebe parametrelerine sonraki etkinliklerin faturalandırılmasını devre dışı bırakır. 'DISCONNECT' komutunda olduğu gibi, terminalin aktif olan tüm işleri temizlenir.
MONITOR
'MONITOR' (<tty list>|<CA>) <CA>
Kullanıcının terminali ile <tty list> içinde belirtilen terminaller arasında tek yönlü bağlantılar kurulmasını DRS’den ister. <tty list> belirtilmezse, DRS kullanıcının terminalini diğer tüm aktif terminallere bağlamayı dener. Kullanıcının terminali başka bir terminali izlerken, o terminale giden tüm çıktılar kullanıcının terminaline de yönlendirilir.
'QUIT' (<job name> | <CA>) <CA>
<job name> ile tanımlanan işi (derleme veya yorumlama isteği) temizlemesi için DRS’den istekte bulunur. <job name> belirtilmezse, aktif olan tüm işler temizlenir.
'RADIX' <base> <CA>
Kullanıcının, sonraki tamsayı görüntülemelerinde kullanılacak tabanı belirtmesine olanak tanır. <base>, 'OCTAL', 'DECIMAL' veya 'HEXADECIMAL' olabilir. Varsayılan görüntüleme tabanı ondalıktır.
'RENAME' <formid> ["TO"] <formid> <CA>
Kullanıcının bir formun adını değiştirmesine olanak tanır. İlk <formid> ile belirtilen formun tüm bileşenlerinin adları, ikinci <formid> ile uyumlu olacak şekilde değiştirilir. İkinci <formid> ile belirtilen form zaten mevcutsa, ad değişikliği yapılmaz ve kullanıcı bilgilendirilir.
'RESPONSE' ('ALL' | 'HANDHOLD' | 'PROMPT' | 'NORMAL' | 'UNUSUAL' | 'ERRORS' | 'NONE') <CA>
Sistemin sağlaması gereken iletilerin düzeyini kullanıcının belirtmesine olanak tanır. Varsayılan yanıt düzeyi 'ALL'dır.
'RUN' <job name> ('SIMPLEX' <run parameters> | 'DUPLEX' ( <run parameters> <run parameters> )) <CA>
İstenen Ağ bağlantılarının kurulmasını ve DRS yorumlayıcısının bağlantılar üzerinden geçen verilere belirtilen biçim(ler)i uygulamasını sağlar. Kullanıcı önce isteğinin hangi iş adıyla tanımlanacağını, ikinci olarak da simplex mi yoksa duplex Ağ bağlantılarının mı kurulacağını belirtir.
'SIMPLEX', tek yönlü bir ileti yolunun kullanılacağını ifade eder ve bir adet <çalışma parametreleri> kümesi gerektirir. 'DUPLEX', iki ileti yolunun kullanılacağını ifade eder ve iki adet <çalışma parametreleri> kümesi gerektirir. <çalışma parametreleri>, bir Ağ bağlantısını kurmak için gerekli verileri, DRS yorumlayıcısı için zaman sınırlarını ve Ağ veri akışına uygulanacak biçimi belirtir.
<çalışma parametreleri>
('SICP' <soket numarası>
| 'UICP' [<hostid>] <soket numarası>
| 'RFC' [<hostid>] <soket numarası> [<hostid>] <soket numarası>)
['BYTE_SIZE' <tamsayı>]
['CONNECT_TIME' <tamsayı>]
['RUN_TIME' <tamsayı>]
<formid>
Ağ bağlantılarının kurulması için üç yöntem mevcuttur: 'SICP', 'UICP' ve 'RFC'.
'SICP' (Server Initial Connection Protocol) ve 'UICP', DRS’nin UCSB’de <soket numarası> soketi üzerinden adreslenebilen bir sunucu sürecini simüle etmesini ve bir kullanıcı sürecinin buna bağlanmasını beklemesini sağlar. 'UICP', DRS’yi bir kullanıcı sürecini simüle etmeye ve <hostid> Ana Makinesi üzerindeki <soket numarası> soketi üzerinden adreslenebilen sunucuya bağlanmaya yönlendirir. 'RFC', DRS’yi belirtilen iki sokete doğrudan bağlanmaya yönlendirir. 'RFC' durumunda, belirtilen iki soketten biri gönderim soketi, diğeri ise alım soketi olmalıdır. <hostid>, varsayılan olarak kullanıcının DRS/TSS’ye giriş yaptığı Ana Makine’dir.
<çalışma parametreleri> içindeki kalan alanlar
'BYTE_SIZE'
<tamsayı>
Kullanılacak bayt boyutunu belirtir; varsayılan değer 8’dir.'CONNECT_TIME'
<tamsayı>
DRS’nin bağlantının kurulmasını beklemesi gereken süreyi saniye cinsinden belirtir. Varsayılan değer 30 saniyedir.'RUN_TIME'
<tamsayı>
DRS yorumlayıcısının çalışmasına izin verilen azami süreyi saniye cinsinden belirtir.'RUN_TIME'için varsayılan değer beş dakikadır.<formid>
Ağ veri akışına uygulanacak biçimi belirtir.
Her bir <çalışma parametreleri> örneği için bir soket çifti tahsis edilir ve bir biçim belirtilir. 'SIMPLEX' çalıştırmaları durumunda, Ağ verisi bu iki soket arasında akar ve biçim veriye uygulanır.
'DUPLEX' çalıştırmaları durumunda, iki adet <çalışma parametreleri> kümesi belirtilir; bu da iki soket çiftinin tahsis edilmesine ve iki biçimin belirtilmesine neden olur. Bunları, ilk <çalışma parametreleri> kümesi aracılığıyla kurulan gönderim soketi 1, alım soketi 1 ve biçim 1; ikinci parametreler kümesi aracılığıyla kurulan gönderim soketi 2, alım soketi 2 ve biçim 2 olarak adlandıralım. Yorumlama başladığında, veri gönderim soketi 1’den biçim 1 üzerinden alım soketi 2’ye ve gönderim soketi 2’den biçim 2 üzerinden alım soketi 1’e akar. (Bu soket değiştirme olmaksızın, 'SICP' veya 'UICP' belirtildiğinde süreçler kendilerine bağlanmış olurdu.)
Kullanıcı, bağlantı isteklerinin başlatıldığı ve yorumlayıcının bir bağlantıya biçim uygulamaya başladığı zamanlarda bilgilendirilir. Bir biçimin yürütülmesi sona erdiğinde, kullanıcıya yorumlayıcı tarafından sağlanan bir tanılama iletisi ile birlikte yorumlayıcının gerçek çalışma süresi verilir.
'SELECT' (<tty list> | <CA>) <CA>
DRS’den, kullanıcının terminali ile <tty list> içinde belirtilen terminaller arasında tek yönlü bağlantılar kurmasını ister. <tty list> atlanırsa, DRS kullanıcının terminalini diğer tüm etkin terminallere bağlamayı dener. Kullanıcının terminalinde başka bir terminal seçiliyken, kullanıcının terminaline yapılan tüm çıktılar seçilen terminale de yönlendirilir.
';' <text> <CA>
Kullanıcının dilediği herhangi bir yorumu girmesine olanak tanır. <text>, '?' ve '.' karakterlerini içerebilir. <CA>’nın nokta yerine CR-LF olması gerektiğine dikkat edin.
Bu RFC, Helene Morin tarafından, Via Genie aracılığıyla, 12/1999 tarihinde çevrimiçi RFC arşivlerine girmek üzere makine tarafından okunabilir biçime dönüştürülmüştür.