• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            aurain
            技術文摘
            posts - 137,  comments - 268,  trackbacks - 0
            /usr/src/linux/include/linux/tcp.h

            struct tcphdr {
                __be16 source;
                __be16 dest;
                __be32 seq;
                __be32 ack_seq;
            #if defined(__LITTLE_ENDIAN_BITFIELD)
                __u16   res1:4,
                        doff:4,
                        fin:1,
                        syn:1,
                        rst:1,
                        psh:1,
                        ack:1,
                        urg:1,
                        ece:1,
                        cwr:1;
            #elif defined(__BIG_ENDIAN_BITFIELD)
                __u16   doff:4,
                        res1:4,
                        cwr:1,
                        ece:1,
                        urg:1,
                        ack:1,
                        psh:1,
                        rst:1,
                        syn:1,
                        fin:1;
            #else
            #error "Adjust your <asm/byteorder.h> defines"
            #endif

                __be16 window;
                __be16 check;
                __be16 urg_ptr;
            };


                 |----------------|----------------|-------------
                 |     source     |     dest       |
                 |----------------|----------------|
                 |               seq               |
                 |---------------------------------|
                 |               ack_seq           | 20 Bytes
                 |----|----|------|----------------|
                 |doff|res1|      |     window     |
                 |----|----|------|----------------|
                 |     check      |     urg_ptr    |
                 |----------------|----------------|-------------
                 |             options             | 4 Bytes
                 |---------------------------------|  

                                TCP頭




            tcphdr->source
                16位源端口號

            tcphdr->dest
                16位目的端口號

            tcphdr->seq
                表示此次發送的數據在整個報文段中的起始字節數。序號是32 bit的無符號數。
            為了安全起見,它的初始值是一個隨機生成的數,它到達32位最大值后,又從零開始。

            tcphdr->
            ack_seq

                指定的是下一個期望接收的字節,而不是已經正確接收到的最后一個字節。

            tcphdr->doff
                TCP頭長度,指明了在TCP頭部包含多少個32位的字。此信息是必須的,因為options域的長度是可變的,所以整個TCP頭部的長度也是變化的。從技術上講,這個域實際上指明了數據部分在段內部的其起始地址(以32位字作為單位進行計量),因為這個數值正好是按字為單位的TCP頭部的長度,所以,二者的效果是等同的

            tcphdr->res1為保留位

            tcphdr->window
                是16位滑動窗口的大小,單位為字節,起始于確認序列號字段指明的值,這個值是接收端正期望接收的字節數,其最大值是63353字節。
                TCP中的流量控制是通過一個可變大小的滑動窗口來完成的。window域指定了從被確認的字節算起可以接收的多少個字節。window = 0也是合法的,這相當于說,到現在為止多達
            ack_seq-1個字節已經接收到了,但是接收方現在狀態不佳,需要休息一下,等一會兒再繼續接收更多的數據,謝謝。以后,接收方可以通過發送一個同樣ack_seq但是window不為0的數據段,告訴發送方繼續發送數據段。

            tcphdr->check
                是檢驗和,覆蓋了整個的TCP報文段,這是一個強制性的字段,一定是由發送端計算和存儲,并由接收端進行驗證。

            tcphdr->urg_ptr
                這個域被用來指示緊急數據在當前數據段中的位置,它是一個相對于當前序列號的字節偏移值。這個設施可以代替中斷信息。
              
            fin, syn, rst, psh, ack, urg為6個標志位
                這6個位域已經保留了超過四分之一個世紀的時間而仍然原封未動,這樣的事實正好也說明了TCP的設計者們考慮的是多么的周到。它們的含義如下:
                tcphdr->fin fin位被用于釋放一個連接。它表示發送方已經沒有數據要傳輸了。
                tcphdr->syn 同步序號,用來發起一個連接。syn位被用于建立連接的過程。在連接請求中,syn=1; ack=0表示該數據段沒有使用捎帶的確認域。連接應答捎帶了一個確認,所以有syn=1; ack=1。本質上,syn位被用來表示connection request和connection accepted,然而進一步用ack位來區分這兩種情況。
                tcphdr->rst 該為用于重置一個已經混亂的連接,之所以會混亂,可能是由于主機崩潰,或者其他的原因。該位也可以被用來拒絕一個無效的數據段,或者拒絕一個連接請求。一般而言,如果你得到的數據段設置了rst位,那說明你這一端有了問題。
                tcphdr->psh 接收方在收到數據后應立即請求將數據遞交給應用程序,而不是將它緩沖起來直到整個緩沖區接收滿為止(這樣做的目的可能是為了效率的原因)
                tcphdr->ack ack位被設置為1表示
            tcphdr->ack_seq是有效的。如果ack為0,則該數據段不包含確認信息,所以,tcphdr->ack_seq域應該被忽略。
                tcphdr->urg 緊急指針有效

                tcphdr->ece 用途暫時不明
                tcphdr->cwr 用途暫時不明
                內核源代碼在函數tcp_transmit_skb()中建立tcp首部。
            posted on 2008-11-21 10:48 閱讀(1585) 評論(0)  編輯 收藏 引用 所屬分類: tcp/ip

            <2008年6月>
            25262728293031
            1234567
            891011121314
            15161718192021
            22232425262728
            293012345

            常用鏈接

            留言簿(17)

            隨筆分類(138)

            隨筆檔案(137)

            網絡開發

            最新隨筆

            搜索

            •  

            積分與排名

            • 積分 - 500428
            • 排名 - 37

            最新隨筆

            最新評論

            閱讀排行榜

            評論排行榜

            久久精品成人欧美大片| 色妞色综合久久夜夜| 国产精品成人99久久久久91gav| 国产精品女同一区二区久久| 久久天天躁狠狠躁夜夜avapp| 久久精品人人做人人爽97| 久久99精品久久久久久噜噜| 亚洲国产精品成人久久| 国産精品久久久久久久| 国产三级久久久精品麻豆三级 | 少妇高潮惨叫久久久久久| 99久久精品免费观看国产| 久久天天躁狠狠躁夜夜96流白浆| 久久99国产一区二区三区| MM131亚洲国产美女久久| 久久久久久免费视频| 国产呻吟久久久久久久92| 国内精品久久国产大陆| 99久久无色码中文字幕人妻| 久久影院午夜理论片无码| 伊人久久大香线焦综合四虎 | 久久97久久97精品免视看秋霞| 久久天天躁狠狠躁夜夜躁2O2O| 久久久久久综合网天天| 最新久久免费视频| 香蕉久久夜色精品国产2020| 久久久久这里只有精品| 久久精品成人免费观看97| 久久精品国产99久久丝袜| 国产精品xxxx国产喷水亚洲国产精品无码久久一区 | 精品久久久久香蕉网| 丰满少妇高潮惨叫久久久| 久久久久亚洲精品天堂| 国内精品久久久人妻中文字幕| 久久精品国产亚洲AV无码娇色 | 久久亚洲AV永久无码精品| 久久久久久无码国产精品中文字幕| 99久久免费国产精品| 无码任你躁久久久久久| 久久精品aⅴ无码中文字字幕不卡| 偷窥少妇久久久久久久久|