「Transmission Control Protocol」の版間の差分

m
句読点の重複を修正しました。
m (句読点の重複を修正しました。)
 
==== 高信頼転送 ====
TCPは「シーケンス番号」を使ってデータの各バイトを識別する。シーケンス番号は双方のホストが送信するバイト列に先頭から振られる番号であり、それによってデータがどう分割されても、順番が入れ替わっても、転送中に失われても、元のデータを復元できる。ペイロードの各バイトを送るたびにシーケンス番号をインクリメントしなければならない。3ウェイ・ハンドシェイクの最初の2ステップで、双方のホストは初期シーケンス番号 (ISN) をやりとりする。この番号は任意であり、[[TCPシーケンス番号予測攻撃]]への防御のために予測不可能な値とすべきである。
 
TCPは「累積確認応答」方式を採用しており、受信側が確認応答を返すとき、そのセグメントで示されている確認応答番号は、対応するシーケンス番号未満のデータを全て受信済みであることを示している。送信側はペイロードの先頭バイトのシーケンス番号をそのセグメントのシーケンス番号として設定する。受信側は次に受信することを期待しているバイトのシーケンス番号を確認応答番号に設定して確認応答を返す。例えば、送信側が4バイトのペイロードをシーケンス番号 100 で送信する場合、そのペイロードの4バイトのシーケンス番号は順に 100、101、102、103 である。受信側がこのセグメントを受信すると、その確認応答での確認応答番号は 104 となり、次のパケットで送られてくるペイロードの先頭バイトのシーケンス番号となっている。
一般にTCPが適さない場合は [[User Datagram Protocol]] (UDP) を使用する。UDPはTCPと同様にアプリケーション[[多重化]]とチェックサム機構を提供するが、ストリームの構築や再送を行わず、アプリケーションにそういった機能の実装を任せている。
 
[[Stream Control Transmission Protocol|SCTP]]は、TCPとよく似たストリーム指向のサービスを提供するプロトコルである。TCPより新しくさらに複雑であり、広く普及したとは言い難い。しかし、信頼性とリアルタイム性を同時に必要とする用途を意図して設計されている
 
TCPは広帯域環境でも問題を抱えている。{{仮リンク|TCP輻輳回避アルゴリズム|en|TCP congestion avoidance algorithm}}は、送信者が事前にわからない場当たり的な環境ではうまく機能するが、通信パターンが予測可能な環境では [[Asynchronous Transfer Mode]] (ATM) のようなタイミングに基づくプロトコルの方がオーバーヘッドが小さく、うまく機能する。
46

回編集