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

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

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

    隨筆-17  評論-64  文章-79  trackbacks-1
    作者:
    ?? CSDN? VC/MFC 網絡編程PiggyXP ?^_^
    ?
    ? 目錄:

    ??? 一??? 關于 ARP 協議的基礎知識

    ???? 3. ARP包的填充

    二。發送數據包的編程實現

    ?? 1.填充數據包

    ?

    .........................緊接上文............................

    ?

    3.ARP 包的填充
    1) 請求包的填充:
    ?????比如我們的電腦MAC地址為 aa-aa-aa-aa-aa-aa,IP為 192.168.0.1
    ?我們想要查詢 192.168.0.99的MAC地址,應該怎么來做呢?
    ?
    ?????首先填充DLC Header,通過前面的學習我們知道,想要知道某個計算機對應的MAC地址是要給全網發送廣播的,所以接收方MAC肯定是 ffffffffffff,發送方MAC當然是自己啦, 于是我們的DLC Header就填充完成了,如圖,加粗的是我們要手動輸入的值(當然我編的程序比較智能,會根據你選擇的ARP包類型幫你自動填入一些字段,你一用便知^_^)。
    ?
    DLC Header
    字段
    長度(Byte)
    填充值
    接收方MAC
    6
    ffffffffffff
    發送方MAC
    6
    aaaaaaaaaaaa
    Ethertype
    2
    0x0806
    圖3 ARP請求包中 DLC Header內容
    ?
    ??? 接下來是ARP幀,請求包的操作碼當然是 1,送方的MAC以及IP當然填入我們自己的,然后要注意一下,這里的接收方IP填入我們要查詢的那個IP地址,就是192.168.0.99了,而接收方MAC填入任意值就行,不起作用,于是,如圖,
    ?
    ??????????????????????????? ARP Frame
    字段
    長度(Byte)
    填充值
    硬件類型
    2
    1
    上層協議類型
    2
    0800
    MAC地址長度
    1
    6
    IP地址長度
    1
    4
    操作碼
    2
    1
    發送方MAC
    6
    aaaaaaaaaaaa
    發送方IP
    4
    192.168.0.1
    接收方MAC
    6
    任意值 xxxxxxxxxxxx
    接收方IP
    4
    192.168.0.99
    填充數據
    18
    0
    ???????????????? 圖4 ARP請求包中 ARP幀的內容
    ?
    ??? 如果我們構造一個這樣的包發送出去,如果 192.168.0.99存在且是活動的,我們馬上就會收到一個192.168.0.99發來的一個響應包,我們可以查看一下我們的ARP緩存列表,是不是多了一項類似這樣的條 目: ???????????
    ?????? 192.168.0.99????????????????? bb-bb-bb-bb-bb-bb
    ???? 是不是很神奇呢?
    ???? 我們再來看一下ARP響應包的構造
    ?
    2) 響應包的填充
    ???? 有了前面詳細的解說,你肯定就能自己說出響應包的填充方法來了吧,所以我就不細說了,列兩個表就好了
    ?
    ???? 比如說給 192.168.0.99(MAC為 bb-bb-bb-bb-bb-bb)發一個ARP響應包,告訴它我們的MAC地址為 aa-aa-aa-aa-aa-aa,就是如此來填充各個字段
    ?
    DLC Header
    字段
    長度(Byte)
    填充值
    接收方MAC
    6
    bbbbbbbbbbbb
    發送方MAC
    6
    aaaaaaaaaaaa
    Ethertype
    2
    0x0806
    ????????????? 圖5 ARP響應包中 DLC Header內容
    ?
    ARP Frame
    字段
    長度(Byte)
    填充值
    硬件類型
    2
    1
    上層協議類型
    2
    0800
    MAC地址長度
    1
    6
    IP地址長度
    1
    4
    操作碼
    2
    2
    發送方MAC
    6
    aaaaaaaaaaaa
    發送方IP
    4
    192.168.0.1
    接收方MAC
    6
    bbbbbbbbbbbb
    接收方IP
    4
    192.168.0.99
    填充數據
    18
    0
    ????????? 圖6 ARP響應包中 ARP幀的內容
    ?
    ??? 這樣192.168.0.99的ARP緩存中就會多了一條關于我們192.168.0.1的地址映射。
    ??? 好了,終于到了編程實現它的時候了^_^
    ?

    二.? 發送 ARP 包的編程實現

    1.??????? 填充數據包

    上面的那些關于 ARP 包各個字段的表格,對應在程序里就是結構體, 對應于上面的表格, 于是我們需要三個下面這樣的結構體

    // DLC Header

    typedef struct tagDLCHeader????????????????????

    {

    ?? unsigned char ????? DesMAC[6];???????????? /* destination HW addrress */

    ?? unsigned char ????? SrcMAC[6];???????????? /* source HW addresss */

    ?? unsigned short ???? Ethertype;???????????? ?? /* ethernet type */

    } DLCHEADER, *PDLCHEADER;

    // ARP Frame

    typedef struct tagARPFrame?????????????????????

    {

    ???? ???? unsigned short ???????? HW_Type;?????????? /* hardware address */

    ???? ???? unsigned short ???????? Prot_Type;???????????? /* protocol address */

    ???? ???? unsigned char ????? HW_Addr_Len;?????? /* length of hardware address */

    ???? ???? unsigned char ????? Prot_Addr_Len;???????? /* length of protocol address */

    ???? ???? unsigned short ???????? Opcode;??????????? ??? /* ARP/RARP */

    ?

    ???? ???? unsigned char ????? Send_HW_Addr[6];???? /* sender hardware address */

    ???? ???? unsigned long ????? Send_Prot_Addr;????? /* sender protocol address */

    ???? ???? unsigned char ????? Targ_HW_Addr[6];???? /* target hardware address */

    ???? ???? unsigned long ????? Targ_Prot_Addr;????? /* target protocol address */

    ???? ???? unsigned char ????? padding[18];

    } ARPFRAME, *PARPFRAME;

    // ARP Packet = DLC header + ARP Frame

    typedef struct tagARPPacket????????????????

    {

    ???? DLCHEADER???? dlcHeader;

    ???? ARPFRAME????? arpFrame;

    } ARPPACKET, *PARPPACKET;

    ?

    這些結構體一定能看懂吧 在程序中就是對號入座就好了

    posted on 2007-02-16 15:41 飛鳥 閱讀(359) 評論(0)  編輯  收藏 所屬分類: VC
    主站蜘蛛池模板: 国产精品99精品久久免费| 国产精品成人69XXX免费视频| 亚洲精品乱码久久久久久蜜桃 | 亚洲成av人在线观看网站| 亚洲成人在线免费观看| 亚洲男人天堂av| 99久热只有精品视频免费看 | 十八禁无码免费网站| 亚洲香蕉网久久综合影视| 一级特黄录像免费播放肥| 亚洲午夜久久久久久久久电影网| 亚洲欧洲校园自拍都市| 日韩免费精品视频| 亚洲av无码一区二区三区四区| a色毛片免费视频| 亚洲福利在线观看| 日韩国产免费一区二区三区| 亚洲一欧洲中文字幕在线| 毛片在线免费视频| 免费一级做a爰片久久毛片潮| 亚洲免费福利在线视频| 亚洲精品无码久久久久久| 天堂亚洲免费视频| 国产免费拔擦拔擦8X高清在线人| 国产精品视频免费一区二区三区| 亚洲国产精品线在线观看| 日韩视频在线精品视频免费观看| 国产亚洲精品va在线| 久久国产免费观看精品3| 亚洲色少妇熟女11p| 亚洲综合久久成人69| 亚洲视频在线观看免费视频| 亚洲乱码中文字幕在线| 国产午夜亚洲精品理论片不卡| 男男gay做爽爽免费视频| 亚洲色婷婷六月亚洲婷婷6月| 欧洲精品码一区二区三区免费看 | 又黄又大又爽免费视频| 国产精品成人69XXX免费视频| 亚洲AV无码专区日韩| a毛片全部播放免费视频完整18|