「インターネット概論」の目次

3. 通信の基礎とTCP/IP(前半)

平成9年6月29日午後6時47分作成
平成9年7月26日午後0時9分修正(図3.8のCaption追加)

平成10年3月29日23時19分修正(NAMEの追加)


 今回から2回はいわゆるTCP/IPと呼ばれるプロトコルの話をしようと思います. この章は「開講にあたって」に書いた2冊のまぼろしの本のうち 大学院生向けの部分から元文章を取ってきているので, それを出来るだけ前回までの口調に変えて話していきたいと思います.

 とはいえ,難しいのは確かなので,「これだけは覚えてください」という あたりだけを気持ちだけでいいですから理解(した気になる)してください.

 話しも筋道はいろいろあるのですが,やはり正当のOSI7層の話をしてから, 徐々に層を上がっていくアプローチを取ります.そのうえで,PPP等の下の 層を見直そうかと思っています(来月ですが!)


3.1 (インターネットのための)通信の基礎

3.1.1 前回の復習を兼ねて

 まずは前回の2.1の復習を兼ねて話を始めましょう. (いきなり前回のページをクリックしないように!) 2.1のポイントは世界のコンピュータの間でやりとりを出来るようにしましょう. そのためにコンピュータにIPアドレスという番号をつけましょう. また,コンピュータ上では複数のプログラム(プロセスとしました)が 見かけ上同時に走っているので, そのプロセス間の通信も取り決めも必要です.といった所ですね.

 複数のプロセスが走るのはマルチプロセスと言います. このマルチプロセスが出来るのが,UNIXといわれる基本ソフト(OS)だったわけですが, 今はWindows95やWindowsNTというOSもこの動作が出来ます. このUNIXだ,NTだという話は7章の情報システムの構築あたりまで延ばす事にしましょう.

 図3-1は前回の図2-2をもう少し, 実際のプロセス名にしたものです.感じとしてはコンピュータのハードウェアと 基本ソフトウェア(OS)の上に複数のプロセスが動作しているものと 捉えてもらえると嬉しいです. この図のなかでは,サーバ間の通信もありますし, サーバとクライアント間の通信もあります.

 普通はユーザはコンピュータの前に座ってメールを読み書きしたり, ホームページを見たりします. 図の中では,Windows95やMAC/OSが動くクライアント機で, EudoraPro等のメールソフトやNetscape NavigatorのようなWWWブラウザを 操作していることになります. クライアント機ではワープロや表計算もしているので, あえてネットワーク対応でないプロセスも書いておきました. 私も今はこの講義録を書いているわけですが,画面にはTeraTermの画面が2つと, Netscape Navigatorの画面が1つ開いています.

 WWWブラウザの場合はいろいろなホームページにアクセスに行きますが, 実際にはそのホームページのあるWWWサーバに 「xxxという名のファイルを頂戴」とプロセス間通信で問い合わせています.

 サーバで走っているプロセスは,クライアントからは仕事の要求が来て, それに対して応答をしますが, それだけではなくてサーバ間でも例えば図3-2にあるように, メールのサーバプロセス間でメールの配送をしたり, ニュースの記事の配送をしたりしています. このサーバ間のやりとりは通常はユーザには関係なくて, サーバの管理者がうまく設定すれば良いのものです.

 こういう所でプロセスの動きは理解してもらえたでしょうか.


3.1.2 OSI7層

 インターネットのような大きなネットワークのシステムを理解するには, OSI(Open Systems Interconnection)7層モデルとという考え方を理解するのが, 一番よいと思います. 7層ですからしっかり7層書けばいいのですが,理解の点から図3-3のように 4層で書いてみました. ここでは上の層から見てみよう。

アプリケーション層

 アプリケーション層は,図3-1や図3-2にあるいろいろな応用プログラムのある層になります. 図では例えばメールを取り上げると,下に「smtp」と書いてありますが, これは電子メールを扱うsimple mail transfer protocolの事で, メールのやりとりを扱うプロトコルの事です. メールやWWWやニュースやファイル転送のような各プロセスにはそれぞれ, smtp,http,nntp,ftpのようにプロトコルがあります. このプロセス毎のプロトコルを扱う層と考えてもらえばいいでしょう.

 メールの場合は図にもあるようにメールを受信するためのプロトコルである POP(Post Office Protocol)もあります. 図3-2では何気なくメールの受信と書いて,メールサーバプロセスから メールソフトまで矢印を書いていますが,実はこの矢印を実現しているのが このPOPのプロトコルと言えます.

