4振っリアクション三のTCPハンドシェイク
TCPフラグ
URG:緊急ポインタフラグ
ACK:確認応答番号フラグ
PSH:プッシュフラグ
RST:接続フラグをリセット
SYN:同期シリアル番号、接続を確立するためのプロセス
FIN:コネクションを解放するために仕上げフラグ
TCP 3ウェイハンドシェイクプロセスのテキスト分析:
TCP / IPプロトコルでは、TCPプロトコルは、接続を確立するために信頼性の高い接続サービス、3ウェイハンドシェイクを提供します。
最初のハンドシェイク:接続が確立され、クライアントがサーバにSYNパケット(SYN = j)を送信し、SYN_SEND状態になり、サーバが確認するのを待ちます。
第二のハンドシェイク:自体はSYNパケットを送信しながら、サーバがSYNパケットを受信するが、その後、サーバは、状態SYN_RECVに入り、すなわち、SYN + ACKパケット(SYN = k)は、顧客のSYN(ACK = J + 1)を確認しなければなりません。
第三のハンドシェーク:クライアントがサーバにSYN + ACKパケットを受信し、サーバは、確認応答パケットACK(ACK = K + 1)を送信し、このパケットが送信され、ESTABLISHED状態に、クライアントとサーバは、スリーウェイハンドシェイクを完了する。
なぜ我々は、接続を確立するために、3ウェイハンドシェイクが必要なのでしょうか?
シーケンス番号の初期値を初期化するためには、
双方は、TCPを使用すること、アプリケーション層は、データ転送は、ネットワーク上と順不同問題を引き起こさない受け取ることを確実にするために、それらの初期化シーケンス番号は、将来のシリアルデータ通信の値として、互いに通信お互いに知らせるべきですデータをスプライスするための番号なので、第二のハンドシェイクである彼のシーケンス番号の後にポストバック後にサーバは、また、クライアントがサーバーのシーケンスNumbnerの初期化を受けている、サーバーに通知するために、サーバに確認メッセージを送信する必要があります。
TCP 4は、プロセスのテキスト分析を振りました。
TCPは4回を使用して接続を解放するために手を振りました
最初の波:クライアントは、FINを送信し、データ転送クライアントサーバー入札を閉じるため、クライアントはFIN_WAIT_1状態に入ります。
第二波:サーバは、クライアントを送信するFIN、ACKを受信し、受付番号+1のための確認応答番号は、(同じSYN、FINシーケンス番号を占有する)、サーバーはCLOSE_WAIT状態に入ります。
第三の波:サーバは、FINを送信クライアントサーバーのデータ転送を閉じるために、LAST_ACKサーバーが状態に入ります。
第四の波:クライアントは、FINを受信し、クライアントは確認応答番号の数+ 1を受信するために、TIME_WAIT状態に入り、その後、サーバにACKを送信し、サーバはCLOSED状態は、4つの完全な波を入射します。
なぜでしょうCLOSED状態の前にクライアントTIME_WAIT状態の2MSL時間?
- (ACKパケットを受信しないパッシブシャットダウンがパッシブエンド再送FINパケットをトリガーする場合は、正確に2 MSLの時間に戻る)相手がACKパケットを受信してみましょうするのに十分な時間があることを確認するために、
- 混乱を避けるため、新旧を接続します
なぜ私は4ウェイハンドシェイクを切断する必要がありますか?
全二重なので、送信者と受信者は、FINパケットとACKパケットに必要
理由は、サーバーの状態を多数CLOSE_WAIT
他のソケット接続は、我々は、接続を閉じなかった、読み取りまたは書き込みが忙しい、閉じられています
- リソースを解放するためのコード、特にコードを確認してください
- 、要求を(おそらく非常に合理的ではない)を処理するために構成された、特に糸を構成を確認してください