Кіріспе
Модемге арналған команда тілі — Хейз командалар жиынтығы (AT командалар жиынтығы деп те аталады) — 1981 жылы Дейл Хитерингтон мен Деннис Хейздер Hayes Smartmodem 300 бодты модем үшін әзірлеген арнайы команда тілі. Командалар жиынтығы қысқа мәтіндік тізбектерден тұрады, оларды біріктіре отырып, қоңырау шалу, байланысты үзу және қосылым параметрлерін өзгерту сияқты операцияларға арналған командалар жасауға болады. Диалоп модемдердің басым көпшілігі Хейз командалар жиынтығын түрлі нұсқаларда қолданады. Командалар жиынтығы тек ең алғашқы 300 бит/с модемдер қолдайтын операцияларды қамтыды. Жоғары жылдамдықты модемдердегі қосымша мүмкіндіктерді басқару үшін жаңа командалар қажет болғанда, ірі өндірушілерден әртүрлі стандарттар пайда болды. Олар негізгі команда құрылымы мен синтаксисін сақтап, белгілі бір префикс таңбасын қолдана отырып, көптеген жаңа командаларды қосты — мысалы, Hayes және USR үшін & белгісі, ал Microcom үшін \ белгісі. Олардың көптеген түрлері SupraFAXModem 14400 модемі енгізілгеннен кейін және одан кейінгі нарықтың бірігуінен кейін Хейз кеңейтулеріне қайта стандартталды. "Хейзке үйлесімді" термині —
The Hayes command set (also known as the AT command set) is a specific command language originally developed by Dale Heatherington and Dennis Hayes for the Hayes Smartmodem 300 baud modem in 1981. The command set consists of a series of short text strings which can be combined to produce commands for operations such as dialing, hanging up, and changing the parameters of the connection. The vast majority of dial up modems use the Hayes command set in numerous variations. The command set covered only those operations supported by the earliest 300 bit/s modems. When new commands were required to control additional functionality in higher speed modems, a variety of one off standards emerged from each of the major vendors. These continued to share the basic command structure and syntax, but added any number of new commands using some sort of prefix character – & for Hayes and USR, and \ for Microcom, for instance. Many of these were re standardized on the Hayes extensions after the introduction of the SupraFAXModem 14400 and the market consolidation that followed. The term "Hayes compatible" was
Өмірбаян
Бюллетеньдік тақта жүйесі (BBS) пайдалынына дейін модемдер әдетте екі шетінде белгілі модемдермен басталатын және аяқталатын тікелей телефон желілерінде жұмыс істеді. Модемдер «қоңырау шалу» немесе «жауап беру» режимдерінде жұмыс істеді, деректерді беру үшін екі жиілік жиыны арасында қолмен ауысып отыратын. Әдетте, қоңырау шалушы пайдаланушы модемін «қоңырау шалу» режиміне қойып, содан кейін нөмірді қолмен теріп алатын. Екінші жақтан модем «жауап беру» режимінде жауап бергенде, телефон құрылғысы өшіріліп, қоңырау шалушы қолмен үзіп алғанға дейін байланыс жалғасты. Автоматтандыру қажет болған жағдайда, көбінесе ол тек жауап беру жағында ғана қажет болатын; мысалы, банкке күн соңындағы өңдеу үшін көптеген филиалдардан қоңыраулар қабылдау қажет болуы мүмкін. Бұл міндетті орындау үшін кейбір модемдер телефонды жауап беру режимінде автоматты түрде көтеріп алу және екінші пайдаланушы қолмен үзіп алғанда желіні босату мүмкіндігін қамтамасыз етті. Автоматты қоңырау шалу қажеттілігі одан бетер сирек кездесетін, және ол жеке перифериялық құрылғы арқылы – «қоңырау шалатын құрылғы» арқылы жүзеге асырылатын. Бұл құрылғы әдетте компьютердің жеке кіріс/шығыс портына (әдетте RS 232 порты) қосылып, модемнен бөлек бағдарламаланатын. Бұл жұмыс әдісі 1960 және 1970 жылдары, модемдер көбінесе компьютер терминалдары сияқты қарапайым құрылғыларды (қоңырау шалу) «ақылды» басты компьютерлермен (жауап беру) байланыстыру үшін қолданылғанда жақсы нәтиже берді. Алайда, 1970 жылдардағы микрокомпьютер революциясы арзан модемдердің пайда болуына әкелді, және жартылай арналған нүктеден нүктеге байланыс идеясы енді тиімді болмады. Мыңдаған пайдаланушылар басқа мыңдаған пайдаланушылардың кез келгеніне қоңырау шалуы мүмкін еді, ал сол кездегі жалғыз шешім пайдаланушының нөмірді қолмен теруі болды. Компьютер индустриясына модемге бағдарламалық жасақтама арқылы қандай нөмірді теру керектігін айту қажеттігі туды. Бұрынғы жеке қоңырау шалатын құрылғылардың мұндай мүмкіндігі болған, бірақ ол микрокомпьютерде болмаған жеке порттың құнымен байланысты болды. Басқа шешім – командаларды жіберу және қабылдау үшін арналған жеке «командалық тіректерді» пайдалану, ал тағы бірі – модемге кіріс деректерін команда ретінде түсіну керектігін көрсететін сигналдық тіректі пайдалану болар еді. Бұл екеуі де RS 232 стандартында аппараттық қолдауға ие болды. Алайда, микрокомпьютерлердегі RS 232 портының көптеген нұсқалары өте қарапайым болды, және кейбіреулері шығындарды төмендету үшін осы тіректердің көп бөлігін алып тастады.
Хейз ерітіндісі
Hayes Communications компаниясы 1981 жылы Smartmodem модемінде қолданыстағы деректер пиндерін өзгеріссіз пайдалану арқылы шешім ұсынды. Оның орнына, модем өзі екі режимнің біріне ауыстырылатын болды: дерек режимі, онда модем деректерді қашықтағы модемге жібереді. (Дерек режиміндегі модем компьютерден алған барлық ақпаратты дерек ретінде қарастырып, телефон желісі арқылы жібереді). және команда режимі, онда ақпарат жергілікті модемге берілген командалар ретінде түсіндіріледі (жергілікті модем орындауы тиіс командалар). Дерек режимінен команда режиміне ауысу үшін сессиялар үш плюс белгісінен ("+++") тұратын қашқыш тізбекті жіберіп, содан кейін шамамен бір секундтық үзіліс жасады. Қашқыш тізбегінің соңындағы үзіліс, жолақтық сигналдаудан туындаған мәселені азайту үшін қажет болды: егер үш плюс белгісінен кейін бір секунд ішінде басқа ақпарат алынса, ол қашқыш тізбегі емес еді және дерек ретінде жіберілер еді. Алға қайту үшін "ATO" онлайн командасын жіберді. Іс жүзінде көптеген командалар аяқталғаннан кейін автоматты түрде онлайн режимге ауысып, пайдаланушының онлайн команданы тікелей пайдалануы сирек кездеседі. Хейздің патентын лицензиялаудан жалтарту үшін кейбір өндірушілер уақыттық интервалсыз қашқыш тізбекті (Уақыттан тәуелсіз қашқыш тізбегі (TIES)) енгізді. Бұл қызмет көрсетуден бас тартудың маңызды қауіпсіздік салдарына әкелді, себебі егер компьютер дерек режимінде "+++ATH0" байт тізбегін жіберуге тырысса, модем қосылысты үзуге мүмкіншілігі болды. Мұндай модем арқылы интернетке қосылған кез келген компьютер үшін, оны "+++ATH0" тізбесін пайдалы жүктемесінде қамтитын «өлім сұрауымен» жіберу арқылы оңай пайдалануға болады. Компьютердің операциялық жүйесі автоматты түрде жөнелтушіге сол жүктемемен жауап беруге тырысады, дереу интернеттен ажыратылады, себебі модем ICMP пакеттерінің деректерін Хейз командасы ретінде түсіндіреді. Мысалы, егер компьютер пайдаланушысы жоғарыда аталған тізбекті қамтитын электрондық хат жіберуге тырысса, дәл сол қате пайда болады.
data mode in which the modem sends the data to the remote modem. (A modem in data mode treats everything it receives from the computer as data and sends it across the phone line). command mode in which data is interpreted as commands to the local modem (commands the local modem should execute). To switch from data mode to command mode, sessions sent an escape sequence string of three plus signs ("+++") followed by a pause of about a second. The pause at the end of the escape sequence was required to reduce the problem caused by in band signaling: if any other data was received within one second of the three plus signs, it was not the escape sequence and would be sent as data. To switch back they sent the online command, "ATO". In actual use many of the commands automatically switched to the online mode after completion, and it is rare for a user to use the online command explicitly. In order to avoid licensing Hayes's patent, some manufacturers implemented the escape sequence without the time guard interval (Time Independent Escape Sequence (TIES)). This had a major denial of service security implication in that it would lead to the modem hanging up the connection should the computer ever try to transmit the byte sequence "+++ATH0" in data mode. For any computer connected to the Internet through such a modem, this could be easily exploited by sending it a ping of death request containing the sequence "+++ATH0" in the payload. The computer operating system would automatically try to reply the sender with the same payload, immediately disconnecting itself from the Internet, as the modem would interpret the ICMP packet's data payload as a Hayes command. The same error would also trigger if, for example, the user of the computer ever tried to send an e mail containing the aforementioned string.
Командалар
Hayes командалар жиынтығы телефон желісінде қоңырау шалу және түйіп тастау сияқты түрлі операцияларға арналған командаларды қамтиды. Ол сонымен қатар модемді орнатуға арналған әртүрлі басқару элементтерін, соның ішінде пайдаланушыға бастапқы Hayes модеміндегі әртүрлі жад орындарын тікелей орнатуға мүмкіндік беретін регистрлік командалар жиынтығын қамтиды. Бұл командалар жиынтығы, тіркелімдердің мағынасын сақтай отырып, көбінесе сөзсіз көшірілді, және ол 300 бодтық модемдерді өндіретін дерлік барлық алғашқы компаниялар қолданды. 1200 және 2400 бодқа дейін кеңейту үшін жаңа командалардың шағын жиынтығы қажет болды, олардың кейбіреулері жаңа мүмкіндіктерге арналғандығын көрсету үшін амперсандпен ("&") белгіленді. Hayes компаниясы 1200 бодтық модемінен кейін көп ұзамай 2400 бодтық модельді шығаруға мәжбүр болды, және уақытты үнемдеу мақсатында екі модельдің де командалар жиынтығы бірдей болды. Бұл, іс жүзінде, қолданыстағы 1200 бодтық модемдердің пайдаланушыларына бағдарламалық жасақтаманы өзгертусіз жаңа Hayes 2400 модельдерін пайдалануға мүмкіндік берді. Осының нәтижесінде Hayes командаларының қолданылуы күшейді. Бірнеше жыл өткен соң, Телекоммуникация индустриясы қауымдастығы (TIA)/Электрондық индустриялар альянсы (EIA) 2400 бодтық командалар жиынтығын «Деректерді беру жүйелері және жабдықтары – Сәйкес келмейтін автоматты қоңырау шалу және басқару» деген атаумен ресми стандартқа көтерді, TIA/EIA 602. Алайда, Hayes Communications жоғары жылдамдықтарды немесе сығылуды қолдайтын модемдерді шығаруға асықпады, ал Microcom, U. S. Robotics және Telebit үш компания бұл бағытта алға шықты. Осы үш компанияның әрқайсысы Hayes компаниясының бастамасын күтпей, өздерінің қосымша командалар жиынтығын пайдаланды. 1990 жылдардың басына қарай қолданыста төрт негізгі командалар жиынтығы болды, және олардың біріне негізделген бірнеше нұсқалар да болды. 1990 жылдардың басында 14,4 және 28,8 кбит/с модемдердің кеңінен таралуы кезінде жағдай қайтадан қарапайым болды. Бірте-бірте, бастапқы Hayes кеңейтілген жиынтығына негізделген және "&" командаларын қолданатын командалар жиынтығы танымал болды, содан кейін ол барлыққа ортақ стандартқа айналды. U. S. Robotics компаниясының танымал модемдер желісінен шыққан командалар жиынтығы ғана танымал болып қалды.
Модемді инициализациялау
Сызық құрамында модемді қоңырау шалуға немесе жауап беруге оңтайлы дайындау үшін біріктірілген көптеген Хейс командалары болуы мүмкін, мысалы, AT&F&D2&C1S0=0X4. Көптеген модем бағдарламалық құралдары пайдаланушы берген инициализациялық тізбекті қолдады, ол әдетте модем іске қосылғанда модемге жіберілетін ұзын тізбектелген AT командасы болды. V.250 спецификациясы барлық DCE құрылғыларының "AT" белгісінен кейін кем дегенде 40 таңбадан тұратын тізбектелген командаларды қабылдауын талап етеді.
Үлгі сессия
Төменде екі компьютер, компьютер А және компьютер В бейнеленген, екеуі де модемдермен жабдықталған, және пайдаланушы модемдерді терминал эмуляторы бағдарламалық жасақтамасымен басқарады. Терминал эмуляторы бағдарламалық жасақтамасы пайдаланушыға Hayes командаларын тікелей модемге жіберуге және жауаптарды көруге мүмкіндік береді. Бұл мысалда, компьютер А-ның пайдаланушысы модемді (212) 555 0100 (алыс қашықтық) телефон нөміріне, модем В-ның телефон нөміріне қоңырау шалуға мәжбүр етеді. Әрбір команда мен жауаптан кейін команданы аяқтау үшін қайтару таңбасы жіберіледі.
Модем А Модем В Түсініктеме
ATDT12125550100 Модем А-дағы пайдаланушы қоңырау шалу командасын береді: AT – модемнің назарын аудару; D – қоңырау шалу; T – тонды жинау; 12125550100 – осы нөмірге қоңырау шалу
RING Модем А қоңырау шала бастайды. Модем В-ның телефон желісі қоңырау алады, және модем бұл туралы хабарлайды.
ATA Модем В-дағы компьютер жауап беру командасын береді.
CONNECT CONNECT Модемдер қосылады, және екі модем де «қосылды» деп хабарлайды. (Іс жүзінде, көптеген модемдер «CONNECT» сөзінен кейін қосылымның жылдамдығын көрсететін қосымша ақпаратты хабарлайды.) Сондай-ақ, осы уақытта екі модем де серийлік портта DCD, яғни деректерді тасымалдауды анықтау сигналын көтереді.
abcdef abcdef Модемдер қосылған кезде, екі жақта терілген әрбір әріп екінші жақта пайда болады. Компьютер А-дағы адам теруді бастайды. Әріптер модем арқылы өтіп, компьютер В-ның экранында пайда болады. (Пайдаланушы А өзі теріп жатқан әріптерін көре алмауы мүмкін – бұл терминал бағдарламалық жасақтамасының жергілікті эхо параметріне байланысты.)
+++ Компьютер В-дағы пайдаланушы модемге үзілу командасын береді. (Басқаша айтқанда, көбінесе компьютер В +++ немесе ATH қолданбастан, үзілуді жасау үшін DTR, яғни деректер терминалының дайындығы сигналын түсіре алады.)
OK Модем оны мойындайды.
ATH Компьютер В-дағы пайдаланушы қосылысты үзу командасын береді.
NO CARRIER OK Екі модем де қосылыс аяқталғанын хабарлайды. Модем В команданың күтілетін нәтижесі ретінде «OK» деп жауап береді; модем А қашықтан қосылыс үзілгенін хабарлау үшін «NO CARRIER» дейді. Екі жақтағы модемдер де DCD сигналдарын түсіреді.
Автобауд
Hayes командалар жиынтығы автоматты түрде бод жылдамдығын анықтауға мүмкіндік берді, себебі "A" және "T" әріптерінің бит үлгілері өте реттелген; "A" - "100 0001" және оның басында және соңында 1 бит бар, ал "T" - "101 0100", оның ішіндегі әр екінші бит шамамен белгіленген. RS 232 интерфейсі ең кіші маңызды битті бірінші жібергендіктен, 8N1 (сегіз дерек биті, паритет биті жоқ, бір тоқтату биті) конфигурациясындағы сәйкес желі үлгісі 01000001010001010101 (басталу және тоқтату биттері *құймаланған*) синхрондау сөзі ретінде қолданылады.
Дауыстық командалар жиынтығы
Дауыстық функциясы немесе автожауаптағышы бар модемдер осы командалардың кеңейтілген жиынтығын қолдап, цифрлық аудионы ойнату мен жазу мүмкіндігін береді.