<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    一江春水向東流

    做一個(gè)有思想的人,期待與每一位熱愛思考的人交流,您的關(guān)注是對(duì)我最大的支持。

      BlogJava :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理 ::
      44 隨筆 :: 139 文章 :: 81 評(píng)論 :: 0 Trackbacks

    ?重裝TCP數(shù)據(jù)段,我看了《TCP/IP詳解卷二:實(shí)現(xiàn)》覺得它里面的實(shí)現(xiàn)考慮的很全面,當(dāng)然也就很復(fù)雜。而我組裝只是為了監(jiān)視,所以不必那么復(fù)雜,于是自己想了一個(gè)方法。現(xiàn)在我已經(jīng)根據(jù)這個(gè)方法成功組裝TCP分段,所以這個(gè)方法是可行的。另外,我的IP分片的組裝用的方法跟這個(gè)方法也差不多。

    ??? 首先說下存儲(chǔ)tcp分段的數(shù)據(jù)結(jié)構(gòu):一個(gè)二維鏈表,我把它叫作重裝表。具有相同socket對(duì)(源ip地址、目的ip地址、源端口號(hào)、目的端口號(hào))的tcp數(shù)據(jù)包放在一個(gè)橫向的鏈表里,該鏈表的頭節(jié)點(diǎn)只保存了源ip地址、目的ip地址、源端口號(hào)、目的端口號(hào)這些信息。如下圖所示:

    ?

    ??? 然后介紹重裝TCP數(shù)據(jù)段的方法:

    1.每到來一個(gè)tcp數(shù)據(jù)包(pkt),我先將該數(shù)據(jù)包的源ip地址、目的ip地址、源端口號(hào)、目的端口號(hào)取出來在重裝表(tpq_tbl)中縱向的鏈表中查找有沒有與它相匹配的鏈表(fp)存在,如果有,就把pkt數(shù)據(jù)包放入與它有相同socket對(duì)的fp鏈中,放入鏈表的時(shí),我先查找pkt的順序號(hào)在鏈表中的適當(dāng)位置,然后才放入;如果沒有,則在tpq_tbl中新創(chuàng)建一個(gè)該類型的鏈表頭節(jié)點(diǎn),然后再將其放入新創(chuàng)建的鏈表中。

    2.每當(dāng)在fp中放入一個(gè)tcp數(shù)據(jù)段后,我就檢查fp鏈表中的數(shù)據(jù)段是否已經(jīng)到齊了(判斷方法下面介紹),若到齊,就將個(gè)鏈表中所有數(shù)據(jù)段的數(shù)據(jù)部分拼接到一起,得到應(yīng)用層報(bào)文,然后釋放該鏈表,然后重復(fù)1-2步驟;若沒到齊,直接重復(fù)1-2步驟。

    ?關(guān)于判斷一個(gè)鏈表中tcp數(shù)據(jù)段是否到齊的方法:
    ??? 使用的變量說明:
    ??? count計(jì)數(shù)器,表示當(dāng)前鏈表中的所有tcp數(shù)據(jù)段數(shù)據(jù)部分的長(zhǎng)度之和。每當(dāng)在該鏈表中加入一個(gè)新tcp數(shù)據(jù)段時(shí),我都會(huì)將count累加上該tcp數(shù)據(jù)段的數(shù)據(jù)部分的長(zhǎng)度。
    ??? syn_seq,表示本次tcp連接的第一個(gè)數(shù)據(jù)包的順序號(hào),也就是建立tcp連接時(shí)的第一次握手的SYN包的順序號(hào)。
    ??? fin_seq,表示本次tcp連接的最后一個(gè)數(shù)據(jù)包的順序號(hào),也就是關(guān)閉tcp連接時(shí)的第二個(gè)FIN包的順序號(hào)。

    ??? 判斷:當(dāng)(fin_seq - syn_seq)與count相等時(shí),就說明tcp數(shù)據(jù)段已經(jīng)到齊,否則就是沒有到齊。

    posted on 2008-04-10 23:01 allic 閱讀(3426) 評(píng)論(3)  編輯  收藏 所屬分類: TCP/IP 開發(fā)

    評(píng)論

    # re: 關(guān)于TCP重組[轉(zhuǎn)] 2009-10-01 14:44 xinwang
    能不能把源碼貼出來,學(xué)習(xí)一下 謝謝  回復(fù)  更多評(píng)論
      

    # re: 關(guān)于TCP重組[轉(zhuǎn)][未登錄] 2010-01-14 17:09 秋水
    萬一你監(jiān)視的是一個(gè)長(zhǎng)連接,而且你監(jiān)視開始時(shí),連接已經(jīng)建立,那你就無法獲得syn_seq了呀
    請(qǐng)問如何處理這種問題  回復(fù)  更多評(píng)論
      

    # re: 關(guān)于TCP重組[轉(zhuǎn)] 2011-01-18 21:43 坑跌呢你
    這種辦法局限性太大了,實(shí)驗(yàn)可以,沒有實(shí)用性  回復(fù)  更多評(píng)論
      

    主站蜘蛛池模板: 1000部禁片黄的免费看| 伊人久久国产免费观看视频| 国产三级在线免费| 亚洲精品无码久久久久去q| 免费一看一级毛片全播放| 亚洲AV男人的天堂在线观看| 久久久久国色AV免费看图片| 亚洲综合国产精品第一页| 特级毛片A级毛片免费播放| 全黄a免费一级毛片人人爱| 粉色视频免费入口| 精品亚洲一区二区三区在线播放| 黄色视频在线免费观看| 国产成人无码综合亚洲日韩| 亚欧日韩毛片在线看免费网站| 亚洲国产美国国产综合一区二区 | 精精国产www视频在线观看免费| 亚洲午夜爱爱香蕉片| 一个人免费视频观看在线www| 亚洲91av视频| 国产1000部成人免费视频| 亚洲精品无码久久久久秋霞 | 亚洲尹人九九大色香蕉网站| 久久精品免费一区二区| 亚洲熟妇av午夜无码不卡| 四虎精品亚洲一区二区三区| 免费人成在线观看视频高潮| 亚洲网红精品大秀在线观看| 黄页视频在线观看免费| 91麻豆精品国产自产在线观看亚洲| 毛片免费在线观看| 亚洲AV男人的天堂在线观看| 亚洲精品偷拍视频免费观看| 免费无码毛片一区二区APP| 2017亚洲男人天堂一| 亚洲人成色7777在线观看不卡 | 四虎成年永久免费网站 | 激情五月亚洲色图| 亚洲国产精品激情在线观看| 日韩亚洲产在线观看| 亚洲免费在线观看|