web-dev-qa-db-ja.com

TCP IPを使用する必要がありますか?

109
Pacerier

TCP over IPX( RFC 1791 )の例で証明されているように、TCPとIP(v4とv6)は完全に分離可能であり、一方が他方を意味することはありません。

ただし、TCPは、anyネットワークプロトコルだけでは構築できません。2つの理由:

  1. TCPヘッダーにはセグメントサイズフィールドがありません(TCPヘッダーのサイズを提供するデータオフセットのみ)。したがって、TCPは、TCPセグメントのサイズ(つまり、下位層プロトコルのペイロードサイズ)を計算するのに十分な情報を含む下位層プロトコルでのみ機能します。その仮定はIPv4( RFC 791 )、IPv6( RFC 246 )およびIPX( RFC 1791 )の場合はtrueですが、一般的には当てはまりません。鳥キャリアの場合( RFC 1149 )(注aを参照)。
  2. TCPは、コネクションレス型ネットワークプロトコルでのみ機能するように設計されています。 TCP 2つの格闘速度制御機能が非常に悪いまたは予測不可能なパフォーマンスにつながるため、特定の接続指向ネットワークプロトコル(ATM一定ビットレートサービスなど)では効果的に機能しません。別の縮退例はTCP over a TCPトンネルです。

TCP仕様、 RFC 79 、は、このインターフェースを下位層とほとんど指定されていないままにすることを認めているため、この質問を決定するのに適した情報源ではありません。

注a)TCPを使用して、ハトまたはよりインテリジェントなcorvidネットワークで運ばれる)小さな紙に印刷されたデータグラムを再構成するには、ペイロードのサイズを標準の場所に書き込む必要があります。 。または、アダプテーションレイヤーがヒューリスティックにセグメントサイズを決定することもあります。鳥のキャリア仕様のホストスタックの実装で使用される光学スキャナー( RFC 1149 )には、このようなヒューリスティックアダプテーションレイヤーが含まれていましたが、文書化されていません。

17
Bob briscoe

