コンピュータネットワーク-4つのトランスポート層(TCP接続管理、フロー制御、輻輳制御)

目次

1つは、TCP接続管理

    1. TCP接続の確立(接続を確立するための3方向ハンドシェイク)

    2. TCP接続の解放(接続を解放するための4方向ハンドシェイク)

    3.接続の確立と解放の概要

2、TCPフロー制御

3、TCP輻輳制御

    1.スロースタートと輻輳回避

    2.高速再送信と高速リカバリ

    3.その他


1つは、TCP接続管理

1. TCP:コネクション型プロトコル。

2. TCP接続には、接続の確立、データ送信、接続の解放の3つの段階があります。

3. TCP接続確立プロセス中に、解決する必要のある3つの問題があります。

  • 1)各当事者が相手方の存在を通知できるようにするため
  • 2)両方の当事者がいくつかのパラメータ(最大ウィンドウサイズなど)をネゴシエートできるようにするため。
  • 3)トランスポートエンティティリソース(キャッシュサイズなど)を割り当てる機能。

4.各TCP接続は、通信の両端にある2つのエンドポイント(つまり、2つのソケット)によって一意に決定されます。

5.いくつかのフィールドの定義

  • シーケンス番号フィールド4Bを考慮して、TCPはバイト指向(つまり、TCP送信中にバイトごとに送信される)であるため、TCP接続によって送信されるデータストリームの各バイトにはシリアル番号が割り当てられます。シーケンス番号フィールドの値は、このセグメントで送信されるデータの最初のバイトのシーケンス番号を参照しますたとえば、メッセージセグメントのシーケンス番号フィールド値は301であり、伝送されるデータは100Bです。これは、このメッセージセグメントのデータの最後のバイトのシーケンス番号が400であることを示しているため、次のメッセージのデータシーケンス番号です。セグメントは401から開始する必要があります。
  • 確認番号フィールド4Bを考慮して、相手の次のセグメントのデータを受信することを期待している最初のバイトのシーケンス番号です確認番号がNの場合は、シーケンス番号N-1までのすべてのデータが正しく受信されたことを意味します。
  • ビットACKを確認します。確認番号フィールドは、ACK = 1の場合にのみ有効です。ACK = 0の場合、確認番号は無効です。TCPは、接続が確立された後に送信されるすべてのメッセージセグメントでACKを1に設定する必要があることを規定しています。
  • 同期ビットSYN、同期SYN = 1は、これが接続要求または接続受信メッセージであることを意味しますSYN = 1およびACK = 0の場合、これが接続要求メッセージであることを示します。相手が接続の確立に同意した場合、SYN = 1およびACK = 1が応答メッセージで使用されます。つまり、SYN = 1は、これが接続要求または接続受信メッセージであることを意味します。
  • 終端ビットFIN(Finish)は、接続を解放するために使用されます。FIN = 1は、このセグメントの送信者のデータが送信されており、送信接続を解放する必要があることを示します。

 

1. TCP接続の確立(接続を確立するための3方向ハンドシェイク)

      

TCP接続確立のプロセスは、通常、スリーウェイハンドシェイクと呼ばれます。

最初の一歩:

  • クライアントのTCPは、最初に接続要求セグメントをサーバーのTCPに送信します
  • この特別なメッセージセグメントには、アプリケーション層のデータは含まれていません。SYNフラグ= 1、クライアントは開始シーケンス番号seq = xをランダムに選択します
  • (接続要求メッセージはデータを伝送しません、シリアル番号を消費します

2番目のステップ:

  • サーバーのTCPは、接続要求セグメントを受信した後、接続の確立に同意すると、クライアントに確認応答を送り返し、TCPバッファーと変数をTCP接続に割り当てます。
  • 確認メッセージセグメントでは、SYNビット= 1ACKビット= 1確認番号フィールドの値はx + 1であり、サーバーは開始シーケンス番号seq = yをランダムに生成します。
  • (確認メッセージにはデータは含まれていません、シリアル番号も消費されます

3番目のステップ:

  • クライアントは確認メッセージセグメントを受信すると、サーバーに確認を提供し、接続にバッファーと変数を割り当てる必要があります。
  • このセグメントでは、ACKビット= 1シーケンス番号フィールド= x + 1確認番号フィールド= y +1です。
  • メッセージセグメントはデータを伝送できます。データを伝送しない場合、シーケンス番号は消費されません。

上記の3つの手順を正常に実行すると、TCP接続が確立され、アプリケーション層のデータを送信できるようになります。TCPは全二重通信を提供するため、通信の両側のアプリケーションプロセスはいつでもデータを送信できます。

さらに、サーバーのリソースは2番目のハンドシェイクが完了すると割り当てられ、クライアントのリソースは3番目のハンドシェイクが完了すると割り当てられるため、サーバーはSYNフラッド攻撃に対して脆弱になります。

 

2. TCP接続の解放(接続を解放するための4方向ハンドシェイク)

TCP接続に参加している2つのプロセスのいずれかが、接続を終了できます。

TCP接続解放のプロセスは、通常、4ウェイハンドシェイクと呼ばれます。

    

 

3.接続の確立と解放の概要

 

2、TCPフロー制御

TCPは、送信者が受信者のバッファをオーバーフローする可能性排除するためのフロー制御サービスを提供します(フロー制御があると言うことができるように速度マッチングサービスと一致する送信側の送信速度受信機の読取速度を。)

TCP提供流量控制服务来**消除发送方使接收方缓冲区溢出的可能性**。
(因此可以说流量控制是一个速度匹配服务,匹配发送方的发送速率与接收方的读取速率。)

发送方**不能发送太多、太快的数据让接收方缓冲区溢出**。

 TCP提供一种基于滑动窗口协议的流量控制机制,TCP使用**滑动窗口机制**来实现流量控制。

 1)谁控制谁?流量控制是为了控制发送方发送速率保证接收方来得及接收。

 2)怎样控制?接收方发送的确认报文中的窗口字段可以用来控制发送方窗口大小,从而影响发送方地发送速率。将窗口字段设置位0,则发送方不能发送数据。

 

