[コンピュータネットワーク] 4とのTCP 3ウェイハンドシェイク手を振って

まず、3ウェイハンドシェイク

図1において、第1のハンドシェイク

クライアントは(xはランダムに生成された値であるTCP SYNが所定のデータ1を搬送しない=)サーバに同期メッセージ(SYN = 1、ACK = 0、SEQ = X)を送信し、確認するためにサーバを待って、SYN_SEND状態に入ります。

注意:

  • SYN(同期):接続を確立するための同期シリアル番号。1 = 0のときACKはSYNが=、これは、接続要求パケットのセグメントであることを示している場合。相手が接続を確立することに同意した場合は、応答セグメント操作SYN = 1、ACK = 1にする必要があります。したがってSYNが1に設定され、これは、接続要求パケットと受信コネクタであることを示しています。
  • ACK(確認応答):フィールドが有効であるとき、ACK = 1、それが確認されました。ときにACK = 0、確認応答番号が無効です。TCPは、すべてのセグメントがACKを接続した後に設定されなければならない送信することを提供します。
  • SEQ(シーケンス番号):4バイト。モッズ用いて、基準動作を制御します。TCPは、連番各バイトのTCP接続で送信されたバイトストリームバイト指向のストリームです。だから、フィールドは、「セグメントのシーケンス番号」と呼ばれています。

2、第2ハンドシェイク

サーバは、同一のSYN位置1を確認するために、SYNセグメントを受信し、ACKは、1に設定されているYの配列のセット、X + 1に対するACKセットし、その後SYN_RECV状態となり、この状態は、半接続状態と呼ばれています。

注意:

  • ACK(確認応答番号):所望のインターフェースは、次のセグメントの最初のデータバイトシーケンス番号を受信します。確認応答番号= N場合、その示す:すべてのデータをN-1が正しく受信されたシーケンス番号まで。

図3に示すように、第三のハンドシェーク

クライアントが再びACKが1に設定されている確認し、配列のセットをx + 1に、ACKがサーバーに送信され、Y + 1に設定され、クライアントとサーバは最終的に接続を確立するためのスリーウェイハンドシェイクを完了し、ESTABLISHED状態になります。

4なぜ私たちは第三握手にもう一度確認するためにクライアントが必要なのでしょうか?

つまり、クライアントが接続要求を行うだけで二つの機構とTCPハンドシェーク場合は、サーバーの確認要求の接続が確立されています。

クライアントが接続を確立するための要求を行うと仮定し、ネットワークの輻輳サーバがリクエストを受信して​​いないのために、クライアントが要求が接続要求を確立するために、再び失われた二度目を送信するために考えて、サーバは要求と確認、首尾よく確立されたリンクを受け取ります。

最初の接続要求セグメントが失われたが、いくつかのネットワーク内のノードは長時間鎖ので、端に到達する前に、接続解除サービスの後の時点まで遅延されていません。実際には、この接続要求が失敗しましたが、この接続要求セグメントを受信した後、サーバの障害は、誤ってこれが新しい接続要求を発行したクライアントであると思います。だから、翔サーバクライアントが接続を確立することに同意した要求セグメントを、作ります。

今、クライアントが要求接続が確立されていなかったこと、それはサーバーを確認するために気にしないだろう、それがサーバーにデータを送信しませんが、サーバーが新しいトランスポート接続が確立されており、データを送信するためにクライアントを待っていると思いました多くのリソース、サービス側はそう無駄にしました。

これらの現象の発生を防止するための方法のスリーウェイハンドシェイク。たとえば、上記のシナリオでは、クライアントは、サーバが原因の確認応答を受信できない、サーバーに確認要求を送信しません、私たちは本当に接続を確立するために、クライアントの要求を知りません。

おすすめ

転載: www.cnblogs.com/6970-9192/p/11839801.html