2012年5月14日月曜日

プロトコル入門


プロトコル入門

 はじめに

インターネットをやっていると「プロトコル」という言葉をよく目にするかと思います。また、Googleで調べると、プロトコルについてさまざまな解説をしているページに出会う事ができるでしょう。しかしながら、解説ページはしばしば難しくなりがちで、「で、結局どういう事なの?」と思った方もいると思います。

ここでは、プロトコルとは一体どういうものなのかを説明したいと思います。

 プロトコルって何? 

たとえば、もしあなたが会社に勤めていて、お客様から電話がかかってきたら、どう対応するでしょう。まずは自社名を名乗ると思います。そして、お客様の名前を聞いたら、「お世話になっております」答えるでしょう。

これを図にすると、このようになります。

これが人間社会では「マニュアル」と呼ばれたりしますが、厳密に「プロトコル」とは言いません。これは、人間同士の会話ならば、あまり厳密に通話の約束事を決める必要がないためです。

もし、電話を取ったときに、いきなり客が「この○○っていうソフト使ってるんだけど、これ、よくないねぇ。頻繁にエラーで落ちるし使いにくいし」と言われたら、あなたはこう答えるでしょう。「ちょ、ちょっと待ってください。どちら様ですか� �」と。なぜなら、「この○○っていうソフト使ってるんだけど、これ、よくないねぇ。頻繁にエラーで落ちるし使いにくいし」という言葉を聞いたあなたは、話の内容からして、それが苦情である事を理解できるからです。しかも、それが頻繁に電話をかけてくるような相手だった場合、もう、あなたは声を聞いただけで「また○○さんかよ」って思うでしょう。

このように、人間というものは、話の内容を解釈して、それが何を表しているか理解することができます。また、声やしゃべり方、過去の経験と照らし合わせて、「これは誰からの電話だな」って理解します。ですので、人間同士の会話には、厳密にルールが定められる事はほとんどありません。あるとしたら、ファーストフード店の店員ぐらいでしょうか。

しかし� ��残念ながら、コンピューターには話の内容を理解する事ができません。というか、人間以外の生物のほとんどが、人間の話しているような複雑な言語を理解することができません。声の主、言い方、文脈で内容を推理できることは、ある意味人間の特権といってもいいかもしれません。

たとえば、「キッズgoo」というサイトがあるのですが、このサイトでは子供にとって有害な情報をフィルタリングしています。が、しかし、やってる事は単なる言葉狩りの域を出ていません。なので、「今から外出します」なんて書こうもんなら、途端にキッズgooフィルターが発動して「ごめんね。ページがひょうじできませんでした」の画面になります。これは、[がいしゅつし]を[そとだし]と判断してしまうためです。

同様に、駅� ��施設を紹介するのに「右に男子トイレ、左に女子トイレがあります」と書くともうダメです。どうやら、女子トイレという言葉がタブーなようで・・・。これでは、もし女の子が女子トイレの場所をキッズgooで検索しようとしても、永久に調べられません。

これは、コンピューターがまだ内容を理解して「これはエロい」とか「いや、これなら子供に見せても大丈夫だ」とか判断することが出来ないからです。人間の言葉を聞いて、それをコンピューターが内容を理解してくれるようになるためには、ナイト2000なみのスーパーコンピューターが必要でしょう。

そこで登場するのが「プロトコル」です。

例えば、1回目には相手のコンピューター名が、2回目には総バイト数が、3回目にはデーターの内容の識別子が送られ� ��くると決めておけばどうでしょう?これなら、いくらバカなコンピューターでもデーターを処理できます。また、データーの内容も、人間ならば「アスキーデーターだけだよーん」とか、「テキストにゅ」とか、「バイナリじゃねえー」といわれれば、それが16進数の0x20以下は来ないとかわかるのですが、コンピューターにも分かるように「0:テキスト 1:バイナリ」という風に決めておけば、if文1個で簡単に判別できるでしょう。

つまり、プロトコルとは、複雑な言語を理解できないコンピューター同士が、正しくデーターをやり取りするために、送受信するデーターの種類、順番、サイズなどを伝えるための約束事のことです。

 プロトコルがないとどうなる!? 

