構造体tcphdr

それは/usr/src/linux/include/linux/tcp.hに含ま

構造体tcphdr { 
    __be16源と 
    __be16 DEST; 
    __be32の配列。
    __be32 ack_seq; 
#if(__ LITTLE_ENDIAN_BITFIELD)定義
    :__u16 RES1 4 
            脱ぐ:4 
            フィン:1 
            SYN:1 
            RST:1 
            PSH:1 
            ACK:1 
            URG:1 
            ECE:1 
            CWR:1 #elifの定義(__ BIG_ENDIAN_BITFIELD)
    __u16 DOFF:4 
            RES1:4 
            CWR:1 
            ECE:1 
            URG:1 
            ACK:1 
            PSH:1 
            RST:1 
            SYN:1 
            フィン:1 #else 
#エラー "を調整し、あなたの<ASM / byteorder.h>定義"
 #endifの
    __be16ウィンドウ。
    __be16チェックしてください。
    __be16 urg_ptr; 
}。

tcphdr->ソース

       16ビットのソースポート

tcphdr->

       16ビット宛先ポート

tcphdr->配列

       全体の伝送の初期セグメントのバイト数を示すデータ。番号は、32ビットの符号なしです。セキュリティ上の理由のために、その初期値はランダムに生成された番号であり、最大値32、およびスクラッチに達します。

tcphdr-> ack_seq

       これは、最後のバイトが正しく受信されたのではなく、受信されることが予想される次のバイトを指定します。

tcphdr-> DOFF

       TCPヘッダの数を示すTCPヘッダ長は32ビット・ワードを含んでいます。この情報は、オプションフィールドの長さが可変であるため、すべてのTCPヘッダの全体の長さも可変である、でなければなりません。この値は、TCPヘッダのワード単位の長さだけであるから、技術的にこのフィールドは、したがって、両方の、データの開始アドレスは、実際に、内側部(測定の単位として32ビット・ワード)の一部であることを示し効果は同等です。

 

tcphdr-> RES1

       予約ビット

tcphdr->ウィンドウ

       ウィンドウサイズをスライド16ビットは、バイト単位で、確認番号フィールド指定された値を開始、この値は、受信側が受信したバイトの所望の数、63353バイトの最大値です。

       TCPのフロー制御は達成単一可変サイズのスライディングウィンドウです。ウィンドウのフィールドは、バイト数が確認応答バイトカウントから受信することができる指定します。= 0ウィンドウが少し長く、より多くのデータを受信待機し、休憩が必要、悪い状態で、今ではack_seq-1までと同等になると、今までバイトが受信された、合法であるが、受信場所。ウィンドウを送信することによって、受信側の際、しかし、送信者に伝える同じack_seqセグメント0は、データセグメントの送信を継続しません。

 

tcphdr->チェック

       チェックサムは、パケット全体のTCP側を覆う必須フィールドであり、送信側によって算出して記憶する必要があり、受信側による検証。

 

tcphdr-> urg_ptr

       このフィールドは、それが現在のシーケンス番号のバイトオフセットに相当し、現在まで、データセグメント内の緊急データを示すために使用されます。この設定は、割り込み情報を交換することができます。

 

フィン、SYN、RST、PSH、ACK、URG 6フラグビット、次の意味:

       tcphdr->フィン:送信者は送信すべきデータを持っていないことを示し接続を解放します。

       tcphdr-> SYN:接続を送信するための同期数。SYN手順は、接続要求に、接続を確立するために使用される、SYN = 1であり、ACK = 0は、肯定応答フィールドをピギーバックデータセグメントが使用されていないことを示しています。なお、接続応答確認、1 =存在シンので、ACK = 1。本質的に、SYNビットは、これら2つの場合を区別するために、さらにACKビットで、しかし、受け付けた接続要求および接続を表すために使用されます。

       tcphdr-> RET:このビットは、接続の混乱、混乱の理由をリセットするために使用され、おそらくホストがクラッシュまたはその他の理由からです。このビットは、問題があなたの終わりを説明しますが、データセグメントRSTの位置のセットを取得する場合、無効なデータセクションを拒否するか、一般的には、接続要求を拒否するために使用することができます。

       tcphdr-> ACK:ACKビットがtcphdr-を示す1に設定されている> ack_seqは、ACKが0であれば、それはデータブロックは、プロファイルが含まれていないことを示しているので、tcphdr-> ack_seqフィールドは無視されるべきで、有効です。

       tcphdr-> URG:緊急ポインタが有効です

       tcphdr-> ECE:一時的に未知の使用

       tcphdr-> CWR:一時的に未知の使用  

 

おすすめ

転載: www.cnblogs.com/wanghao-boke/p/11669744.html