ホームページ >運用・保守 >Linuxの運用と保守 >TCPの信頼できる伝送原理を1つの記事で理解する
TCP の下の IP 層はベストエフォート配信で信頼性が低いため、TCP は独自に信頼性の高い送信を完了する必要があります。次に、単純なストップ アンド ウェイト プロトコルから始めて、信頼性の高い送信を実装する方法を説明します。信頼性の高い伝送のいくつかの特性、つまり損失がない、重複がない、順序どおりに到着することに注意を払う必要があります。
TCP は、信頼性の高い送信を実現するためにストップ アンド ウェイト プロトコルを使用しないことに注意してください。
#Stop Waiting Protocol
トランスポート層のデータ送信単位をセグメントと呼びます。以下では、便宜上、これらをすべてグループと呼びます。 ストップ アンド ウェイト プロトコルの原理は非常に単純で、パケットの送信後、送信を停止し、前のパケットの確認を待ってから、次のパケットの送信を続けます。 以下は、いくつかの異なる状況を通じて分析されます:エラーなしの状況
エラーなしの状況は非常に単純です。以下に示すように。各パケットが送信されると、送信を停止し、パケットの確認を待ってから、後続のパケットの送信を続行します。#エラーが発生するエラーが発生する場合は 2 つの状況があります。1 つ目は、パケットが送信されない 宛先アドレスへの配信が成功した場合 送信されたデータ パケットにエラーがある場合もあります。図を通して、2 つの状況を分析しましょう
まず、B の動作を見てみましょう: A が M1 パケットを送信します。パケットが間違っている場合、B はパケットを受信した後にそのパケットを破棄し、何もしません (A には、間違ったパケットを受信したことは通知されません)。 B が M1 パケットを受信しない場合、B は何も知らず、何もアクションを実行しません。
A が次に何をするかを見てみましょう。A がパケットを送信したが、B からの M1 パケットの確認を受信できなかった後、待ち時間がタイムアウトすると、M1 パケットを再送信する必要があります。タイムアウト再送を実現するには、タイムアウトタイマーを設定する必要があり、タイムアウト時間内に送信パケットが確認されるとタイムアウトタイマーがリセットされ、それ以外の場合はパケットを再送する必要があります。
注意すべき点がいくつかあります:
確認漏れと確認遅延パケット送信時のエラーに加え、確認が返される際にもエラーが発生します。確認の紛失や確認の遅れも発生します。
まず確認喪失の状況を見てみましょう。A のパケット B がそれを受信し、A に確認を送信しましたが、確認が失われて A は受信しませんでした。 A は M1 からの確認を受信していないため、タイムアウトを超えて待機した後、M1 を B に再送信します。このとき、B は重複パケット M1 を受信し、次の 2 つの操作を行う必要があります。
別の状況を見ると、M1 のパケット確認が遅れています (タイムアウト期間後に受信)。重複確認を受け取った後、A はそれを破棄し、他には何もしません。
上記のタイムアウト再送信メカニズムにより、信頼性の低いネットワーク送信でも信頼性の高い送信を実現できます。
チャネル使用率
上記のストップ アンド ウェイト プロトコルは単純ですが、非常に大きな欠点があります。チャネル使用率が高すぎるということです。低い 。確認の受信を待っている間、チャネルは完全にアイドル状態になり、非常に無駄です。
#チャネル使用率を向上させるために、パイプライン伝送を使用できます。パイプライン伝送では複数のパケットを連続的に送信できるため、チャネル使用率が大幅に向上します。 パイプライン伝送を使用するプロトコルには、Continuous ARQ プロトコル および ウィンドウ スライディング プロトコル が含まれます。 TCP はスライディング ウィンドウ プロトコルを使用して、信頼性の高い送信を完了します。
以上がTCPの信頼できる伝送原理を1つの記事で理解するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。