では、そんなプロトコルなんてやめちゃって[最初の8バイトがデーター長、次にデーター本文が来る]と決めておけばてっとり早いんじゃないの?って思うかもしれません。

もし仮に、人間の電話による注文受付が、「名前」「注文数」だけを言う決まりになっていたらどうなるでしょう。それでも大抵の場合大丈夫ですが、もしラーメン屋と間違えて「○○(自分の名前)、1つ」と電話してしまった場合に、ラーメンが来ると思っていたらいきなり自動車部品が届いた、なんて事にもなりかねません。

同様に、メールを送信したい時に単に「あて先、本文」だけを25番ポートに投げれば良いだけにしたら、だれかれ間構わず25番ポートに接続して送りつけられたゴミデーターまで送信しようとしてしまいます。

< p>実際、SMTPプロトコルにはしばらくの間認証というものがなかったので、しばしばSMTPサーバーが迷惑メールの踏み台にされてしまいました。出前の注文も、特にこれといった全国共通のプロトコルみたいなものがないため、しばしば嫌がらせのウソの注文の被害を受ける場合もあります。

というように、プロトコルがないと、間違いだった場合の確認が取れないし、IDやパスワードなど成りすましを防止するための認証もする事ができなくなります。

 固定長と可変長

コンピューター同士の通信には、必ずしも決まったサイズだけとは限りません。例えば、Eメールを送信する場合、メールの長さが決まっていたら困ってしまいます。長いメールを出したくても、一定サイズで切られてしまったり、逆に一言返事したいがために、数Mバイトも送信するのでは困ってしまいます。


マルクスは、その歴史は次のように解釈されるべきであると考えられて

なので、可変長プロトコルというものがあります。たとえば、あらかじめ○バイト目がデーターの総サイズと決めておき、そのサイズ分を後から転送する方式です。これはバイナリデーターのやりとりでよく使われる方式です。

送信するデーターがテキストファイルの場合は、総バイト数をあらかじめ送信するのではなく、ある特定のコードが来たら終わり、という送信方式もあります。例えば、Eメールを送信する場合のプロトコル(SMTP)では、基本的に「改行コード(¥n)が来るまでが1つのコマンド」と決まっています。また、メール本文は「ピリオド(.)だけの行が来るまで」と決まっています。 なので、メール本文にピリオドだけの行を使いたい場合は、ピリオドを2個送信することになっています。

この方式の欠点は、区切りのコードが電文本体に含まれてはいけないという事です。ですので、0x20以上のコードしか来ないテキストファイルの送受信には使えますが、バイナリファイルの送受信には使えません。また、テキストファイルでもピリオドだけの行をピリオド2個にしなければならなかったりと、処理も比較的煩雑になります。また、Eメールでバイナリファイルを送信するためには、バイナリファイルを全てテキスト文字で表したコードに変換(エンコード)しなければなりませんし、データーが何バイトくるかが不定であるため、受信側がメモリーをあらかじめどれだけ確保すれば良いかの判断が難しくな� ��ます。

このように、固定長、可変長には、それぞれ長所と短所があるため、用途に応じて使い分けるのが一般的です。

可変長 固定長
パケット長 不定 固定
長所 転送量/転送時間がデーターに応じた長さになる。 処理が単純。
受信バッファの確保が容易。
バイナリデーターを扱いやすい。
短所 処理が複雑。
バイナリの送受信にエンコードが必要になる。
1パケットが長くなると相手が受け取れない事がある。
短いデーターもパケット長分送信する必要がある。
長いデーターは分割する必要がある。
主な用途 メール、ファイルの転送など 受注/発注データーなど

 パケット

パケットとは「荷物」のことです。

もし、あなたが家の荷物を全部引っ越し先へ送る場合、どうするでしょう。まあ、普通はそんなに荷物が多いならトラック1台チャーターすればいいわけですが、チャーターしないで、全部「宅急便」で送る事を考えてみましょう。というのも、宅急便ならトラック1台チャーターするのも大した金額ではありませんが、インターネットで専用回線を引くのは相当な金額がかかってしまうためです。ですので、今回は、たくさんの荷物を宅急便の普通便で送ることを例にとって考えてみます。

もし、そういう状況になれば、あなたは、送る前に全部の荷物を宅急便の送り状のついた箱に詰めると思います。この「箱」がパケットです。

