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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

ARP简介

發布時間:2023/12/15 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 ARP简介 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

來源:http://blog.chinaunix.net/u/8780/showart.php?id=147506

?

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

?

1 ARP 的工作原理

以太網設備比如網卡都有全球唯一的 MAC 地址,MAC地址是網卡的物理地址,它由48位二進制數表示。其中前面24位表示網絡廠商標識符,是由生產網卡的廠商向IEEE申請的廠商地址。后24位表示序號,由廠商自行分配。每個不同的網絡廠商會有不同的廠商標識符,而每個廠商所生產出來的網卡都是依序號不斷變化的。 網卡等是以 MAC 地址來傳輸以太網數據包的(它們識別不了 IP 包中的 IP 地址),所以在以太網中進行 IP 通信的時候就需要一個協議來建立 IP 地址與 MAC 地址的對應關系,以使 IP 數據包能發到一個確定的地方去。這就是 ARP(Address Resolution Protocol ,地址解析協議 )

?

arp命令 可以查詢本地arp緩存:

???? arp –a

?

可以發現類似于這樣的條目

192.168.45.100??? 01-23-45-67-89-ab??? dynamic

這就是存儲的關于IP 地址與MAC 地址的對應關系,dynamic 表示是臨時存儲在ARP 緩存中的條目,過一段時間就會超時被刪除(xp/2003 系統是2 分鐘) 。

?

這樣一來,某臺電腦要和一臺機器(比如192.168..45.1) 通信的時候,它會首先去檢查arp 緩存,查找是否有對應的arp 條目,如果沒有,它就會給這個以太網絡發ARP 請求包 廣播詢問192.168.45.1 的對應MAC 地址,當然,網絡中每臺電腦都會收到這個請求包,但是它們發現192.168.45.1 并非自己,就不會做出相應,而192.168.45.1 就會回復一個ARP 應答包 ,告訴它的MAC 地址是xx-xx-xx-xx-xx-xx, 于是發出ARP請求的計算機中的ARP 緩存就會相應刷新, 多了這么一條:

192.168.45.1 ?? xx-xx-xx-xx-xx-xx?? dynamic

?

ARP 緩存是為了避免每發一個IP 包都要發個廣播查詢地址。

?? ?

??? 網絡設備是無法識別ARP 包的真偽的,如果按照ARP 的格式來發送數據包,只要信息有效計算機就會根據包中的內容做相應的反應.

?

?

?

2 ARP 包的格式

?

???? 從網絡底層看來,一個ARP 包是分為兩個部分的, 前面一個是物理幀頭 ,后面一個才是 ARP

???? 首先,物理幀頭,它將存在于任何一個協議數據包的前面,被稱為 DLC Header ,因為這個幀頭是在數據鏈路層構造的,并且其主要內容為收發雙方的物理地址,以便硬件設備識別。 ?

DLC Header

字段

長度(Byte)

默認值

備注

接收方MAC

6

?

廣播時, ff-ff-ff-ff-ff-ff

發送方MAC

6

?

?

Ethertype

2

0x0806

0x0806 ARP 幀的類型值

?????????????????????????? 1 物理幀頭格式

?

?

ARP 幀的格式. ?

ARP Frame

字段

長度(Byte)

默認值

備注

硬件類型

2

0x1

以太網類型值

上層協議類型

2

0x0800

上層協議為IP 協議

MAC 地址長度

1

0x6

以太網MAC 地址長度為 6

IP 地址長度

1

0x4

IP 地址長度為 4

操作碼

2

?

0x1 表示ARP 請求包,0x2 表示應答包

發送方MAC

6

?

?

發送方IP

4

?

?

接收方MAC

6

?

?

接收方IP

4

?

?

填充數據

18

?

因為物理幀最小長度為64 字節, 前面的42 字節再加上4CRC 校驗字節, 還差18 個字節

???????????????????????????? 2 ARP 幀格式

?

?

3.ARP 包的填充 ? 1) 請求包的填充:
?????例某計算機A的MAC地址為 aa-aa-aa-aa-aa-aa,IP為 192.168.0.1 ?要查詢 192.168.0.99的MAC地址: ?????首先填充DLC Header;想要知道某個計算機對應的MAC地址是要給全網發送廣播的,所以接收方MAC 是 ffffffffffff。 于是DLC Header就填充完成了,如圖:

DLC Header
字段 長度(Byte) 填充值
接收方MAC 6 ffffffffffff
發送方MAC 6 aaaaaaaaaaaa
Ethertype 2 0x0806

圖3 ARP請求包中 DLC Header內容 ??? 接下來是ARP幀,請求包的操作碼 是 1;發送 方的MAC 以及IP 應當填入A的相應數據;需要注意的是:這里的接收方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 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.??????? 填充數據包

?

相應的數據結構:

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

?

?

