エンドツーエンド原理
概要
エンドツーエンド原理では、アプリケーション固有の機能がネットワーク終端のホストで「完全かつ正しく」実装できるなら、ネットワーク内の中間ノードではなく終端のホストで実装されるべきだとする。この考え方はバランが1960年代に行った信頼できない部品で信頼性のあるネットワークを構築する研究にまで遡り、ネットワークに機能を追加しようとしたとき、（ネットワークでの実装のレベルによらず）結局は「完全かつ正しい」実装のために終端のホストにも実装しなければならなくなるという知見に基づく。下層の通信システムの機能の多くは上位層クライアントのために実装されているものの、クライアントがその機能を必要としないこともあり、クライアントが同等機能をエンドツーエンド的に再実装するような冗長な状況が存在し、性能的に無駄が生じるとした。
もう1つの典型的な例としてファイル転送がある。信頼性のあるファイル転送プロトコルやファイル転送プログラムではチェックサム機能を持ち、転送が完了した時だけチェックサムを検証する。ディスク障害やソフトウェア障害を考慮すると、エンドツーエンドのチェックサムが必要となる。ファイル転送でのキーとなるリソースはファイルシステムである。エンドツーエンド原理に従えば、ファイル転送でファイルシステムにアクセスするソフトウェアが転送の進み具合を制御し、最小の遅延で再転送を開始させることになる。
典型例として、それなりの大きさの分散ネットワークで信頼性のある2点間のファイル転送を行う場合が挙げられる。2つの終端が完全な信頼性のあるファイル転送を行うには、転送先の終端でファイル全体のチェックサムを確認して終端間（エンドツーエンド）で肯定応答を行う必要がある。そのようなシステムで下位層がファイルより小さな単位でチェックサムと応答のプロトコルを実装することは性能最適化の手段としてのみ正当化され、ファイル転送アプリケーション自体の高い信頼性要求を達成する手段としては不十分である。
ネットワーク中立性での議論では、エンドツーエンド原理は「中立」または「ダム」ネットワークを前提として解釈される。
基本的内容
エンドツーエンド原理の背景にある基本的考え方は、2つのプロセスが何らかの通信手段を用いて互いに通信する際、その通信手段の提供する「信頼性」だけでプロセスに要求されている信頼性を完全に達成することは期待できないというものである。特にそれなりの大きさのネットワークに隔てられたプロセス間で通信する際に非常に高い信頼性が求められる場合、そのコストは単純な肯定応答と再送（ARQなど）で達成できる信頼性要求を満たす場合より高くなる。ある一定のマージンを超えて信頼性を得るには「中間ノード」内の機構よりも「終端ホスト」内の機構の方がずっと容易で扱いやすく、特に終端ホストの方が中間ノードよりも制御しやすい場合はそうである。エンドツーエンドで肯定応答と無限に再試行する再送のプロトコル（PAR、Positive Acknowledgment with Re-transmission プロトコル）を使うと、データ転送の成功確率がゼロより大きい任意のネットワークで任意の高い信頼性を達成できる。
エンドツーエンド原理をエンドツーエンドの誤り制御・訂正以外に拡張して適用することは簡単ではない。例えば、レイテンシやスループットといった通信パラメータの向上に直接エンドツーエンド原理で寄与することはできない。Saltzer（最初のエンドツーエンド原理に関する論文の主著者）との個人的やりとりに基づき、BlumenthalとClarkは2001年の論文で次のように記している。
当初から、エンドツーエンド論は終端で要求仕様を正しく実装できると仮定してきた。ネットワーク内に実装する以外に要求を達成する手段がないなら、そもそもエンドツーエンド論は不適切である。(p. 80)
歴史
エンドツーエンド原理の意味は提唱された当初から継続的に再解釈されてきた。また Saltzer, Reed, Clark の1981年の論文より前に、注目すべきエンドツーエンド原理的な概念の明確な表現も見られる。
信頼できない部品群による信頼性の達成
1960年代、ポール・バランとドナルド・デービスはARPANET以前のネットワークを研究し、信頼性について後のエンドツーエンド原理に通じるコメントを残している。バランの1964年の論文には次のように記している。
信頼性と誤り率低減は二次的である。いずれにしてもネットワークは重大な障害が起きることを想定して構築しなければならない。強力な誤り訂正手段は既に存在している。(p. 5)
 
同様にデービスはエンドツーエンドの誤り制御について次のように記している。
ネットワークの全てのユーザーは自ら何らかの誤り制御手段を用意でき、それによってパケット消失を検知できるだろう。したがって、パケット消失が十分稀な現象なら、許容される。(p. 2.3)
TCP/IP
インターネットでは、コネクションレスのデータグラムサービスで送達もQoSも保証しないIPプロトコルがほとんど全ての通信に使われている。
IP上で任意のプロトコルが動作する。
音声など一部の用途では再送による信頼性は必要とされないので、IPにおける信頼性機構はIPヘッダのチェックサムのみとなっている（低品質の経路でパケットを送信する際のビット誤り検出に必須である）。
エンドツーエンドの肯定応答と再送は、IPの上に置かれるコネクション指向のTCPで実装している。
IPとTCPで機能的に分割したのは、用途によってエンドツーエンド原理を選択可能にしたためである。
さらにネットワークが適切に機能するためには、輻輳状態となるような負荷を排除するような手段も必要とされる。
インターネットのほとんどのアプリケーションが通信にTCPを使っている。
バン・ジェイコブソンらがTCP向けのエンドツーエンドの輻輳制御アルゴリズムを考案したのは、TCPが標準化されてから7年後のことである。