もし、宅急便屋さんから箱を指定さ� �、全部同じ大きさの箱につめなければならなかったらどうでしょう。これが固定長パケットです。この場合、箱よりも大きい荷物は送れませんが、組み立て式の機械かなんかでバラせるものはバラして送ると思います。逆に箱より小さいものは、すき間に緩衝材をつめると思います。この緩衝材にあたるものをCOBOL言語ではフィラーといいます。固定長を主に扱うCOBOL言語では、このフィラーという言葉がよく登場します。実際の運搬用の緩衝材の事もフィラーと呼ばれる事があります。

逆に、宅急便屋さんの指定の箱ではなく、自分が荷物の大きさに合わせて、自由な大きさの箱を使っても良いのであれば可変長パケットといった所でしょうか。この方が送る側にしてみればあきらにかに便利ですが、運送屋さんからするとトラック� ��の積み込み方次第で余分なすき間ができてしまったりと、色々と手間がかかるようになります。可変長パケットの扱いが難しいのと同様です。

パケットには全て送り先がついており、最後には同じ送り先への荷物は全て同じコンピューターに届けられます。これは、パケットのあて先が何バイト目に書かれているか、とか、どういう形式で送信するか、とか、それがインターネット全体で統一されており(TCP/IPプロトコル)、世界中どこから発信されたデーターであっても、正しく、世界中どこへでも届けられるようになっています。

 全二重と半二重

もし、あなたが誰かと電話中に宅急便屋さんが来たとします。その場合、すぐにハンコもって出ないと宅急便屋さんは留守だと思って荷物を持って帰ってしまいます。なので、あなたは、誰かがまだ話中であっても、「ちょ、ちょっと待って!今誰か来たみたい。あとでかけなおすわ」とか言うでしょう。これは、電話が全二重通信だから可能といえます。

「トランシーバー」を使ったことのある人は、自分がしゃべっている間は相手の声が聞こえなくなる事をご存知でしょう。また、アマチュア無線を使った事のある方は、無線機のPTT(Push To Talk)スイッチを押している間は、相手の声が聞こえない事をご存知でしょう。これは、トランシーバーやアマチュア無線が半二重通信だからです。(注:だからといって「今は全二重のものもあるんだぞ」みたいなツッコミはナシね。これは話をわかりやすくするための例ですので。)

とにかく、「電信」とか「無線」とかいうものが発明されてまだ間もない頃は、送信も受信も同じ周波数で行っていたために、どちらかが発信中は、もう片側は聞き役に徹するしかなかったわけです。で、送信側が送信を終了する際、最後に「over」をつけることで「送信終わり」を表していたわけです。


4マヤの信念は何だった

コンピューターの通信も、ちょっと前までは今のようなADSLや光ファイバーもなく、転送速度はとても遅いものでした。そのため、片方から一方的に片方へデーターを大量に送る時などは、全二重にするよりも半二重にした方が、かえって早く通信できる事がありました。例えば、お店から仕入先へ発注データーを送信する場合、大抵は[お店→仕入先]というふうに、データーが流れる方向が決まっているし、その情報量も大量になることから、半二重通信(JCA手順)が行われていました。

現在、半二重同期モデムでJCA手順による発注が行われているケースはほとんどなくなりましたが、それでも現在も現役で稼動しているシステムもあり、また、そ� ��いったシステムからインターネットを利用したものへと移行する作業が行われているケースもありますので、そういうものもあるという事は覚えておいた方が良いでしょう。

 プロトコルには名前がついている

先の例にあげた「電話がかかってきたら会社名を名乗る」「お客からの電話だったら『お世話になっています』と言う」「担当者名を言われたら『少々お待ちください』と言う」というプロトコルに名前をつけるとしたら、「日本ビジネス電話交信手順【NBTC】」でしょうか。(これは嘘ですよ。そんな名前は実在しません。)

このように、「約束事(プロトコル)」には名前がついています。

例えば、モデムを使ってプロバイダに接続する場合、pppという手順が使われます。同様にADSLやBフレッツ回線を使ってルーターとプロバイダーを接続するためにpppoeという手順が使われます。

