日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

手把手教你玩转ARP包(二)

發布時間:2024/4/11 编程问答 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 手把手教你玩转ARP包(二) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

原文鏈接:http://blog.csdn.net/piggyxp/article/details/19607

? 作者:

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

?

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

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

????????????????????????????????------??Made In????? ? DLUT | DIP

總結

以上是生活随笔為你收集整理的手把手教你玩转ARP包(二)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。