TCP/IPについて |
---|
ここでは TCP/IP とは何か、またどうやって通信しているのかについて、
TCP/IP階層モデルでは実際をどんな事をやっているのか、考察を含んだ大まかな説明を記述していこうと思います。 |
|||||||||||
|
|||||||||||
1.TCP/IPとは | |||||||||||
もともとアメリカ国防総省が軍事目的で、
敵の攻撃を受けて一部ネットワークが破壊されても、迂回路を使用してネットワークが寸断されないようにする目的で開発された技術で、
1980年代に無料であったUNIXにTCP/IPが実装された事によって普及が進んだのでした。 なぜ TCP/IP と呼ばれているのか、調べてみたのですがちょっと曖昧で、TCP、IPの2つプロトコルをそのまま指す時もあるし、 通信で、TCPとIPが必要なのでその総称で呼ばれる事もあるみたいですが、 実際には、TCP/IP階層モデルのプロトコルの処理に沿って通信を行う事を言うのじゃないかなと思っています。 ここでは、簡単にTCP/IPの処理の流れだけを記述していこうと思います。 |
|||||||||||
2.TCP/IPは何をやっているのか | |||||||||||
TCP/IPとは、TCP/IP階層モデルの箇所でも記述しましたが、おおきく4つのプロトコルの処理に沿って相手先のパソコンの場所を検索して、相手先に理解できるデータを届ける。
または、受け取ったデータが自分宛かどうかチェックしたり、データが壊れていないかチェックしたり、どのアプリケーションに渡せば良いのかを判断して、最終的にはユーザーが理解できるようにする事が目的です。 ◆送信する場合 上の図は、ユーザーが自パソコン以外のパソコンに対してデータを送信する時、いわゆる送信側の大きな流れです。 各層にプロトコルとして必要なデータを付加していきます。このデータはヘッダと呼ばれ、 宛先や送信元、イーサネットのタイプ等、データを送信する時に必要な情報をデータの頭に付加して行きます。 ※ 図では後ろについているように見えますが、実際は順にデータの頭に付加されます。
ネットワーク上で流れるデータはパケットと呼ばれるデータで、上の図のような順番で流れていきます。 (FCSとは、パケットが壊れていないかを検出するためのデータで、パケットの終わりに付加されます。このデータはハードウェアが計算してくれます。) ◆受信する場合 逆に、ユーザーが自パソコン以外から受け取ったデータ、いわゆる受信側の大きな流れです。 見て分かるように、基本的には逆な事をやっています。 TCP/IPで通信しているので、上の図のヘッダの情報が付加されている事が前提ですので、各層でそれぞれのヘッダをチェックしては、 異常がなければそのヘッダ部分を取り外したデータを、上位のプロトコルに渡します。 最終的にはアプリケーションにデータが渡され、ユーザーが理解できるように画面に表示するという仕組みになっています。 |
|||||||||||
3.アプリケーション層 | |||||||||||
OutLook Express や Internet Explorer、FFFTP などユーザーが使うアプリケーションの事で、特にサーバーや他のパソコン等とデータのやり取りを行うアプリケーション類の事を指します。 その役割は、ユーザーへのデータ表示と指示を受け付け、データのフォーマット変換、セッションの管理を行います。ただし、ここの層ではセッションの指示だけでセッションの接続はトランスポート層で行います。 もちろん他のパソコンと通信するので、プロトコルに従って処理されます。 例えば OutLook Express でメールを出そうとした場合、ユーザーは宛先、件名、メール内容を書いて(添付ファイルなども含めて)送信ボタンを押す。またメールを受信する場合は受信ボタンを押す。などのアクションが起きると思います。 OutLook Express はそのユーザーのデータをSMTP(メール通信関係はSMTPと呼ばれるプロトコルが使われます。)に従って、データのフォーマットを揃えます。
上はSMTPの決まり事に沿って、メールのデータ部を作成した場合の例です。(この辺りの説明はまた別のページで記述しようと思います。) このデータをユーザーの送信の指示がでたら、相手先のSMTPサーバーに対してセッションを接続しに行きます。 |
|||||||||||
4.トランスポート層 | |||||||||||
トランスポート層とは、上位のアプリケーション層に対してデータを送る、
要は適切なアプリケーションのプロセスに対して、受け取ったデータを送る、または相手先に対してどのアプリケーションに送るかを指定します。
その時の判断するデータとして使用されるのがポート番号です。 ここの処理では、そのポート番号のデータのヘッダ情報として付加するのと、そのヘッダの識別を行うのと、 アプリケーション層からの指示で、セッションの接続を行うのが主な役割です。 基本この層は TCP か UDP の2つが主なプロトコルで、それぞれが特徴を持った処理を行っています。 この2つのプロトコルについては別のページで記述して行こうと思います。 |
|||||||||||
5.インターネット層 | |||||||||||
ここでは、IPアドレスの情報(送信元と送信先)をヘッダ情報として付加するのと、
ルーティングテーブルを元に、どの経路を使用して相手先にデータを渡すかを判断するための経路選択処理を行います。 また受け取ったデータのヘッダ情報を見て、TCP か UDP かを判断し、トランスポート層の適切なプロトコルにデータを渡します。 IPアドレスやルーティング処理については、別のページで記述していこうと思います。 |
|||||||||||
6.物理層 | |||||||||||
データリンク層と物理層と分けて説明するホームページをありますが、ハードウェアの関連のプロトコルなので、Lab-Kageでは物理層として扱おうかと思っています。 この層では宛先MACアドレス、送信元MACアドレスのヘッダ情報の付加と、相手先がパケットが壊れていないかをチェックするためのデータである FCS を付加します。 また、受け取ったデータが自分宛でないと、データを破棄します。 |
|||||||||||
7.まとめ | |||||||||||
各層を見て分かると思いますが、送信側が各層でヘッダ情報を付加していくことによって、
受信側は各層でそのヘッダ情報を見て、どう処理するのかを判断できるようになります。 (ヘッダ情報の無いアプリケーション層でも、データのフォーマットが決まっているので、メール等でもどこにメール本文があるのか判断できますよね?) つまり TCP/IP とは、正しくプロトコルに沿って処理されているのであれば、どのOSやアプリケーションに依存せず、通信が可能になるものだと言うことではないかと思います。 |
先頭に戻る TOPページに戻る |