TCPはIPを使用しなければならないのか?

ip tcp

TCPはTCP/IPの略で、両者は同じ意味だというのは本当ですか?

TCPを、IP以外の別のプロトコルの上に構築することは可能ですか?

  111  Pacerier  2012-07-16


ベストアンサー

TCP と IP (v4 & v6) は確実に分離可能であり、IPX 上の TCP の例で証明されているように、一方は他方を意味するものではありません (RFC 1791)

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

  1. TCPヘッダにはセグメントサイズフィールドはありません(TCPヘッダのサイズを与えるData Offsetのみ)。したがって、TCP は TCP セグメントのサイズを計算するのに十分な情報を含む下位層プロトコル (すなわち、下位層プロトコルのペイロードサイズ) でのみ動作します。この仮定は IPv4 (RFC 791)、IPv6 (RFC 2460)、IPX (RFC 1791)。しかし、一般的にはそうではなく、例えば鳥のキャリア(RFC 1149)の場合はそうではありません。(注a)を参照)
  2. TCP は、コネクションレスのネットワークプロトコル上でのみ動作するように設計されています。TCPは、ある種のコネクション指向のネットワークプロトコル(例えば、ATMの一定ビットレートサービス)上では実質的に動作しませんが、それは、2つのファイティングレート制御機能が非常に貧弱な、または予測不可能な性能につながるからです。もう一つの退化した例は、TCP トンネル上の TCP です

TCP 仕様 RFC 793 は、下層とのインタフェースを大きく未指定にしていることを認めているため、この問題を決めるには良い資料とは言えません

注a) TCPが小さな紙に印刷されたデータグラムを再組み立てするためには、(ハトが運んでも、よりインテリジェントなコルビッドネットワークが運んでも)ペイロードのサイズを標準的な場所に書かなければならないだろう。あるいは、適応層がセグメントサイズをヒューリスティックに決定することも可能である。鳥類キャリア仕様のホストスタック (RFC 1149) の実装で使用された光スキャナには、このようなヒューリスティックな適応層が含まれていましたが、まだ文書化されていません

19  Bob Briscoe  2015-10-22


RFC全体を読んだわけではありませんが、1.4節の文言は、どのような “下位レベル “のプロトコルでも使用できることを示唆しているように思えます

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

88  LawrenceC  2012-07-16


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

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

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

Application Layer

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

Transport Layer

TCP と UDP は、インターネット プロトコル スイートで使用される 2 つのトランスポート層プロトコルです。他にもあるとしたら、私はそれらを知らないし、他のものはごくわずかな専門的な使用法を表しているでしょう

Internetwork Layer

理論的には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-box のおしゃべり、その他いくつかのタイプのトラフィックが含まれています

Google の QUIC プロトコルの FAQ にもこのような記述があることに注意してください

UDPを使うのではなく、全く新しいプロトコルを作ればいいのに。今日のインターネット上のミドルボックスは、一般的にTCPやUDPのトラフィックでない限り、トラフィックをブロックします

(my emphasis)

76  RedGrittyBrick  2012-07-16


TCP/IPが(UDP/IPやSCTP/IPとは対照的に)このような一般的な略語である理由は、2つのプロトコルが一緒に設計されたからであり、Vint CerfとBob Kahnによる最初の論文では、2つの概念が1つのプロトコルにまとめられていました。その後すぐに、ルーティングを提供するIPと、フロー制御、多重化、エラー検出などを提供するTCPに分かれました。6年後にUDPが導入され、TCPの残りのオーバーヘッドなしで「軽量」な多重化レイヤを提供するようになったのは、その6年後のことでした

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

少しの作業で、同じ目的を果たすIPと競合するプロトコルを作成することができますが、それはおそらく同じ機能のすべてではないにしても、ほとんどの機能を含まなければならないでしょうし、おそらく最終的にはIPのような外観になってしまうでしょう。IP の拡張 (IPSec のような) は事実上、代替のレイヤ 3 プロトコルであると主張することができます

34  tylerl  2012-07-17


IPを他のものに置き換えることができます。実際には、IPv6 上の TCP を使用しているときにやっていることとまったく同じです。TCPはTCPのままですが、IPはv4ではなくv6になっています

AFAIKでは、TCPの上で動作する他のレイヤ3プロトコルは誰も作成していませんが、作成できない理由はありません

21  Mark Reed  2012-07-17


TCPとIPはパンの上のバターのようなものです

あなたはどちらかのプロトコルで動作する他の何かをペアリングすることができますが、これらの2つは、それがデータを転送し、インターネットデータでおなかを満たすためにちょうどおいしい信頼性の高い方法であるように補完しています。それは、このペアリングをサポートするために同様に他の乾いた食材とデータの握手を可能にするためにチューブに油を注ぎます。しかし、決して排他的ではありません

Q しかし、IP以外のプロトコルの上にTCPを構築することはできないのでしょうか?

A はい、それは可能です。モールス信号やピジョンの例でIPを使わないTCPがいいですね

9  Tony Stewart Sunnyskyguy EE75  2012-07-17


TCPはTCP/IPの略だとずっと聞いていました

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

と同じ意味になります

