VyÜlo v t²denφku: COMPUTERWORLD
╚φslo:27/93
RoΦnφk:1993
Rubrika/kategorie: Co je Φφm ... v poΦφtaΦov²ch sφtφch
Dφl:68

zp∞t do archivu Φlßnk∙ | rejst°φk | p°edchozφ dφl | nßsledujφcφ dφl

Ji°φ Peterka: Co je Φφm ... v poΦφtaΦov²ch sφtφch (68):

Telnet - II.

V minulΘm dφlu jsme se zab²vali celkovou architekturou protokolu TELNET a jeho vazbou na prost°edφ, ve kterΘm je implementovßn. Ukßzali jsme si, ₧e tato vazba je zcela zßm∞rn∞ minimßlnφ, a dφky tomu nenφ protokol TELNET vßzßn na urΦit² operaΦnφ systΘm. Dnes se ji₧ budeme v∞novat konkrΘtnφm vlastnostem protokolu TELNET a mechanism∙m, kterΘ pou₧φvß.

Nejprve si ale struΦn∞ p°ipome≥me pojem virtußlnφho terminßlu, kterΘmu jsme v∞novali 66. dφl serißlu: vzhledem k velkΘ r∙znorodosti skuteΦn²ch terminßl∙ nenφ dost dob°e mo₧nΘ, aby se ka₧dß aplikace p°izp∙sobovala ka₧dΘmu jednotlivΘmu terminßlu. Mφsto toho se zavedl tzv. virtußlnφ terminßl jako jednotn² mezistupe≥, kterΘmu se z jednΘ strany p°izp∙sobujφ vÜechny aplikace, a z druhΘ strany vÜechny skuteΦnΘ terminßly. Jako "virtußlnφ" je tento spoleΦn² mezistupe≥ oznaΦovßn proto, ₧e je ve skuteΦnostφ jen abstrakcφ, a nikoli fyzicky existujφcφm za°φzenφm. V 66. dφlu jsme si takΘ naznaΦili, ₧e protokol TELNET pou₧φvß zvlßÜtnφ p°φpad tzv. parametrickΘho modelu virtußlnφho terminßlu.

NVT - Network Virtual Terminal

Virtußlnφ terminßl, pou₧φvan² protokolem TELNET, je oznaΦovßn jako NVT, neboli Network Virtual Terminal (doslova: sφ¥ov² virtußlnφ terminßl). Je zvlßÜtnφm p°φpadem parametrickΘho modelu v tom smyslu, ₧e p°edpoklßdß pevn∞ danou hodnotu jednotliv²ch parametr∙, kterΘ terminßl definujφ (viz 66. dφl), Φφm₧ vlastn∞ fixuje jeho vlastnosti i konkrΘtnφ zp∙sob ovlßdßnφ. PopiÜme si nynφ, jakß je p°edstava tohoto za°φzenφ:

NVT je obousm∞rnΘ, znakov∞ orientovanΘ za°φzenφ, kterΘ lze nejlΘpe p°irovnat ke dvojici klßvesnice-tiskßrna. Klßvesnice generuje jednotlivΘ znaky v k≤du ASCII, zatφmco tiskßrna je pr∙b∞₧n∞ tiskne. Celek pak odpovφdß p°edstav∞ tzv. znakovΘho, resp. °ßdkovΘho terminßlu (scroll mode terminal, viz 66. dφl).

AΦkoli protokol TELNET vyu₧φvß pro p°enos dat spolehlivΘ a spojovanΘ p°enosovΘ slu₧by transportnφho protokolu TCP, kterΘ vytvß°φ pln∞ duplexnφ spojenφ, NVT toto spojenφ vyu₧φvß jen v poloduplexnφm re₧imu. Dφky tomu je pak mo₧nΘ vystaΦit i s takov²m skuteΦn²m terminßlem, kter² je fyzicky poloduplexnφ (jako nap°. terminßl IBM 2741).

NVT dßle p°edpoklßdß, ₧e p°enos dat bude tzv. bufferovßn - tedy ₧e data nebudou vysφlßna po jednotliv²ch znacφch, ale ₧e se budou nejprve hromadit ve vhodn²ch vyrovnßvacφch pam∞tech (anglicky: buffers), a skuteΦn∞ vysφlßny pak budou a₧ v∞tÜφ celky. JakΘ celky to ale majφ b²t?

