TCPプロトコル解析のパケット構造

TCPヘッダフォーマット

 TCPデータは、IPパケットのデータ部には、IPパケット、UDP等の中にカプセル化されます。次のようにTCPパケットのフォーマットは次のとおりです。 


送信元ポート番号、宛先ポート番号(アドレス)など、UDP、発信元およびアプリケーションプロセスを探して終了します。IPヘッダの送信元IPアドレスと宛先IPアドレスにこれらの2つの値を追加すると一義的に決定され、ネットワークプログラミング、典型的には、IPアドレスの組み合わせとポート番号をソケット(ソケット)と呼ばれています。 
  番号(SEQ) に使用される TCP受信側から発信元を特定するには、TCPの送信バイトのデータストリームのこのセグメントの最初のデータバイトを示しします各バイトカウントとシーケンス番号におけるTCP TCP(送信フレーム番号の値は問題ではないが、データて送信のバイトの数との関係については後述します)。 
確認応答シーケンス番号(SEQ + 1) を含む次の受信予想の送信確認応答シーケンス番号の一端したがって、最後の確認応答シーケンス番号が正常に受信されていなければならない(さらなるデータバイトの数を含む、しない単純な数プラス1)データのバイトを加えた数。 

ヘッダ長:記録TCPパケット、典型的には20バイトのヘッダ部分の長さは、実際の値は、4つのLED部の長さによって分割されます。 

以下は、機能に対応する符号ビットである:
URG:  緊急ポインタ(緊急ポインタ)有効。 
ACK: 確認応答番号が有効です。 
PSH: 受信機アプリケーション層へのこのセグメントは、できるだけ早くする必要があります。 
RST: 再接続。 
SYN: 接続を開始するための同期シリアル番号。 
FIN: 送信を完了するために開始します。 
ウィンドウのサイズ:フロー制御に使用。 
・検査:検査とTCPセグメントの全体を覆う:TCPヘッダとTCPデータ、及び疑似ヘッダを計算するUDP同様の必要性。

 

(1)各セグメントは、TCP送信元および宛先ポート番号を含み、端部の送受信のアプリケーションプロセスを求めます一意的ソースIPアドレスおよびIPヘッダの宛先IPアドレスと一緒にこれらの2つの値は、TCPコネクションを識別する。
受信機にTCP送信者を識別するために使用される数から(2)のこのセグメントの最初のデータバイトを表すデータのバイトストリームを、送信します。アプリケーションの2つの一方向の流れとの間のバイトストリームとして見た場合、TCPは各バイトのシーケンス番号をカウント(SEQ)
新しい接続を確立するとき、(3)、SYNフラグが1となります。シーケンス番号フィールドは、初期接続ISNを選択するために、ホストのシーケンス番号を含む、データの最初のバイトが、ISNシーケンス番号+1のためにホストに送信されるSYNフラグ番号を使用するため。
各バイトが転送されるので、次の受信シーケンス番号(4)は、確認応答含むの確認応答数は、所望の送信側、カウントされます。このように、確認応答番号は、最後のデータ・バイトが正常に1でシーケンス番号を受信されているべきであるとき。1つののみACKフラグの確認応答番号フィールドは有効です。(ACK)
(5)は、同じ32ビットの確認応答番号フィールドとACKフラグ、TCPヘッダの常に一部が、任意のコストをかけずにACKを送信します。接続が確立されるとしたがって、このフィールドは常に設定され、ACKフラグは常に1に設定されています。
(6)TCPは、アプリケーション層への全二重サービスを提供しますしたがって、接続の各端部が各方向のデータ数を転送しなければなりません。
(7)TCPを確認するためにない選択肢として記載し、または拒否することができるスライディングウィンドウプロトコルしたがって、確認応答シーケンス番号TCPヘッダは、送信者が正常にバイトを受信したことを示したが、肯定応答が指すバイトシーケンス番号を含みません。現在は、データストリームの選択された部分を確認することができません。
(8)オプションのフィールドの長さは可変であるので、ヘッダ長を設定します。60バイトのTCPヘッダアップ。
(9)6つのフラグビット。複数を同時に設定することができる1
◆URG-緊急ポインタが有効である
◆ACK-有効確認番号
◆PSH -受信者者はすぐに、アプリケーション層にできるだけこのセグメント
◆RST-再接続
◆シンは、接続シーケンス番号の同期を開始する
送信側送信◆FIN-仕上げを
(10)TCPのフロー制御を宣言によって提供されるウィンドウのサイズによって各端部で接続されますウィンドウサイズは、確認値フィールドから始まるバイト数は、この値は、受信側が受信したバイトの所望の数であり、シーケンス番号を示しています。図16は、ウィンドウサイズフィールドであるので、最大ウィンドウサイズが65535バイトです。
(11)検査全体のTCP被覆パケット終了:TCPヘッダとTCPデータ。これは、受信側で、送信者、検証によって算出して記憶しなければならない、必須フィールドです。TCPとUDPチェックサム計算およびヘッダチェックサム計算、疑似ヘッダとしても使用。
(12)緊急ポインタは、正のオフセットであるシーケンス番号フィールドに追加される値は、緊急データ数の最後のバイトを示しています。緊急モードは、他端に送信側TCPであるように、緊急データの送信

