今回は、「ちょっと踏み込んだ通信プロトコルと関連用語」についての説明です。
1.初めに
前回、通信に関する決まり事であるプロトコルの説明と、その主要な種類について解説しました。
ただ、有名どころを大体押さえたという話であって、他にプロトコルが存在しないわけではありません。
今回は、その他の若干知名度が落ちるプロトコルと、プロトコルに関連性のある技術をいくつか取り上げて解説していこうと思います。
ちなみに、本記事でまとめているのは、個人的に理解しておく必要が出てきたプロトコルです。
その為、今後しれっと内容が追加される可能性はあります。
プロトコルって無数に存在しますからね。
2.その他のプロトコル
今回紹介していくプロトコルは以下の通りです。
- AoIP
- API
- LLDP
- SCP
- SFTP
- SSH
- Telnet
- VoIP
AoIP
TCP/IPに準拠してオーディオ伝送を行う技術のことです。
後述のDanteなどが該当します。
[Audio over IP]の略称です。
TCP/IPとは、TCP(データ通信の決まり事)とIP(インターネットを形成する為の決まり事)のことを指しています。
つまり、このTCP/IPで定められているIPネットワーク(インターネット用の通り道)を使ってオーディオデータを伝送できるようにするための決まり事がAoIPになります。
具体的には、オーディオデータをデジタル変換してからパケットに分割してIPネットワークを経由させ、受信先でパケットを復号することでオーディオ伝送をしています。
要するに、LANケーブル一本で多チャンネルの音声信号を送受信できるようにした技術というわけです。
同じような用語として、VoIPというものも存在します。
API
あるプログラム(ソフトウェア)を全く別のプログラムと繋げて情報をやり取りするためのインターフェースまたはプロトコル(決まり事)のことです。
[Application Programming Interface]の略称です。
別々のWebサービス同士で情報をやり取りする場合のインターフェースまたはプロトコルもAPIに当たります。
あるソフトウェアを開発しようとした際に、既存のAというプログラムも利用すれば機能を実現できそうだったとします。
そのために、Aと情報のやり取りを行うBというプログラムを作成したとします。
この時、AとBの間では情報のやり取りを行いたいのですが、このAとBというプログラムは全く別物なんですよね。
これ、意思の疎通(情報のやり取り)ができると思いますか?
例えるなら、アメリカ人が日本人に向けて中国語で話しかけているような状態なんですよ。
お互いに何人なのか理解していませんし、お互いが共通して理解できる言語もわかっていないんです。
ということで、当然ながら意思の疎通は無理です。
では、意思の疎通をするにはどうすれば良いでしょうか?
真っ先に思い付くのは、予め使用する言語(ルール)を指定しておくか、翻訳者を間に立てることだと思います。
この役割を担っているインターフェースまたはプロトコルがAPIです。
話を戻しますね。
プログラムBからプログラムAに向けて実行リクエストを出して、それに対して応答してもらうのがゴールです。
この機能を実現するには、APIを合わせれば良いのです。
具体的には、既存のプログラムであるAがAPI(通信ポートの仕様・プロトコル)を公開しているので、そのAPIに合わせてプログラムBを開発するのです。
そうすれば、プログラム間の通信ルールが統一されるので、問題無く情報のやり取りができるようになるというわけです。
別のプログラムと通信するための窓口だとイメージすると良いかと思います。
ちなみに、APIには様々な種類が存在しますが、最も身近なのはWeb APIでしょう。
インターネット経由で情報のやり取りを行うためのAPIのことです。
Webページの通信プロトコルであるHTTPやHTTPSに則ったAPIが存在するというだけの話です。
LLDP
隣接している機器同士の間で互いの機器情報などを送受信するためのプロトコルのことです。
[Link Layer Discovery Protocol]の略称です。
LANで物理的に接続されている同一ネットワーク内の機器を検出し、それらの機器の持つ情報(Macアドレス、IPアドレス、どんな機器なのか、どのようなインターフェースに接続されているのか、どんな設定になっているのかなど)を互いにやり取りすることが可能です。
ちなみに、LLDPはIEEE 802.1ABで定義されていて、その規格上の正式な名称は[Station and Media Access Control Connectivity Discovery]になっています。
SCP
ファイルの送受信のためのプロトコルのことです。
[Secure Copy Protocol]の略称です。
SSH(ネットワークを経由して他のコンピュータを安全に遠隔操作するためのプロトコル)を利用しています。
要するに、SCPとは安全性の高いファイル転送プロトコルのことなのです。
[secure(安全)]を[copy(複製)]する…SSH[Secure SHell]を利用しているからこんな名称なのですかね?
同じようなプロトコルとしてSFTPが存在しますが、SCPはシンプルなのでSFTPより通信速度が速いです。
ただし、ファイルの転送を中断すると最初からやり直しになるという欠点があります。
ファイルを転送するという機能自体は共通なので、通信速度を重視するか、柔軟性を重視するかで使い分ければ良いわけです。
ただ、SCPの場合はUNIX系OSのシェルである必要があるので、SFTPにしか対応していないということもあるようです。
SFTP
ファイルの送受信のためのプロトコルのことです。
[SSH File Transfer Protocol]の略称です。
FTP[File Transfer Protocol]もファイルの送受信のためのプロトコルを指しているので、イメージとしてはSSH+FTPという感じです。
ただし、同じような方法で利用できるというだけで、内部的な仕様や実装方式はFTPとは異なります。
どちらかと言うとSSHでFTPみたいなことをやっているのがSFTPです。
同じようなプロトコルとしてSCPが存在しますが、SFTPは多機能なのでSCPより通信速度が遅いです。
ただし、ファイルの転送を中断しても、中断したところから再開できるという利点があります。
ファイルを転送するという機能自体は共通なので、通信速度を重視するか、柔軟性を重視するかで使い分ければ良いわけです。
SSH
ネットワークを経由して他のコンピュータを安全に遠隔操作するためのプロトコルのことです。
[Secure Shell]の略称です。
[Secure(安全)]とついていることから想像できるかと思いますが、この通信プロトコルは暗号化されています。
話は変わりますが、SSHと同様にネットワークを経由して他のコンピュータを遠隔操作するためのプロトコルのことをTelnetと呼びます。
このTelnetなのですが、通信が暗号化されていません。
つまり、暗号化されたTelnetがSSHに当たります。
その為、実際にネットワーク経由で遠隔操作をしたい場合、暗号化に対応しているSSHを使用することが望ましいです。
ちなみに、コンピュータの利用者が入力した内容を関係するソフトウェアに伝える橋渡し役を担っているソフトウェアのことをシェル(shell)と呼びます。
そのシェルが暗号化されて安全になっているのがSSH[Secure Shell]という名称に繋がるので、この略称は結構覚えやすかったりします。
そうすると寧ろTelnetは何なんだよと思いますけどね。
Internetと似たような構成で電話[telephone]みたいなやり取りするから…とか?(適当)
Telnet
ネットワークを経由して他のコンピュータを遠隔操作するためのプロトコルのことです。
Telnetの仕組みを簡単に説明すると、コマンドプロンプト(コンピュータの情報のやり取りを全て文字で行うためのツールのこと)もしくはTera Term(Windowsを使って他のコンピュータを遠隔操作できるソフトウェアのこと)などのソフトウェアを使用して、遠隔操作したいコンピュータ(サーバ)のIPアドレスを指定することで通信を確立しています。
通信が確立されると応答画面が表示され、一番最初にIDとパスワードの入力を要求されます。
ここで権限のあるアカウントでログインすることで、命令ができる状態になります。
後は、テキストコマンド入力をして命令を送信する→実行結果が返信される→次の命令を送信する…という具合に通信を行っていきます。
この命令する側をTelnetクライアント、命令される側をTelnetサーバと呼びます。
そんなTelnetですが、とある問題点があります。
それは、通信が暗号化されていないことです。
その為、実際にネットワーク経由で遠隔操作をしたい場合、暗号化に対応しているSSHを使用することが望ましいです。
VoIP
TCP/IPに準拠して音声伝送を行う技術のことです。
[Voice over IP]の略称です。
TCP/IPとは、TCP(データ通信の決まり事)とIP(インターネットを形成する為の決まり事)のことを指しています。
つまり、このTCP/IPで定められているIPネットワーク(インターネット用の通り道)を使って音声データを伝送できるようにするための決まり事がVoIPになります。
具体的には、音声データをデジタル変換してからパケットに分割してIPネットワークを経由させ、受信先でパケットを復号することで音声伝送をしています。
簡単に言えば、音というデータをインターネットを通じて伝送できるようにした仕組みを指しているわけです。
このように、VoIPを使った電話サービスのことをIP電話と呼びます。
IPネットワークは回線の使用効率が良いので、普通の電話よりも通信料は安く抑えることが可能だったりします。
同じような用語として、AoIPというものも存在します。
3.プロトコルと関連性のある技術
次は、何らかのプロトコルに関連性のある技術やソフトウェアをいくつか挙げていきます。
- Dante
- Tera Term
Dante
オーストラリアに拠点を構えるAudinate社が開発したオーディオネットワークテクノロジーのことです。
ダンテと読みます。Devil May Cry…。
先述のAoIPの一種なので、ここで解説しています。
複数チャンネルのオーディオデータを圧縮することなくイーサネットを通じて伝送が可能で、非常に低いレイテンシ(データ転送要求を出してから実際にデータが転送されてくるまでの遅延時間のこと)で同期ができます。
要するに、Danteに対応している機器同士なら、異なるメーカの機器だったとしてもEthernetケーブル(LANケーブル)一本で簡単に接続・同期が可能になる規格だということです。
唐突に「64×64」や「32×32」という表記が登場することがありますが、これは対応しているチャンネル数のことです。
双方向のオーディオデータ伝送が可能なので、『機器Aの64チャンネルと機器Bの64チャンネルで相互の伝送が可能ですよ』と表現したいのかもしれませんね。
また、Dante対応の変換アダプタも用意されている為、Dante非対応の機器でも接続は可能です。
簡単にオーディオネットワークを構成できるわけですね。
従来は、重くて嵩張る専用ケーブルがいくつも必要でしたが、Danteの導入により非常にコンパクトに収まるようになりました。
フリーソフトを使えばネットワークに詳しくない人でも直感で設計できるようにデザインされているらしく、より高度な設計を行いたい場合はAudinate社公認のトレーニングプログラムである「Dante Certification Program」というものも用意されているようです。
サポートが充実していますね。
公式のウェブサイトのリンクを貼っておきますので、興味のある方は覗いて見てください。
日本語に対応しているとは限らないけどね。
ちなみに、Dante機器を開発したいと考えた場合、Audinate社とライセンス契約を結ぶ必要があります。
Tera Term
Windowsを使って他のコンピュータを遠隔操作できるソフトウェアのことです。
テラタームと読みます。
ネットワークを経由して他のコンピュータを遠隔操作するためのプロトコルにTelnetとSSHというものがあるのですが、Tera Termはこれらを利用してネットワーク経由の遠隔操作が可能です。
また、USBなどのシリアルポートを使って直接繋いだ機器を操作することも可能です。
元々は寺西高氏が開発したソフトウェアでしたが、途中から有志の開発者で組織されたTeraTerm Projectが引き継いで開発を行っているようです。
OSS(オープンソースソフトウェア)なので、無料でインストール可能です。
ちなみに、私は新卒の入社後4日で長期間の出張に行かされ、訳も分からないままTera Termで遠方監視制御システム(電車が現在どこを通過しているかを監視するシステム)の動作確認をさせられていたことがあります。
今考えると、監視した情報を統括しているコンピュータとその子機に当たるコンピュータの通信確認とかしてたんだと思います。
もちろんこんなクソ会社は辞めてます。
以上、「ちょっと踏み込んだ通信プロトコルと関連用語」についての説明でした。