TCPを見て

定義1

TCP(伝送接続プロトコル)、指向のトランスポートプロトコル接続があります。そして、シーケンス番号、再送制御を確認することで、接続管理は、信頼性と透過窓のために制御します。

二部形式

  1. 送信元ポート番号(送信元ポート):フィールドの長さは16で、終了を送信するポート番号を示します。
  2. 宛先ポート番号(宛先ポート):受信端で表されるポート番号が、フィールドの長さは16です。
  3. シーケンス番号(シーケンス番号):32長さフィールド。TCPシーケンス番号は、データの再送などを注文したデータを用いて達成することができる、送信データの位置を指します。
  4. 確認応答番号(ナンバー):32ビット長のフィールド。承認番号データで見つかった場合にはシーケンス番号が正しく受信される前に。
  5. (データオフセット)データオフセット:長さフィールドは4ビットであり、TCPヘッダの長さとみなすことができます。
  6. リザーブ(予約):4のフィールド長を使用する拡張左。
  7. 制御ビット(制御フラグ)

 

    1)緊急URG(緊急フラグ)

    URGは1に等しい場合には、緊急ポインタフィールドが有効であることを示しています。それは順番アップ元の行に応じて配信するのではなく、できるだけ早く送信される緊急データのこのセグメント(高優先度データに相当)があることを告げます。緊急のデータの後に、その後、新聞データセグメントの先頭にTCP緊急データを送信して挿入を入れて、送信するために送信者のTCP緊急データを伝えるために、1にデータを送信アプリケーション・プロセスを設定しURG依然として通常のデータ、ヘッダと緊急ポインタこの時に使用します。

    2)肯定応答ACK(確認応答フラグ)

    ビットACK = 1は、確認応答番号フィールドが有効です。TCPは、ビットが1に設定されている場合よりも、初期接続確立接続SYNバウチの添加を含みます。

    3)プッシュPSH(フラグをプッシュ)

    PSH = 1は、TCP PSHは、プッシュ操作を使用して、すぐに送信セグメントを作成することができます。受信機は、PSHが=セグメント1は、それがアプリケーション・プロセスの配信を受け入れるのではなく、キャッシュ全体を充填し、次いで、アップ配信されるまで待機する(フォワード「プッシュ」IE)できるだけ早くで受信します。

    4)リセットRST(リセットフラグ)

    RST = 1は、重大なエラーがTCP接続を発生することが明らかになった場合、あなたは強い切断する必要があります。RSTは、さらに、不正を拒否するか、セグメント接続を開きを拒否するように設定されています。RSTはまた、再構成位置を既知または位置をリセットします。

    5)同期SYN(同期フラグ)

    シリアル接続を同期するために使用する場合に確立されます。SYN = 1、ACK = 1は、この接続要求パケットのセグメントであることを示している場合。他のコネクタの同意場合は、SYN = 1、ACK = 1に応じて、セグメント内であるべきです。

    6)終了FIN(FINフラグ)

    FIN = 1は、二次データセグメントの送信者が送信され、トランスポート接続の解放のためにされたとき、接続を解除します。

       8。ウィンドウサイズ(ウィンドウサイズ):16ビット長のフィールドは、TCPフロー制御は、スライド窓の概念によって行われます。

       9。検査と(チェックサム)

3 4が手を振って3ウェイハンドシェイクを見てください

 

 

1.スリーウェイハンドシェイク

  最初のハンドシェイク:接続が確立され、クライアントはサーバにSYNパケット(SYN = X)を送信し、サーバが確認するのを待つ、SYN_SENT状態になり、SYN:同期シーケンス番号(シーケンス番号の同期)。

  第二のハンドシェイク:自体はSYNパケットを送信しながら、サーバがSYNパケットを受信するが、その後、サーバは、状態SYN_RECVに入り、(SYN = Y)、すなわち、SYN + ACKパケットを顧客SYN(ACK = X + 1)を確認しなければなりません。

  サードハンドシェイク:クライアントがサーバにSYN + ACKパケットを受信し、サーバーが受信確認パケットACK(ACK = X + 1)を送信し、このパケットが送信され、ESTABLISHED(TCP接続が成功した)状態に、クライアントとサーバは、3を完了します握手。

 

2。手を振っ四

  最初の波:クライアント・プロセスが接続解放メッセージを発行し、データの送信を停止します。データパケットヘッダ、FIN = 1を放出する、配列番号配列は= U(最後のバイトのシーケンス番号に等しいが、以前のデータから送信されたプラス1)この場合、クライアントは、FIN-WAIT-1(終了待ちに入ります1)状態。TCP規定、FINセグメント、データを搬送しない場合だけでなく、シリアル番号を消費します。

  第二次挥手:服务器收到连接释放报文,发出确认报文,ACK=1,ack=u+1,并且带上自己的序列号seq=v,此时,服务端就进入了CLOSE-WAIT(关闭等待)状态。TCP服务器通知高层的应用进程,客户端向服务器的方向就释放了,这时候处于半关闭状态,即客户端已经没有数据要发送了,但是服务器若发送数据,客户端依然要接受。这个状态还要持续一段时间,也就是整个CLOSE-WAIT状态持续的时间。客户端收到服务器的确认请求后,此时,客户端就进入FIN-WAIT-2(终止等待2)状态,等待服务器发送连接释放报文(在这之前还需要接受服务器发送的最后的数据)。

  第三次挥手:服务器将最后的数据发送完毕后,就向客户端发送连接释放报文,FIN=1,ack=u+1,由于在半关闭状态,服务器很可能又发送了一些数据,假定此时的序列号为seq=w,此时,服务器就进入了LAST-ACK(最后确认)状态,等待客户端的确认。

  第四次挥手:客户端收到服务器的连接释放报文后,必须发出确认,ACK=1,ack=w+1,而自己的序列号是seq=u+1,此时,客户端就进入了TIME-WAIT(时间等待)状态。注意此时TCP连接还没有释放,必须经过2MSL(最长报文段寿命)的时间后,当客户端撤销相应的TCB后,才进入CLOSED状态。服务器只要收到了客户端发出的确认,立即进入CLOSED状态。同样,撤销TCB后,就结束了这次的TCP连接。可以看到,服务器结束TCP连接的时间要比客户端早一些。

 

おすすめ

転載: www.cnblogs.com/tianliang94/p/11223214.html