2.發送ARP數據包 ???發送ARP包需要用到winpcap的api。具體步驟及函數詳見下面的代碼(為了簡單,錯誤處理的地方都被去掉了): /******************************************************************* * *??? 功能: *???????? 發送ARP數據包 * *******************************************************************/ void SendARPPacket() { ???? char *AdapterDeviceName =GetCurAdapterName(); ????// 首先獲得獲得網卡名字 ???? lpAdapter = PacketOpenAdapter(AdapterDeviceName);???? // 根據網卡名字打開網卡 ???? lpPacket = PacketAllocatePacket();????????? ?????// 給PACKET結構指針分配內存 ???? PacketInitPacket(lpPacket, &ARPPacket, sizeof(ARPPacket));?//初始化PACKET結構指針, 其中的ARPPacket是已經填充的ARP包 ???? PacketSetNumWrites(lpAdapter, 1);?????????// 每次只發送一個包 ???? PacketSendPacket(lpAdapter, lpPacket, true); ???? PacketFreePacket(lpPacket);?????????????????// 釋放資源 ???? PacketCloseAdapter(lpAdapter); } 使用ARP 包的tricks ?

在沒有安全防護的網絡里......

?

1)???如果 ? 發一個請求包廣播,其中的 ARP 幀里相關的信息填成這樣:

?

發送方MAC

6

隨便亂填一個錯誤的

發送方IP

4

? 填上本機的IP

?? 本機將會顯示一個 IP 地址沖突的提示。同樣的道理,如果發送方 IP 填成別人的,然后,每隔x 秒發一次 ………

?

2)?????? 假設A、B都靠一個網關 192.168.0.1 上網 ,如果A想讓B( 192.168.0.77) 上不了網,就可以偽裝成網關給 192.168.0.77 發一個錯誤的 ARP 響應包 ,如:

發送方MAC

6

隨便亂填一個錯誤的

發送方IP

4

? 網關IP 192.168.0.1

接收方就填 192.168.0.77 的相關信息,........

總結

以上是生活随笔為你收集整理的ARP简介的全部內容,希望文章能夠幫你解決所遇到的問題。

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

主站蜘蛛池模板: 美女校花脱精光 | 开心激情婷婷 | 欧美成人专区 | 国产成人一区二区三区电影 | 免费成人在线视频观看 | 日本精品一区二区视频 | 69福利区| 久久一本综合 | 亚洲激情久久久 | 日一日射一射 | 影音先锋亚洲精品 | 国产午夜精品在线观看 | 日韩精品久久久 | 一级黄色录像大片 | 欧美日韩亚洲不卡 | 另类一区二区三区 | 一级在线看 | 亚洲精品乱码久久久久久日本蜜臀 | 91热在线 | 国产福利一区二区 | 亚洲乱亚洲乱 | 国产精品毛片一区 | 黄色三级视频 | 亚洲国产日韩精品 | 亚洲一区二区三区影院 | 毛片2| 看91 | 免费成人看片 | 国产传媒视频在线观看 | 国产精品夜夜躁视频 | www.性欧美| 亚洲最大在线视频 | 国产欧美久久一区二区三区 | 日本老少交 | 国产永久免费视频 | 精品人妻互换一区二区三区 | 人妻无码一区二区三区 | 日韩av片在线播放 | 国产激情一区二区三区 | 亚洲精品国偷拍自产在线观看蜜桃 | 国产视频导航 | 伦理久久 | 日韩性爰视频 | 成人黄色在线观看视频 | 欧美性成人 | 日韩脚交footjobhd | 北条麻妃一区二区三区免费 | 中文乱码人妻一区二区三区视频 | 少妇色综合 | 免费日本在线 | 亚洲日本中文字幕 | 日韩精品视频免费 | 兔费看少妇性l交大片免费 日韩高清不卡 | 日韩欧美在线观看一区 | 天天爱夜夜爱 | 在线视频区 | 女尊高h男高潮呻吟 | 狠狠干2022 | 成人在线网址 | 69堂在线观看 | 国产精品久久久久久久裸模 | 亚洲天堂资源网 | 欧美亚洲一 | 欧美一级黄色片视频 | 久久精品视频网 | 一本久久综合亚洲鲁鲁五月天 | 久草中文网 | 日韩精选在线观看 | 国产伦精品一区二区三区免费视频 | 亚洲一区精品视频在线观看 | 欧美性高潮 | 午夜影视剧场 | 日日日人人人 | 日韩特级毛片 | 欧美成人猛片aaaaaaa | 国产调教视频在线观看 | 欧美人体一区二区三区 | 日韩欧美激情视频 | 调教在线观看 | 日韩视频免费在线播放 | 亚洲av毛片 | 波多野结衣电车痴汉 | 黄色av网站免费 | 成人学院中文字幕 | 欧美做爰xxxⅹ性欧美大片 | 欧美裸体网站 | 一区国产在线 | 国产aⅴ爽av久久久久成人 | 婷婷看片 | 国产特级黄色录像 | 亚洲一级片网站 | 久久精品韩国 | 免费在线看污视频 | 精品欧美一区二区三区 | 欧美性猛交ⅹ乱大交3 | 欧美偷拍视频 | 精品人妻一区二区三区日产乱码 | 欧美精品卡一卡二 | 激情小说一区 |