2013-03-24 4 views
21

私の知るところによれば、インターネットアプリケーションを設計する必要がある場合、接続指向サービスまたは接続レスサービスのいずれかを使用する必要がありますが、両方を使用する必要はありません。TCPがコネクション型の場合、なぜパケットは異なるパスに従うのですか?

インターネットのコネクション型サービスはTCPであり、コネクションレス型サービスはUDPであり、どちらもインターネットプロトコルスタックのトランスポート層に存在します。

インターネットの唯一のネットワーク層は、接続レスサービスであるIPです。つまり、最終的にIPを使用してパケットを送信するアプリケーションを設計します。

接続指向サービスは、すべてのパケットを送信するために同じパスを使用し、接続レスではありません。

したがって私の問題は、接続指向のアプリケーションが設計されている場合、それは同じパスを使用してパケットを送信する必要があり

です。しかし、IPは異なるルートを使ってそのルールを破ります。この意味で、TCPとIPの両方がどのように連携しますか?それは私を完全に混乱させます。

+7

"接続指向サービスはすべてのパケットを送信するために同じパスを使用します。"いいえ、彼らはしません。あなたはただそれを作った。 – EJP

+2

1日に1通の書簡を同じ住所に投稿した場合、100日以上にわたって100文字が届く可能性があります。あなたが示唆しているのは、あなたがいつも同じ投稿用ポストボックスを使用して同じ目的地に到着したからといって、すべての手紙に同じポストメン、バン、トラックなどが使われているからです。 –

答えて

27

あなた、私の友人は、2つの異なるレイヤーの機能を混同しています。

TCPは、他のものの中で輻輳制御メカニズムのような異なるものをネゴシエートできる2つの端の間に接続確立があるという意味で接続指向です。
トランスポート層プロトコルの一般目的は、経路について何も知らないことを意味するプロセス間配送を提供することです。パケットがエンドシステムに到達する方法は範囲外ですが、パケットは2つのプロセス間でどのように送信されているかにのみ関係しています。

IPは、インターネットのネットワーク層プロトコルで、エンドシステム間のデータ配信に関係していますが、コネクションレスであり、接続を維持しないため、各パケットは他のパケットとは独立して処理されます。
各ルータは、各パケットに適したパスを選択します。このパスは、可用性/輻輳によって変わる可能性があります。

これはどのようにあなたの質問に答えますか?
TCPは、パケットが他のプロセスに到達することを確認します。パケットがどこに到達しても気にしません。一方、IPは、他のエンドに到達するかどうか気にしません。特定のパケットに最も適したものに応じて、異なるパケットを転送します。

注:
IPは接続指向だったとしましょう。つまり、パケットが同じパスをたどっているとしますか? 必ずしも、セキュリティに関連する特定のオプションのネゴシエーションを意味するならば、このレイヤーでの「接続」という言葉の意味に依存します。例えば、インターネット上の異なるルートを通じてすべてのパケットを転送することができます。

EDIT:
はしかしあなたを混同しないように、以下のほとんどの接続指向のネットワーク層でのサービスとは、確立された接続は、またのために、すべての「パケット」は従わなければならない仮想パスを確立することを意味さらに詳しい情報についてお読みください。
Virtual circuitframe-relay networks

+0

"TCPはパケットが他のプロセスに到達することを確認しますが、パケットがどこに届いても気にしません。"しかし、接続指向のサービスは、すべてのパケットが同じルートに従うように定義されています。その部分はまだ私を混乱させる – Assasins

+4

ちょっと遅い返信のためにすみません。その声明は誤解を招く一般化ではありません。 パケットルートはトランスポートレイヤではなくネットワークレイヤの関心事であることを認識する必要があるため、トランスポートレイヤでの接続の向きはパケットルートに違いはありません。 – Fingolfin

1

TCP protocalは、送信側と受信側のマシンによって実装されます。パケットが送信側のマシンを離れると、TCPは何も知らずにIPを使用してソースから宛先にパケットを取得します。次に、TCPを使用してすべてのパケットが到着し、正しい順序で到着することを確認するのは、宛先マシンのジョブです。インターネット自体はTCPについては何も知らず、コネクションレスメディア(インターネット)に接続するレイヤー(たいていはソフトウェア)です。

パケットは宛先を去ります。それは、上位プロトコル(TCPやUDPなど)に関係なく、デスティネーションに到達する限り、ほとんどの経路に沿って進むことができます。

私はそれがもう少し複雑であることを意味しますが、それが一般的なアイデアだと思います。

+0

okなぜ実際に何が起こっていないのかというとき、接続指向のサービスが同じパスを通ってパケットを送信するのはなぜですか? – Assasins

+1

@Fazian私たちはそれを言っていません。あなたはそのことを言った唯一の人です。あなたはそれを作った。なぜそれをしたのか説明することはできません。 – EJP

3

をこのリンクはかなりよく、あなたの質問に答えるhttp://www.tcpipguide.com/free/t_ConnectionOrientedandConnectionlessProtocols-3.htm

一部の人々は、「Sのようになり、この(TCP)を検討より高いネットワーク層での回線交換の「イミュレーション」、これは多分疑わしい類推である。デバイス間でデータをやりとりするためにTCP接続を使用することはできますが、そのデータはすべて実際にはまだパケットとして送信されています。デバイス間に実際の回路はありません。これは、データ損失の可能性や誤った順序でのデータの受信など、パケット交換通信のすべての潜在的な落とし穴に対処する必要があることを意味します。

TCPプロトコルは、到着しなかったIPパケットや失われたIPパケットが1つのFIFOチャネルを介して到着したと感じる問題を処理します。はい、TCPはそれを行うのに十分スマートです。専用の基盤チャネルは必要ありません。

+1

私はこれが私が探している答えだと断言しなければなりません。 –

0

ルーターは、3つのレイヤー(物理、データリンク、およびネットワークレイヤー)でしか動作しないため、ルーターは情報のみに応じて決定を下します。したがって、ルータでのTCPまたはUDPに関する情報はありません。

関連する問題