インターネットに接続した後は、データーはTCP/IPという手順でパケットが送受信されます。また、ホームページにアクセスする� �めには、http、ファイルをサーバーにアップロードするためにftpという手順が使われています。

アナログモデムを使ってパソコン通信していた頃は、エラー訂正プロトコルMNP4や、データー圧縮プロトコルV42bis、バイナリデーター転送手順のX-MODEM、Bplus、QuickVANなどをよく聞いたと思います。

このように、通信で使われるルールはプロトコル名で呼ばれます。「プロトコルは○○です」といわれれば、それが何のためのルールで、どのような手順で何を送るかを知ることができるわけです。

 プロトコルには層がある

まずコンピューターとモデムを物理的に接続する際に、どんな規格で接続するかを定めたプロトコルが必要となります。これを物理層といいます。例えば、シリアルポート接続をするのであれば、RS-232Cという規格のポートが必要になります。また、LANカードで接続するのであれば、EtherNETが使用されるでしょう。

また、インターネットを使ってパケットを送信する際には、インターネットではTCP/IPというプロトコルを使う事になっています。これは、IP(インターネットプロトコル)のルールに従って、パケットを指定されたアドレスへルーターからルーターへとリレー(ルーティング)しながら送信するように定められています。それを、TCPというルールにしたがって、パケットの整理やエラー� ��正などを行います。

その、TCP/IPを使って、さらに「どんなパケットを」「どんなタイミングで」送信するかを定めたものがアプリケーション層にあるプロトコルです。http ftp smtp pop3などがあります。

 プロトコルの歴史

BSC手順

昔は、汎用機などの大型コンピューターが端末へデーターを送信する際に、半二重同期通信を行っていました。汎用機と端末を1対1で接続し、データーも片側から片側へ一方的に大量に流れる場合に適した方式でした。

パソコン通信

いわゆる「草の根ネット」の例をあげてみますと、パソコンから全二重調歩同期方式のモデムを使って、ホストコンピューターへと接続するためのプロトコルとしてV32bisとかMNP5とかV42bisなどが使われました。また、その上のアプリケーション層でバイナリファイルをダウンロードするためのプロトコル(アプリケーション層)として、Bplus、X-modem、Y-modem、QuickVAN等が使われました。

小規模LAN

まだ現在のインターネットが存在しなか った(存在はしていたが、普及してなかった)頃は、小規模LANとして、IPX/SPXや、NetBeuiというプロトコル(トランスポート層〜プレゼンテーション層)が使われていました。この頃から物理層としてEthernetを使っていました。(多くの場合、10Base2や10BaseTでしたが)

IPX/SPXはノベル社のNetWare、NetBeuiはマイクロソフト社系のネットワークで使われていました。

インターネット

現在は、トランスポート層、ネットワーク層の部分に「TCP/IP」を使い、LAN/インターネットを意識することなく、全てのネットワーク内で同じプロトコルを使うことによって、ネットワーク間通信が可能となり、また、どの端末からでもインターネットにアクセスできるようになりました。

現在では、IPX/SPXやNetBeuiはほとんど使われ� �くなり、TCP/IPにとってかわろうとしています。

- コラム BSC手順 -

BSC手順とは、Binary Synchronous Communicationの略で、RS-232Cポートを使って同期通信を行う手順を定めたプロトコルです。

このプロトコル自体は、物理層を定めたものですが、このプロトコルができた当時は、このプロトコルを汎用機などの大型コンピューターが半二重同期モデムとの通信を行うために使っていました。当時のモデム<->モデム間の通信方式は、エビシディックコード(EBCDICコード)のSYNコードを同期信号として使うブロック同期方式(つまり、数バイト単位で同期をとって送信を行う方式)を使っていました。

その名残で、今「BSC手順」といえば、多くの場合で、その当時の物理層〜プレゼンテーション層まで含んだプロトコルをさす事が多いです。そこで、この章でも、「BSC手順」という言葉を、半二重同期通信(V26bis)を使い、ブロ ック単位で同期を取りながら通信を行うプロトコルという意味で使っています。


水銀(ローマ神)彼のシンボルは何ですか

このブロック同期方式では、調歩同期方式とは違い、数バイト(256、512、1024など)ごとにしか同期信号が入らないため、片方向から片方向へ一方的に大量のデーターを流す場合に適した伝送方式です。

