TCPコネクションの確立と切断

       接続指向の、エンド・ツー・エンドのデータ転送バイト・ストリームのための信頼できる全二重通信プロトコルメイントランスポート層プロトコルの一つとして、TCPプロトコル。

 

図1に示すように、TCPセグメント

インタビューTCPバイトストリームが、TCPが、データユニットはセグメントに送信されます。TCPヘッダとデータ部分にTCPセグメントは、TCPヘッダのセグメントの最初の20のバイトが固定され、4Nバイトはオプションは40バイトの最大必要以上であり、増加続きます

 

  • 送信元および宛先ポートはそれぞれ2つのバイトを占め、TCPポートを介して実現サブ機能です。
  • 特許範囲の4バイト、[0,2 32 ]、TCPは、バイト指向のストリームであり、各バイトが連続して番号が付けられています。例えば、セグメントは、シーケンス番号フィールド201は、データ長を運ぶ最初のデータは、シリアル番号201、300が最後の一つである、100です。、および0から最大範囲が開始したとき。
  • 確認応答番号 4バイト、それは望ましいインタフェースは、シーケンス番号の最初のバイトの次のセグメントを受信します。もし確認応答番号= N、Nが正しく受信された番号の前にすべてのデータを意味します。
  • データをオフセットセグメントのデータ部分の開始位置、距離から開始位置セグメントを表す、4ビット。間接ヘッダの長さを示します。
  • 予約は現在0、使用のために予約、6を占めました。
  • URG (緊急) URG = 1は、緊急ポインタフィールドは、有効なデータパケットセグメント緊急は、できるだけ早く送信されることを示しています。
  • ACK(肯定応答) ACK = 1、確認応答番号が有効であるが、接続が確立されている場合にのみ、すべてのセグメントがACKです。
  • PSH(プッシュ)受信者受信PSH =セグメント1は、アプリケーションが再び配信塗りつぶしキャッシュ全体を待つことなく、正規受信するように可能な限り早く配信されます。あまり実用的。
  • RST(リセット)接続を再リンクする必要がある場合RST = 1は、重大なエラーがTCP接続で発生を示しています。
  • SYN(同期)シリアル接続を同期するために使用が確立されます。SYN = 1、ACK = 0は、接続要求がセグメントであることを示している場合。SYN = 1、ACK = 1は、他の接続の同意を示しています。TCPは、コネクションを確立するために使用されます。
  • FIN(終了)コネクタ窓を解除します。FIN = 1は、このセグメントの送信側がデータを送信しないことを示すことは一方向接続の解放を要求します。TCPは、使用を切断しました。
  • ウィンドウ 2バイトのデータ量が送信可能ウィンドウ値がお互いに通知するために使用され、サイドウインドウを受け、自身の送信を示します。
  • チェックサムの 2バイト、フィールド試験および検査は、ヘッダとデータ部分を含みます。
  • 正しい緊急は URG = 1は、緊急ポインタは、新聞のセグメント緊急データのバイト数(緊急一般的なバイトの後のバイト数)を示し、2つのバイトを占めます。
  • オプション 40バイトの可変長アップ。例えば、最大セグメントサイズMSS。MSSは、TCPセグメントのデータ部分の長さではなく、全体の長さを意味する、デフォルトでは536バイト長MSSあります。ウィンドウ、タイムスタンプオプションを展開します。

 

2は、TCP接続が確立されている - スリーウェイハンドシェイクを

 

まず:クライアントは、SYN = 1、SEQ = xでサーバーに接続要求パケットを送信します。YSN_END後の状態に送られて。

第二:サーバがメッセージを受信した後、それは、肯定応答メッセージを返送する、請求ACK = 1、ACK = X + 1、なぜならメッセージはSYN =、SEQ = Y 1つの情報を有しているので、クライアントを確認する必要があります。SYN_RCVD状態に入った後に送信します。

第三:クライアントがメッセージを受信し、それが肯定応答パケット、ACK = 1、ACK = Y + 1を送信します。クライアントを送ることがESTABLISHED状態に入った後、サーバはメッセージを受信し、ESTABLISHED状態に入ります。これは、接続が確立されています。

 

3、TCP切断 - 四手を振って

最初の波:クライアントがサーバにFIN = 1、SEQ = Xパケットを送信し、送信が一方の側に閉じ接続され、彼は送信すべきデータがないと述べました。送信され、クライアントはFIN_WAIT_1状態になります。

第二波:サービス要求パケットを受信した後、ACK = 1を送り返す、ACK = X + 1は、切断を確認するために、肯定応答パケットです。サーバーの状態を入力してくださいCLOSE_WAIT。クライアントがパケットを受信するとFIN_WAIT_2状態になります。この時点で、サーバーへのデータ接続クライアントが切断されています。

第三の波:サービスはFIN = 1、契約顧客のSEQ = Yを送るには、彼はクライアントにデータを与えていないと述べました。LAST_ACK送信状態に入った後、確認応答パケットのクライアントを待っています。

第四の波:クライアントは、要求パケットを受信し、再送されるパケットを確認することが可能である、パケット確認サーバのACK = 1、ACK = Y + 1を送信し、TIME_WAIT状態に入ります。サーバは確認応答パケットを受信した後、CLOSED状態に入り、エンド接続サービスクライアントが切断されました。クライアントは、一定期間後までCLOSED状態になります。

 

おすすめ

転載: www.cnblogs.com/ysuwangqiang/p/11485554.html