(13)最も一般的なオプションのフィールドは、MMSの最長パケットサイズ、典型的には第一の通信セグメントにおけるオプションで指定されている各側面を接続します。これは、この目的を受け取ることができ、セグメントの最大長を示します。 

WiresharkのパケットキャプチャTCP構造

  TCPを使用すると、詳細なデータと実際のデータ構造を表示するために、パケットをフェッチのWireshark:

 TCPはコネクション指向の、信頼性の高いトランスポート層プロトコルは、バイト指向です。 

  コネクション型:TCPを使用するアプリケーションは、最初の話すことを開始する前に、このような応答のための電話、最初のダイヤルと待ち時間として、データを送信する前に、接続を確立しなければならないことコネクション指向の手段。 
信頼性:次の方法の信頼性を向上させるためにTCP合意: 

・1.アプリケーションデータをTCPに分かれて、最も適切なデータ・ブロックが送らみなさこれは変更されませんアプリケーションによって生成された完全に異なるUDPデータグラムの長さです。セグメントまたはセグメントと呼ばれるIP情報ユニットにTCPによって渡されます。(固定長)

・2. TCPセグメントを送信するときに、このセグメントの受信を確認するために、宛先のためのタイマーと待機を開始します。あなたが確認を受信できない場合は、このセグメントを再送します。(再送タイマ)

・3. TCP接続はTCPデータのもう一方の端の底から受信した場合、それは確認応答を送信します。この確認は、通常、第二の割合を延期、すぐに送信されません。(謝辞)

・4.TCPテストし、それがヘッダとデータを維持します。この試験は終了し、データ伝送プロセスの任意の変化を検出する目的です。あなたは、テストやエラーのセクションを受け取った場合、TCPは、このセグメントを破棄し、このセグメントの受信を確認していない(タイムアウトと再送を開始したいです)。(検査と長い検査)

・前記IPデータグラムの送信などのTCPセグメントは、TCPセグメントの到着も順不同であってもよいので、順不同であってもよいIPデータグラムに到達するため。必要に応じて、データを再配列するTCPで受信されたデータは、アプリケーション層への正しい順序で受信されます。(並べ替え必要に応じて)

・6.を繰り返しIPデータグラムが発生する可能性がありますので、受信TCPは、重複したデータを破棄しなければなりません。(デエンファシス)

・7.TCPまた、フロー制御を提供します。各TCP接続には、固定側のバッファ領域のサイズを持っています。TCPを受信するだけ送信の他端を可能にし、受信側は、データバッファを受信することができます。これは、低速のホストオーバーフローが生じバッファ速くホストを防ぐことができます。(フロー制御)

バイトストリーム:8ビット・バイトから成るTCPバイトストリームを介して接続を交換する2つのアプリケーション。

  任意の説明もなく、コンテンツのストリームバイトさらに、TCP。TCPバイトストリームは、バイナリデータまたはASCII文字または他のタイプのデータのデータ伝送を知りません。TCPアプリケーション層からのバイトストリームの解釈の両方の接続を説明します。

公開された407元の記事 ウォンの賞賛150 ビュー380 000 +

おすすめ

転載: blog.csdn.net/ds1130071727/article/details/102798620