EOT(End Of Text)
itoyo@pine[2 ]%
-
この記入の順序はSMTPというインターネットサービスプロトコルに合わせて行われていますが,この段階では人々がプロトコルを意識することはあまりないと思います.しかし,1から4までの作業がなされると,あとはSMTPが処理してバケツリレーによって宛先のメールボックスに転送してくれます.実際にEmailをパソコンなどから送信する場合には,ヒューマンインターフェースのよいユーティリティソフトウェアを使っているかもしれませんが,基本的には上のようにTELNETでのUNIXによるmailコマンドでの処理に適合させています.
-
プレゼンテーション層: 送信側では,上で入力したコードを標準バイナリーコードに変換し,セッション層に渡します.また,受信側ではセッション層から渡されたバイナリーコードのオブジェクトを,アプリケーション層の表現形式に変換してディスプレイなどに表示します.
-
セッション層: 送信側では,プレゼンテーション層で変換されたバイナリーコードのオブジェクトをTCP層の25番ポートに出力します.受信側では,TCP層から出力されたポート25から,送信側とパケットの流れを調整しながら受信し,それをプレゼンテーション層に渡します.
ただし,SMTPでは上記のように三つの階層を厳密に意識して作られてはいません.インターネットのアプリケーションはOSI参照プロトコルの上位三層を渾然一体として作ってあるからです.
-
トランスポート層: 送信側では,上のセッション層からデータを受け取り,TCPセグメントを構成し,誤りがないかどうか,分割されたセグメントが順序どおり送られているかどうかなどを受信側と確認し合いながら送信します.受信側は,送信側とセグメントの誤りがないかどうかを確認し,誤りがあれば再送を要求し,受信すべき順序のセグメントがきていなければそのことを通知する,などしながら受信し結果をセッション層へポート25を介して届けます.
-
ネットワーク層: 送信側では,アプリケーション層で入力されたデータのうち送受信側のIPアドレスをデータグラムに入れます.宛先アドレスをみて,どのネットワーク経路で送り出すかも決定します.また,送信側のデータリンク層の最大転送単位に合致するようにデータをフラグメンテーション(細分化)したりします.受信側は,送信側のIPアドレスやハードウェアアドレスを記録し,返事を書く時のために備えたうえで受信し,結果をTCPセグメント分を抜き出してトランスポート層に出力します.
-
データリンク層: 送信側では,ネットワーク層のデータグラムを受け取り,データリンク層のフレームフォーマットに組み立てて物理層に渡します.渡すについて,物理層が他人によって使われていないかどうか,送信できるとすればそれを受信できる同一セグメント内のルータ等が受信可能になっているかどうかをチェックして転送します.これを受信したルータ等はフレームに誤りがないことを確認して,宛先セグメントのルータ等にフレームを転送します.受信側ノードのルータは,このフレームを受け取ると,IPアドレスからMACアドレスを調べ,これを宛先ホストに転送します.宛先ホストは,誤りをチェックした上で,データグラムを抽出して,ネットワーク層へ渡します.
-
物理層: 送信側の物理層ではフレームを,それぞれの物理層が決めているコードに変換し,それを電気信号等に変換してネットワークに送出します.受信側の物理層は,逆にデータリンク層を介して受信DTEにフレームを転送します.
-
-
4.2 パケットから見た処理の流れ
-
具体的に,送信パケットから見た階層化プロトコルによる処理の流れを図に表したものが下の図です.まず,送信側ではインターネットアプリケーションを選択してそれにデータを入力します.たとえばEメールなら宛先やサブジェクトや本文などを入力します.それをTCP層に渡すと,そこでTCPヘッダーが付加されます.
つぎにIP層では,宛先データなどをもとにしてIPデータグラムのヘッダー部が追加されます.これがデータリンク層に渡され,DNSの助けを借りて,IPアドレスに対応するMACアドレスなどを記入したデータリンクフレームが作られます.
もし,宛先IPアドレスが,自分と直接つながっていないネットワークアドレスであれば,このデータリンクフレームはルーターに転送されます.ルーターは不要となったフレームヘッダーを棄てて,自分が持っている知識をもとにして最も適切なインターネット内ルータにIPデータグラムの形で転送します.

図3.4.1 送信側における処理の流れ
-
IPアドレスをたよりにしながらインターネットを通過してきたIPデータグラムは,ARP機能によってIPアドレスとMACアドレスを照合し,判明したデータをもとにしてフレームヘッダーを付加し,LAN内に送り出します.MACアドレスにしたがってLAN内の適切なホストがパケットを受信し,フレームヘッダーを放棄,IPデータグラムヘッダーを廃棄して,TCP層に送ります.TCP層はそのセグメントヘッダーを解読して,送信先にデータの着信を知らせたり,付加すべきデータがあればその送信を促したりしながら,最終的にバッファに蓄積したデータの全てをアプリケーションに渡します.
アプリケーションは,決められたフォーマットによってコンピュータを動作させます.

図3.4.2 受信側における処理の流れ
-
上述のインターネット経由のパケットの流れの全体を下の図に示しました.まず,送信側のホストではアプリケーションが生成したデータにTCPセグメントヘッダーを貼り付けて,IP層に渡します.
IP層はそれを受けて,宛先のIPアドレス等を記入したIPデータグラムヘッダーを添付してデータリンク層に渡します.
データリンク層は,宛先IPアドレスから宛先MACアドレスを調べて,その結果をフレームヘッダーに記入して物理層を介して送信します.このとき,宛先IPアドレスが自分の所属するネットワークアドレスと違っていれば,ルータの宛先MAC
アドレスを記入して送信します.
このパケットを受け取ったルータは,フレームヘッダーは不要ですから削除し,IPデータグラムの形で,ルーティングテーブル情報に従って次のルータに送信します.ルータ間を転送されたIPデータグラムは,宛先ネットワークの入り口にあるBGPルータに到着します.
受信先のBGPルータは,IPデータグラムの宛先IPアドレスから,適切なMACアドレスを記入したフレームヘッダーを貼り付けて,適切な受信ホストに転送します.
これを受信したホストは,フレームヘッダーが不要になったのでこれを削除してIP層に送ります.IP層ではIPデータグラムヘッダーが正しいことを確認して,TCP層に送ります.
TCP層は,次々と送られてくるセグメントパケットについて到着確認を送信元ホストに返事しながら,連続した全データの到着を待って,最後にそれらをまとめてアプリケーションに渡します.
これを受け取ったアプリケーション層は,中のデータを取り出して,アプリケーションのサービスにあう表示をして通信を終了します.

図3.4.3 インターネットを経由したパケットの流れ