乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      手把手教你玩轉(zhuǎn)ARP包(二)【數(shù)據(jù)包的游戲系列之一】

       看見(jiàn)就非常 2012-08-31
      作者:
         CSDN  VC/MFC 網(wǎng)絡(luò)編程 PiggyXP  ^_^
       
        目錄:

          一    關(guān)于ARP協(xié)議的基礎(chǔ)知識(shí)

           3. ARP包的填充

      二。發(fā)送數(shù)據(jù)包的編程實(shí)現(xiàn)

         1.填充數(shù)據(jù)包

       

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

       

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

      二.  發(fā)送ARP包的編程實(shí)現(xiàn)

      1.        填充數(shù)據(jù)包

      上面的那些關(guān)于ARP包各個(gè)字段的表格,對(duì)應(yīng)在程序里就是結(jié)構(gòu)體,對(duì)應(yīng)于上面的表格,于是我們需要三個(gè)下面這樣的結(jié)構(gòu)體

      // 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;

       

      這些結(jié)構(gòu)體一定能看懂吧,在程序中就是對(duì)號(hào)入座就好了

      ................. 

      ================================================================== 
           不爽這么快又滿了,文章不知道要拆成幾份了..-_-b
           請(qǐng)期待下文 : )
       
                                     -----  Finished at 2004-05-29 19:41

                                      ------  Made In        DLUT | DIP

        本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
        轉(zhuǎn)藏 分享 獻(xiàn)花(0

        0條評(píng)論

        發(fā)表

        請(qǐng)遵守用戶 評(píng)論公約

        類似文章 更多