しかし、同期信号がブロック単位でしか入らないため、モデムには高精度のクロックを内蔵する必要があり、また、半二重通信のためには、EOT信号が来るたびに送信権を逆転させる機能が必要となります。またエラーが発生した場合にも、1ブロック単位で再送せねばならず、できる限りエラーが出ないような精度の高いアナログ/デジタル変換能力を必要としました。

結局、半二重同期モデムはビジネス用でしか使われなかった� ��め生産数も少なく、また、耐久性も必要とされたこともあり、モデム自体が非常に高価なものになりました。(当時の値段で1台10万円前後しました。)

さらに、このブロック同期方式は、エビシディックコードのSYNやEOTを通信として使うため、送受信できるデーターもエビシディックコードに限られ、伝送できるのは英数字(ANK)と半角カナ程度でした。

なので、データーをあらかじめ圧縮する事もできず、また、ブロック長が固定のため、圧縮しながら送ることもできません。当時汎用機で主に使われていたCOBOL言語のファイルはレングスが固定長でFILLER(データー長合わせのための無駄データー)を含んだものが多く、圧縮をかければ相当小さくなるものでした。実際、数メガバイトあるCOBOLのファイルを圧縮かけると 1メガバイトにも満たなくなる、という事もしばしばありました。

結局、当時はまだCPUの性能も低く、データーの圧縮をかけると圧縮にかかる時間のほうが余計にかかってしまったり、そもそも圧縮アルゴリズム自体まだ確立されていなかったために、データーはANK+多くのFILLERを含んだデーターを無圧縮で送信する、という無駄なものだったのでした。

現在では、インターネットの普及によってBSC手順は使われなくなりつつあります。BSC手順を使ったプロトコルで代表格だった「全銀手順」も今では全銀TCP/IP手順にとってかわっています。また、古いコンピューター+プログラムをそのまま使うための、旧全銀手順<->TCP/IP全銀手順を相互に変換する装置なども使われています。

 プロトコルの例

それでは、実際にプロトコルの例をみていきましょう。

・SMTP

SMTPとは、Simple Mail Transfer Protocolといって、簡単にいうと「Eメールを送信するための約束ごと」です。

Eメールは「リレー」といって、簡単に言うと「バケツリレー」のような感じで、サーバーからサーバーへと送られます。そして、自分宛てに来たメールなら自分のサーバー内の該当ユーザーへ配信し、自分宛てではないメールなら該当する届け先にメールを送ります。


△自分のサーバー宛ではないメールはあて先サーバーへ送られる。


△自分のサーバー宛のメールが届いたらメールボックスに入れる。

結局、このプロトコルでは「誰もが郵便局のお客さん」であり、「誰もが郵便屋さん」でもあるわけですね。

この方式には問題があって、この方式どおりにいくと、もしも他方より何万件もメールが送信されてきた場 合でも、そのとおり何万件もメールを中継しなくちゃいけません。なにしろEメールは1通送っても1万通送ってもタダですから。


△このままだと…

それなんで、現在はほとんどのサーバーで、メールを他方へ送信する場合には制限を設けています。許可をしている端末からしか受け付けないようにしたり、パスワードを通さなくちゃいけなくしたり(SMTP認証)、いったん受信してから送信しなくちゃいけなくしたり(POP before SMTP)、色々制限があるのが普通です。もし、何の制約もないSMTPサーバーを設置したりすると、すぐに大量の迷惑メールを送られてしまうでしょう。

インターネットでは「まさか、こんな事する奴はいないだろう」という性善説なプロトコルを作ると、必ずや、そのまさかをやる人が現れ、悪用されてしまうようです。と、そういう話はおいといて、ここではSMTPは指定された宛先にメールをリレーするためのプロトコルだ、という事がわかった上で、以降の話をご覧ください。

SMTPは可変長プロトコルです。改行コード毎にデーターを区切って考えます。基本的に送信側が受信側にコマンドを送出し、受信側が番号(レスポンスコード)で「了解」か「だめ」を知らせるようになっています。

たとえば、サーバ ーAからサーバーBにメールを送信する場合、