U °ßdkovΘho terminßlu, jak²m je NVT, je jednoznaΦn²m kandidßtem °ßdka. DΘlka °ßdky ovÜem nenφ pevn∞ stanovena, a to ani u tiskßrny. Na stran∞ klienta urΦuje skuteΦnou dΘlku ka₧dΘ jednotlivΘ °ßdky u₧ivatel, kter² pracuje na p°φsluÜnΘm terminßlu - tφm, ₧e v urΦit² okam₧ik zmßΦkne tlaΦφtko ENTER, RETURN, NEW LINE Φi jak se na jeho terminßlu jmenuje klßvesa, kterou se zadßvß konec °ßdky. Klientskß slo₧ka protokolu TELNET, kterß zpracovßvß u₧ivatel∙v vstup z klßvesnice, m∙₧e na zßklad∞ zmßΦknutφ tΘto klßvesy obdr₧et r∙zn² k≤d (nap°. jen znak CR, jen znak LF, dvojici znak∙ CR a LF apod.), podle konkrΘtnφho pou₧itΘho terminßlu. Sama vÜak musφ na jeho zßklad∞ vygenerovat dvojici znak∙ CR a LF, nebo¥ virtußlnφ terminßl NVT poΦφtß s tφm, ₧e °ßdky budou zakonΦovßny prßv∞ tφmto zp∙sobem. Analogicky je tomu i na stran∞ serveru - aplikaΦnφ proces, kter² generuje data, urΦenß k zobrazenφ na terminßlu, je Φlenφ na jednotlivΘ °ßdky takov²m zp∙sobem, jak² p°edpoklßdß p°φsluÜnß "mφstnφ" konvence. Serverovß slo₧ka protokolu TELNET je vÜak p°ed odeslßnφm p°eklßdß do takovΘho tvaru, aby byly zakonΦeny dvojicφ CR LF.

Protokol TELNET tedy p°edpoklßdß, ₧e data budou standardn∞ p°enßÜena po cel²ch °ßdcφch. To ale nemusφ b²t v₧dy mo₧nΘ - nenφ-li dΘlka °ßdky p°edem omezena, m∙₧e se stßt, ₧e pro ni nebude k dispozici dostateΦn∞ velkß vyrovnßvacφ pam∞¥. TakΘ to ale nemusφ b²t v₧dy ₧ßdoucφ - n∞kdy m∙₧e b²t vhodnΘ, Φi dokonce nutnΘ odesφlat menÜφ celky ne₧ celΘ °ßdky, a₧ nap°. po jednotlivΘ znaky. S touto mo₧nostφ protokol TELNET poΦφtß, a doporuΦuje ji realizovat. P°esn² mechanismus, kter²m by si zdroj dat mohl vynutit jejich odeslßnφ jeÜt∞ p°ed zakonΦenφm °ßdky, je vÜak ponechßn na konkrΘtnφ implementaci.

Ostatnφ je na vzßjemnΘ dohod∞

Pro sprßvnΘ pochopenφ smyslu a role virtußlnφho terminßlu NVT je velmi d∙le₧itΘ si uv∞domit to, co jsme si ji₧ naznaΦili v 66. dφlu - ₧e toti₧ ka₧d² virtußlnφ terminßl v₧dy omezuje "individualitu" konkrΘtnφch terminßl∙, a redukuje jejich vlastnosti a schopnosti na takovou ·rove≥, kterß m∙₧e b²t spoleΦnß prakticky vÜem fyzicky existujφcφm terminßl∙m. Nejinak je tomu i v p°φpad∞ virtußlnφho terminßlu NVT, kter² si proto m∙₧eme p°edstavit jako nejv∞tÜφ spoleΦn² jmenovatel vÜech jeÜt∞ pou₧iteln²ch terminßl∙. Protokol TELNET jej vÜak chßpe jen jako "povinnΘ minimum" a p°ipouÜtφ, aby se ob∞ strany mohly v konkrΘtnφm p°φpad∞ dohodnout "na lepÜφm" - tedy na tom, ₧e majφ a jsou schopny pou₧φvat n∞jakß rozÜφ°enφ v∙Φi tomu, co po₧aduje NVT.

P°itom ale platφ zßsada, ₧e pou₧itφ rozÜφ°enφ (anglicky: options) si nelze vynucovat - ka₧dß strana mß prßvo vznßÜet nßvrhy na jejich pou₧itφ, ale druhß strana mß v₧dy prßvo je odmφtnout. Dφky tomu je mo₧nΘ vystaΦit i s "hloup²mi" terminßly, jejich₧ skuteΦnΘ schopnosti nep°esahujφ minimum, po₧adovanΘ virtußlnφm terminßlem NVT, a na druhΘ stran∞ je mo₧nΘ efektivn∞ vyu₧φt mo₧nosti a schopnosti lΘpe vybaven²ch terminßl∙.

