ip层的arp协议
Arp(adress resolution protocol—地址解析協(xié)議)是在傳輸IP包時(shí),因不知道IP地址對(duì)應(yīng)的MAC地址,無法傳送數(shù)據(jù)引起的,通過arp,建立目的IP跟MAC地址的映射關(guān)系,從而獲得目的IP的MAC地址。
Arp頭部的數(shù)據(jù)結(jié)構(gòu)如下:
typedefstruct arphdr {
????????????? unsignedshort arp_hrd;/*硬件類型,*/
????????????? unsignedshort arp_pro;/*協(xié)議類型*/
????????????? unsignedchar arp_hln;/*硬件地址長度*/
????????????? unsignedchar arp_pln;/*協(xié)議地址長度*/
????????????? unsignedshort arp_op;/*ARP操作類型*/
????????????? unsignedchar arp_sha[6];/*發(fā)送者的硬件地址*/
????????????? unsignedlong arp_spa;/*發(fā)送者的協(xié)議地址*/
????????????? unsignedchar arp_tha[6];/*目標(biāo)的硬件地址*/
????????????? unsignedlong arp_tpa;/*目標(biāo)的協(xié)議地址*/
????????????? }ARPHDR,*PARPHDR;???
我們封裝arp數(shù)據(jù)包格式如下:
目的地址,我們現(xiàn)在還不知道,需要向本子網(wǎng)廣播,以獲得目的地址(目的MAC),因此這里全填1,源基地即本地的MAC地址,我們從本地網(wǎng)卡的MAC地址即可取得,類型表示的是上層協(xié)議的類型,這里是arp,用0x0806表示,到這里就完整的幀封裝。
?
arp頭部數(shù)據(jù)填充,硬件類型有很多種,即有各種各樣的硬件類型,比如以太網(wǎng)卡,令牌環(huán)網(wǎng)卡等,0x0001表示以太網(wǎng)卡,協(xié)議類型表示的是上層協(xié)議的類型,即需要通過arp獲得對(duì)方MAC地址的協(xié)議,而不是arp本身協(xié)議,0x0800表示IP協(xié)議,硬件地址(MAC地址)長度為6,協(xié)議地址(IP地址)長度為4,操作類型表示本arp所要操作的動(dòng)作,1為ARP請(qǐng)求,2為ARP應(yīng)答,3為RARP請(qǐng)求,4為RARP應(yīng)答,源主機(jī)MAC地址為本地MAC,從網(wǎng)卡驅(qū)動(dòng)從即可獲得,源主機(jī)IP地址為本地IP,這個(gè)也是從網(wǎng)卡驅(qū)動(dòng)中獲得,當(dāng)然也是我們?nèi)藶樵O(shè)置的(或者DHCP),目的主機(jī)MAC地址就是我們發(fā)送arp需要獲得的數(shù)據(jù),此時(shí)還不知道,全0待填寫,目的主機(jī)IP地址為遠(yuǎn)端的IP地址。
由于路由器有攔截廣播的功能,arp廣播只能在本子網(wǎng)中廣播,如果所要獲取的MAC地址不是本子網(wǎng)的,則必須經(jīng)過路由器網(wǎng)關(guān)獲得。由于路由器的默認(rèn)網(wǎng)關(guān)也是本子網(wǎng)的一個(gè)設(shè)備,因此也會(huì)收到本子網(wǎng)的arp廣播,經(jīng)過子網(wǎng)匹配,發(fā)現(xiàn)目的IP的子網(wǎng),跟路由器的另一個(gè)端口的子網(wǎng)一致,于是,把a(bǔ)rp請(qǐng)求轉(zhuǎn)發(fā)給路由器的另一個(gè)端口,此時(shí),路由器的另一個(gè)端口跟目的IP在同一個(gè)子網(wǎng),因此,又可以進(jìn)行arp廣播,當(dāng)目的IP獲得了arp廣播信息后,會(huì)把本機(jī)的MAC地址填充到arp包的目的地址MAC這欄中,同時(shí)修改arp的數(shù)據(jù)包的操作類型為arp應(yīng)答,接著把數(shù)據(jù)包發(fā)回源IP地址,此時(shí)的發(fā)送就不是以廣播的形式發(fā)送了,因?yàn)槟康牡刂稭AC,本地地址MAC都知道,是需要單播即可,此時(shí),還需要修改以太網(wǎng)幀的目的MAC,本地MAC,從而得以發(fā)送數(shù)據(jù)包
總結(jié)
- 上一篇: Sql Server 得到当月第一天
- 下一篇: 教你一招画素描, 不写程序时陶冶陶冶情操