日韩性视频-久久久蜜桃-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简介的全部內容,希望文章能夠幫你解決所遇到的問題。

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

主站蜘蛛池模板: 少妇免费视频 | 国产性爱精品视频 | 丁香六月啪啪 | 差差差30分钟 | 性色一区 | 国产无遮挡又黄又爽在线观看 | 亚洲Av无码成人精品区伊人 | 欧美大片网站 | 看毛片看毛片 | 免费二区| 国产福利短视频 | 五月丁香综合激情六月久久 | 成人在线激情 | 欧美第四页| 久草网在线观看 | 91精品国产自产91精品 | 看特级毛片 | 欧美精品大片 | 国产1区2区3区 | av女优天堂在线观看 | 91超碰在线播放 | 国产淫片 | 无码黑人精品一区二区 | 亚洲日本在线播放 | 人人插人人爽 | 色老二导航 | 天天操天天舔天天干 | 日本少妇影院 | 亚洲图片综合网 | 国产不卡在线观看视频 | 激情三级在线 | 亚洲午夜伦理 | 欧美极品jizzhd欧美 | 国内少妇毛片视频 | 亚洲综合一区在线 | 国产熟妇另类久久久久 | 福利在线一区二区三区 | 国产一级免费在线观看 | 国产破处av | 久久视频在线观看免费 | 蜜臀网在线 | 成人夜晚看av| 被警察猛c猛男男男 | 五月天婷婷在线观看 | 青青色在线观看 | 国产永久在线观看 | 久久久久久亚洲av无码专区 | 少妇扒开粉嫩小泬视频 | 日韩人妻精品一区二区 | 精品国产无码AV | 久久精品欧美一区二区三区麻豆 | 欧美成人三级视频 | 黄网站在线观看视频 | 欧美成人免费播放 | 亚洲天堂一 | 精品无码一区二区三区 | 香蕉人妻av久久久久天天 | 国产午夜手机精彩视频 | 天美麻花果冻视频大全英文版 | 国产精品午夜一区二区 | 特黄三级 | 天天网综合 | 成人欧美一区二区三区在线播放 | 国产精品久久久久9999 | 色呦呦| 日日嗨av一区二区三区四区 | 色香蕉在线视频 | 亚洲天堂视频一区 | 国产卡一卡二卡三无线乱码新区 | 成人国产免费视频 | 久久艹在线观看 | 一区二区三区日韩视频 | 久操视频免费观看 | 人人爱人人看 | 久久久av电影 | 人人妻人人做人人爽 | 中文字幕精品一区二区精品 | 蜜臀精品一区二区三区 | 对白超刺激精彩粗话av | 狠狠干b| 成人福利视频在线观看 | 亚洲午夜精品一区 | youjizz韩国 | 成人女同av免费观看 | 国产日韩综合 | 免费日韩毛片 | 亚洲人成影视 | 国产精品入口a级 | 我爱52av| 超级砰砰砰97免费观看最新一期 | 在线精品一区 | 涩涩网站入口 | 中文字幕乱码免费 | 国产成人精品一区二区在线观看 | 日本高清视频www | 青青91| 91一区视频| 两性视频久久 | 国产乱码精品一区二区三区忘忧草 |