Bezprost°edn∞ po navßzßnφ spojenφ tedy ob∞ strany mohou pou₧φvat prßv∞ a pouze to, co jim zaruΦuje virtußlnφ terminßl NVT. Mohou vÜak kdykoli zahßjit "licitaci", v rßmci kterΘ se dohodnou na pou₧itφ oboustrann∞ p°ijateln²ch rozÜφ°enφ. VzßjemnΘ domlouvßnφ na pou₧itφ r∙zn²ch rozÜφ°enφ obvykle probφhß okam₧it∞ po navßzßnφ spojenφ, ale nenφ to nutnou podmφnkou. Stejn∞ tak se mohou ob∞ strany kdykoli dohodnout na tom, ₧e p°estanou urΦitΘ rozÜφ°enφ pou₧φvat. Zajφmavß je v tomto ohledu takΘ zßsada rovnoprßvnosti - ka₧dß ze stran mß stejnΘ prßvo navrhnout pou₧φvßnφ urΦitΘho rozÜφ°enφ, a stejn∞ tak m∙₧e po₧adovat i ukonΦenφ pou₧φvßnφ urΦitΘho rozÜφ°enφ (₧ßdosti tohoto typu p°itom nesmφ b²t druhou stranou odmφtnuty).

Protokol TELNET samoz°ejm∞ musφ definovat konkrΘtnφ zp∙sob, jak²m majφ ob∞ strany postupovat p°i vzßjemnΘ "licitaci" (anglicky: options negotiation). P°φsluÜn² mechanismus je ovÜem koncipovßn jako otev°en² - nem∙₧e toti₧ anticipovat vÜechna budoucφ rozÜφ°enφ, kterß budou p°ipadat v ·vahu, a tak pro n∞ nem∙₧e p°esn∞ p°edepisovat konkrΘtnφ formu "licitace". Mφsto toho ponechßvß otev°en² prostor pro individußlnφ postupy vzßjemnΘho dohadovßnφ, ale souΦasn∞ s tφm je umo₧≥uje jednoznaΦn∞ detekovat, tak aby druhß strana m∞la v₧dy mo₧nost rozpoznat, ₧e jde o nabφdku pou₧φvßnφ rozÜφ°enφ, a i kdy₧ jφ nerozumφ, mohla ji odmφtnout.

SedmibitovΘ znaky v osmibitov²ch bytech

Pro k≤dovßnφ jednotliv²ch znak∙ pou₧φvß protokol TELNET znakov² k≤d ASCII. Po₧aduje, aby tiskßrna (resp. zobrazovacφ za°φzenφ) virtußlnφho terminßlu NVT byla schopna znßzornit vÜech 95 alfanumerick²ch znak∙ ASCII (s k≤dy 32 a₧ 127), a z 33 °φdφcφch znak∙ povinn∞ vy₧aduje interpretaci znak∙ NULL, CR a LF. Krom∞ toho stanovuje p°esn² v²znam i pro °φdφcφ znaky BEL (Bell), BS (Back Space), HT (Horizontal Tab), VT (Vertical Tab) a FF (Form Feed), a to v souladu s jejich v²znamem v k≤du ASCII - ovÜem s tφm, ₧e interpretace t∞chto znak∙ nenφ povinnß (tj. tiskßrna je nemusφ interpretovat v∙bec, ale pokud ano, pak jen stanoven²m zp∙sobem). Pro ostatnφ °φdφcφ znaky k≤du ASCII je stanoveno, ₧e nebudou mφt na tiskßrnu ₧ßdn² efekt.

Po klßvesnici virtußlnφho terminßlu NVT je naopak po₧adovßno, aby byla schopna generovat vÜech 128 znak∙ k≤du ASCII (i kdy₧ n∞kterΘ nemajφ na tiskßrnu ₧ßdn² efekt). Krom∞ toho je po₧adovßno, aby klßvesnice NVT generovala jeÜt∞ i n∞kolik dalÜφch znak∙, kterΘ majφ v²znam °φdφcφch p°φkaz∙ protokolu TELNET (o nich bude °eΦ p°φÜt∞).

JednotlivΘ znaky sedmibitovΘho k≤du ASCII jsou ovÜem p°enßÜeny zßsadn∞ v osmi bitech. Dφky tomu je pak mo₧nΘ k nim "p°idat" jeÜt∞ i prßv∞ naznaΦenΘ °φdφcφ p°φkazy (odliÜenΘ nastavenφm nejvyÜÜφho bitu). Jako jedno z mo₧n²ch rozÜφ°enφ se ale ob∞ strany mohou dohodnout na tom, ₧e si budou p°edßvat osmibitovΘ znaky (tj. znaky, k≤dovanΘ v osmi bitech). Pak je ovÜem nutnΘ zajistit pot°ebnou transparenci - umo₧≥ujφcφ jednoznaΦn∞ odliÜit p°φkazy od "u₧iteΦn²ch dat" - jin²m zp∙sobem.


zp∞t do archivu Φlßnk∙ | rejst°φk | p°edchozφ dφl | nßsledujφcφ dφl
Tento Φlßnek m∙₧e b²t voln∞ Üφ°en, pokud se tak d∞je pro studijnφ ·Φely, na nev²d∞leΦnΘm zßklad∞ a se zachovßnφm tohoto dov∞tku. Podrobnosti hledejte zde, resp. na adrese http://archiv.czech.net/copyleft.htm