TCP有限状態マシン

画像は次のように各状態であることを意味し、TCP状態遷移を示しています。
  1. CLOSE:初期状態のステートマシン。
  2. LISTEN:リッスンするパッシブオープン、サーバ側の状態(モニタ)。
    1. パッシブオープン:一端接続されたアプリケーションは、オペレーティングシステムに通知着信接続を確立したいです。このエンドへの接続を確立するために、この時間オペレーティングシステム;
    2. アクティブな接続:接続を確立するために、オペレーティング・システムに指示するアクティブオープン要求してアプリケーション。
  3. SYN_RCVD:サーバは、SYN、SYNの状態を受信し、SYN ACKを送信します。
  4. SYN_SENT:アプリケーションは、SYN、SYN_SENT状態を送信します。
  5. ESTABLISHED:SYN_RCVDがACKを受信した後、状態が確立なり、SYN_SENTはSYN ACKを受信した後、ACKを送信し、ESTABLISHED状態を変化させます。
  6. CLOSE_WAIT:FINを受信した後、サーバ、ACKを送信し、状態がCLOSE_WAITなり、サーバが送信するより多くのデータがある場合、データ送信までの送信が完了すると、次にサーバはFINを送信し、このとき、状態はLAST_ACKなります。
  7. FIN_WAIT_1:アプリケーションは、TCP接続がESTABLISHED-> FIN_WAIT_1から準備状態を切断され、FINを送信します。
  8. FIN_WAIT_2:アプリケーションサーバ側にのみACKを受信し、FINを受信して​​いない、サーバが接続され、半時間、次いで、送信すべきより多くのデータを持っていること。
  9. TIME_WAIT:状態に入るには二つの方法があります。TIME_WAITは、TCPの閉鎖の全二重接続信頼性を達成することである、失われたACKパケットを再送信するために使用することができ、MSL 2を継続する必要があります(最大パケット生存期間)時間; TIME_WAITにアプリケーションポートを想定し、2 MSLは、FINを受信しなかった後に、ACKは、最後の問題が受信されたアプリケーションを示し、そうでない場合は、次の2つのMSL以内に再度ACKパケットを受信します。
    1. FIN_WIAT_1状態エントリ:アプリケーション・ポートがFIN ACKを受信するが(ACKのみ画像FIN_WAIT_2、説明が送信されたデータとして受信していない)とACKサーバーを送信します。
    2. FIN_WAIT_2状態:アプリケーションのポートは、FINを受信し、サーバーにACKを送信します。
 
クライアントアプリケーションの状態遷移ルート:
  クローズド> SYN_SENT-> ESTABLISHED-> FIN_WAIT_1-> FIN_WAIT_2-> TIME_WAIT-> CLOSED
上記のプロセスは、クライアントがSYNパケットのACKを受信すると、接続が確立された状況下での通常の手順上の画像から見ることができる、いくつかのプロセスである必要があり、クライアントは、対話的に接続されたデータを開きます。接続の終了は、クライアントアプリケーションの終了後に、あなたはFIN_WAIT_1、FIN_WAIT_2およびその他の状態を経験する必要がある、通常のイニシアチブのクライアント側です。
 
サーバー移行ルートのステータス:
  クローズド>リッスン> SYN收到 - > ESTABLISHED-> CLOSE_WAIT-> LAST_ACK-> CLOSED
接続が確立されると、サーバは、データ交換の状態に入る前に第三のハンドシェークの後であり、接続が第二のハンドシェイク(第ではないことに留意されたい)の接続を閉じた後に閉じられます。クライアントが初期状態に入るように、最終的なACKパケットを与えている間に待機するように閉じた後。
 
その他の状態の移行:
  次のようにサーバーとクライアントの両方のために、状態遷移を要約したもので、状態遷移、上記の他のいくつかの図はあるがあります。
    • リッスン> SYN_SENTが、この説明は非常に簡単であるため、時にはサーバ事への接続を開く必要があります。  
    • あなたはSYNパケットを受信した場合SYN_SENT-> SYN_RCVDは、サーバとクライアントは、あなたがSYN_SENT状態にSYN ACKパケットを送信するために、確立を入力する準備ができて、状態をSYN_RCVDする彼らの状態を調整する必要があります
    • SYN_SENT-> CLOSEDは、送信タイムアウトの場合には、CLOSED状態に戻ります。
    • SYN_RCVD-> RSTパケットを受けた場合、LISTEN、LISTEN状態に戻ります。
    • SYN_RCVD-> FIN_WAIT_1は、この移行は、あなたがESTABLISHED状態に行うことができ、かつFIN_WAIT_1状態に直接ジャンプし、近くに待つことができるということです。
 

 

おすすめ

転載: www.cnblogs.com/Jummyer/p/11068068.html