• ベストアンサー

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

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

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

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

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

upanepa
質問者

お礼

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

その他の回答 (2)

  • celtis
  • ベストアンサー率70% (2266/3204)
回答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

  • データリンク層のプロトコルは何で決める?

    TCP/IPはOSに入っていて、アプリケーションによって、例えば、TCPが使われるとかUDPが使われるとか決まると思います。 調べてみると、データリンク層はイーサネットとかPPPとか種類があるとあったのですが、これらは何が要素となって決まるのでしょう?(ケーブル?ネットワーク機器?) よろしくお願いします。

  • 通信方法について

    こんばんは。 今回は通信における基礎的ことをうかがいたいと思います。 例えばクライアントからサーバーへFTPでデータをPUTするとします。 ここでデータ通信はどのように行われているのでしょうか? 実際の通信処理はTCP/IPプロトコルが行っていると思います。 では、アプリケーションプロトコル(FTP)はどのような動きをするのでしょうか? TCP/IP(下位層)に対して、通信を開始せよ!といった命令でも出すの でしょうか? socketの勉強をすると良いと薦められましたが、何か良いサイト等が ありましたら教えてください。

  • UDPプロトコルについて

    自分で調べればよいことなのでしょうが・・・ もし知っている方がいたら、教えてください。 TCP/IPでは、異なるサブネットのノードとは通信できないと思うのですが、例えば、192.168.0.0/24のネットワーク内のハブに、192.168.1.10というノードを接続してあるような場合に、192.168.0.10のホストからUDPプロトコルでブロードキャストすれば、互いに通信できるのでしょうか?

  • VoIPのトランスポートプロトコルでTCPを用いるにはどのような環境で

    VoIPのトランスポートプロトコルでTCPを用いるにはどのような環境であれば問題ないでしょうか? VoIP(IP電話)ではトランスポートプロトコルとして、リアルタイム性を保つためにUDPが使用されていると思いますが、TCPを使用して通信したい時はどのような環境であれば可能でしょうか? 詳しい方おられましたらご教授願います。

  • C#でUDP通信

    C#でネットワークプログラミングを行いたいと思っています。 使用するプロトコルはUDPです。 TCP通信の参考書やwebページは見掛けるのですが UDPに関する資料はなかなか見つけることができません。 コーディングする上で、 TCP通信のプログラムをどのように変えたらよいのか 教えてください。 ちなみに、Windowsで開発する場合は WINSOCKを使ったほうがよろしいのでしょうか。

  • IEEE802.3通信

    初心者で申し訳ありません。 ご教授お願いいたします。 VCでソケット通信を行うとTCP/IP UDP/IPプロトコルの情報が付加されます。 それをしない方法? もしくはソケット通信ではなくイーサネット通信を行う方法がわかりません。 質問の文にも間違いがあるかもしれませんが、よろしくお願いいたします。

  • [Java]VM間でデータのやり取りする方法

    同じコンピュータ上で動作する2つのJAVAプログラムでデータのやりとりを行う場合、TCP/IPとUDP/IPを思いつくのですが、それ以外の方法はありますか?IP(インターネットプロトコル)はポート数に制約があるので困っています。

  • SPI通信プロトコル

    SPI通信をサポートするデバイス(SPI-Flash、EEPROMやADC・・・など)のデータシートをいくつか見ているのですが、ふと不思議に感じることがあり質問させて頂きました。 私が見た範囲では、各デバイスの通信プロトコル(コマンドフォーマットや、レスポンスフォーマット)にはCRCやCheck Sumなどの、いわゆる"データ誤り検出の仕組み"が無いものばかりでした。 基本的に、各デバイス間の物理的な距離が近いことが想定されているためか、ノイズなどの影響は受けにくいのかもしれないですが、安全を期すには"データ誤り検出の仕組み"が必要だと感じました。 ※TCP/IP通信などではCRCがありますし、RS-232Cなどでもパリティがあります。 通信プロトコルはメーカーの設計思想依存なので、「正しい」とか「間違っている」ということは無いと思いますが、皆さんの考えをお聞かせ頂けないでしょうか? よろしくお願いいたします。

  • ネットワークのプロトコルについて

    TCP/IPやHTTPやICMPなどの関係について質問させてください。 上記の各プロトコルについては、それぞれ、適した通信に使われる ルールのようなものだと解釈しています。 しかし、これらの関係については良く解っていません。 例えば、ICMPは、TCP/IPで接続された上で利用されるプロトコルの ようですが、プロトコルの上にプロトコルが乗っかると言うのは良く 理解できません。等質問以前にプロトコルについて詳しく学習する 必要があるのかもしれませんが、自身で何が解っていないのかも うまく整理して説明出来ない状態ですが、ネットワーク関係の プログラミングの解説書等を読みプロトコルが説明に入ると思考が 停止してしまうので、理解出来るようにどうか助け舟を出して頂け ませんでしょうか?

  • PLC通信プロトコル

    PLC(omuron/三菱)を現在使用しています。そこで今回上位リンク/計算機ユニットを使用して各装置(PC等)データーの受け渡しを行いたいと思っていますが,通信プロトコルについては,全然理解がありません。 何か分かりやすい資料等ありませんか?