3、TCP輻輳制御

拥塞控制:是指**防止过多的数据注入网络,保证网络中的路由器或链路不致过载**。

拥塞控制和流量控制的**相似之处**:它们都通过控制发送方发送数据的速率来达到控制效果。

拥塞控制与流量控制的**区别**:
拥塞控制是让网络能够承受现有的网络负荷,是一个全局性的过程,涉及所有的主机、所有的路由器,以及与降低网络传输性能有关的所有因素。
相反,流量控制往往是指点对点的通信量的控制,即接收端控制发送端,它所要做的是抑制发送端发送数据的速率,以便使接收端来得及接收。

**流量控制**是为了**让接收方能来得及接收**,而**拥塞控制**是为了**能降低整个网络的拥塞程度**。(!)


例如,某个链路的传输速率为10Gb/s,某巨型机向一台PC以1Gb/s的速率传送文件,
显然网络的带宽是足够大的,不存在拥塞问题,但如此高的发送速率将导致PC可能来不及接收,因此必须进行**流量控制**。
但若有100万台PC在此链路上以1Mb/s的速率传送文件,则现在的问题就变为网络的负载是否超过了现有网络所能承受的范围。

 

トランスポート層の輻輳をより適切に制御するために、インターネット推奨標準では次の4つのアルゴリズムが定義されています

  • スロースタート
  • 輻輳回避
  • 高速再送信
  • 迅速な回復

 

メッセージセグメントの送信速度を決定するとき、送信者は受信者の受信機能を考慮するだけでなく、全体的な観点からネットワークを混雑させないことも考慮する必要があります。

したがって、TCPプロトコルでは、送信者が次の2つのウィンドウを維持する必要があります

  • 1)受信ウィンドウrwnd受信側、現在の受信バッファサイズによって約束された最新のウィンドウ値に従って受信側の容量を反映ます受信者は、TCPメッセージのヘッダーに配置されたウィンドウフィールドに基づいて送信者に通知します。
  • 2)輻輳ウィンドウCWND送信者によって推定されたネットワークの混雑の度合いに応じて、送信者によって設定されたウィンドウ値反映し、電流容量ネットワークネットワークに輻輳がない限り、輻輳ウィンドウは少し大きくなり、より多くのパケットを送信します。ただし、1ネットワークが輻輳している限り、輻輳ウィンドウは縮小され、ネットワークに注入されるパケットの数が減少します。

上限は送信ウィンドウと受信ウィンドウである必要があり、輻輳ウィンドウcwnd rwndは小さくなります。つまり、送信ウィンドウの上限= min [rwnd、cwnd]

 

受信ウィンドウのサイズは、TCPメッセージのヘッダーのウィンドウフィールドに従って送信者に通知できます送信者はどのようにして輻輳ウィンドウを維持しますか?これは、以下で説明するスロースタートおよび輻輳回避アルゴリズムです。

 

1.スロースタートと輻輳回避

  • スロースタート:輻輳ウィンドウcwndは指数関数的に増加し、毎回2倍されます。

    cwndがスロースタートしきい値ssthresh(しきい値)に達すると、輻輳回避アルゴリズムが開始します

  • 輻輳回避:
    • 輻輳ウィンドウcwndは直線的に増加し、毎回1ずつ増加します。つまり、加算が増加します
    • タイムアウトが発生した場合(ネットワークの輻輳)、スロースタートしきい値ssthreshを現在のcwndの半分に等しくします。つまり、乗算が減少します)、輻輳ウィンドウcwndは1に設定されます

 

2.高速再送信と高速リカバリ

  • 3回の繰り返し確認連続し受信されると、高速再送信および高速回復アルゴリズムが実行されます。
  • 迅速な回復:
    • 連続して3回の繰り返し確認を受信させると、スロースタートしきい値ssthreshは現在のcwndの半分に等しくなります。つまり、乗算が減少します)、cwndの値は、スロースタートしきい値ssthreshが変更された後の値に設定されます(これはスロースタートアルゴリズムとは異なります)。
    • 次に、輻輳回避アルゴリズムの実行を開始し、毎回1を追加します。つまり、加算が増加します

 

    送信者が検出された場合1)タイムアウトを、それが使用スロースタートと輻輳回避を

    2)送信者が3つの冗長ACK3つの繰り返し確認応答)を受信すると高速再送信と高速リカバリが使用されます。

      送信ウィンドウの実際のサイズ(トラフィック制御と輻輳制御によって共同で決定)=受信側ウィンドウ輻輳ウィンドウ小さい方

 

3.その他

送信者はネットワークの輻輳をどのように認識しますか?

  • 失われたイベント(パケット損失)=タイムアウトまたは3回の繰り返しACK
  • 損失イベントが発生した後、TCP送信者はレートを下げます(輻輳ウィンドウ)
     

 

 

 

 

おすすめ

転載: blog.csdn.net/weixin_39450145/article/details/112675390