それは正しくありません

まず、イーサネットは、実際のハードウェア部品がどのように機能するかを制御する低レベルのハードウェアシステムです

次に、IPを電話システムや交通標識として考える。それは、システムの2つの点を一緒に接続する基本的な制御を提供します

TCP 一方、TCPはメッセージングシステムや交通管制官のようなもので、メッセージ/車を正しいポイントに誘導します

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

インターネットでは、データを送受信したいときに、実際にハードウェアと有線(または無線波)で接続することを制御するのがシステムのIP部分です。システムのTCP部分は、データを取り込んで分解して送信したり、受信したデータを組み立て直したり、データをチェックして必要に応じて再送信したりするソフトウェアの部分です

無数の説明があり、特にビデオ形式で類推や技術的な詳細を見ることができます。DifferenceBetween.netには、この正確なsubjectについて、特に優れたものがあります

しかし、IP以外の別のプロトコルの上にTCPを構築することはできないのでしょうか?

はい、確かに、IP を使用する TCP の代替システムを作成することができます。詳細については、Internet Protocol Suiteをご覧ください

5  Synetech  2012-07-16


TCPはレイヤ4プロトコルです。これは、コンピュータ上のあるプロセスから、同じコンピュータ上の別のプロセスへ、順序付けられたストリームの形でデータを保証された輸送を提供します

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

データのホスト間転送を行うことができるプロトコルがある限り、TCPは動作します

つまり、TCPはどんなプロトコルでも実装できるのですが、IPだけにしました。IPはシンプルで仕事をしてくれます

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

5  SurenNihalani  2012-07-17


ネットワークを設計するときには、プロトコルのセット(基本的にはマシン間の通信ルールのセット)を、さまざまな「レイヤー」(ネットワーク設計者がプロトコルを作成したり組み合わせたりするときに念頭に置いておきたい抽象度の違いとして想像できる)ごとに選択しなければなりません

簡単に言うと、プロトコルはメッセージを入れる箱のようなものです。これらの箱には異なるサイズがあり、一番小さい箱にメッセージを入れ、次に一番小さい箱を少し大きめの箱に入れる、といった具合です。プロトコルのセットを選ぶということは、メッセージを囲む「レイヤー」ごとに、どのようなボックスを使うかを選ぶということです

TCP と IP は、2 つの独立したレイヤのプロトコルで、一緒に作成され、一緒に使用できるようになっていますが、他のプロトコルと一緒に使用することもできます。これはよくあることで、TCP 以外のプロトコルと一緒に IP を使ったり、IP 以外のプロトコルと一緒に TCP を使ったりすることができます

なぜTCP/IPがこのような一般的な略語なのかというと、この2つのプロトコルが一緒にインターネットの基礎を形成し、その成功の鍵を握っていたからです

(TCP と IP は、それらが一緒に機能するように特別に設計されたいくつかの機能を持っていますが、それは純粋な何かについてしばしば文句を言うが、それらは本当に他のプロトコルとのインターフェイスからそれらを妨げるものではありません)

3  userBigNum  2012-07-17


レトロな感じならIPXトランスポートでTCPを動かすことも可能だと思います

2  GDR  2012-07-17


しかし、IP以外の別のプロトコルの上にTCPを構築することはできないのでしょうか?

古典的なTCP/IPv4やTCP/IPv6の他にも、いくつかの実験的なプロトコルが設計されています

ほぼTCP over UDP (atou)

高速・高遅延ネットワーク上でのバルク転送を改善するためのNet100とProbeの取り組みの一環として、UDP上で動作するTCPのインスツルメンテーションされた調整可能なバージョンを開発しました。UDP TCP ライクなトランスポートは、TReno と同様にアプリケーションレベルで TCP ライクな制御を実験するためのテストハーネスとして機能します

そして、iproxy。TCP サービスを UDP 上で実行する、これはより楽しいです

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

というわけで、ご覧の通り。ユニキャストUDP上のTCP、さらにはブロードキャストやマルチキャストUDP上のTCP!

AFAIKでは、TCP/IPv4とTCP/IPv6だけが大規模な展開を享受しています

2  curiousguy  2012-07-18


答えはノーです。例えば、IPX上のTCPを記述した古いRFCがあります。http://tools.ietf.org/html/rfc1791

記憶が浅い人のために、IPXはNovell Netwareのプロトコルでした。http://en.wikipedia.org/wiki/Internetwork_Packet_Exchange

2  teambob  2012-07-18


基本的なデータグラムのトランスポートをサポートする様々なプロトコルの上にTCPの実装が既に存在しています。実際には、ルーティング情報を指定する必要はありません(TCPはIPを必要としません。暗黙の受信者とのセリラリンクだけで十分でしょう)

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

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

使用例としては、Gogo6.net (TCP over UDP v4 の再実装を使用して TCP セッション上で IPv6 トランスポートチャネルを実装しています (IPv4 アドレスのみを持ち、常に UPnP メソッドをサポートしているわけではないほとんどのホームアクセスルータで動作します。)

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

2  verdy_p  2012-07-17


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

1  Jeremy  2013-01-08


タイトルとURLをコピーしました