トランスポート層

 トランスポート層は,今,話したアプリケーション層のいろいろな プロセスのプロトコルの共通の部分を扱っている所です. 図ではTCPやUDPと書いてありますが,それぞれは後の節で具体的に説明します. TCPの場合は,ざっくり言うと信頼出来る通信をするために必要な事を 行っているプロトコルであると思って下さい. 通信は2つ以上のプロセスの間のやりとりなので, 途中で片方が勝手に終了してしまうとか応答しなくなった場合でも, なんとかもう1度問い合わせをするとか, タイムアウトして自分でセッションを切ってしまうとかの処理をします.

ネットワーク層

 ネットワーク層は今まで良くでてきたIPの層です. コンピュータ間(end to end communication)の通信が正しく行くようにします. end to endはpeer to peerとも言われます. 両端のコンピュータの場合でなく,途中のコンピュータまたはネットワーク 機器では飛んで来たパケットの中継(交換)を行います. 前回の図2-4や図2-5の場合のコンピュータBのような役割です. このようなネットワーク機器をルータと呼ぶ事は前回話しました.

データリンク及び物理層

 データリンク及び物理層では,いろいろなネットワークが書いてあります. 前回は2.2節で「いろいろなネットワークを使うインターネット」という事で, 8つ程のネットワークを書きました. そのそれぞれは構内であったり,広域であったり,移動体であったりと 状況に応じて構築したり,利用したりすると話しました. 今回はこれらのネットワークはデータリンク及び物理層を構成するものとして 登場しています.

 これらのネットワークがインターネットで使える理由は, 簡単に言うとみなIPプロトコルをサポートしているからです. 各ネットワークは直接IPプロトコルをサポートしているのではなくて, まずはデータリンク層として,「1つのネットワーク」の中で通用する プロトコルを使って「1つのネットワーク」内で通信をし, その通信がIPプロトコルをサポートします.

 と書きながらこれではなかなか理解して貰えないかなと反省しています. そこで,データがどのような形で構成されて(パケット化されて) インターネットに飛び出し,どのような形で相手に届くかを考えてみましょう.


3.1.3 データの流れ

 皆さんがホームページを見たり,メールの送受信をする場合を考えてみましょう. ホームページを見る場合はユーザは相手のURLを記述しますね. この記述されたURLを入力したり,リンクをクリックした場合には, その操作がWWWブラウザで解釈されて, 図3-3に上の真中にあるWWWアプリケーションのプロトコルである http(hyper text transfer protocol)の約束で以下のようなデータが作成されます.

getファイル名
図3-4 HTTPのプロトコルの例

 このデータはhttpのプロトコルである事と, 相手のWWWサーバのIPアドレスがWWWブラウザで解釈されて, トランスポート層に落されます. WWWブラウザは例えば

        http://www.media.osaka-cu.ac.jp/

のwww.media.osaka-cu.ac.jpの部分を適当なName serverに問い合わせて IPアドレスを手にいれます. その意味では, 図3-2では,WWWブラウザソフトはnameサーバプロセスも利用しています. このことは

        http://160.193.3.1/

と直接,IPアドレスを打ち込んでも同じホームページがでる事で分かります.  インターネットにはいろいろなネットワーク・アプリケーションがありますから, それぞれに対応するプロトコルがあるわけです.もう1つの例としてメールを 考えて見ましょう.このメールのプロトコルはsmtp(simple mail transfer protocol) といいます.このプロトコルも

data中野です.
図3-5 SMTPのプロトコルの例

のような形をしています.このあたりは何処まで深く説明するかの問題ですが, 4章で軽く触れるつもりです.

 さて,トランスポート層に落されたデータはどのようになるかと言うと, TCPのプロトコルの規則で,TCPの表書き(ヘッダーといいます)をつけた

TCP HeaderTCPデータ部
TCP HeaderHTTP
ポート番号等getファイル名
図3-6 TCPのプロトコル構成と例

の形のデータになります.この詳しいヘッダーの構成は次回にでるとして このヘッダーには後続する図3-4のHTTPのデータ等がTCPのデータ部になっています. ポートという言葉は次回からでて来ますが, 今までプロセスと言っていたものだと考えて下さい. コンピュータと通信の世界では同じ事を別の言葉で言う事があり, このポートとプロセスもここでは同じだと思って下さい. 実際にはポートにはプロセスの入口のような気持ちがあって このような名前つけがなされたのかなあと思います. 同じようにコンピュータの世界では「バイト」というのを, 通信の世界では「オクテット」といったりします.

 この図3-6のデータが,更にネットワーク層に落されると,宛先や発信元の コンピュータのIPアドレス等が付与されて

IP HeaderIPデータ部
IP HeaderTCP HeaderTCPデータ部
宛先や発信元のIPアドレス等ポート番号等getファイル名
図3-7 IPのプロトコル構成