のように、サーバーAがサーバーBに、まず自サーバー名を告げ、差出人と宛先をサーバーBに送ります。サーバーBはコマンドを受け取るたびに、コード250を返し「OKですよ」と知らせます。

そして、DATA に続いて、メール本体(ヘッダー+本文)を送信し、ピリオドで終了します。最後にQUITを送信して回線を切ります。当然、サーバーBの都合でメールが受け取れない時は、250ではなく別のコードを返すわけです。

500 コマンドエラー
501 コマンドの引数のエラー
502 コマンドがサポートされてない
503 コマンドの順番が違う
504 コマンドの引数がサポートされてない
521 このドメインからのメールは受け付けません
530 アクセス拒否
550 あて先不明
551 このサーバーにはそのユーザーがいない
552 ハードディスクがいっぱい
△SMTPエラーコード

ただし、このままでは先にも述べたように、どこからか大量にSPAMメールが送られてきてもそのまま受け付けてしまいますから、これにパスワード認証を追加したり、あるいは、あらかじめ設定されたドメイン以外からのメールは全て530(アクセス拒否)にする、等の処理を行います。

・FTP

ホームページを作る場合、サーバーに「FTPソフトでアップロードする」とか言うでしょう。じゃあ、このFTPって何のことでしょう?これは、File Transfer Protocolといって、ファイルを転送するために用いられるプロトコルです。


FTPでの通信は、簡単に図で表すと

△かなり適当です。細かいツッコミはナシね。

こんな手順でファイルが送信されます。

ただし、この手順にもSMTP同様に問題がありまして、どのポートでデーターを送受信するかを端末側が決めて、端末側がポートをあけてサーバーが接続するまで待っています。そのため、その一瞬のすきにハッカーが端末を乗っ取ってしまうかもしれません。

△FTPプロトコルの欠点

そのため、端末側にファイアウォールソフトを導入するわけですが、そうすると今度はハッカーさんも侵入できませんが、サーバーもコネクトできなくなってしまいます。

これを解決するために、パッシブモード というのがあります。これは、端末側がポートをあけてサーバーが接続するのを待つわけではなく、サーバーがポートをあけて端末が接続するのを待つ方式です。これで、端末側が進入される恐れもなくなり、また、端末側でファイアウォールで使わないポートを封鎖することができます。

しかし、これでは、今度はサーバー側が危険になります。そこで、サーバー側には IPTABLESというファイアウォールソフトを導入します。IPTABLESにFTPプロトコルによる端末とのやりとりをトレースさせ、いったんFTPでパスワードOKになった相手の関連パケットのみ、任意ポートへの接続を許します。

△パッシブモード + IPTABLESを使った場合

・まとめ

ここで紹介したSMTPやFTPは数あるプロトコルの一部にすぎません。また、ここで紹介したように、両プロトコルにそれぞれ欠点があり、後からルールがいくつか追加されています。

総じて、インターネットのプロトコルは性善説で、「まさかこんなコトする奴はいないだろう」という作りになっていると、必ずそのまさかをやる人が現れるため、これからも改良が加えられていくと思います。

 http:// って何?

よくテレビなどで、「番組のホームページアドレスは、http://〜 です」というお知らせを見た事もあるでしょう。同様に、会社の広告などで、「URLは http://〜 」と書いてあるのを見た事があるでしょう。じゃあ、このhttp://って何でしょう?あまり意識して使っている人はいないと思います。ましてや、誤植でhttp:/と書いてある広告すらあります。(もっとも、それでもMSIEでは通じてしまいますが)

http://というのは、『httpプロトコルで』という意味です。この章をここまで読んでいただいた方なら、これでもうおわかりでしょう。つまり、httpというルールを使ってデーターを送受信するという意味です。同様に、(あまり使われませんが)ftp://と書けば前節で説明したような、FTPプロトコルで通信が行われます。他にも、telnet://やgopher://などがあります。

 色々なプロトコル

MNP5 V42Bis
主に、アナログ回線を使って、モデム<->モデム間の通信を行う際にデーターを圧縮する時に使われるプロトコルです。汎用機で半二重通信を行っていた頃はまだコンピューターの性能も低く、圧縮を行うとその圧縮するのに時間がかかってしまいました。また、ブロック同期方式では1ブロック長を固定しなければならず、また、エビシディックコードのテキストしか送れないという欠点もありました。

