Character mode — masofaviy terminal aloqasida foydalanuvchi kiritgan belgilarni to‘liq satr tugashini kutmasdan birma-bir uzatish va qayta ishlash rejimidir. Bu atama tarixan Telnet va terminal driverlari bilan bog‘liq. Har tugma bosilishi remote hostga yetishi mumkinligi sabab interaktiv shell, matn muharriri va tugma darajasidagi boshqaruv tez javob beradi.
Uzatish modeli
Foydalanuvchi klaviaturada belgi kiritganda terminal client uni network oqimiga yozadi. Serverdagi pseudo-terminal yoki dastur belgini qabul qilib, natija va echo ni qaytaradi. Echo local clientda yoki remote hostda bajarilishi mumkin; ikkalasi bir vaqtda yoqilsa belgi ikki marta ko‘rinadi, ikkalasi o‘chiq bo‘lsa kiritma ekranda ko‘rinmaydi.
Character mode bitta belgi bitta network paket degani emas. TCP implementation kichik yozuvlarni birlashtirishi, buffer qilishi yoki kechiktirishi mumkin. Protokolning semantik birligi belgi bo‘lsa-da, transport paket chegarasi ilova chegarasi hisoblanmaydi.
Terminal holatlari
Unix terminal driveridagi canonical mode odatda butun satrni local ravishda yig‘ib, Enterdan keyin dasturga beradi. Non-canonical yoki rawga yaqin rejim esa dasturga belgilarni tezroq yetkazadi. Text editor, pager va interactive shell cursor keylari hamda control sequence larni o‘zi talqin qilish uchun shu imkoniyatdan foydalanadi.
Raw mode barcha processing o‘chirilgan degani bo‘lishi mumkin, character-at-a-time esa minimal miqdor yoki timeout sozlamalari bilan ham ishlaydi. Backspace, Ctrl-C va Ctrl-D kabi belgilar local terminal driveri, Telnet muzokarasi yoki remote ilova tomonidan qayta ishlanishi mumkin. Qaysi qatlam mas’ul ekani noto‘g‘ri bo‘lsa control keylar kutilmagan natija beradi.
Telnet muzokarasi
Telnet dastlab Network Virtual Terminal modelidan foydalanadi. Echo va suppress-go-ahead kabi optionlar client hamda server o‘rtasida kelishiladi. Character-at-a-time interaktivligi uchun remote echo va go-ahead signalini kutmaslik odatiy bo‘lgan. LINEMODE extension esa satr tahririni client tomoniga ko‘chirish imkonini bergan.
Telnet command bayti oddiy data ichidan escape qilinadi. Terminal control sequence lari esa application data bo‘lib, ekran turi va emulyatsiyaga bog‘liq. UTF-8 belgisi bir nechta byte dan iborat bo‘lishi mumkin; shu sabab “character” har doim bitta byte bilan teng emas.
Kechikish va xavfsizlik
Har kiritma uchun remote echo kutish yuqori latency tarmog‘ida yozishni sust his qildiradi. Local prediction yoki line mode round-trip sonini kamaytiradi, lekin full-screen ilovalar tezkor tugma oqimini talab qiladi. Flow control va kichik buffer sozlamalari throughput hamda javobchanlik o‘rtasida muvozanat yaratadi.
Klassik Telnet trafikni, jumladan parolni, odatda ochiq uzatadi. Character mode shifrlash xususiyati emas. Ishonchsiz tarmoqda SSH kabi authenticated encryptionli protokol ishlatiladi. Terminal escape sequence ni log yoki web interfeysda xavfsiz ko‘rsatish ham zarur, chunki nazoratsiz sequence terminal holatini o‘zgartirishi mumkin.
Dastur interfeysi
Terminal ilovasi rejimni o‘zgartirishdan oldin eski sozlamani saqlaydi va normal chiqish, signal yoki xato holatida uni tiklaydi. Aks holda shell echo o‘chgan yoki canonical processing ishlamaydigan holatda qoladi. Unixda termios atributlari, Windowsda console mode flaglari boshqariladi. Ilova inputni byte chegarasida emas, encoding va escape sequence holat mashinasi bilan o‘qiydi. Arrow key ko‘pincha bir nechta byte yuboradi; qisman read uni bir necha hodisa deb noto‘g‘ri talqin qilmasligi kerak.
Password kiritish uchun echo o‘chirilishi character modega teng emas. Dastur satrni canonical holatda olib, faqat ekranga qaytarmasligi mumkin. Rejim va echo alohida xususiyat sifatida boshqariladi.
Bog‘liq tushunchalar
Line mode, Telnet, Terminal emulator, Pseudo-terminal, Canonical mode, Raw mode, SSH