となります. この形のデータはIPパケットという形でインターネット上を走る回る事になります.

 2回目以降いろいろな図を出していますが, それは実際のIPパケットがどのようなイメージでインターネットを流れているかを なんとか理解して貰おうと思って作成したものです. ネットワークは電気回路と同じで実際のものが見えないだけにイメージが掴めず, それで嫌いになったり分からなくなってしまう人が多いので, この図で直観的にでもいいですから理解して貰えれば嬉しいです. 実際の大学の講義では,このパケットのリアルタイムのスナップショットを見せて, 「ほら,xxxというコンピュータからyyyというホームページを 今アクセスしましたね」というような風にやります.

 さてさて,この図3-7のIPパケットですが, 実際のネットワーク(物理的なネットワークといいましょう)では, そのネットワークに応じた形のデータになります. このデータの形式は次節ではイーサネットのパケットという事で説明します. これは図3-3の下層のデータリンク層や物理層の事になります. データのデジタルの内容をどのように物理的に信号で表すかもここで規定しています. このことも次に説明します.

 今までの話しはどのようにデータがIPパケットになっていくかを話しましたが, この逆の流れを話すと, IPパケットとして届いたデータがどのように対応するプロセスのデータになるかが 分かるかと思います.


3.2 イーサネット

 今までの一般的な話しはここまでにして,次節ではLANの代表選手である イーサネットを「物理的なネットワーク」の1番バッターに据えて, ここから説明を始める事にします.

3.2.1 イーサネットの種類

 イーサネット(Ether net)はいわゆるLAN(Local Area Network) の代表選手のネットワークです. 方式としては1つのイーサネット上に複数のコンピュータ等が接続され, これらのコンピュータ等がうまくデータの送信の調整を行いながら 通信を行います. 受信側でも自分宛だけのデータを選択して処理します. ポイントは,1つの物理的にイーサネットとして接続されたネットワークの だけでやりとりされる事です.  イーサネットは3つの種類があり、それぞれ

    Thick Ethernet( 10Base5 )
    Thin Ethernet ( 10Base2 )
    Twisted Pair Ethernet( 10BaseT )

と呼ばれています. これは最初から特徴を持たせた3通りのイーサネットがあった のではなく歴史的にこの順で規格として出てきたからです. 私は1986年度の予算で(もう10年以上前ですね)当時いた 大阪大学工学部通信工学科の学科LANの構築に協力していましたが, この時は10Base5 しか選択の余地はなく, 次年度の電子工学科のLANでは10Base2が取りいれらました.

 すべてのイーサネットに10Baseの名前がついているのは速度が10Mbpsで, データがそのまま0と1を表す(basebandと言います. 周波数変調を掛けて周波数的に重ねて送る方式をbroadbandと呼びます) ので10Baseの名前が頭についています.

 最近はこのイーサネットも100BaseTXと呼ばれる100Mbpsの速度がでる 方式もでて来ています.サーバ系ののコンピュータのネットワークは こちらが主流になるものと思っています. さらに,1Gbpsのイーサネットもでて来ており (ギガネットのような呼び方もします), この分野のネットワークもやはり日進月歩です. 以下では最近良く使われる10BaseTの事を簡単に話をします.

10BaseTは最後に出て来たイーサネットの形態で、接続形態はスター型接続です. コネクターも電話のコネクタを少し大きくした程度なので扱いやすくなっています. 電話でいえばISDN電話のケーブルと同じでコネクタも同じです. (ただ使っている8線のうちの4線は同じではありません) 通常は10baseTのハブ(Hub)と呼ばれる装置から複数の線を出して, それぞれに計算機が接続することになります.

 10BaseTの良さは電話と同じように電話のコンセントのように部屋の中に設置 しておけば、そこから情報コンセントとしてLANに接続出来ることでしょう. また、これからネットワークが10Mbpsから100Mbpsに上がっていくとき、 部屋のコンセントはそのままで根元の接続を100BaseTXに変えて貰う事によって 高速化がはかれます. 管理側からみてもトラブルは一人のユーザに限定される事が多いので 障害場所の特定や障害の被害が大きくならない利点があります.ある。 私はいる学術情報総合センター内も,この情報コンセントが1450個もあって, 電話に使ったりイーサネットに使ったりパッチパネルでの配線を切り替える事で 対応出来るようにしています.これ以上は7章の「情報システム構築」にしましょう.

3-2-2 イーサネット上のパケット

 イーサネット上ではデータが流れているわけですが,実際には0や1が 流れているわけではありません. 電圧がパルス状になって変化しています. その電圧の形状からイーサネットの取り決めで0と1が定められています. イーサネットのパケットの形は図3-8のようになっていいます. 先頭はプリアンブル部といって, パケットの先頭のデータがなんらかの理由で落ちても 宛先アドレス部からは正しく取り込めるように1と0が交互に出て来て 最後に11と1が連続すればその後からはパケットの本体部となるようになっています.

