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

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

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

    一江春水向東流

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

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

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

    ??? 首先說(shuō)下存儲(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.每到來(lái)一個(gè)tcp數(shù)據(jù)包(pkt),我先將該數(shù)據(jù)包的源ip地址、目的ip地址、源端口號(hào)、目的端口號(hào)取出來(lái)在重裝表(tpq_tbl)中縱向的鏈表中查找有沒(méi)有與它相匹配的鏈表(fp)存在,如果有,就把pkt數(shù)據(jù)包放入與它有相同socket對(duì)的fp鏈中,放入鏈表的時(shí),我先查找pkt的順序號(hào)在鏈表中的適當(dāng)位置,然后才放入;如果沒(méi)有,則在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步驟;若沒(méi)到齊,直接重復(fù)1-2步驟。

    ?關(guān)于判斷一個(gè)鏈表中tcp數(shù)據(jù)段是否到齊的方法:
    ??? 使用的變量說(shuō)明:
    ??? 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í),就說(shuō)明tcp數(shù)據(jù)段已經(jīng)到齊,否則就是沒(méi)有到齊。

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

    評(píng)論

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

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

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

    主站蜘蛛池模板: 日本免费中文字幕在线看| 亚洲午夜久久久久久久久电影网| 亚洲人成网站在线播放2019| 久久国产精品亚洲综合| 在线看无码的免费网站| 亚洲日韩国产精品乱-久| 永久免费AV无码网站国产| 亚洲日本在线播放| 免费在线不卡视频| 亚洲日韩看片无码电影| 亚洲人成伊人成综合网久久久| 57pao国产成永久免费视频| 男男gay做爽爽的视频免费| 亚洲高清在线观看| 在线免费观看中文字幕| 久久精品乱子伦免费| 国产成人高清亚洲一区久久| 亚洲人成网www| 亚洲国产精品自产在线播放| 亚洲人AV在线无码影院观看| 国产A在亚洲线播放| 永久黄网站色视频免费| 8x网站免费入口在线观看| 搜日本一区二区三区免费高清视频 | 国内精品99亚洲免费高清| 拨牐拨牐x8免费| 99视频在线精品免费| 国产免费牲交视频免费播放| 亚洲丰满熟女一区二区哦| 亚洲精品国产啊女成拍色拍| 亚洲人成无码www久久久| 男女交性无遮挡免费视频| 亚洲在成人网在线看| 亚洲人成人一区二区三区| 免费在线不卡视频| 四虎成人精品一区二区免费网站 | 成人毛片视频免费网站观看| 99热精品在线免费观看| 99精品全国免费观看视频..| 粉色视频成年免费人15次 | 青青青国产在线观看免费网站 |