しかし、その後、パソコン通信全盛期になると、ICの性能もアップし、圧縮/解凍にほとんど時間がかからなくなりました。また、この頃になると、パソコンやモデムの性能よりも電話回線の方が著しく遅かったため、モデム<->モデム間に流れるデーターはできる限り小さくする必要があったのです。そこで、MNP5やV42Bisといった圧縮 プロトコルができました。一般的にMNP5よりもV42Bisの方が圧縮率が良いとされています。

MNP4 V42
モデム<->モデム間でエラー訂正を行うプロトコルです。数バイト単位でエラーをチェックし、エラーが発生した場合、送信側にエラー部の再送を要求します。MNP4、MNP5はエラー訂正と圧縮の両方の能力を備えたプロトコルです。

V.21、V.22、V.22bis、V.32、V.32bis、 V.34、
CCITT(国際電信電話諮問委員会)の定めた、モデム<->モデム間の通信を行う規則を定めたプロトコルです。CCITT規格の他にBell規格などがあります。パソコン通信ホストは(日本では)ほとんどCCITT規格でしたが、大抵のモデムはBell規格も使えるようになっていました。

x2 K56flex V.90
モデム-モデム間を56Kbpsで通信を行うためのプロトコルです。といっても、56Kになるのは下り(受信)のみで、上り(送信)は33.6Kbpsまでです。元々は、x2K56flexという互換性のない両企画が登場し、メーカーによってどちらを採用するかまちまちでしたし、ホストもどちらを採用するかまちまちでした。

その後、両者の中間のような規格V.90が登場し、x2やK56flexを採用していたメーカーは、ともにV.90という規格に合わせることとなり、従来型のモデムはV.90規格対応に変更するサービスなども行われました。

 おわりに

プロトコルの話、いかがだったでしょうか。

普段、ホームページにアクセスしているだけで、無意識に「プロトコル」に触れていた事がおわかりだと思います。このように、コンピューター同士の通信には厳密にルールを定めています。そうする事によって、間違いなくコンピューター同士がデーターをやりとりできるわけです。

UNIX系のプログラミング、特にソケットプログラミングには必ずプロトコルが重要になってきますので、ここで概要を知っておくことは決して損な事ではないと思います。


戻る



These are our most popular posts:

プラグイン・プログラミング(2)

実はそれ、真っ赤とは言わずとも橙色位の嘘である。実際は、関数名ではなく「装飾名」 というのを用いる。 何故そんな面倒臭い事をするのか、理由は言語仕様にある。C++は 、同一の関数名でも引数が違えば別の関数として存在する事を許容している。 read more

プロトコル入門

ここでは、プロトコルとは一体どういうものなのかを説明したいと思います。 プロトコルっ て何 .... 方式です。 送信するデーターがテキストファイルの場合は、総バイト数を あらかじめ送信するのではなく、ある特定のコードが来たら終わり、という送信方式も あります。 read more

kokusai11 - 嘘がまかり通る世の中 あなたは何を信じますか?

ときに有害な副作用、リスクは潜在的な利点を上回ると結論するのに十分について入手 可能な情報は何ですか?疑問がある場合、医師は注意の側面または希望の側に誤る か? ... 彼らは何を言ってはいけない、それらの試験が偽であったです。 ... この新たな 研究かどうか、このワクチンは、子宮に利益を提供しています質問と一緒に編集を実行 することを決めたことがあります。 ... さらに奇妙な世界保健機関とアカデミー小児科、 内科家庭医学、より多くの毒性ワクチンを推薦し、予防接種の引数を軽視に固執の動作 です。 read more

VLOOKUP関数【あいまい検索編】--Excel・エクセル

先程イメージした通りに、[検索値]、[範囲]、[列番号]の引数を指定していきます。 ... B1番地に入力された獲得ポイント数「288」は 一覧表の「200」と「300」の間にある数字 です。 ... 今回の場合、答えはポイント数「200」に対応する割引額「¥1000」が表示され るのか、 ... 検索値未満の一番大きい値を表示する、と決められているからなんです。 read more

Related Posts



0 コメント:

コメントを投稿