プリアンブル宛先アドレス発信アドレスデータ部のタイプデータ長データ部またはPADエラーチェック部
8バイト(64ビット)6バイト6バイト2バイト2バイト46〜1500バイト4バイト
0101..0111xxxxxxyyyyyy06llzzzzzzzcccc
図3-8 イーサネット上のパケットの中身

次についているアドレスは

といろいろな名前で呼ばれています. イーサネットにコンピュータ等をつなぐ場合に コンピュータ等に固有に付けられるアドレスです. 6バイトで48ビットがアドレスに割り当てられていますが, 前半の24ビットはコンピュータメーカまたは イーサカードメーカ等の製造メーカーに割り当てられた番号で, 後半の番号は各メーカ毎に適当に異なるようにつけた番号です. 従って、イーサネットを流れるパケットの先頭部を見れば どのコンピュータや計算機やネットワーク機器が接続しているかが分かります. ただこのイーサネットアドレスはIPアドレスとよく混同されるので, イーサネットアドレスは1つの接続されたイーサネット上だけで通用するアドレスで, IPアドレスはインターネット全体で通用するアドレスで違うとだけ 理解して下さい.

 イーサネットは10Mbpsと高速なので 通常このパケットの処理は専用のICで処理される事がほとんどです. また,イーサネットはそこに接続しているコンピュータ等が すべての流れるパケットを取り込むので, そのため,先頭に宛先のアドレスをみ, それが自分宛でなければ読み飛ばせば良いようになっています.

 宛先と発信元のイーサネットアドレスの次に続く2バイトは データ部にあるデータがどのようなプロトコル (第3層のネットワーク層のプロトコル)であるかを表しています. 以下ではIPのプロトコルを扱いますが,IPのプロトコルではこの部分は16進数 表現で

    0800

となっています.2進数表記なら

    0000100000000000

となります. このプロトコルのタイプの部分の値を変える事で, IP以外のプロトコルを流す事が可能です. プロトコルには, IP以外にもパソコンLANと言われるNetwareのIPXプロトコル等があり, 原則的には一つのイーサネットに複数のプロトコルが 流れても良いようになっています(管理者は嫌がっていますが^_^;).

 イーサネットのデータ部は最短が46バイトで最長は1500バイトです. 図3-8でデータ部またはPADのPADは, 送るIPパケット等が短くて46バイトに満たない時に 0000等で埋める事を示しています.


3.3 IPとTCP,UDP

 IP(Internet Protocol)とは名前の通りインターネットのプロトコルですが, 1つのIPアドレスを持つ計算機やネットワーク機器と もう1つのIPアドレスをもつものとを通信させる通信規則です. 厳密には1対1の通信以外に一斉放送のブロードキャストや グループ内の通信のマルチキャストもあるので, そのIPアドレスを扱う計算機やネットワーク機器を通信させる 取り決めと考えてください.

IPプロトコルの上位のプロトコルとして

があります. TCPは確立した通信をするためのプロトコルです. 信頼性の高い通信をするためのプロトコルと考えて下さい. 直観的には,それぞれのコンピュータやネットワーク機器がデータを送った場合は 他のマシンからのデータ受信の確認を待って次のデータを送ります. 実際にはプロセスとプロセスがインターネットを介して (組織内ではインターネットまで出ませんが) 話合うのに,互いにデータの授受を確認しながら通信をすします. あたかも1つの通信路がプロセス間で確立するので 仮想通信路(Virtual Circuit)とも言われます. 信頼性を高めるために次に取り上げるUDPよりは伝送速度は早くありません.

 それに対してUDPは相手に送ったデータの受信を確認しません. いわば投げっぱなしの通信です. 1つのネットワーク全体に放送的に知らせたいとか (いちいち受信確認を取っていると大変), データのチェックはアプリケーションのプロセスに任せて ひたすらデータを送りたい時に用います. 後者の場合はTCPでは確認で時間が掛かるので, 音声や画像のように大きなデータでリアルタイム性の必要なものに良く使われる. 最近のインターネット放送はこのプロトコルを使っています.

 ICMPプロトコルはエラー処理のように所で使われます. IPパケットが何らかの理由で最後まで届かなかった時に 発信先に対して,届かなかった理由をつけてエラーパケットとして返します. 更にはこのプロトコルの問い合わせ機能をつかって ネットワークや計算機等の状態のチェックにも使われます.

 UDPは単にIPパケットをデータとして送り出すだけと考えて良いので以下では, IPの説明の後はTCPを説明します.


3.4 IP


3.5 TCP


3.6 アプリケーション層のプロトコル


目次に戻る