<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)論
      

    主站蜘蛛池模板: 4480yy私人影院亚洲| 亚洲噜噜噜噜噜影院在线播放| 亚洲αv在线精品糸列| 国产精品亚洲AV三区| 亚洲国产成人爱av在线播放 | 亚洲福利电影在线观看| 免费无码又爽又刺激毛片| 91在线视频免费观看| 亚洲av永久无码精品天堂久久 | 无套内谢孕妇毛片免费看看 | 亚洲AⅤ男人的天堂在线观看 | 亚洲午夜无码久久久久| 久久精品国产免费观看三人同眠| 自拍偷自拍亚洲精品偷一| 久久青草亚洲AV无码麻豆| 成人永久福利免费观看| 三级网站在线免费观看| 亚洲成a∨人片在无码2023| 妞干网免费视频在线观看| 男女一边摸一边做爽的免费视频| 久久精品国产亚洲AV忘忧草18| 亚洲精品和日本精品| 久久不见久久见中文字幕免费| a级午夜毛片免费一区二区| 亚洲人成色在线观看| 亚洲邪恶天堂影院在线观看| 天堂亚洲免费视频| 看一级毛片免费观看视频| 亚洲精品亚洲人成在线麻豆| 亚洲中文字幕无码中文字在线| 夭天干天天做天天免费看| 99精品视频免费观看| 精品国产免费人成网站| 亚洲国产区男人本色| 91亚洲自偷手机在线观看| 久久久久亚洲AV成人网人人网站| 成人无码WWW免费视频| 羞羞视频免费网站入口| 亚洲精品无码久久一线| 亚洲AV无码之日韩精品| 女人张开腿等男人桶免费视频 |