• ベストアンサー

プロトコル間のデータ通信はどうやって?

ネットワークについて関心があります。 プロトコル間のデータ通信はどうやって行われているので しょうか? (以下は間違いを含んでいるかもしれませんが、 説明となります) TCP/IPを使用して、インターネットを利用します。 送信する場合は、まずsocketを利用して、TCP、もしくはUDPに データを渡します。 ☆この時点で、ひとつ疑問なのは、TCPならば、TCPという名前の プログラムが存在しているのでしょうか? そして、適切なヘッダ、トレーラ(付いたかは自信がない)が くっ付けられて、それがIPにわたされる。 またそれが、PPPに渡される。そして、デバイスドライバに 渡される。 といった具合に、どんどんデータが包まれているわけですが、 その際のデータの受け渡し方法はどのようなものなのでしょうか? 上で質問した、TCPならばTCPという名前(これがそのまま名前じゃ ないかもしれませんが)のプログラムが存在する。という認識が あっているとすれば、IPという名前のプログラムが存在して、 PPPという名前のプログラムが存在して、そのそれぞれのプログラム間 でデータ通信を行っているはずです。プロセス間通信だから、 ソケットなのか、名前つきパイプなのか、共有メモリなのか、、 そこが気になります。 OSの機能の内部構造に関わるものだからか、 この話題についてプログラムの構造の観点から、記述された ものを見たことがありません。 宜しくお願いいたします。

質問者が選んだベストアンサー

  • ベストアンサー
  • notnot
  • ベストアンサー率47% (4900/10358)
回答No.1

IP,TCPなどは概念的なもので、実装(プログラムとかプロセスとか)とは独立です。実装は色々あり得ます。ただ、IPはTCPでもUDPでもICMPでも使うので、それぞれ独立したサブルーチンとして作るのが普通だと思います。Socketを使うプログラムがTCPのサブルーチンを呼んでそのサブルーチンがさらにIPのサブルーチンを呼ぶ。さらにIPサブルーチンがLANカードのデバイスドライバを呼ぶ(もしかしたらもう一階層あるかも)。

upanepa
質問者

お礼

ご回答ありがとうございます。 概念と実装は異なるんですね。しかも その実装方法は色々存在すると。。知りませんでした。

その他の回答 (2)

  • celtis
  • ベストアンサー率70% (2332/3291)
回答No.3

3Minutes Networkingというサイトが、とてもわかりやすいので参考にしてください。 http://www5e.biglobe.ne.jp/~aji/3min/

upanepa
質問者

補足

ご回答ありがとうございます。 ご紹介のサイトを一見してみましたが、 プログラムの構造の観点から書かれた記述を 見つけることができませんでした。 よろしかったら、具体的な回番号をご教授頂けないでしょうか

  • Toshi0230
  • ベストアンサー率51% (836/1635)
回答No.2

IPとかTCPとかは「プロトコル」、すなわち「手順」のことなので、そういう名前のプログラムがあるとは限りません。 さて、ソケットにデータを渡す際、相手のIPアドレスとポート番号をまず指定するはずです。ソケットは、TCP(UDP)/IPにデータを渡す際の関数(でよいのかな?プログラムはシロートなので間違ってるかも)なので、この時点でデータはOSのTCP/IPスタックに渡されます。 OSは、自分が把握している通信手順に従って送信先経路を確認し、該当する送信先のデバイスにIPパケットを渡してデータリンクレベルで送信を行います。実際のデバイスを制御するのはデバイスドライバの役目です。 このあたり、詳しくはOSのTCP/IPスタックについて調べると、いろいろ出てくると思います。通常のプログラムはソケットにポート番号とIPを指定するだけで、あとはOSが勝手にやってくれるものなので、普通のプログラムではここまで意識することはないと思います。

upanepa
質問者

お礼

ご回答ありがとうございます。 プロトコルとプログラムが一対一対応するという わけではないのですね。知りませんでした。 引き続き調べてみます

関連するQ&A