[〜#〜] rfc [〜#〜] 全体を読んだわけではありませんが、セクション1.4の言語では、「より低いレベル」のプロトコルを使用できることが示唆されているようです。

TCPと下位レベルのプロトコル間のインターフェイスは、2つのレベルが互いに非同期で情報を渡すことができるメカニズムがあると想定されていることを除いて、本質的に指定されていません。通常、下位レベルのプロトコルはこのインターフェースを指定します。TCPは、相互接続されたネットワークの非常に一般的な環境で機能するように設計されています。このドキュメント全体で想定されている下位レベルのプロトコルは、インターネットプロトコルです。

88
LawrenceC

インターネットプロトコルスイート

TCPはTCP/IPの略ではありません。

TCP/IPは、「 The Internet Protocol Suite 」の省略形としてよく使用され、通常、他の標準プロトコルが含まれています。人々がTCP/IPを言うとき、彼らは通常、UDP over IP(TCPの代わりにUDPが使用されています)や、ARP、ICMP、DNS、SNMP、その他のアプリケーション層プロトコルなど、他の多くのプロトコルを含んでいます。

アプリケーション層

アプリケーションは、SMTP(電子メール用)などのアプリケーション層プロトコルを使用します。これらは、TCPとUDPの2つのトランスポート層プロトコルのいずれかにあります。いくつかのアプリケーション層プロトコルは、UDPとTCPのどちらかまたは両方を使用しますが、ほとんどは1つのトランスポート層プロトコルでのみ使用されます。

トランスポート層

TCPとUDPは、インターネットプロトコルスイートで使用される2つのトランスポート層プロトコルです。 他の人がいたら、私はそれらを知りませんが、他の人は、非常に小さな専門家の使用を表します。その他のトランスポート層プロトコルが定義されています-それらの使用はおそらくグローバルIPトラフィックのごく一部にすぎません

インターネットワーク層

理論的にはIP以外でTCPを使用することは可能ですが、実際にはTCPは常にIPで使用されます-インターネットプロトコル。 IPはネットワーク間でパケットを移動します(IPは複数のLANを接続するものと考えてください)

ネットワークインターフェース層

イーサネットは、TCP/IPが実行される低レベルのリンク層プロトコルの最も人気のあるファミリですが、TCP/IPは、ATMなどでも広く使用されています。

IP layer diagram From bootdiscs.net


付録1-トランスポート層プロトコルに関する注意

インターネットプロトコルスイートを使用するネットワークで重要な使用が行われている唯一のトランスポート層プロトコルは、TCPとUDPです。

†おもしろいので、NetBIOS(TCP経由)、SSH、Rsync、電子メール、ソフトウェアアップデート、DNS、一般的なWindowsボックスチャッター、その他のいくつかのタイプのトラフィックを含む(非常に)小さなLAN上のトラフィックを測定しました。Wirshark Protocol Hierarchy Statistics

Googleのこのステートメントにも注意してください QUICプロトコルに関するFAQ

なぜUDPを使用するのではなく、まったく新しいプロトコルを構築しなかったのですか?今日のインターネット上のミドルボックスは、TCPまたはUDPトラフィックでない限り、一般にトラフィックをブロックします

(私の強調)

76
RedGrittyBrick

TCP/IPが(UDP/IPやSCTP/IPなどとは対照的に)非常に一般的な略語である理由は、2つのプロトコルが一緒に設計されたためであり、Vint CerfとBob Kahnによる元の論文では、2つの概念は組み合わせて単一のプロトコルにします。その後まもなく、それらはIPに分割されてルーティングを提供し、TCPを使用してフロー制御、多重化、エラー検出などを提供しました。UDPが導入されて「軽量」多重化が実現したのは6年後のことです。 TCPに関連する残りのオーバーヘッドのないレイヤー。

それでも、TCPとIPは2つの別個のものであり、完全かつ意図的に独立しています。 TCPがIPを必要としないという事実は、TCPが2つのまったく異なるプロトコルであるIPv4とIPv6の両方で変更なしで実行できるという事実からすぐに明らかになります。

少しの作業で、同じ目的に役立つ競合するIPのプロトコルを作成できますが、同じ機能のすべてではないにしても、ほとんどの場合はプロトコルを含める必要があり、いずれにしてもIPのように見える可能性があります。 IPへの拡張(IPSecなど)は事実上代替のレイヤー3プロトコルであると主張することができます。

34
tylerl

IPを別のものに置き換えることができます。実際、これはまさにIPv6でTCPを使用しているときに行っていることです。TCPはまだTCPですが、IPはv4ではなくv6です。 。

申し訳ありませんが、TCPの上で動作するように他のレイヤー3プロトコルを作成した人はいませんが、それができなかった理由はありません。

21
Mark Reed

TCPとIPは、バターのようなバターのようなものです。

どちらのプロトコルでも機能する他の任意のものをペアにすることができますが、これら2つはそうですcomplementaryそれは単においしい信頼できる方法からデータを転送し、お腹にインターネットデータを入力します。チューブにグリスを塗布して、他の乾燥食品やデータのハンドシェイクでこのペアリングをサポートします。しかし、それは決して排他的ではありません。

[〜#〜] q [〜#〜]ただし、TCPをIP以外の別のプロトコルの上に構築することはできませんか?

[〜#〜] a [〜#〜]はい、可能です。私はTCP IPなしのモールス符号とピジョンの例が好きです。

私はいつもTCPはTCP/IPの略であると聞きました

実際にはそれはインターネットプロトコル上の転送制御プロトコルの略です

同じ意味です。

不正解です。

まず、イーサネットは、実際のハードウェアパーツの機能を制御する低レベルのハードウェアシステムです。

次に、 [〜#〜] ip [〜#〜] を電話システムまたは交通標識として考えます。これは、システムの2つのポイントを接続する基本的な制御を提供します。

[〜#〜] tcp [〜#〜] 一方で、メッセージシステムや交通管制官のように、メッセージ/車を正しいポイントに誘導します。

まとめると、TCP/IPは、2つの接続されたデバイスとの間でデータを確実に転送するシステムを提供します。

インターネットの場合、データを送受信する場合、システムのIP部分は、ワイヤー(または無線波)を使用した実際のハードウェア接続を制御する部分です。 TCPシステムの一部は、データの取得と分割、送信、受信データの再構成、および必要に応じてデータのチェックと再送信を行うソフトウェアです。

無数の説明 があり、特に ビデオ形式 に類似点と技術的詳細が用意されています。 DifferenceBetween.netには、この正確な subject について特に優れたものがあります。

ただし、TCP=をIP以外の別のプロトコルの上に構築することはできませんか?

はい、実際にIPを使用する TCPの代替システム を作成できます。詳細については インターネットプロトコルスイート をご覧ください。

5
Synetech

TCPはレイヤ4プロトコルです。コンピューター上の1つのプロセスから同じコンピューターまたは別のコンピューター上の別のプロセスへの順序付けられたストリームの形式でデータの転送を保証します。

IPはレイヤ3プロトコルです。あるホストから別のホストへの移動を提供します。

ホストからホストへのデータ転送を行うことができるプロトコルがある限り、TCPは機能します。

したがって、TCPは任意のプロトコルで実装できますが、IPしか作成していません。IPは単純で、機能します。

別のレイヤ3プロトコルは必要ありません。

5
SurenNihalani

ネットワークを設計するときは、さまざまな「レイヤー」(異なる抽象化レベルとして想像できる、ネットワーク設計者が望んでいるもの)ごとに、プロトコルのセット(基本的にはマシン間の通信ルールのセット)を選択する必要があります。プロトコルを作成して組み合わせるときは注意してください)。

シンプルなバージョン:プロトコルはメッセージを入れるボックスのようなもの。これらのボックスにはさまざまなサイズがあり、メッセージを最小のボックスに入れ、次に最小のボックスをもう少し大きいボックスに入れます。プロトコルのセットを選択することは、それぞれに使用するボックスの種類を選択しますメッセージを囲むレイヤー」。

TCPとIPは、一緒に作成され、一緒に使用できるようにするための2つの独立したレイヤーのプロトコルです。ただし、他のプロトコルで十分に使用できます。これはかなり頻繁に起こります:IPを非TCPプロトコルと一緒に使用するか、TCP非IPプロトコルと一緒に使用

TCP/IPがこのような一般的な略語である理由は、これらの2つのプロトコルが一緒に形成され、インターネットの基礎となり、その成功の鍵となったためです

(TCPとIPには、それらが一緒に機能するように特別に設計されたいくつかの機能があります。これは、純粋主義者がしばしば不満を言うものですが、他のプロトコルとのインターフェースを妨げるものではありません)

3
userBigNum

レトロにしたい場合は、IPXトランスポートでTCPを実行することは可能だと思います。

2
GDR

答えはいいえだ!たとえば、TCP over IPX: http://tools.ietf.org/html/rfc1791 と記述されている古いRFCがあります。

思い出が短い人にとって、IPXはNovell Netwareプロトコルでした: http://en.wikipedia.org/wiki/Internetwork_Packet_Exchange

2
teambob

基本的なデータグラムの転送をサポートするさまざまなプロトコルの上にTCPを実装したものがすでに存在しています。実際、ルーティング情報を指定する必要さえありません(TCPはIPを扱う必要さえありません。暗黙の受信者とのserilaリンクで十分です)。

つまり、UDPの上にTCPを実装しました(利点:「サーバー」側で単一のポートを使用するか、さまざまな多重化チャネルを転送する既存の接続に埋め込むことができます)。 IPレベルのみがルーティングを提供しますが、TCPはルーティングを必要としません。重要なのは、MTUの概念が下位層によって提供されることです。

これにより、プロトコルはNATトラバーサルの制限を回避でき、特定のホストのUPnP変換ポートを登録する必要はありません。 MTUとMSSの独立したチューニングを可能にし、中間の共有ルーターごとではなく、クライアントごとに最適化されます。他のルーティングプロトコルも可能です(マルチキャストおよびブロードキャストネットワーク経由の配信を含む)。また、セキュリティメカニズムを選択できます。

使用例は、Gogo6.net(UDP v4を介したTCPの再実装を使用してTCPセッションを介してIPv6トランスポートチャネルを実装する)です(これは、まだ唯一のほとんどのホームアクセスルーターで機能しますIPv4アドレスがあり、常にUPnPメソッドをサポートしているわけではありません。アプリケーションが実行されていない場合でも、アプリケーションに固有の定数ポート番号を使用してユーザーがアドレスを構成する必要はありません)

他の例としては、HTTP(またはHTTPS)バージョン1.1上のTCPを、その「ストリーミングされた」拡張をネイティブにカプセル化することです。インターネットを介したネットワークのブリッジを許可するほとんどのVPNは、同じことを行います。ブリッジは複数のプロトコルをカプセル化することもできます:イーサネット、PPP、IPv4およびIPv6(ローカルLANまたはイーサネットセグメントのみを拡張)、NetBEUI/LanMan、(ブリッジされたネットワーク内での)ルーター検出、およびrawモード(DHCPv4またはDHCPv6を許可)を含むブリッジネットワーク。 HTTPSを使用したカプセル化により、ブリッジの確立とセキュリティ保護のための暗号化と認証も可能になりますが、ブリッジネットワーク上のクライアントとサーバーにはエンドツーエンドの認証/暗号化が不要であり、ルーターはHTTPに対して高度に最適化されているため、HTTPSが使用されますおよびHTTPS。

2
verdy_p

ただし、TCP=をIP以外の別のプロトコルの上に構築することはできませんか?

従来のTCP/IPv4およびTCP/IPv6のほかに、いくつかの実験的なプロトコルが設計されています。次に例を示します。

ほぼTCP over UDP(atou)

高速で待ち時間の長いネットワークでのバルク転送を改善するためのNet100とプローブの取り組みの一環として、TCPの計装された調整可能なバージョンを開発しました。これはUDPで実行されます。UDPTCPのようなトランスポートTRenoと同様のアプリケーションレベルでTCPのようなコントロールを試すためのテストハーネスとして機能します。

そしてiproxy:Running TCP services over UDP、これはもっと楽しいです:

iproxyは、任意のTCP/IPサービスがブロードキャスト、マルチキャスト、またはユニキャストUDPで実行できるようにするクライアント側プロキシとサーバー側プロキシで構成されています。もともとは、Webベースのインターフェースを使用して、LAN上でIPアドレスが付与されていないサーバーを構成する方法として考えられました。

つまり、TCP=ユニキャストUDPで、TCP onbroadcastまたはmulticast UDP

AFAIKのみのTCP/IPv4およびTCP/IPv6は、大規模な展開を楽しんでいます。

2
curiousguy

TCPを使用している軍の通信システムの例がありますが、IPはありませんが、通信パスはルーターなどを介してルーティングされないシリアルタイプの接続であるためです。 TCP IPフィールドでヘッダーが付けられる前のパケットは、「ルーティング」プロトコルが異なる場合、IPを使用しないことは簡単に可能です。

1
Jeremy