プログラミング
Hayes ATコマンドセット
Hayes AT command set (en.wikipedia.org)
要約
Hayes ATコマンドセットは、1981年にHayes Smartmodemのために開発されたモデム制御用のテキストベースのコマンド言語です。当初は300ビット/秒のモデム向けでしたが、その基本的な構造と構文は、その後の高速モデムや競合製品でも広く採用され、事実上の標準となりました。このコマンドセットは、モデムをデータモードとコマンドモード間で切り替えるためのエスケープシーケンスや、ダイヤル、切断などの操作コマンドを含んでいます。
全文翻訳
Wikipedia、フリー百科事典より
モデム用コマンド言語
Hayes 300 Baud Smartmodem
Hayesコマンドセット(ATコマンドセットとしても知られる)は、1981年にHayes SmartmodemのためにDale HeatheringtonとDennis Hayesによって開発された、特定のコマンド言語です。このコマンドセットは、ダイヤル、切断、接続パラメータの変更などの操作を行うためのコマンドを生成するために組み合わせることができる、一連の短いテキスト文字列で構成されています。ダイヤルアップモデムの大多数は、多くのバリエーションでHayesコマンドセットを使用しています。このコマンドセットは、初期の300ビット/秒モデムがサポートする操作のみをカバーしていました。より高速なモデムの追加機能を制御するために新しいコマンドが必要になったとき、主要なベンダーごとにさまざまな独自の標準が登場しました。これらは基本的なコマンド構造と構文を共有し続けましたが、プレフィックス文字(例えば、HayesとUSRoboticsでは&、Microcomでは\)を使用して多数の新しいコマンドを追加しました。SupraFAXModem 14400の導入とそれに続く市場の統合により、これらの多くはHayes拡張機能で再標準化されました。Hayes互換という用語は、業界内で重要であり、2018年現在も重要です。
歴史
背景
コンピュータ掲示板システム(BBS)が登場する前は、モデムは通常、両端に既知のモデムで始まり終わる直接ダイヤル電話回線で動作していました。モデムは「発信」または「応答」モードで動作し、データ転送のために2つの周波数セットの間で手動で切り替わっていました。発信モデムの場合、これらの周波数は1,270 Hz(マークトーン、バイナリ1)と1,070 Hz(スペーストーン、バイナリ0)です。応答モデムの場合、周波数は2,225 Hz(マークトーン)と2025 Hz(スペーストーン)です。一般的に、電話をかけるユーザーはモデムを発信モードに切り替え、手動で番号をダイヤルしました。リモートモデムが応答し、すでに応答モードに設定されている場合、電話機の手が離され、発信者が手動で切断するまで通信が続行されました。自動化が必要な場合、それは通常、応答側でのみ必要でした。例えば、銀行は終業処理のために多数の支店からの電話を受ける必要があるかもしれません。この役割を果たすために、一部のモデムは、応答モード時に電話を自動的に取る機能や、相手が手動で切断したときに回線をクリアする機能を含んでいました。自動発信の必要性ははるかに少なく、別の周辺機器である「ダイヤラー」を通じて処理されていました。これは通常、コンピュータの別の入出力ポート(通常はRS-232ポート)に接続され、モデム自体とは別にプログラムされていました。この操作方法は、モデムが一般的にダム端末(発信)とスマートメインフレームコンピュータ(応答)を接続するために使用されていた1960年代と1970年代初頭には満足のいくものでした。しかし、1970年代のマイクロコンピュータ革命により低コストのモデムが登場し、半専用ポイントツーポイントリンクの考え方はもはや適切ではなくなりました。数千人のユーザーが他の数千人のユーザーにダイヤルしたい可能性があり、当時の唯一の解決策はユーザーに手動でダイヤルさせることでした。コンピュータ業界は、ソフトウェアを通じてモデムにダイヤルする番号を伝える方法を必要としていました。以前の別個のダイヤラーにはこの機能がありましたが、それは別のポートを犠牲にするものであり、マイクロコンピュータには利用できない場合がありました。別の解決策は、送信と受信のコマンド専用の別の「コマンドピン」セットを使用することでした。別の解決策は、モデムが受信データをコマンドとして解釈すべきであることを示す信号ピンを使用することでした。これらはいずれもRS-232標準でハードウェアサポートされていました。しかし、マイクロコンピュータのRS-232ポートの多くの実装は非常に基本的であり、コスト削減のためにこれらのピンの多くが削除されていました。
Hayesの解決策
Hayes Communicationsは、1981年のSmartmodemで、既存のデータピンを変更せずに使用するという解決策を導入しました。代わりに、モデム自体を2つのモードのいずれかに切り替えることができました。データモード:モデムがリモートモデムにデータを送信するモード。(データモードのモデムは、コンピュータから受信したすべてをデータとして扱い、電話回線で送信します。)コマンドモード:データがローカルモデムへのコマンドとして解釈されるモード(ローカルモデムが実行すべきコマンド)。データモードからコマンドモードに切り替えるには、セッションは3つのプラス記号(+++)のエスケープシーケンス文字列の後に約1秒の一時停止を送信しました。エスケープシーケンスの末尾の一時停止は、インバンドシグナリングによって引き起こされる問題を軽減するために必要でした。もし3つのプラス記号の1秒以内に他のデータが受信された場合、それはエスケープシーケンスではなく、データとして送信されました。元に戻すために、ATOオンラインコマンドが送信されました。実際の使用では、多くのコマンドは完了後に自動的にオンラインモードに切り替わり、ユーザーが明示的にオンラインコマンドを使用することはまれです。Hayesの特許をライセンス供与しないために、一部のメーカーは時間ガード間隔なしでエスケープシーケンスを実装しました(Time Independent Escape Sequence (TIES))。これは、コンピュータがデータモードで+++ATH0というバイトシーケンスを送信しようとするとモデムが接続を切断するという、重大なサービス拒否のセキュリティ上の影響がありました。このようなモデムを介してインターネットに接続されているコンピュータの場合、ペイロードに+++ATH0シーケンスを含むping of deathリクエストを送信することで簡単に悪用される可能性がありました。コンピュータのオペレーティングシステムは、自動的に同じペイロードで送信者に返信しようとし、モデムがICMPデータペイロードをHayesコマンドとして解釈したため、インターネットから即座に切断されました。例えば、コンピュータのユーザーが前述の文字列を含む電子メールを送信しようとした場合にも、同じエラーが発生しました。
コマンド
Hayesコマンドセットには、ダイヤルや切断などのさまざまな電話回線操作のためのコマンドが含まれています。また、モデムを設定するためのさまざまな制御も含まれており、ユーザーが元のHayesモデムのさまざまなメモリ位置を直接設定できるレジスタコマンドのセットも含まれています。このコマンドセットは、初期の300ボーモデムメーカーのほとんど(かなりの数が存在しました)によって、レジスタの意味を含めて、ほぼそのままコピーされました。1200および2400ボーへの拡張には、新しい機能専用であることを示すアンパサンド(&)で始まるコマンドの一部を含む、新しいコマンドの追加が必要でした。Hayes自身も1200の直後に2400ボーモデルを迅速に導入せざるを得ず、時間節約の方法としてコマンドセットは同一でした。偶然にも、これにより既存の1200ボーモデムのユーザーは、ソフトウェアを変更せずに新しいHayes 2400モデルを使用できるようになりました。これは、これらのコマンドのHayesバージョンが使用されることを強化しました。数年後、Telecommunications Industry Association (TIA)/Electronic Industries Alliance (EIA) は、Data Transmission Systems and Equipment – Serial Asynchronous Automatic Dialing and Control、TIA/EIA-602として2400ボーコマンドセットを正式に標準化しました。しかし、Hayes Communicationsは、より高速な速度や圧縮をサポートするモデムのリリースが遅く、Microcom、USRobotics、Telebitの3社が先行しました。これら3社はそれぞれ独自の追加コマンドセットを使用しました。1990年代初頭には、4つの主要なコマンドセットが使用されており、それらのいずれかに基づく多数のバリエーションがありました。1990年代初頭に14.4および28.8 kbit/sモデムが広く導入されるにつれて、状況は再び単純化しました。元のHayes拡張セットに&コマンドを多用したコマンドセットが人気を博し、その後普遍的になりました。人気を維持しているコマンドセットは、もう1つだけ、彼らの人気モデムラインからのUSRoboticsセットです。
説明
以下は